Mehrere Reading-Inhalte in einem Userreading auf einer Zeile ?

Begonnen von Ralph, 07 Dezember 2020, 13:15:48

Vorheriges Thema - Nächstes Thema

Ralph

Sorry,
ich glaube, ich sehe den Wald vor lauter Bäumen nicht und suche mir einen Wolf.

Ich möchte mehrere Werte (zusammen 7) aus verschiedenen ReadingsVal in einem Userreading in einer einzigen Zeile verketten, sprich die Werte aneinanderhängen, getrennt mit Kommas und Tabs als TXT oder LOG.

Der einzelne Wert ist kein Problem, nur die aufeinanderfolgende Verkettung schaffe ich nicht.

Habt ihr bitte einen strukturellen Tip für mich ?
FHEM auf RaspberryPi3 mit Geekworm USV und SignalDUINO 433MHz und HM-MOD-RPI-PCB mit 3 HM-Sec-SD-2, 5 FHT, 2 RM 100-2 Uni S, 2 HMS100, 6 CUL_WS, 6 CUL_FHTTK, 11 FS20 und 7 FS20V Spannungsüberwachungen

rabehd

Zeichenketten lassen sich mit Hilfe des Operators "." verbinden.
Auch funktionierende Lösungen kann man hinterfragen.

Otto123

Hallo Ralph,

praktisches Beispiel von gestern :) mit Komma
location:lat.* {ReadingsNum($name,'latitude',0).','.ReadingsNum($name,'longitude',0)},

Sieht dann so aus
Zitatlatitude 50.1234567
location 50.1234567,10.2429005
longitude 10.2429005

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

stefan.apetz

#3
Moin,

vielleicht sehe ich den Wald vor lauter Bäumen auch nicht: ich habe das Komma separiert, möchte das aber in dem Eingabefeld auf mehrere Zeilen verteilt haben.

Also so:


1 energyTotal:energy.* monotonic {sprintf("%.3d", ReadingsVal($name,"energy",0)/1000) }, ;;
2 energyTotalNum:energy.* monotonic {ReadingsNum($name,"energy",0,3)/1000 }, ;;
3 energyTotalNumFloat:energy.* {sprintf ("%.3d", monotonic {ReadingsNum($name,"energy",0,3)/1000 })


Die 1 / 2 / 3 kommen dabei aus dem Editorfenster vom Bearbeitungsdialog von fhem. Schreibe ich alles in eine Zeile hintereinander weg mit Komma getrennt, dann geht das. Über mehrere Zeilen hinweg trotz doppeltem ;; aber nicht.

Dass ich das hier quasi 3 Mal definiere liegt daran, dass mir trotz Sprint (teilweise) immer ganz viele Nachkommestallen angezeigt werden. Daher sollten diese 3 Readings ein Test für das Formatieren der Zahl sein.

Wo ist der Fehler :-(

rabehd

Was willst Du überhaupt erreichen?
Wo soll der Code hin?
Auch funktionierende Lösungen kann man hinterfragen.

stefan.apetz

Ganz normales UserReadings in den Attributen bei einem device. Siehe Bild.

Otto123

#6
das ;; ist Humbug. userReadings werden Komma separiert! Nicht Komma und halbe Punkte separiert. ;)
Du kannst im DEF Editor Fenster einfach Zeilenumbrüche machen. In der Raw Def erscheint dann dort ein  \

das sprintf kannst Du an der Stelle knicken, das montonic Ergebnis kann trotzdem wieder mehrstellig sein. sprintf um Stellen zu formatieren macht man nur gaaanz am Ende, bei der Darstellung.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

stefan.apetz

Das hatte ich probiert. Das griff nicht, nur wenn alles in einer Zeile steht.

Von daher nahm ich an, dass das (wie im Wiki zu lesen) per Semikolon getrennt sein müsste:

https://wiki.fhem.de/wiki/UserReadings#Syntax

Dort heisst es:

Bei Eingabe im Editor-Feld müssen mehrere Befehle mit einem ";" getrennt werden, bei Änderung in der Eingabezeile sind zwei ";" notwendig.


Otto123

#8
innerhalb vom Perl Code ist das richtig, als Trennung zwischen den einzelnen userReadings nicht.
Das Zeilenumbrüche im Attribute Feld nicht gehen sollen glaube ich nicht. Bzw klingt es nicht nach DEF Editor sondern nach Hand anlegen in der fhem.cfg mit einem anderen Editor.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

stefan.apetz

Danke für die Rückmeldung.

Zu Deiner Bemerkung "klingt von Hand angelegt": nein. Es gibt es Zusatzmodul für fhem, wo man bei Editoreingaben so ein highlighting mit Zeilennummern erhalten kann. Siehe Bild.

Der integriert sich direkt in den Dialog, wenn ich in einem Device das Attribut userreadings bearbeite (aber auch bei anderen Code-Spezifischen Eingabefeldern).

Otto123

Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

stefan.apetz

#11
Ja, läuft alles super.

Hab jetzt auch meinen blöden Syntax Fehler gefunden. Macht jetzt alles was es soll

Ergänzung: der Editor in erweiterter Form lässt sich wie folgt aktivieren:

https://wiki.fhem.de/wiki/Configuration#Syntaxhighlighting