Vielen vielen Dank @Markus-7
das hat mir sehr weitergeholfen, war zwar den ganzen Tag nicht zuhause, konnte aber in kurzer Zeit schon einiges davon umsetzen.
Hab als erstes die Datenpunkte angelegt, war eigentlich ganz einfach.
Anschliessend hab ich dann ein Blockly Script anhanden deinem Bild nachgebaut mit meinen Datenpunkten.
Dann hab ich noch das speichern dens Datenpunkts die DB eingestellt.
Und jetzt muss ich noch das Dashboard in Grafana zusammenbasteln.
Da hab ich aber noch ein paar schwarze Flecken, diese Flux Query Language ist ja ggrauenhaft, hab das jetzt mal voin influxql umgestellt, jetzt geht zwar mein restliches Zeug nichtmehr aber egal mann muss ja auch mal mit der Zeit gehen.
Jedenfalls brauche ich noch ein paar Infos:
Wie finde ich das passende Bucket meins Datenpunkts, hier mal ein Beispiel Datenpunkt:
{
"common": {
"name": "Zaehlerstand_m3",
"desc": "Manuell erzeugt",
"role": "state",
"type": "number",
"read": true,
"write": true,
"def": 0,
"custom": {
"influxdb.0": {
"enabled": true,
"storageType": "",
"aliasId": "Zaehlerstand_m3",
"debounceTime": 0,
"blockTime": 0,
"changesOnly": true,
"changesRelogInterval": 0,
"changesMinDelta": 0,
"ignoreBelowNumber": "",
"disableSkippedValueLogging": false,
"enableDebugLogs": false,
"debounce": 1000
}
}
},
"type": "state",
"native": {},
"_id": "0_userdata.0.Gas.Zaehlerstand_m3",
"acl": {
"object": 1636,
"state": 1636,
"owner": "system.user.admin",
"ownerGroup": "system.group.administrator"
},
"from": "system.adapter.admin.0",
"user": "system.user.admin",
"ts": 1708875595753
}
Wäre hier das Bucket das ich in der Query verwenden müsste influxdb.0
Wenn ich jetzt deine Abfrage auf mein Feld anwenden wollte müsste ich das dann so ändern: (cih habe den ganzen ID Pfad da genommen, oder reicht da diese aliasid auch aus?)
from(bucket: "influxdb.0")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r["_measurement"] == "0_userdata.0.Gas.Zaehlerstand_m3")
|> filter(fn: (r) => r["_field"] == "value")
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> yield(name: "mean")
Jedenfalls bin ich schon weit gekommen und hab viel gelernt, diese Datenpunkte und die einfache Handhabung mit Blockly eröffnen ja extreme Möglichkeiten