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.
