Mehrere ReadingsVal in einem Modul (InfluxDBLogger)

Begonnen von m-d-ley, 18 Januar 2022, 18:35:22

Vorheriges Thema - Nächstes Thema

m-d-ley

Hallo,
ich habe folgendes Problem:
Ich möchte im Modul InfluxDBLogger das mehrere Tags anlegen und habe meiner Meinung nach alles probiert.

Vom Prinzip stelle ich mir das so vor:
attr tags name=$DEVICE,{"unit=".ReadingsVal("$device", "unit", 0),"serial=".ReadingsVal("$device", "serial", 0) }

Nur funktioniert immer nur eines der Readings in den geschweiften Klammern.

Wo ist der Fehler? Ich verstehe die regex anscheinend nicht so richtig.

Vielen Dank schonmal im Vorraus.

betateilchen

ich verstehe weder das...

Zitat von: m-d-ley am 18 Januar 2022, 18:35:22
Ich möchte im Modul InfluxDBLogger das mehrere Tags anlegen

noch das...

Zitat von: m-d-ley am 18 Januar 2022, 18:35:22
attr tags name=$DEVICE,{"unit=".ReadingsVal("$device", "unit", 0),"serial=".ReadingsVal("$device", "serial", 0) }

Kannst Du nochmal anders beschreiben, was Du tun möchtest und vielleicht an einem Beispiel zeigen, welches Ergebnis Du Dir vorstellst?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

m-d-ley

Oha, ok ich versuche es nochmal anders.

InfluxDBlogger schreibt Readings in eine Influxdatenbank.

Mit den Tags wird eine weitere Zelle in einer Zeile generiert.

Laut der Doku werden die Tags mit einem Komma getrennt.

name=$DEVICE, (soll das Tag name mit dem Device als Wert generieren.)

{"unit=".ReadingsVal("$device", "unit", 0), (soll das Tag unit mit dem Value aus dem Reading unit vom Device generieren.)


"serial=".ReadingsVal("$device", "serial", 0) } (soll das Tag serial mit dem Value aus dem Reading serial vom Device generieren.)



Das alles sollte zusammen dann ungefähr so

name=$DEVICE,{"unit=".ReadingsVal("$device", "unit", 0),"serial=".ReadingsVal("$device", "serial", 0) }

aussehen. Allerdings funktioniert das so nicht. Ich denke ich habe ein falsches Verständnis dafür, wie ich ReadingsVal in einer Liste einsetze.

betateilchen

Zitat von: m-d-ley am 18 Januar 2022, 19:19:51
name=$DEVICE,{"unit=".ReadingsVal("$device", "unit", 0),"serial=".ReadingsVal("$device", "serial", 0) }

Naja, das was da in den geschweiften Klammern steht, ist ja syntaktisch kein korrekter perl Code.

Vielleicht fragst Du mal im richtigen Unterforum zu dem Logger-Modul, wie man das korrekt einträgt?
Aus dem Inhalt der commandref werde ich auch nicht richtig schlau, wenn es darum geht, mehrere tags zu definieren.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

rob

Stimme betateilchen zu: die Frage ist eigentl. zu speziell für den Anfängerbereich oder anders ausgedrückt ist das Thema für Einsteiger nicht ideal. Du machst es dir ggf. unnötig schwer  ;)

Im Thread zum InfluxDBLogger wird ein Beispiel gezeigt: https://forum.fhem.de/index.php/topic,114860.msg1184686/topicseen.html#msg1184686

Den Perl-Code brauchst Du imho nur dann, wenn Du damit Werte aus FHEM-Devices (Readings, Attribute usw.) holen willst. Konstanten kannst Du auch direkt zuweisen s. verlinktes Beispiel
Die commandref zeigt dann das Perl-Beispiel
attr influx tags device={AttrVal($device, "alias", "fallback")}
"device" ist das tag und der Perl-Code holt den gewünschten Wert - müsste imho hier der alias vom triggernden Device sein

Habs selbst aber noch nicht gebraucht/ getestet und mag mich irren - deshalb doch lieber im genannten Unterforum absetzen :)

VG
rob