Files
EVCS/deploy/historisation/grafana/dashboards/batteries.json
Tallagrand Thierry 3fe84e09d4 Les pointilles s effacent, et une sauvegarde ne se faisait plus depuis juin
Trois choses vues en regardant deux captures.

La tache Hyper Backup « Synology NAS 1 » echoue en zero seconde : sa
destination, le dossier partage ARCHIVEFAMILLE sur 10.10.10.22, n existe pas —
ni en clair, ni chiffre, ni dans la configuration Samba. Sa jumelle, qui vise
le dossier video du meme hote, reussit. Dix notifications d echec retrouvees,
zero reussite, la plus ancienne du 6 juin : les photos 2008-2015 n ont aucune
sauvegarde depuis trois mois. Non corrige, la machine source n accepte pas ma
cle et le choix de destination appartient au proprietaire.

Les annotations Grafana deviennent opt-in, et le genre bilan en est ecarte : a
lui seul un quart des lignes, presque toutes des bascules d un drapeau qui
change plusieurs fois par heure. Un trait vertical marque ce qui arrive, pas ce
qui clignote. Au passage les deux panneaux de comparaison affichaient huit
courbes dont quatre mortes ; ils ne montrent plus que les modules ayant emis
dans les deux dernieres heures — un critere d activite, pas un prefixe de
code-barres.

Et la marge de 50 % de la nuit est verifiee : il fallait couvrir 2,22 kWh
jusqu au croisement solaire, le bilan en avait reserve 2,65. Dix-neuf pour cent
d assurance sur un parc de quatre modules.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KKzkkVTG6KXnGXFFC7X9XJ
2026-09-06 15:44:30 +02:00

472 lines
13 KiB
JSON

{
"templating": {
"list": [
{
"name": "module",
"label": "Module",
"type": "query",
"datasource": {
"type": "grafana-postgresql-datasource",
"uid": "evcs-pg"
},
"refresh": 1,
"includeAll": false,
"multi": false,
"query": "SELECT DISTINCT module FROM cellule ORDER BY 1"
}
]
},
"uid": "evcs-batteries",
"title": "Les batteries",
"description": "Les quinze tensions de cellule de chaque module Pylontech, relevees sur la console de leur BMS. Aucune de ces valeurs n'existe cote Victron, qui ne publie que l'agregat du parc. Les paliers de couleur sont ceux du materiel lui-meme : 3480, 3520, 3550 et 3600 mV.",
"tags": [
"evcs"
],
"timezone": "Europe/Paris",
"editable": true,
"schemaVersion": 39,
"version": 1,
"refresh": "1m",
"time": {
"from": "now-7d",
"to": "now"
},
"timepicker": {
"refresh_intervals": [
"30s",
"1m",
"5m",
"15m",
"1h"
]
},
"annotations": {
"list": [
{
"builtIn": 1,
"datasource": {
"type": "grafana",
"uid": "-- Grafana --"
},
"enable": true,
"hide": true,
"name": "Annotations & Alerts",
"iconColor": "rgba(0, 211, 255, 1)",
"type": "dashboard"
},
{
"name": "Evenements",
"datasource": {
"type": "grafana-postgresql-datasource",
"uid": "evcs-pg"
},
"enable": false,
"iconColor": "semi-dark-orange",
"hide": false,
"target": {
"format": "table",
"rawQuery": true,
"editorMode": "code",
"rawSql": "SELECT ts AS time, resume AS text, genre || ',' || coalesce(source,'?') AS tags FROM evenement WHERE $__timeFilter(ts) AND genre <> 'bilan' ORDER BY 1"
}
}
]
},
"panels": [
{
"type": "timeseries",
"title": "Cellule par cellule — $module",
"description": "Une courbe par cellule. Une cellule saine suit exactement ses quatorze voisines ; une cellule qui a perdu de la capacite s'en detache en haut de charge ET en bas de decharge, parce qu'elle se remplit et se vide avant les autres.",
"datasource": {
"type": "grafana-postgresql-datasource",
"uid": "evcs-pg"
},
"targets": [
{
"refId": "A",
"datasource": {
"type": "grafana-postgresql-datasource",
"uid": "evcs-pg"
},
"format": "time_series",
"rawQuery": true,
"editorMode": "code",
"rawSql": "SELECT ts AS time, 'cellule ' || lpad(cellule::text, 2, '0') AS metric,\n mv\nFROM cellule\nWHERE module = '$module' AND $__timeFilter(ts)\nORDER BY 1, 2"
}
],
"gridPos": {
"x": 0,
"y": 0,
"w": 24,
"h": 10
},
"fieldConfig": {
"defaults": {
"custom": {
"lineWidth": 1
},
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "#EAB839",
"value": 3480
},
{
"color": "orange",
"value": 3520
},
{
"color": "red",
"value": 3550
},
{
"color": "dark-red",
"value": 3600
}
]
},
"custom.thresholdsStyle": {
"mode": "dashed"
}
}
},
"options": {
"legend": {
"displayMode": "list",
"placement": "right",
"showLegend": true,
"calcs": []
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
}
},
{
"type": "timeseries",
"title": "Ecart entre la plus haute et la plus basse",
"description": "L'indicateur qui resume un module en une courbe. Un module sain de ce parc tient sous 20 mV ; au-dela de 150 mV le BMS commence a reduire le courant de charge de TOUT le parc.",
"datasource": {
"type": "grafana-postgresql-datasource",
"uid": "evcs-pg"
},
"targets": [
{
"refId": "A",
"datasource": {
"type": "grafana-postgresql-datasource",
"uid": "evcs-pg"
},
"format": "time_series",
"rawQuery": true,
"editorMode": "code",
"rawSql": "SELECT ts AS time, module AS metric, max(mv) - min(mv) AS ecart\nFROM cellule WHERE $__timeFilter(ts)\n AND module IN (SELECT module FROM cellule\n GROUP BY module HAVING max(ts) > now() - interval '2 hours')\nGROUP BY ts, module ORDER BY 1"
}
],
"gridPos": {
"x": 0,
"y": 10,
"w": 12,
"h": 8
},
"fieldConfig": {
"defaults": {
"unit": "mvolt",
"color": {
"mode": "palette-classic"
},
"custom": {
"lineWidth": 2,
"fillOpacity": 8,
"showPoints": "never",
"spanNulls": true,
"axisBorderShow": false,
"gradientMode": "opacity"
}
},
"overrides": []
},
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom",
"showLegend": true,
"calcs": []
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
}
},
{
"type": "timeseries",
"title": "La cellule meneuse, contre le plafond que le BMS impose",
"description": "Le plafond de charge est trace a l'echelle (20 mV par ampere) pour tenir sur le meme axe. Le 05/09 a 13:05:08 la cellule meneuse est passee de 3541 a 3555 mV ; cinq secondes plus tard le plafond tombait de 50 a 30 A. Ensuite le courant baisse, la cellule se detend, l'alarme repasse au vert — et le plafond, lui, reste bas.",
"datasource": {
"type": "grafana-postgresql-datasource",
"uid": "evcs-pg"
},
"targets": [
{
"refId": "A",
"datasource": {
"type": "grafana-postgresql-datasource",
"uid": "evcs-pg"
},
"format": "time_series",
"rawQuery": true,
"editorMode": "code",
"rawSql": "SELECT ts AS time, module || ' — cellule meneuse' AS metric,\n max(mv) AS mv\nFROM cellule WHERE $__timeFilter(ts)\n AND module IN (SELECT module FROM cellule\n GROUP BY module HAVING max(ts) > now() - interval '2 hours')\nGROUP BY ts, module ORDER BY 1"
},
{
"refId": "B",
"datasource": {
"type": "grafana-postgresql-datasource",
"uid": "evcs-pg"
},
"format": "time_series",
"rawQuery": true,
"editorMode": "code",
"rawSql": "SELECT ts AS time, 'plafond de charge (A)' AS metric,\n valeur * 20 AS mv\nFROM mesure\nWHERE cle = 'sensor.airtria_8_us2000c_maximum_allowed_charge_current'\n AND $__timeFilter(ts) ORDER BY 1"
}
],
"gridPos": {
"x": 12,
"y": 10,
"w": 12,
"h": 8
},
"fieldConfig": {
"defaults": {
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "#EAB839",
"value": 3480
},
{
"color": "orange",
"value": 3520
},
{
"color": "red",
"value": 3550
},
{
"color": "dark-red",
"value": 3600
}
]
}
}
},
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom",
"showLegend": true,
"calcs": []
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
}
},
{
"type": "table",
"title": "Amplitude de chaque cellule sur la periode",
"description": "Le classement qui designe les cellules a traiter. Sur un module sain les quinze amplitudes sont identiques a quelques millivolts pres. Une amplitude de trois a quatre fois celle des voisines designe une cellule qui a perdu sa capacite — et cela ne se rattrape pas par un reequilibrage.",
"datasource": {
"type": "grafana-postgresql-datasource",
"uid": "evcs-pg"
},
"targets": [
{
"refId": "A",
"datasource": {
"type": "grafana-postgresql-datasource",
"uid": "evcs-pg"
},
"format": "table",
"rawQuery": true,
"editorMode": "code",
"rawSql": "SELECT cellule AS \"Cellule\",\n min(mv) AS \"Minimum\", max(mv) AS \"Maximum\",\n max(mv) - min(mv) AS \"Amplitude\"\nFROM cellule\nWHERE module = '$module' AND $__timeFilter(ts)\nGROUP BY cellule ORDER BY 4 DESC"
}
],
"gridPos": {
"x": 0,
"y": 18,
"w": 12,
"h": 10
},
"fieldConfig": {
"defaults": {
"custom": {
"align": "left",
"cellOptions": {
"type": "auto"
},
"filterable": true
}
},
"overrides": [
{
"matcher": {
"id": "byName",
"options": "Amplitude"
},
"properties": [
{
"id": "custom.cellOptions",
"value": {
"type": "color-background"
}
},
{
"id": "unit",
"value": "mvolt"
},
{
"id": "thresholds",
"value": {
"mode": "absolute",
"steps": [
{
"color": "green",
"value": null
},
{
"color": "#EAB839",
"value": 250
},
{
"color": "orange",
"value": 400
},
{
"color": "red",
"value": 600
}
]
}
}
]
},
{
"matcher": {
"id": "byName",
"options": "Minimum"
},
"properties": [
{
"id": "unit",
"value": "mvolt"
}
]
},
{
"matcher": {
"id": "byName",
"options": "Maximum"
},
"properties": [
{
"id": "unit",
"value": "mvolt"
}
]
}
]
},
"options": {
"showHeader": true,
"cellHeight": "sm",
"footer": {
"show": false
}
}
},
{
"type": "timeseries",
"title": "Etat de charge du parc pendant les relevés",
"description": "Le contexte sans lequel un ecart entre cellules ne veut rien dire : l'ecart grandit avec l'etat de charge, et l'excursion de la cellule abimee grandit avec le courant. Le 05/09, a tension de parc egale, la meneuse etait a 3555 mV sous 50 A et a 3496 mV sous 30 A.",
"datasource": {
"type": "grafana-postgresql-datasource",
"uid": "evcs-pg"
},
"targets": [
{
"refId": "A",
"datasource": {
"type": "grafana-postgresql-datasource",
"uid": "evcs-pg"
},
"format": "time_series",
"rawQuery": true,
"editorMode": "code",
"rawSql": "SELECT ts AS time, valeur AS \"SOC du parc\"\nFROM mesure WHERE cle = 'sensor.victron_battery_soc'\n AND $__timeFilter(ts) ORDER BY 1"
},
{
"refId": "B",
"datasource": {
"type": "grafana-postgresql-datasource",
"uid": "evcs-pg"
},
"format": "time_series",
"rawQuery": true,
"editorMode": "code",
"rawSql": "SELECT ts AS time, valeur AS \"Courant du parc\"\nFROM mesure WHERE cle = 'sensor.victron_battery_current'\n AND $__timeFilter(ts) ORDER BY 1"
}
],
"gridPos": {
"x": 12,
"y": 18,
"w": 12,
"h": 10
},
"fieldConfig": {
"defaults": {
"unit": "",
"color": {
"mode": "palette-classic"
},
"custom": {
"lineWidth": 2,
"fillOpacity": 8,
"showPoints": "never",
"spanNulls": true,
"axisBorderShow": false,
"gradientMode": "opacity"
}
},
"overrides": []
},
"options": {
"legend": {
"displayMode": "list",
"placement": "bottom",
"showLegend": true,
"calcs": []
},
"tooltip": {
"mode": "multi",
"sort": "desc"
}
}
}
]
}