diff --git a/deploy/historisation/grafana/dashboards/systeme.json b/deploy/historisation/grafana/dashboards/systeme.json index 2e967b5..98a6234 100644 --- a/deploy/historisation/grafana/dashboards/systeme.json +++ b/deploy/historisation/grafana/dashboards/systeme.json @@ -140,7 +140,7 @@ "x": 0, "y": 0, "w": 5, - "h": 5 + "h": 7 }, "fieldConfig": { "defaults": { @@ -257,7 +257,7 @@ "x": 5, "y": 0, "w": 4, - "h": 5 + "h": 7 }, "fieldConfig": { "defaults": { @@ -381,8 +381,8 @@ "gridPos": { "x": 9, "y": 0, - "w": 10, - "h": 5 + "w": 9, + "h": 7 }, "fieldConfig": { "defaults": { @@ -523,7 +523,7 @@ "percentChangeColorMode": "standard", "noValue": "—", "text": { - "valueSize": 26, + "valueSize": 22, "titleSize": 11 }, "wideLayout": true @@ -534,8 +534,8 @@ "title": "Chargeur VE", "description": "Consigne = ce que le controleur demande a la borne, reecrit toutes les 30 s. Courant = ce que la voiture prend reellement.", "datasource": { - "type": "influxdb", - "uid": "evcs-influx" + "type": "datasource", + "uid": "-- Mixed --" }, "targets": [ { @@ -561,13 +561,24 @@ "uid": "evcs-influx" }, "query": "from(bucket: \"evcs\")\n |> range(start: -24h)\n |> filter(fn: (r) => r._measurement == \"A\" and r.entity_id == \"victron_evcs_set_current\" and r._field == \"value\")\n |> last()\n |> keep(columns: [\"_value\"])\n |> rename(columns: {_value: \"Consigne\"})" + }, + { + "refId": "D", + "datasource": { + "type": "grafana-postgresql-datasource", + "uid": "evcs-pg" + }, + "format": "table", + "rawQuery": true, + "editorMode": "code", + "rawSql": "-- Le compteur de la BORNE, repris de la table des sessions : il\n-- compte depuis le vrai debut, la ou une integration ne couvre que\n-- ce que le service a vu. Session close depuis plus de 2 h : rien.\nSELECT round(coalesce(energie_station_kwh, energie_kwh)::numeric, 2) AS \"Session\"\nFROM session_charge\nWHERE fin > now() - interval '2 hours'\nORDER BY debut DESC LIMIT 1" } ], "gridPos": { - "x": 19, + "x": 18, "y": 0, - "w": 5, - "h": 5 + "w": 6, + "h": 7 }, "fieldConfig": { "defaults": { @@ -633,6 +644,29 @@ "value": 0 } ] + }, + { + "matcher": { + "id": "byName", + "options": "Session" + }, + "properties": [ + { + "id": "unit", + "value": "kwatth" + }, + { + "id": "decimals", + "value": 2 + }, + { + "id": "color", + "value": { + "mode": "fixed", + "fixedColor": "green" + } + } + ] } ] }, @@ -651,6 +685,10 @@ "justifyMode": "center", "percentChangeColorMode": "standard", "noValue": "—", + "text": { + "valueSize": 22, + "titleSize": 11 + }, "wideLayout": true } }, @@ -682,7 +720,7 @@ ], "gridPos": { "x": 0, - "y": 5, + "y": 7, "w": 5, "h": 8 }, @@ -775,7 +813,7 @@ ], "gridPos": { "x": 5, - "y": 5, + "y": 7, "w": 13, "h": 8 }, @@ -944,7 +982,7 @@ ], "gridPos": { "x": 18, - "y": 5, + "y": 7, "w": 6, "h": 8 }, @@ -1065,7 +1103,7 @@ ], "gridPos": { "x": 0, - "y": 13, + "y": 15, "w": 24, "h": 9 }, @@ -1212,7 +1250,7 @@ ], "gridPos": { "x": 0, - "y": 22, + "y": 24, "w": 24, "h": 9 }, diff --git a/tools/gen-grafana-dashboards.py b/tools/gen-grafana-dashboards.py index bfc5f9a..2a96fcf 100644 --- a/tools/gen-grafana-dashboards.py +++ b/tools/gen-grafana-dashboards.py @@ -798,7 +798,7 @@ systeme = dashboard("evcs-systeme", "Le systeme", ( flux_dernier("A", "W", "victron_grid_power_l1", "Puissance", fenetre="6h"), flux_dernier("B", "V", "airtria_mpii_v1_input_voltage_l1", "Tension", fenetre="6h"), flux_dernier("C", "A", "gx_device_grid_current_l1", "Courant", fenetre="6h")], - IN, 0, 0, 5, 5, + IN, 0, 0, 5, 7, "Positif : le reseau alimente la maison. Le contacteur EDF est pilote par " "le workflow d'hysteresis, pas depuis ici.", overrides=[col("Puissance", "watt"), col("Tension", "volt"), col("Courant", "amp", dec=1)]), @@ -806,7 +806,7 @@ systeme = dashboard("evcs-systeme", "Le systeme", ( stat("Charges CA", [ flux_dernier("A", "W", "victron_consumption_power_l1", "Consommation"), flux_dernier("B", "Hz", "airtria_mpii_v1_output_frequency_l1", "Frequence")], - IN, 5, 0, 4, 5, + IN, 5, 0, 4, 7, "Ce que la maison consomme, voiture comprise.", overrides=[col("Consommation", "watt"), col("Frequence", "hertz", dec=1)]), @@ -816,7 +816,7 @@ systeme = dashboard("evcs-systeme", "Le systeme", ( flux_dernier("C", "V", "victron_battery_voltage", "Tension"), flux_dernier("D", "A", "victron_battery_current", "Courant"), flux_dernier("E", "°C", "victron_battery_temperature", "Temperature")], - IN, 9, 0, 10, 5, + IN, 9, 0, 9, 7, "Puissance positive : la batterie se charge. Sept modules actifs sur huit, " "un pack bloquant la charge vers 94 %.", overrides=[ @@ -828,29 +828,42 @@ systeme = dashboard("evcs-systeme", "Le systeme", ( # Cinq valeurs dans huit colonnes : Grafana reduisait le texte jusqu'a # l'illisible. Dix colonnes et une taille imposee, plutot que de laisser # l'ajustement automatique decider. - taille={"valueSize": 26, "titleSize": 11}), + taille={"valueSize": 22, "titleSize": 11}), - stat("Chargeur VE", [ + dict(stat("Chargeur VE", [ flux_dernier("A", "W", "victron_evcs_ac_power", "Puissance"), flux_dernier("B", "A", "victron_evcs_current", "Courant"), - flux_dernier("C", "A", "victron_evcs_set_current", "Consigne")], - IN, 19, 0, 5, 5, + flux_dernier("C", "A", "victron_evcs_set_current", "Consigne"), + sql("D", "-- Le compteur de la BORNE, repris de la table des sessions : il\n" + "-- compte depuis le vrai debut, la ou une integration ne couvre que\n" + "-- ce que le service a vu. Session close depuis plus de 2 h : rien.\n" + "SELECT round(coalesce(energie_station_kwh, energie_kwh)::numeric, 2) AS \"Session\"\n" + "FROM session_charge\n" + "WHERE fin > now() - interval '2 hours'\n" + "ORDER BY debut DESC LIMIT 1", fmt="table")], + IN, 18, 0, 6, 7, "Consigne = ce que le controleur demande a la borne, reecrit toutes les " "30 s. Courant = ce que la voiture prend reellement.", overrides=[col("Puissance", "watt"), col("Courant", "amp", dec=1), - col("Consigne", "amp", dec=0)]), + col("Consigne", "amp", dec=0), + sur("Session", [{"id": "unit", "value": "kwatth"}, + {"id": "decimals", "value": 2}, + {"id": "color", "value": {"mode": "fixed", "fixedColor": "green"}}])], + taille={"valueSize": 22, "titleSize": 11}), + # Sources melangees : le panneau porte « Mixed », chaque requete la sienne. + datasource={"type": "datasource", "uid": "-- Mixed --"}), stat("Chargeur PV", [ flux_dernier("A", "W", "victron_pv_power_system", "Production"), flux_dernier("B", "W", "victron_pv_power_10m_avg", "Moyenne 10 min")], - IN, 0, 5, 5, 8, + IN, 0, 7, 5, 8, "Rappel qui vaut pour toute lecture de cette valeur : sans injection, la " "production MESUREE vaut min(ressource, consommation + absorption " "batterie). Basse ne veut pas dire mauvais temps.", overrides=[col("Production", "watt"), col("Moyenne 10 min", "watt")]), dict(table("Detail par tracker", [flux("A", TRACKERS_FLUX)], - IN, 5, 5, 13, 8, + IN, 5, 7, 13, 8, "Les 52 panneaux en quatre plans : sud-est 40 degres, trois chaines sud " "35 degres, ouest 45 degres. Le suiveur de trois panneaux ne publie pas " "de mode de fonctionnement et n'apparait donc pas ici.", @@ -892,7 +905,7 @@ systeme = dashboard("evcs-systeme", "Le systeme", ( ' |> keep(columns: ["_value"])\n' ' |> rename(columns: {_value: "Desequilibre"})'), flux_dernier("D", "%", "airtria_8_us2000c_state_of_health", "Sante", fenetre="48h")], - IN, 18, 5, 6, 8, + IN, 18, 7, 6, 8, "« Charge max » est la limite que le BMS impose au systeme entier. Le " "04/09 elle est tombee de 150 a 20 A en trois minutes, des 76 % de charge, " "au moment ou l'alarme de tension de cellule s'est declenchee — le parc " @@ -918,7 +931,7 @@ systeme = dashboard("evcs-systeme", "Le systeme", ( ('sensor.victron_battery_power', 'Batterie'), ('sensor.victron_consumption_power_l1', 'Maison'), ('sensor.victron_evcs_ac_power', 'Voiture')], fmt="table")], - PG, 0, 13, 24, 9, "watt", + PG, 0, 15, 24, 9, "watt", "Batterie positive : elle se charge. Reseau positif : il alimente. " "Aux instants ou tout est a zero sauf la maison, c'est la batterie qui " "porte tout.", @@ -932,7 +945,7 @@ systeme = dashboard("evcs-systeme", "Le systeme", ( "transformations": FILTRE_VUE}), dict(barchart("Energie par periode", [sql("A", ENERGIE_SQL, fmt="table")], - PG, 0, 22, 24, 9, "kwatth", + PG, 0, 24, 24, 9, "kwatth", "Le pas suit la periode choisie : l'heure jusqu'a 4 jours, le jour " "jusqu'a 70, le mois au-dela. Obtenue en integrant la puissance, PAS en " "lisant les compteurs kWh du GX : ceux-ci se remettent a zero sans le "