Grafana vehicules : resume en tableau, couleurs fixes ; HANDOFF concierge vehicule non confirme
This commit is contained in:
27
HANDOFF.md
27
HANDOFF.md
@@ -1492,6 +1492,31 @@ du 03-04/10 = test du budget.
|
|||||||
vehicule_sur=false`). Session close : le service ne la reecrit pas. La session de
|
vehicule_sur=false`). Session close : le service ne la reecrit pas. La session de
|
||||||
13:10 (JEEP, 4,6 kWh, a confirmer) est bien la JEEP.
|
13:10 (JEEP, 4,6 kWh, a confirmer) est bien la JEEP.
|
||||||
- JEEP rebranchee a 20:14, concierge 20:20 : la nuit du 03-04/10 reste le test du budget.
|
- JEEP rebranchee a 20:14, concierge 20:20 : la nuit du 03-04/10 reste le test du budget.
|
||||||
|
- **Suite (03/10 ~23:55, accord du proprietaire)** :
|
||||||
|
- Grafana « Sur la periode » : panneau `stat` (chiffres empiles, illisible) remplace par
|
||||||
|
un TABLEAU pleine largeur, une colonne par vehicule (VW, JEEP, ZERO, Invite, Non
|
||||||
|
etiquete, Sessions, A confirmer), couleurs fixes partagees avec l'histogramme
|
||||||
|
(`COULEURS_VEHICULES` : VW bleu, JEEP vert, ZERO violet, Invite jaune, Non etiquete
|
||||||
|
orange) — l'histogramme prenait la palette par defaut (JEEP en jaune). Verifie par
|
||||||
|
l'API : 7 jours = JEEP 62,5 / ZERO 4,7.
|
||||||
|
- `session_charge` 13:10 (JEEP) passee a **confirmee** en base.
|
||||||
|
- **Releve SPARK des reponses reelles du 03/10** : ZERO 48 % (17:11) et JEEP 54 %
|
||||||
|
(20:22) conformes. Mais a 14:13 « JEEP » a ete ANNULE par OpenClaw (« Skipped due to
|
||||||
|
queued user message », le « 53% » suivant etait deja en file) : seul le niveau a ete
|
||||||
|
note, le branchement de 13:06 est reste sans etiquette. Et « C'etait 53% a 13h10 » ->
|
||||||
|
l'agent a repondu « Noté : 53 % à 13:10 » (heure inventee, le script n'en enregistre
|
||||||
|
pas).
|
||||||
|
- **`concierge-live.js` (fait par moi, SPARK prevenu avant/apres)** : (1) un niveau
|
||||||
|
seul alors que le branchement en cours n'a pas d'etiquette concierge (ou historique
|
||||||
|
illisible) -> la ligne finit par « ⚠️ Véhicule non confirmé pour ce branchement :
|
||||||
|
lequel est-ce ? » ; le vehicule du selecteur n'est JAMAIS publie ; (2) la ligne du
|
||||||
|
niveau porte l'heure de saisie : « 🔋 Niveau noté : 53 % (saisi à 14:15). ».
|
||||||
|
7 cas verifies en simulation (niveau seul etiquete / non etiquete / base muette,
|
||||||
|
vehicule + niveau, 150 % refuse, voiture debranchee, vehicule seul). Sauvegarde
|
||||||
|
`concierge-live.js.bak-nonconfirme-20261003-235613`.
|
||||||
|
- Horodatage « [Sat 2026-10-03 14:14 GMT+2 » dans un WhatsApp : ecrit par le MODELE
|
||||||
|
(il a recopie l'enveloppe des messages entrants apres l'appel annule), pas par le
|
||||||
|
gateway. Une occurrence : SPARK surveille, pas de regle de fiche.
|
||||||
|
|
||||||
---
|
---
|
||||||
*Document mis a jour le : 03/10/2026 (soir) — Grafana vehicules : ZERO et Invite ajoutes, session 16:46 reetiquetee ZERO ; prevision SOC 10 h ~35 % ; concierge fiable : niveau note par le script, une ligne, dedoublonnage, simulation par drapeau ; agent : message incompris = question, bourse sur demande explicite (banc final 6/6) ; a verifier : nuit du samedi 03 au dimanche 04/10 (budget < besoin JEEP), cron orange-cloture lundi 05/10 apres 17:40, comparaison VRM / Forecast.Solar lundi 05/10*
|
*Document mis a jour le : 03/10/2026 (~23:55) — concierge : vehicule non confirme demande, heure de saisie ; Grafana vehicules en tableau ; Grafana vehicules : ZERO et Invite ajoutes, session 16:46 reetiquetee ZERO ; prevision SOC 10 h ~35 % ; concierge fiable : niveau note par le script, une ligne, dedoublonnage, simulation par drapeau ; agent : message incompris = question, bourse sur demande explicite (banc final 6/6) ; a verifier : nuit du samedi 03 au dimanche 04/10 (budget < besoin JEEP), cron orange-cloture lundi 05/10 apres 17:40, comparaison VRM / Forecast.Solar lundi 05/10*
|
||||||
|
|||||||
@@ -60,9 +60,9 @@
|
|||||||
},
|
},
|
||||||
"panels": [
|
"panels": [
|
||||||
{
|
{
|
||||||
"type": "stat",
|
"type": "table",
|
||||||
"title": "Sur la periode",
|
"title": "Sur la periode",
|
||||||
"description": "« Etiquette douteuse » compte les sessions ou le selecteur a change en cours de route, ou n'etait pas renseigne. C'est la mesure honnete de l'incertitude : elle ne peut pas etre levee autrement qu'en positionnant le selecteur au branchement.",
|
"description": "kWh charges par vehicule sur la plage choisie (compteur de la borne). « Invite » = tout vehicule hors foyer (Megane de service, amis). « A confirmer » compte les sessions dont l'etiquette vient du selecteur sans confirmation : la seule mesure honnete de l'incertitude.",
|
||||||
"datasource": {
|
"datasource": {
|
||||||
"type": "grafana-postgresql-datasource",
|
"type": "grafana-postgresql-datasource",
|
||||||
"uid": "evcs-pg"
|
"uid": "evcs-pg"
|
||||||
@@ -77,30 +77,24 @@
|
|||||||
"format": "table",
|
"format": "table",
|
||||||
"rawQuery": true,
|
"rawQuery": true,
|
||||||
"editorMode": "code",
|
"editorMode": "code",
|
||||||
"rawSql": "SELECT round(coalesce(sum(coalesce(energie_station_kwh, energie_kwh)) FILTER (WHERE vehicule = 'VW'), 0)::numeric, 1) AS \"VW\",\n round(coalesce(sum(coalesce(energie_station_kwh, energie_kwh)) FILTER (WHERE vehicule = 'JEEP'), 0)::numeric, 1) AS \"JEEP\",\n round(coalesce(sum(coalesce(energie_station_kwh, energie_kwh)) FILTER (WHERE vehicule = 'ZERO'), 0)::numeric, 1) AS \"ZERO\",\n round(coalesce(sum(coalesce(energie_station_kwh, energie_kwh)) FILTER (WHERE vehicule NOT IN ('VW', 'JEEP', 'ZERO')), 0)::numeric, 1) AS \"Invite\",\n count(*) AS \"Sessions\",\n count(*) FILTER (WHERE NOT vehicule_sur OR vehicule IS NULL) AS \"A confirmer\"\nFROM session_charge WHERE $__timeFilter(debut)"
|
"rawSql": "SELECT round(coalesce(sum(coalesce(energie_station_kwh, energie_kwh)) FILTER (WHERE vehicule = 'VW'), 0)::numeric, 1) AS \"VW\",\n round(coalesce(sum(coalesce(energie_station_kwh, energie_kwh)) FILTER (WHERE vehicule = 'JEEP'), 0)::numeric, 1) AS \"JEEP\",\n round(coalesce(sum(coalesce(energie_station_kwh, energie_kwh)) FILTER (WHERE vehicule = 'ZERO'), 0)::numeric, 1) AS \"ZERO\",\n round(coalesce(sum(coalesce(energie_station_kwh, energie_kwh)) FILTER (WHERE vehicule NOT IN ('VW', 'JEEP', 'ZERO')), 0)::numeric, 1) AS \"Invite\",\n round(coalesce(sum(coalesce(energie_station_kwh, energie_kwh)) FILTER (WHERE vehicule IS NULL), 0)::numeric, 1) AS \"Non etiquete\",\n count(*) AS \"Sessions\",\n count(*) FILTER (WHERE NOT vehicule_sur OR vehicule IS NULL) AS \"A confirmer\"\nFROM session_charge WHERE $__timeFilter(debut)"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"gridPos": {
|
"gridPos": {
|
||||||
"x": 0,
|
"x": 0,
|
||||||
"y": 0,
|
"y": 0,
|
||||||
"w": 24,
|
"w": 24,
|
||||||
"h": 5
|
"h": 4
|
||||||
},
|
},
|
||||||
"fieldConfig": {
|
"fieldConfig": {
|
||||||
"defaults": {
|
"defaults": {
|
||||||
"color": {
|
"custom": {
|
||||||
"mode": "thresholds"
|
"align": "left",
|
||||||
|
"cellOptions": {
|
||||||
|
"type": "auto"
|
||||||
},
|
},
|
||||||
"thresholds": {
|
"filterable": true
|
||||||
"mode": "absolute",
|
|
||||||
"steps": [
|
|
||||||
{
|
|
||||||
"color": "text",
|
|
||||||
"value": null
|
|
||||||
}
|
}
|
||||||
]
|
|
||||||
},
|
|
||||||
"mappings": []
|
|
||||||
},
|
},
|
||||||
"overrides": [
|
"overrides": [
|
||||||
{
|
{
|
||||||
@@ -113,6 +107,16 @@
|
|||||||
"id": "unit",
|
"id": "unit",
|
||||||
"value": "kwatth"
|
"value": "kwatth"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"id": "decimals",
|
||||||
|
"value": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "custom.cellOptions",
|
||||||
|
"value": {
|
||||||
|
"type": "color-text"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"id": "color",
|
"id": "color",
|
||||||
"value": {
|
"value": {
|
||||||
@@ -132,6 +136,16 @@
|
|||||||
"id": "unit",
|
"id": "unit",
|
||||||
"value": "kwatth"
|
"value": "kwatth"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"id": "decimals",
|
||||||
|
"value": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "custom.cellOptions",
|
||||||
|
"value": {
|
||||||
|
"type": "color-text"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"id": "color",
|
"id": "color",
|
||||||
"value": {
|
"value": {
|
||||||
@@ -151,6 +165,16 @@
|
|||||||
"id": "unit",
|
"id": "unit",
|
||||||
"value": "kwatth"
|
"value": "kwatth"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"id": "decimals",
|
||||||
|
"value": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "custom.cellOptions",
|
||||||
|
"value": {
|
||||||
|
"type": "color-text"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"id": "color",
|
"id": "color",
|
||||||
"value": {
|
"value": {
|
||||||
@@ -170,6 +194,16 @@
|
|||||||
"id": "unit",
|
"id": "unit",
|
||||||
"value": "kwatth"
|
"value": "kwatth"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"id": "decimals",
|
||||||
|
"value": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "custom.cellOptions",
|
||||||
|
"value": {
|
||||||
|
"type": "color-text"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"id": "color",
|
"id": "color",
|
||||||
"value": {
|
"value": {
|
||||||
@@ -182,9 +216,44 @@
|
|||||||
{
|
{
|
||||||
"matcher": {
|
"matcher": {
|
||||||
"id": "byName",
|
"id": "byName",
|
||||||
"options": "Etiquette douteuse"
|
"options": "Non etiquete"
|
||||||
},
|
},
|
||||||
"properties": [
|
"properties": [
|
||||||
|
{
|
||||||
|
"id": "unit",
|
||||||
|
"value": "kwatth"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "decimals",
|
||||||
|
"value": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "custom.cellOptions",
|
||||||
|
"value": {
|
||||||
|
"type": "color-text"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "color",
|
||||||
|
"value": {
|
||||||
|
"mode": "fixed",
|
||||||
|
"fixedColor": "orange"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"matcher": {
|
||||||
|
"id": "byName",
|
||||||
|
"options": "A confirmer"
|
||||||
|
},
|
||||||
|
"properties": [
|
||||||
|
{
|
||||||
|
"id": "custom.cellOptions",
|
||||||
|
"value": {
|
||||||
|
"type": "color-text"
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"id": "thresholds",
|
"id": "thresholds",
|
||||||
"value": {
|
"value": {
|
||||||
@@ -200,31 +269,23 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "color",
|
||||||
|
"value": {
|
||||||
|
"mode": "thresholds"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"options": {
|
"options": {
|
||||||
"reduceOptions": {
|
"showHeader": true,
|
||||||
"calcs": [
|
"cellHeight": "sm",
|
||||||
"lastNotNull"
|
"footer": {
|
||||||
],
|
"show": false
|
||||||
"fields": "",
|
}
|
||||||
"values": false
|
|
||||||
},
|
|
||||||
"orientation": "horizontal",
|
|
||||||
"textMode": "auto",
|
|
||||||
"colorMode": "value",
|
|
||||||
"graphMode": "none",
|
|
||||||
"justifyMode": "center",
|
|
||||||
"percentChangeColorMode": "standard",
|
|
||||||
"noValue": "—",
|
|
||||||
"text": {
|
|
||||||
"valueSize": 34,
|
|
||||||
"titleSize": 12
|
|
||||||
},
|
|
||||||
"wideLayout": true
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -250,7 +311,7 @@
|
|||||||
],
|
],
|
||||||
"gridPos": {
|
"gridPos": {
|
||||||
"x": 0,
|
"x": 0,
|
||||||
"y": 5,
|
"y": 4,
|
||||||
"w": 24,
|
"w": 24,
|
||||||
"h": 9
|
"h": 9
|
||||||
},
|
},
|
||||||
@@ -267,7 +328,83 @@
|
|||||||
"axisBorderShow": false
|
"axisBorderShow": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"overrides": []
|
"overrides": [
|
||||||
|
{
|
||||||
|
"matcher": {
|
||||||
|
"id": "byName",
|
||||||
|
"options": "VW"
|
||||||
|
},
|
||||||
|
"properties": [
|
||||||
|
{
|
||||||
|
"id": "color",
|
||||||
|
"value": {
|
||||||
|
"mode": "fixed",
|
||||||
|
"fixedColor": "blue"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"matcher": {
|
||||||
|
"id": "byName",
|
||||||
|
"options": "JEEP"
|
||||||
|
},
|
||||||
|
"properties": [
|
||||||
|
{
|
||||||
|
"id": "color",
|
||||||
|
"value": {
|
||||||
|
"mode": "fixed",
|
||||||
|
"fixedColor": "green"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"matcher": {
|
||||||
|
"id": "byName",
|
||||||
|
"options": "ZERO"
|
||||||
|
},
|
||||||
|
"properties": [
|
||||||
|
{
|
||||||
|
"id": "color",
|
||||||
|
"value": {
|
||||||
|
"mode": "fixed",
|
||||||
|
"fixedColor": "purple"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"matcher": {
|
||||||
|
"id": "byName",
|
||||||
|
"options": "Invite"
|
||||||
|
},
|
||||||
|
"properties": [
|
||||||
|
{
|
||||||
|
"id": "color",
|
||||||
|
"value": {
|
||||||
|
"mode": "fixed",
|
||||||
|
"fixedColor": "yellow"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"matcher": {
|
||||||
|
"id": "byName",
|
||||||
|
"options": "Non etiquete"
|
||||||
|
},
|
||||||
|
"properties": [
|
||||||
|
{
|
||||||
|
"id": "color",
|
||||||
|
"value": {
|
||||||
|
"mode": "fixed",
|
||||||
|
"fixedColor": "orange"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"options": {
|
"options": {
|
||||||
"orientation": "auto",
|
"orientation": "auto",
|
||||||
@@ -310,7 +447,7 @@
|
|||||||
],
|
],
|
||||||
"gridPos": {
|
"gridPos": {
|
||||||
"x": 0,
|
"x": 0,
|
||||||
"y": 14,
|
"y": 13,
|
||||||
"w": 24,
|
"w": 24,
|
||||||
"h": 11
|
"h": 11
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1347,6 +1347,9 @@ WHERE $__timeFilter(debut)
|
|||||||
GROUP BY date_trunc(pas.unite, debut), pas.forme
|
GROUP BY date_trunc(pas.unite, debut), pas.forme
|
||||||
ORDER BY date_trunc(pas.unite, debut)"""
|
ORDER BY date_trunc(pas.unite, debut)"""
|
||||||
|
|
||||||
|
COULEURS_VEHICULES = {"VW": "blue", "JEEP": "green", "ZERO": "purple",
|
||||||
|
"Invite": "yellow", "Non etiquete": "orange"}
|
||||||
|
|
||||||
vehicules = dashboard("evcs-vehicules", "Les vehicules", (
|
vehicules = dashboard("evcs-vehicules", "Les vehicules", (
|
||||||
"Ce que chaque voiture encaisse, session par session et sur la periode "
|
"Ce que chaque voiture encaisse, session par session et sur la periode "
|
||||||
"choisie. L'etiquette vient d'un selecteur manuel : elle peut etre fausse, "
|
"choisie. L'etiquette vient d'un selecteur manuel : elle peut etre fausse, "
|
||||||
@@ -1356,39 +1359,38 @@ vehicules = dashboard("evcs-vehicules", "Les vehicules", (
|
|||||||
"service, amis)."),
|
"service, amis)."),
|
||||||
frm="now-7d", refresh="5m", panels=[
|
frm="now-7d", refresh="5m", panels=[
|
||||||
|
|
||||||
stat("Sur la periode", [
|
table("Sur la periode", [
|
||||||
sql("A",
|
sql("A",
|
||||||
"SELECT round(coalesce(sum(coalesce(energie_station_kwh, energie_kwh)) FILTER (WHERE vehicule = 'VW'), 0)::numeric, 1) AS \"VW\",\n"
|
"SELECT round(coalesce(sum(coalesce(energie_station_kwh, energie_kwh)) FILTER (WHERE vehicule = 'VW'), 0)::numeric, 1) AS \"VW\",\n"
|
||||||
" round(coalesce(sum(coalesce(energie_station_kwh, energie_kwh)) FILTER (WHERE vehicule = 'JEEP'), 0)::numeric, 1) AS \"JEEP\",\n"
|
" round(coalesce(sum(coalesce(energie_station_kwh, energie_kwh)) FILTER (WHERE vehicule = 'JEEP'), 0)::numeric, 1) AS \"JEEP\",\n"
|
||||||
" round(coalesce(sum(coalesce(energie_station_kwh, energie_kwh)) FILTER (WHERE vehicule = 'ZERO'), 0)::numeric, 1) AS \"ZERO\",\n"
|
" round(coalesce(sum(coalesce(energie_station_kwh, energie_kwh)) FILTER (WHERE vehicule = 'ZERO'), 0)::numeric, 1) AS \"ZERO\",\n"
|
||||||
" round(coalesce(sum(coalesce(energie_station_kwh, energie_kwh)) FILTER (WHERE vehicule NOT IN ('VW', 'JEEP', 'ZERO')), 0)::numeric, 1) AS \"Invite\",\n"
|
" round(coalesce(sum(coalesce(energie_station_kwh, energie_kwh)) FILTER (WHERE vehicule NOT IN ('VW', 'JEEP', 'ZERO')), 0)::numeric, 1) AS \"Invite\",\n"
|
||||||
|
" round(coalesce(sum(coalesce(energie_station_kwh, energie_kwh)) FILTER (WHERE vehicule IS NULL), 0)::numeric, 1) AS \"Non etiquete\",\n"
|
||||||
" count(*) AS \"Sessions\",\n"
|
" count(*) AS \"Sessions\",\n"
|
||||||
" count(*) FILTER (WHERE NOT vehicule_sur OR vehicule IS NULL) AS \"A confirmer\"\n"
|
" count(*) FILTER (WHERE NOT vehicule_sur OR vehicule IS NULL) AS \"A confirmer\"\n"
|
||||||
"FROM session_charge WHERE $__timeFilter(debut)", fmt="table")],
|
"FROM session_charge WHERE $__timeFilter(debut)", fmt="table")],
|
||||||
PG, 0, 0, 24, 5,
|
PG, 0, 0, 24, 4,
|
||||||
"« Etiquette douteuse » compte les sessions ou le selecteur a change en "
|
"kWh charges par vehicule sur la plage choisie (compteur de la borne). "
|
||||||
"cours de route, ou n'etait pas renseigne. C'est la mesure honnete de "
|
"« Invite » = tout vehicule hors foyer (Megane de service, amis). "
|
||||||
"l'incertitude : elle ne peut pas etre levee autrement qu'en positionnant "
|
"« A confirmer » compte les sessions dont l'etiquette vient du selecteur "
|
||||||
"le selecteur au branchement.",
|
"sans confirmation : la seule mesure honnete de l'incertitude.",
|
||||||
taille={"valueSize": 34, "titleSize": 12},
|
overrides=[sur(n, [{"id": "unit", "value": "kwatth"},
|
||||||
overrides=[
|
{"id": "decimals", "value": 1},
|
||||||
sur("VW", [{"id": "unit", "value": "kwatth"},
|
{"id": "custom.cellOptions", "value": {"type": "color-text"}},
|
||||||
{"id": "color", "value": {"mode": "fixed", "fixedColor": "blue"}}]),
|
{"id": "color", "value": {"mode": "fixed", "fixedColor": c}}])
|
||||||
sur("JEEP", [{"id": "unit", "value": "kwatth"},
|
for n, c in COULEURS_VEHICULES.items()] + [
|
||||||
{"id": "color", "value": {"mode": "fixed", "fixedColor": "green"}}]),
|
sur("A confirmer", [{"id": "custom.cellOptions", "value": {"type": "color-text"}},
|
||||||
sur("ZERO", [{"id": "unit", "value": "kwatth"},
|
{"id": "thresholds", "value": seuils(("green", None), ("orange", 1))},
|
||||||
{"id": "color", "value": {"mode": "fixed", "fixedColor": "purple"}}]),
|
{"id": "color", "value": {"mode": "thresholds"}}])]),
|
||||||
sur("Invite", [{"id": "unit", "value": "kwatth"},
|
|
||||||
{"id": "color", "value": {"mode": "fixed", "fixedColor": "yellow"}}]),
|
|
||||||
sur("Etiquette douteuse", [{"id": "thresholds", "value": seuils(
|
|
||||||
("green", None), ("orange", 1))}])]),
|
|
||||||
|
|
||||||
barchart("Energie par periode et par vehicule",
|
barchart("Energie par periode et par vehicule",
|
||||||
[sql("A", SESSIONS_PERIODE, fmt="table")],
|
[sql("A", SESSIONS_PERIODE, fmt="table")],
|
||||||
PG, 0, 5, 24, 9, "kwatth",
|
PG, 0, 4, 24, 9, "kwatth",
|
||||||
"Le pas suit la plage choisie : l'heure jusqu'a 4 jours, le jour jusqu'a "
|
"Le pas suit la plage choisie : l'heure jusqu'a 4 jours, le jour jusqu'a "
|
||||||
"70, le mois au-dela. « Non etiquete » est ce qui a ete charge sans que le "
|
"70, le mois au-dela. « Non etiquete » est ce qui a ete charge sans que le "
|
||||||
"selecteur soit renseigne — a interpreter, pas a ignorer."),
|
"selecteur soit renseigne — a interpreter, pas a ignorer.",
|
||||||
|
overrides=[sur(n, [{"id": "color", "value": {"mode": "fixed", "fixedColor": c}}])
|
||||||
|
for n, c in COULEURS_VEHICULES.items()]),
|
||||||
|
|
||||||
table("Les sessions", [
|
table("Les sessions", [
|
||||||
sql("A",
|
sql("A",
|
||||||
@@ -1404,7 +1406,7 @@ vehicules = dashboard("evcs-vehicules", "Les vehicules", (
|
|||||||
" source_mode AS \"Source au depart\",\n"
|
" source_mode AS \"Source au depart\",\n"
|
||||||
" to_char(debranche_a, 'Dy HH24:MI') AS \"Debranche\"\n"
|
" to_char(debranche_a, 'Dy HH24:MI') AS \"Debranche\"\n"
|
||||||
"FROM session_charge WHERE $__timeFilter(debut) ORDER BY debut DESC", fmt="table")],
|
"FROM session_charge WHERE $__timeFilter(debut) ORDER BY debut DESC", fmt="table")],
|
||||||
PG, 0, 14, 24, 11,
|
PG, 0, 13, 24, 11,
|
||||||
"« kWh » vient du compteur de la BORNE, qui compte depuis le vrai debut "
|
"« kWh » vient du compteur de la BORNE, qui compte depuis le vrai debut "
|
||||||
"de la session. « kWh integres » est mon propre calcul, qui ne couvre que "
|
"de la session. « kWh integres » est mon propre calcul, qui ne couvre que "
|
||||||
"ce que le service a vu — un ecart entre les deux signale un demarrage ou "
|
"ce que le service a vu — un ecart entre les deux signale un demarrage ou "
|
||||||
@@ -1789,7 +1791,7 @@ journee = dashboard(
|
|||||||
# found ». Ici on veut les quatre colonnes, tout le temps.
|
# found ». Ici on veut les quatre colonnes, tout le temps.
|
||||||
barchart("Energie heure par heure",
|
barchart("Energie heure par heure",
|
||||||
[sql("A", energie_sql(prevision=True), fmt="table")],
|
[sql("A", energie_sql(prevision=True), fmt="table")],
|
||||||
PG, 0, 5, 24, 9, "kwatth",
|
PG, 0, 4, 24, 9, "kwatth",
|
||||||
"La forme de la journee : quand le solaire a couvert la maison, quand il "
|
"La forme de la journee : quand le solaire a couvert la maison, quand il "
|
||||||
"a fallu acheter — et, a la suite des barres mesurees, ce que la derniere "
|
"a fallu acheter — et, a la suite des barres mesurees, ce que la derniere "
|
||||||
"prevision annonce pour les heures qui restent. L'heure EN COURS n'a pas "
|
"prevision annonce pour les heures qui restent. L'heure EN COURS n'a pas "
|
||||||
|
|||||||
Reference in New Issue
Block a user