NEWS
Influx v2 - Daten vor Speicherung konvertieren
-
@spacerx said in Influx v2 - Daten vor Speicherung konvertieren:
@sleepwalker
In den Einstellungen zum loggen des Alias mal auf "nur Änderungen loggen" aktivieren, es sei denn du möchtest alle paar Sekunden den Zustand speichern. Aber ich glaube mal das nur Änderungen interessant sind.Danke für den Hinweis. Das ist aktuell zum Einstieg tatsächlich so gewollt. Die Sensoren melden alle 5 Minuten die Temperatur auf dem Bus, außer bei starken Schwankungen, dann melden Sie direkt. Das möchte ich so speichern. Wären im Normalfall bei aktuell 15 Sensoren vertretbare 1.576.800 Datenpunkte im Jahr. Wenn mir das nicht gefällt, setzte ich es aber wieder auf den von dir genannten Standard zurück
Unter Speichern als auch mal bool auswählen, sonst wird bestimmt als String speichern. Das sieht man ja auch an den geloggten Werten die das "%" enthalten.
Wenn ich das richtig verstanden habe, wird der originale Wert weiterhin "normal" gespeichert und nur der Alias hat einen ggf. anderen Wert. Richtig?
Der Sensor meldet einen Int zw. 0 und 100, die Einheit des Objektes im ioBroker ist allerdings auf "%" gesetzt. Jetzt steht dort "true %", was eigentlich auch nicht gewollt ist. Wenn ich den Alias richtig verstanden habe, kann man theoretisch die originalen Werte behalten und nur im Alias die angepassten Werte ablegen. Oder hab ich das falsch verstanden? Das ist jedenfalls mein Ziel. Den Originalwert als "x %" und den Alias als bool zu speichern.
Wenn ich den Originalwert als bool speichere, meckert Influx direkt, dass der Typ nicht passt:HttpError: runtime error @4:12-4:169: filter: type conflict: bool != string
Dann noch mal von Vorn. Du bekommst was von deinem Gerät in den Datenpunkt? Einen String, eine Zahl.
Eine Zahl. ioBroker setzt die Einheit % dahinter. Objekt sieht so gerade so aus (mit Speicherung als Boolean und der obigen Fehlermeldung dazu)
{ "_id": "openknx.0.Arbeitszimmer.Fußbodenheizung.FBH_Arbeitszimmer_-_Kreis_5_-_Stellgröße", "type": "state", "common": { "desc": "Basetype: 8-bit unsigned value", "min": 0, "max": 100, "name": "FBH Arbeitszimmer - Kreis 5 - Stellgröße", "read": true, "role": "state", "type": "number", "unit": "%", "write": true, "custom": { "influxdb.0": { "enabled": true, "storageType": "Boolean", "aliasId": "alias.0.KNX.Arbeitszimmer.Fußbodenheizung_Arbeitszimmer_-_Status", "debounceTime": 0, "blockTime": 0, "changesOnly": false, "changesRelogInterval": 0, "changesMinDelta": 0, "ignoreBelowNumber": "", "disableSkippedValueLogging": false, "enableDebugLogs": false, "debounce": 1000 } } }, "native": { "address": "7/2/5", "answer_groupValueResponse": false, "autoread": true, "bitlength": 8, "dpt": "DPT5.001", "valuetype": "basic" }, "acl": { "object": 1636, "state": 1636, "file": 1632, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" }, "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1665583001418 }
Im Alias hast nach deinem Screenshot zufolge die Konvertierungsfunktion nicht aktiviert. Also wird das geloggt was rein kommt.
Das was @paul53 weiter oben in Code-Tags geschrieben hat gehört in die Konvertierungsfunktion.Ich habe die ursprüngliche Konvertierung rausgenommen, weil sie eigentlich nicht nötig sein sollte. Der Alias loggt ja auch korrekt booleans. Ungewollt ist eigentlich nur der boolean im originalen Objekt und die Fehlermeldung aus Influx.
Ich bin echt am verzweifeln. Kann das wirklich so kompliziert sein?
-
@sleepwalker es wird aber ein String geloggt. Deshalb das %. Du solltest das speichern als Automatisch auf Bool stellen. Richtig ist dein Orginal Datenpunkt wird nicht geändert. Der Alias nimmt den Wert an den du verknüpfst oder peer Korrektur vorgibst. Loggen tuhst du dann den Alias.
-
@spacerx said in Influx v2 - Daten vor Speicherung konvertieren:
@sleepwalker es wird aber ein String geloggt. Deshalb das %. Du solltest das speichern als Automatisch auf Bool stellen. Richtig ist dein Orginal Datenpunkt wird nicht geändert. Der Alias nimmt den Wert an den du verknüpfst oder peer Korrektur vorgibst. Loggen tuhst du dann den Alias.
Hab ich gemacht, dann kommt der obige Fehler "... bool != string..." aus Influx heraus.
Oder bin ich irgendwo auf der falschen Fährte?! Meiner Ansicht nach, habe ich schon sämtliche Kombinationen ausprobiert
PS: Danke für deine Geduld
-
@sleepwalker jetzt mal eine neue AliasID geben damit das Measurement (Messung) neu erstellt wird und nicht schon als String oder Zahl vorliegt.
-
@spacerx du musst dann aber auch schon den Alias loggen. Du bist doch mit dem Loggen im knx-Zweig
Was in deinem Screenshot als Alias bezeichnet wird ist nur eine Bezeichnung für das Measurement, ein Name halt, damit dort nicht die Pfade benutzt werden.
Du musst unter alias.0.knx.*** den Datenpunkt zum loggen auswählen. und nicht deinen originalen Datenpunkt.
-
@spacerx said in Influx v2 - Daten vor Speicherung konvertieren:
@spacerx du musst dann aber auch schon den Alias loggen. Du bist doch mit dem Loggen im knx-Zweig
Was in deinem Screenshot als Alias bezeichnet wird ist nur eine Bezeichnung für das Measurement, ein Name halt, damit dort nicht die Pfade benutzt werden.
Du musst unter alias.0.knx.*** den Datenpunkt zum loggen auswählen. und nicht deinen originalen Datenpunkt.
Hm, das verstehe ich nicht. Muss ich das wirklich? Das funktioniert ja auch, allerdings ist dann mein o.g. "roter Faden" nicht eingehalten.
Wenn ich nur den Alias loggen möchte, muss ich beim KNX-Objekt gar keine Influx-Spezifischen Dinge wie den Alias angeben. Dann bräuchte ich nur den Alias selbst anlegen und loggen und könnte das KNX-Objekt ignorieren. Ja, das funktioniert theoretisch und praktisch. Habe ich weiter oben erwähnt.
Dann ist für mich die Alias-ID-Option in den Influx-Einstellungen missverständlich.
Hat das da gar nichts mit zu tun? -
@sleepwalker Mal ein Beispiel!
Homematic Termometer:
Dazu der Alias.
Du siehst am Alias das Zahnrad für InfluxDB.
Nun noch die Konfiguration influxdb.0 zum loggen des Alias.Dann gib als Namen meinetwegen "KnxArbeitszimmerFußbodenheizungArbeitszimmerStatus" ein.
Das macht aber so auch keinen Sinn weil im WebGui von InfluxDB siehst du eh nicht alle Zeichen und wer will in der VIS solche Schlangen sehen.
Kurze eindeutige Namen: Bsp.: "AZ_Fussbodenheizung_State". Und das ist schon lang.
-
@spacerx Oh man, und ich habe die ganze Zeit gedacht, dass die Verknüpfung zwischen Originalobjekt und Alias beidseitig ist und man in Influx nur den Originalwert loggen müsse, unter Angabe des Aliases
Was die Benennung angeht: Kann man die nicht erst in der VIS "begradigen"? Meine Objekte haben größtenteils ausführliche Namen. Bis jetzt fand ich das in Node Red auch recht gut.
-
@sleepwalker der Alias ist so zu sagen der Zwilling der auf den Bruder zeigt. Wenn dieser auf Write steht kann über den Alias auch der Original Datenpunkt gesteuert werden.
Den Namen kannst du in Grafana dann mit einem Overide noch schön machen. -
@spacerx Herzlichen Dank. So ergibt ein Alias auch durch Sinn. Habe mich durch das Konfig-Feld verwirren lassen. Da saß das Problem wohl vor dem Bildschirm
OT: Da ich mich aktuell für VIS entschieden habe, schaue ich mal, ob mir Grafana oder das schon fertige Histogramm vom Material Design zusagt. Danke dir vielmals!