Partage de dashboards pour TeslaMate créés par des membres du forum

Appli iPhone, Android, Teslamate, TeslaFi, connectivité Premium
J
J2J2
Enthousiaste
Enthousiaste
Messages : 151
Inscription : 24 févr. 2025
Voiture : TMY

Re: Partage de dashboards pour TeslaMate créés par des membres du forum

Message par J2J2 »

@jpz68 merci pour toute tes updates :)
Me voila de retour de mon roadtrip de 8000km :)
J'ai importé tes derniers dashboard detail et synthese voyage.
Ca semble ok pour les SUC :)
Work et Home aussi :).
Par contre j'ai aucune detection des other sur la map :( (au moins) (dans ma version cela marchait, je crois que j'avais du fixer cela mais le souci de bosser avec l'IA c'est qu'on comprend pas vraiment ce que l'on fait et que l'on apprend pas ...)

L'ia me propose:

Code : Tout sélectionner

SELECT DISTINCT 
  COALESCE(g.name, a.name, a.city, 'Lieu inconnu') AS name, 
  COALESCE(g.latitude, a.latitude) AS latitude, 
  COALESCE(g.longitude, a.longitude) AS longitude 
FROM charging_processes cp
LEFT JOIN addresses a ON cp.address_id = a.id
LEFT JOIN geofences g ON cp.geofence_id = g.id
LEFT JOIN charges c ON c.charging_process_id = cp.id AND c.date = cp.end_date
WHERE cp.car_id IN (${car_id:csv}) 
  AND $__timeFilter(cp.start_date)
  AND cp.end_date IS NOT NULL
  AND cp.charge_energy_added > 0
  AND (g.name IS NULL OR (g.name <> '${home}' AND g.name <> '${work}' AND g.name NOT LIKE '${suc}%'))
  AND (c.fast_charger_brand IS NULL OR c.fast_charger_brand <> 'Tesla')
D'apres elle tu as remplacé les LEFT JOIN par des JOIN stricts sur la table addresses, et cette condition filtre de façon trop agressive les adresses ou les noms de bornes.
En ligne
Avatar de l’utilisateur
P@t
Expert
Expert
Messages : 630
Inscription : 13 janv. 2026
Localisation : ARDENNES (à la pointe de la pointe)
Voiture : M3 LR RWD premium

Re: Partage de dashboards pour TeslaMate créés par des membres du forum

Message par P@t »

@jpz68 & @J2J2 graphana n'a qu'à bien se tenir 😉👍
Ex-BMW addict ❤️ | Nouveau chapitre ⚡TM3 Premium Long Range RWD
Avatar de l’utilisateur
jpz68
Addict
Addict
Messages : 7356
Inscription : 12 oct. 2023
Localisation : Oise
Voiture : M3 LR boost 2020

Re: Partage de dashboards pour TeslaMate créés par des membres du forum

Message par jpz68 »

@J2J2 Merci pour ton retour, en effet je n'ai pas testé Other sans géorepérages (je pense que c'est ton cas). Essaie de remettre des LEFT JOIN là où j'ai mis des JOIN pour voir si cela corrige le problème (je n'ai pas de quoi tester dans ma base données). Et si c'est OK je corrigerai les requêtes SQL dans tous les dashboards concernés.

EDIT : j'ai vérifié ma requête SQL et elle est quasiment identique à ce que te propose ton IA, j'ai bien mis des LEFT JOIN pourtant :interroge:
J
J2J2
Enthousiaste
Enthousiaste
Messages : 151
Inscription : 24 févr. 2025
Voiture : TMY

Re: Partage de dashboards pour TeslaMate créés par des membres du forum

Message par J2J2 »

Cela semble etre sur la table adresses la différence:
LEFT JOIN addresses a ON cp.address_id = a.id
Parmis d'autre... je te transmet son explication en MP que tu vois ce que tu en pense. Moi ca me convient sa modif mais peu etre que toi tu avais d'autres chose dans la tete, et j'avoue que les geofence c'est bien... (mais flemme pour le moment de mon coté de les faire :D)
Avatar de l’utilisateur
jpz68
Addict
Addict
Messages : 7356
Inscription : 12 oct. 2023
Localisation : Oise
Voiture : M3 LR boost 2020

Re: Partage de dashboards pour TeslaMate créés par des membres du forum

Message par jpz68 »

@J2J2 OK, je regarderai ça prochainement, en attendant ça fonctionne (mieux :interroge:) avec les géorepérages de tout façon, donc pas d'urgence, et je m'intéresse plus au freinage récupératif en ce moment :clin:
Avatar de l’utilisateur
jpz68
Addict
Addict
Messages : 7356
Inscription : 12 oct. 2023
Localisation : Oise
Voiture : M3 LR boost 2020

Re: Partage de dashboards pour TeslaMate créés par des membres du forum

Message par jpz68 »

J'ai mis à jour le dashboard Power Drive et j'ai remplacé le dashboard Power Max par un nouveau dashboard Power Min-Max (avec l'ajout de la puissance minimale dans les deux cas, ce qui est intéressant pour le freinage récupératif). J'en parle ici :

Re: Ajouter / Modifier des dashboards dans Teslamate
En ligne
Avatar de l’utilisateur
yvespsv
Addict
Addict
Messages : 5533
Inscription : 17 nov. 2021
Localisation : Près d'Avignon mais dans le Gard
Voiture : Model Y RWD Blanc

Re: Partage de dashboards pour TeslaMate créés par des membres du forum

Message par yvespsv »

@J2J2

Bonjour,

Voici selon mon IA pouquoi c'est mieux JOIN que LEFT JOIN


Voici l'explication détaillée de pourquoi le `JOIN` (ou `INNER JOIN`) est ici préférable au `LEFT JOIN`.
---
### 1. Pourquoi l'autre IA suggère le `LEFT JOIN` ?
En règle générale en SQL, un `LEFT JOIN` permet de conserver toutes les lignes de la table de gauche (`charging_processes`), même si l'adresse liée (`address_id`) est manquante (`NULL`) ou introuvable dans la table `addresses`.
Si un `INNER JOIN` est utilisé et qu'une session n'a pas d'adresse liée, cette session est immédiatement éliminée du résultat.

---
### 2. Pourquoi cela ne pose AUCUN problème ici (et pourquoi le `JOIN` strict est meilleur) ?

#### A. Le fonctionnement de la base TeslaMate
Dans le schéma de base de données de TeslaMate :
* Dès qu'une recharge est enregistrée dans `charging_processes`, TeslaMate effectue un géocodage inverse et crée **systématiquement** une entrée dans la table `addresses`.
* La colonne `address_id` n'est donc virtuellement jamais nulle pour une session terminée.

#### B. La clause `WHERE` annule de toute façon le `LEFT JOIN`
C'est le point technique clé : dans la requête, nous filtrons sur les noms d'adresses :

```sql
WHERE ... AND (a.name ILIKE '%supercharger%' OR a.name ILIKE '%Tesla%')

```

Si une recharge n'avait pas d'adresse (`a.name` serait `NULL`), la condition `a.name ILIKE ...` renverrait `FALSE`. Le `LEFT JOIN` se comporterait alors **exactement comme un `INNER JOIN**` et éliminerait la ligne de toute façon.

#### C. L'objectif de la requête : afficher des marqueurs sur la carte

Cette requête sert à afficher des points GPS précis sur la carte **Geomap** de Grafana :
* Pour afficher un marqueur, Grafana **a absolument besoin** des colonnes `latitude` et `longitude` de la table `addresses`.
* Une session de charge sans adresse ni coordonnées GPS ne peut pas être dessinée sur la carte. Conserver ces lignes "vides" avec un `LEFT JOIN` n'aurait aucun intérêt pour ce composant visuel.

---

### En résumé

Le `JOIN` strict est le choix optimal ici car :

1. Il garantit au moteur PostgreSQL que seules les lignes avec des coordonnées GPS valides seront traitées, ce qui lui permet d'utiliser les index plus efficacement.
2. Il évite de charger en mémoire des lignes inutilisables pour la carte.

Si vous souhaitez toutefois être à 100 % rassuré et tester par vous-même, vous pouvez exécuter la version avec `LEFT JOIN` : vous constaterez qu'elle renvoie **strictement la même liste de Superchargeurs**, mais avec une exécution légèrement plus lourde pour le processeur du Raspberry Pi.
Model Y Propulsion 19" (Septembre 2024) - Blanche - Moteur J -Batterie Y7CR
En ligne
Avatar de l’utilisateur
yvespsv
Addict
Addict
Messages : 5533
Inscription : 17 nov. 2021
Localisation : Près d'Avignon mais dans le Gard
Voiture : Model Y RWD Blanc

Re: Partage de dashboards pour TeslaMate créés par des membres du forum

Message par yvespsv »

Bon je recommence,

Il me smblait avoir mis un message pour le fichier .json Synthèse Voyage que j'avais réalisé. A la suite de qq petits soucis de chargement des Data sur 4 ans et 2 voitures, l'IA m'a suggéré d'optimiser mes requètes et de modifier également le fichier .yml.

Pour l'optimisation des requêtes, j'ai transmis le fichier à @jpz68

Pour l'améliorations d'affichage, l'IA pense que c'est parce que le PostSql n'a pas suffisament de mémoire .
2 solutions à faire dans le fichier .yml :
- soit placer cette commande dans le fichier .yml dans les "Services"
services:
db:
image: postgres:18-trixie
restart: always
shm_size: '512mb' # <--- Augmenter à 512mb (ou '1gb')


- soit utiliser "mem_limit" et "memswap_limit" (Syntaxe classique Docker Compose) dans le fichier .yml dans les "Services"
services:
teslamate:
image: teslamate/teslamate:latest
restart: always
mem_limit: 1g
memswap_limit: 2g

Chez moi après modifications (solution 1) + optimisation des requêtes, tout s'affiche correctement :croise:
Model Y Propulsion 19" (Septembre 2024) - Blanche - Moteur J -Batterie Y7CR
J
J2J2
Enthousiaste
Enthousiaste
Messages : 151
Inscription : 24 févr. 2025
Voiture : TMY

Re: Partage de dashboards pour TeslaMate créés par des membres du forum

Message par J2J2 »

yvespsv a écrit : 04 août 2026 13:58
Tu a raison pour une requête de recherche spécifique (ex: "Trouve-moi les adresses qui contiennent le mot Supercharger").
Mais pour une requête d'exclusion comme Other ("Trouve-moi tout le reste"), le JOIN strict élimine silencieusement toutes les recharges qui ont des adresses manquantes ou des coordonnées issues uniquement des Geofences.

Je rappel que mon souci c'était les others qui étaient vide.
Du coup dans mon cas qui n'a pas de geofence je dois modifier la requête et voici l'explication qu'il m'en donne:

la version d'origine:

Code : Tout sélectionner

SELECT DISTINCT
COALESCE(g.name, a.name, a.city, 'Lieu inconnu') AS name,
a.latitude AS latitude,
a.longitude AS longitude
FROM charging_processes cp
JOIN addresses a ON cp.address_id = a.id
LEFT JOIN geofences g ON cp.geofence_id = g.id
LEFT JOIN charges c ON c.charging_process_id = cp.id AND c.date = cp.end_date
WHERE cp.car_id IN (${car_id:csv})
AND $__timeFilter(cp.start_date)
AND cp.charge_energy_added > 0
-- On exclut le domicile et le travail
AND (g.name IS NULL OR (g.name <> '${home}' AND g.name <> '${work}'))
-- On exclut les Superchargers Tesla
AND (g.name IS NULL OR g.name NOT LIKE '${suc}%')
AND (c.fast_charger_brand IS NULL OR c.fast_charger_brand <> 'Tesla')
-- PROTECTION AJOUTÉE ICI : gère le nom vide chez ton ami
AND (a.name IS NULL OR a.name NOT ILIKE '%supercharger%')
Ma version modifié (je vais finir par me faire ou deux geofence pour voir que je vous casse rien :D) :

Code : Tout sélectionner

SELECT DISTINCT
COALESCE(g.name, a.name, a.city, 'Lieu inconnu') AS name,
COALESCE(g.latitude, a.latitude) AS latitude,
COALESCE(g.longitude, a.longitude) AS longitude
FROM charging_processes cp
LEFT JOIN addresses a ON cp.address_id = a.id
LEFT JOIN geofences g ON cp.geofence_id = g.id
LEFT JOIN charges c ON c.charging_process_id = cp.id AND c.date = cp.end_date
WHERE cp.car_id IN (${car_id:csv})
AND $__timeFilter(cp.start_date)
AND cp.end_date IS NOT NULL
AND cp.charge_energy_added > 0
AND (g.name IS NULL OR (g.name <> '${home}' AND g.name <> '${work}' AND g.name NOT LIKE '${suc}%'))
AND (c.fast_charger_brand IS NULL OR c.fast_charger_brand <> 'Tesla')

Difference 1 : `LEFT JOIN` au lieu de `JOIN` sur la table `addresses` ( La cause principale de mon problème)

Code : Tout sélectionner

JOIN addresses a ON cp.address_id = a.id
vs
LEFT JOIN addresses a ON cp.address_id = a.id
Pourquoi: Un `JOIN` strict (INNER JOIN) force Grafana à éliminer la recharge de la carte si `address_id` est `NULL` ou non résolu dans la base au moment de la charge. Le `LEFT JOIN` conserve la recharge dans tous les cas.


Difference 2 : Gestion de la latitude et longitude

Code : Tout sélectionner

`a.latitude`, `a.longitude`
vs
`COALESCE(g.latitude, a.latitude)`, `COALESCE(g.longitude, a.longitude)`
Pourquoi: Si une recharge possède une zone géographique personnalisée (Geofence) mais que l'adresse OpenStreetMap globale n'a pas été calculée, la version d'origine échouait à placer le point. Le `COALESCE` utilise en priorité les coordonnées exactes de la Geofence, puis celles de l'adresse par repli.

Difference 3 : Suppression du filtre agressif sur `a.name`

Code : Tout sélectionner

`AND (a.name IS NULL OR a.name NOT ILIKE '%supercharger%')`
vs 
 *(Filtre supprimé)*
Pourquoi: La version d'origine semble avoir ajouté cette ligne pour bloquer les bornes mal identifiées. Cependant, sur certaines bornes publiques ou stations de recharge tierces (ex: Ionity, Fastned, bornes locales), OpenStreetMap inclut parfois le mot "supercharger" ou des termes assimilés dans la description du nom d'adresse `a.name`, ce qui faisait sauter les bornes "Other".

Difference 4 : Sécurité sur les sessions de charge en cours (`cp.end_date IS NOT NULL`)

Code : Tout sélectionner

 Pas de vérification sur `end_date`
 vs
 `AND cp.end_date IS NOT NULL`
Pourquoi: Cela évite d'afficher des données incomplètes ou des erreurs de tracé si la voiture est en train de se recharger au moment où tu consultes le dashboard.


Après on aurai aussi pu juste faire une requete qui prend tout ce qu n'a pas été pris comme supercharger/home/work et op :)
Un truc du genre:

Code : Tout sélectionner

SELECT DISTINCT 
  COALESCE(g.name, a.name, a.city, 'Lieu inconnu') AS name, 
  COALESCE(g.latitude, a.latitude) AS latitude, 
  COALESCE(g.longitude, a.longitude) AS longitude 
FROM charging_processes cp
LEFT JOIN addresses a ON cp.address_id = a.id
LEFT JOIN geofences g ON cp.geofence_id = g.id
LEFT JOIN charges c ON c.charging_process_id = cp.id AND c.date = cp.end_date
WHERE cp.car_id IN (${car_id:csv}) 
  AND $__timeFilter(cp.start_date)
  AND cp.end_date IS NOT NULL
  AND cp.charge_energy_added > 0

  -- EXCLUSION : On enlève tout ce qui est déjà pris par Domicile ou Travail
  AND (g.name IS NULL OR (g.name <> '${home}' AND g.name <> '${work}'))

  -- EXCLUSION : On enlève tout ce qui est déjà pris par la requête SUCs
  AND cp.id NOT IN (
    SELECT DISTINCT sub_cp.id
    FROM charging_processes sub_cp
    LEFT JOIN geofences sub_g ON sub_g.id = sub_cp.geofence_id
    LEFT JOIN addresses sub_a ON sub_a.id = sub_cp.address_id
    LEFT JOIN charges sub_c ON sub_c.charging_process_id = sub_cp.id
    WHERE sub_cp.car_id IN (${car_id:csv})
      AND $__timeFilter(sub_cp.start_date)
      AND (
        (sub_g.name LIKE '${suc}%') 
        OR (sub_c.fast_charger_brand = 'Tesla')
        OR (sub_a.name ILIKE '%supercharger%')
      )
  );
Ca aurai été encore mieux en ne dupliquant pas le code des requêtes déjà existante mais il semble qu'on touche aux limite de grafana.
En ligne
Avatar de l’utilisateur
yvespsv
Addict
Addict
Messages : 5533
Inscription : 17 nov. 2021
Localisation : Près d'Avignon mais dans le Gard
Voiture : Model Y RWD Blanc

Re: Partage de dashboards pour TeslaMate créés par des membres du forum

Message par yvespsv »

@J2J2

Pour ma part dans le panel que j'ai fait dans Synthèse et que j'ai modifié suite à tes propos sur georepérages (j'avais copié ta proposition que j'ai donné à mon IA préférée qui a bidouillé pour me sortir cela), j'ai cela pour la SQL concernant les SUC (hors géorepérages):
SELECT DISTINCT
a.name AS name,
a.latitude AS latitude,
a.longitude AS longitude
FROM charging_processes cp
JOIN addresses a ON cp.address_id = a.id
JOIN charges c ON c.charging_process_id = cp.id
WHERE cp.car_id IN (${car_id:csv})
AND $__timeFilter(cp.start_date)
AND (a.name ILIKE '%supercharger%' OR c.fast_charger_brand = 'Tesla')
AND cp.charge_energy_added > 0

Et j'ai cette requête pour les chargeurs autres que Tesla (hors géorepérages) :
SELECT DISTINCT
a.name AS name,
a.latitude AS latitude,
a.longitude AS longitude
FROM charging_processes cp
JOIN addresses a ON cp.address_id = a.id
LEFT JOIN geofences g ON cp.geofence_id = g.id
WHERE cp.car_id IN (${car_id:csv})
AND $__timeFilter(cp.start_date)
AND cp.charge_energy_added > 0
AND a.name NOT ILIKE '%supercharger%'
AND a.name NOT ILIKE '%Tesla%'
AND (g.name IS NULL OR (g.name NOT ILIKE '%home%' AND g.name NOT ILIKE '%maison%'));

Pour moi cela fonctionne. Mais regardes
Model Y Propulsion 19" (Septembre 2024) - Blanche - Moteur J -Batterie Y7CR
En ligne
Avatar de l’utilisateur
yvespsv
Addict
Addict
Messages : 5533
Inscription : 17 nov. 2021
Localisation : Près d'Avignon mais dans le Gard
Voiture : Model Y RWD Blanc

Re: Partage de dashboards pour TeslaMate créés par des membres du forum

Message par yvespsv »

Du nouveau :

Mon IA préférée vient de me sortir 3 requêtes dites "hybrides" qui fonctionnent dans tous les cas de figure :
- Si la zone de géorepérage existe, elle l'utilise.
- Si aucune zone de géorepérage n'est définie pour ce lieu, elle bascule automatiquement sur les données de l'adresse (addresses).


Voilà les SQL
Recharge à domicile : Home
Cette requête trouvera votre domicile, que vous l'ayez nommé via une zone geofences (ex: "Home" ou "Maison") ou que vous ne vous fiez qu'à l'adresse postale brute :
SELECT DISTINCT
COALESCE(g.name, a.name) AS name,
COALESCE(g.latitude, a.latitude) AS latitude,
COALESCE(g.longitude, a.longitude) AS longitude
FROM charging_processes cp
JOIN addresses a ON cp.address_id = a.id
LEFT JOIN geofences g ON cp.geofence_id = g.id
WHERE cp.car_id IN (${car_id:csv})
AND $__timeFilter(cp.start_date)
AND cp.charge_energy_added > 0
AND (
g.name ILIKE '%home%' OR g.name ILIKE '%maison%'
OR a.name ILIKE '%home%' OR a.name ILIKE '%maison%'
);

Recharges sur Chargeurs autres que Tesla
Cette requête affiche tous les autres points de recharge. Elle exclut le domicile et les Superchargeurs, qu'ils soient géo repérés ou identifiés par leur adresse :
SELECT DISTINCT
COALESCE(g.name, a.name) AS name,
COALESCE(g.latitude, a.latitude) AS latitude,
COALESCE(g.longitude, a.longitude) AS longitude
FROM charging_processes cp
JOIN addresses a ON cp.address_id = a.id
LEFT JOIN geofences g ON cp.geofence_id = g.id
WHERE cp.car_id IN (${car_id:csv})
AND $__timeFilter(cp.start_date)
AND cp.charge_energy_added > 0
-- Exclusion des Superchargeurs
AND a.name NOT ILIKE '%supercharger%'
AND a.name NOT ILIKE '%Tesla%'
-- Exclusion de la Maison (via geofence OU adresse)
AND (g.name IS NULL OR (g.name NOT ILIKE '%home%' AND g.name NOT ILIKE '%maison%'))
AND a.name NOT ILIKE '%home%'
AND a.name NOT ILIKE '%maison%';

Recharge sur Superchargeurs Tesla (SuC).
Elle prend prioritairement le nom et les coordonnées de la zone géorepérée si vous en avez créé une (par exemple si vous avez nommé un SuC spécifique dans TeslaMate), et bascule automatiquement sur l'adresse standard Tesla / Supercharger sinon :
SELECT DISTINCT
COALESCE(g.name, a.name) AS name,
COALESCE(g.latitude, a.latitude) AS latitude,
COALESCE(g.longitude, a.longitude) AS longitude
FROM charging_processes cp
JOIN addresses a ON cp.address_id = a.id
LEFT JOIN geofences g ON cp.geofence_id = g.id
WHERE cp.car_id IN (${car_id:csv})
AND $__timeFilter(cp.start_date)
AND cp.charge_energy_added > 0
AND (
a.name ILIKE '%supercharger%'
OR a.name ILIKE '%Tesla%'
OR (g.name IS NOT NULL AND (g.name ILIKE '%supercharger%' OR g.name ILIKE '%suc%'))
);

Voilà.
Cela fonctionne sur mon Pi sans problème.

Image
Model Y Propulsion 19" (Septembre 2024) - Blanche - Moteur J -Batterie Y7CR
Avatar de l’utilisateur
jpz68
Addict
Addict
Messages : 7356
Inscription : 12 oct. 2023
Localisation : Oise
Voiture : M3 LR boost 2020

Re: Partage de dashboards pour TeslaMate créés par des membres du forum

Message par jpz68 »

@J2J2 Merci, je viens de mettre à jour les dashboards Synthèse Voyage, Détails Voyage, Charge Locations, Charge Locations & Drives et Charge Locations with Bar Charts en m'inspirant de ce que tu as fait (seul le nommage des stations pour lesquelles il n'y a pas de géorepérage est différent, dans la première ligne du SELECT, j'ai repris ce qui est fait dans le tableau du dashboard Charges livré avec TeslaMate) :

Code : Tout sélectionner

SELECT DISTINCT 
COALESCE(g.name, CONCAT_WS(', ', COALESCE(a.name, nullif(CONCAT_WS(' ', a.road, a.house_number), '')), a.city)) AS name,
COALESCE(g.latitude, a.latitude) AS latitude,
COALESCE(g.longitude, a.longitude) AS longitude
FROM charging_processes cp
LEFT JOIN addresses a ON a.id = cp.address_id
LEFT JOIN geofences g ON g.id = cp.geofence_id
LEFT JOIN charges c ON c.charging_process_id = cp.id AND c.date = cp.end_date 
WHERE 
cp.car_id IN (${car_id:csv})
AND $__timeFilter(cp.start_date)
AND cp.end_date IS NOT NULL
AND cp.charge_energy_added > 0
AND (g.name IS NULL OR (g.name <> '${home}' AND g.name <> '${work}' AND g.name NOT LIKE '${suc}%'))
AND (c.fast_charger_brand IS NULL OR c.fast_charger_brand <> 'Tesla')
J'espère que cela fonctionnera avec tes données.
Avatar de l’utilisateur
jpz68
Addict
Addict
Messages : 7356
Inscription : 12 oct. 2023
Localisation : Oise
Voiture : M3 LR boost 2020

Re: Partage de dashboards pour TeslaMate créés par des membres du forum

Message par jpz68 »

Pour mon souci de rafraichissement des calques (points rouges, verts, jaunes et oranges) quand une carte se met à jour suite à une modification de l'intervalle temporel, je ne pense pas que cela soit en rapport avec les requêtes SQL car un simple rafraichissement graphique en cliquant sur le '-' (pour dézoomer) puis sur le '+' (pour zoomer) en haut à gauche sur la carte permet de résoudre le problème instantanément (sans réinterroger la base de données).

A mon avis c'est un souci au niveau du composant Geomap utilisé pour afficher la carte sous Grafana, cela vient peut-être de la version utilisée sous MyTeslaMate. Possible que cela disparaisse prochainement suite à une mise à jour. En attendant je force un rafraichissement à chaque fois que je change l'intervalle temporel afin d'être sûr que tous les calques soient correctement affichés. Ce n'est pas bien grave.
J
J2J2
Enthousiaste
Enthousiaste
Messages : 151
Inscription : 24 févr. 2025
Voiture : TMY

Re: Partage de dashboards pour TeslaMate créés par des membres du forum

Message par J2J2 »

@jpz68
j'ai installé tes dernieres version histoire de valider :).
coté synthese et detail voyage tout semble ok.
J'ai eu un souci sur Power Drive, ce me faisait une ereur: db query error: ERROR: syntax error at or near "ORDER" (SQLSTATE 42601).
J'ai supprimé ce qui était dans le champ Date & Time et j'ai sauvgardé les valeur par defaut du dashboard et c'est reparé.

Le seul souci qui me reste c'est dans Charge Locations with Bar Charts, tu a du zaper de mettre a jours les requetes dans la partie bar chart car j'ai que les home et work :chut: .
Avatar de l’utilisateur
jpz68
Addict
Addict
Messages : 7356
Inscription : 12 oct. 2023
Localisation : Oise
Voiture : M3 LR boost 2020

Re: Partage de dashboards pour TeslaMate créés par des membres du forum

Message par jpz68 »

@J2J2 Content que tout fonctionne bien avec Synthèse Voyage et Détails Voyage :smile:

Pour Charge Locations with Bar Charts les requêtes SQL actuelles ne prennent en compte que les géorepérages en effet, je regarderai ça à l'occasion (pas trop le temps aujourd'hui).

Sinon Power Drive est surtout intéressant depuis Power Min-Max (en cliquant dans la colonne Date & Time des tableaux) : ça fonctionne avec tes données ?
En ligne
Avatar de l’utilisateur
yvespsv
Addict
Addict
Messages : 5533
Inscription : 17 nov. 2021
Localisation : Près d'Avignon mais dans le Gard
Voiture : Model Y RWD Blanc

Re: Partage de dashboards pour TeslaMate créés par des membres du forum

Message par yvespsv »

@jpz68 et @J2J2

Avez vous testé les SQL hybrides ci-dessus. Sur mon Pi cela fonctionne.
Model Y Propulsion 19" (Septembre 2024) - Blanche - Moteur J -Batterie Y7CR
J
J2J2
Enthousiaste
Enthousiaste
Messages : 151
Inscription : 24 févr. 2025
Voiture : TMY

Re: Partage de dashboards pour TeslaMate créés par des membres du forum

Message par J2J2 »

jpz68 a écrit : 05 août 2026 11:41
Sinon Power Drive est surtout intéressant depuis Power Min-Max (en cliquant dans la colonne Date & Time des tableaux) : ça fonctionne avec tes données ?
OK j'ai compris comment tu propose de l'utiliser et pourquoi pas :).
Mais quand je passe par le tableau, ca m'ouvre bien le dashboard "power drive" a la date indiqué, mais alors j'ai pas du tout une courbe qui correspond au max power ou au min power :(.
Je suis allé voir mes graph de battery et de drive, la date et le power sont bon dans le tableau, c'est le "power drive" qui affiche pas ce qui devrait y avoir a la date sélectionnée Oo (meme sans passer par le power min max)

Edit:
J'ai modifié le calcul de la variable time_stamp (de power drive) par:

Code : Tout sélectionner

SELECT CASE 
  WHEN '$date_time' = '' THEN $dmax * 0.001
  ELSE EXTRACT(EPOCH FROM ('$date_time'::timestamp AT TIME ZONE 'Europe/Paris'))
END
Et j'ai supprimé les *0,001 qui étaient sur les time_stamp.

J'aime pas trop avoir la time zone codé en dur :( mais si je prend la variable ${__user.timezone} j'ai de la crotte aussi ...
Avatar de l’utilisateur
jpz68
Addict
Addict
Messages : 7356
Inscription : 12 oct. 2023
Localisation : Oise
Voiture : M3 LR boost 2020

Re: Partage de dashboards pour TeslaMate créés par des membres du forum

Message par jpz68 »

@J2J2 Oui, ce serait mieux de gérer proprement la time zone sans la mettre en dur, c'est ce que j'ai cherché à faire et je n'ai pas trouvé mieux que ça (en tout cas ça marche avec mes données sous MyTeslaMate, sachant que la version de ma base de données est PostgreSQL 17.5) :

Code : Tout sélectionner

SELECT CASE 
WHEN '$date_time' = '' THEN TO_TIMESTAMP($dmax*0.001) - interval '1 second' * EXTRACT(TIMEZONE FROM TO_TIMESTAMP($dmax*0.001)) 
ELSE TO_TIMESTAMP('$date_time','YYYY-MM-DD HH24:MI:SS') - interval '1 second' * EXTRACT(TIMEZONE FROM TO_TIMESTAMP('$date_time','YYYY-MM-DD HH24:MI:SS'))
END
J'ai essayé ton code mais cela ne fonctionne pas chez moi : c'est peut-être lié à la version de PostgreSQL :interroge:

EDIT : je viens de mettre à jour le dashboard Charge Locations with Bar Charts : tu me diras si c'est mieux avec tes données.

EDIT bis : concernant Power Drive cela fonctionne aussi pour @P@t ce qui irait dans le sens d'un lien avec la version de la base de données (visiblement pas de souci avec MyTeslaMate qui utilise PostgreSQL 17.5).
J
J2J2
Enthousiaste
Enthousiaste
Messages : 151
Inscription : 24 févr. 2025
Voiture : TMY

Re: Partage de dashboards pour TeslaMate créés par des membres du forum

Message par J2J2 »

@jpz68
Nickel "Charge Locations with Bar Charts" marche chez moi :).

Je suis en PostgreSQL 17.10
J'ai testé sous chrome ou firefox et c'est pareil :/ je peux garder mon fix pour le moment :).
Avatar de l’utilisateur
jpz68
Addict
Addict
Messages : 7356
Inscription : 12 oct. 2023
Localisation : Oise
Voiture : M3 LR boost 2020

Re: Partage de dashboards pour TeslaMate créés par des membres du forum

Message par jpz68 »

@J2J2 Oui, en attendant de trouver une solution qui fonctionne pour tous.

Sous MyTeslaMate le fuseau horaire de la base de données PostgreSQL est le même pour tous les utilisateurs à mon avis.

Mais il doit y avoir un moyen plus simple de convertir une date saisie en heure locale en horodatage dans la time zone de PostgreSQL (c'est ce que j'ai cherché à faire dans la variable time_stamp) et qui fonctionne pour tous les types d'installation de TeslaMate et peu importe la version de la base de données :interroge:
Répondre

Créer un compte ou se connecter pour rejoindre la discussion

Vous devez être membre pour pouvoir répondre

Créer un compte

Vous n‘êtes pas membre ? Inscrivez-vous pour rejoindre notre communauté
Les membres peuvent créer leurs propres sujets et s‘abonner à des sujets
C‘est gratuit et cela ne prend qu‘une minute

Inscription

Se connecter