[gelöst] readingsVal/Num mit set auf einem display anzeigen

Begonnen von matze1999, 16 Juni 2022, 17:02:53

Vorheriges Thema - Nächstes Thema

matze1999

Hallo,

ich möchte gern das:

{sprintf('%d',(ReadingsNum("Regenmenge","countsPerDay",0)*0.505050505))}

auf einem Display:

defmod MQTT2_DVES_EF41A8 MQTT2_DEVICE DVES_EF41A8
attr MQTT2_DVES_EF41A8 alias Wetterdisplay2
attr MQTT2_DVES_EF41A8 devStateIcon Online:10px-kreis-gruen Offline:10px-kreis-rot on:hm-dis-wm55@red off:hm-dis-wm55
attr MQTT2_DVES_EF41A8 devStateStyle style="text-align:left;;font-weight:bold;;"
attr MQTT2_DVES_EF41A8 icon hm-dis-wm55
attr MQTT2_DVES_EF41A8 readingList DVES_EF41A8:tele/tasmota_EF41A8/STATE:.* { json2nameValue($EVENT) }\
DVES_EF41A8:tele/tasmota_EF41A8/SENSOR:.* { json2nameValue($EVENT) }\
DVES_EF41A8:stat/tasmota_EF41A8/RESULT:.* { json2nameValue($EVENT) }\
DVES_EF41A8:tele/tasmota_EF41A8/LWT:.* LWT\
DVES_EF41A8:tele/tasmota_EF41A8/INFO1:.* { json2nameValue($EVENT) }\
DVES_EF41A8:tele/tasmota_EF41A8/INFO2:.* { json2nameValue($EVENT) }\
DVES_EF41A8:tele/tasmota_EF41A8/INFO3:.* { json2nameValue($EVENT) }\
DVES_EF41A8:stat/tasmota_EF41A8/POWER1:.* POWER1\
DVES_EF41A8:stat/tasmota_EF41A8/UPGRADE:.* { json2nameValue($EVENT) }
attr MQTT2_DVES_EF41A8 room Klima,MQTT2_DEVICE
attr MQTT2_DVES_EF41A8 setList line1:textField { my $payload = $EVENT;;$payload =~ s/$EVTPART0 //g;; qq(cmnd/tasmota_EF41A8/DisplayText [zl1c1]$payload)}\
line2:textField { my $payload = $EVENT;;$payload =~ s/$EVTPART0 //g;; qq(cmnd/tasmota_EF41A8/DisplayText [l2c1]$payload)}\
line3:textField { my $payload = $EVENT;;$payload =~ s/$EVTPART0 //g;; qq(cmnd/tasmota_EF41A8/DisplayText [l3c1]$payload)}\
line4:textField { my $payload = $EVENT;;$payload =~ s/$EVTPART0 //g;; qq(cmnd/tasmota_EF41A8/DisplayText [l4c1]$payload)}\
line4D:textField { my $payload = $EVENT;;$payload =~ s/$EVTPART0 //g;; qq(cmnd/tasmota_EF41A8DisplayText [l4c1]$payload)}\
line4T:textField { my $payload = $EVENT;;$payload =~ s/$EVTPART0 //g;; qq(cmnd/tasmota_EF41A8/DisplayText [l4c10]$payload)}\
line4R:textField { my $payload = $EVENT;;$payload =~ s/$EVTPART0 //g;; qq(cmnd/tasmota_EF41A8/DisplayText [l4c16]$payload)}\
clear:noArg cmnd/tasmota_EF41A8/DisplayText [z]\
on:noArg cmnd/tasmota_EF41A8/Power1 on\
off:noArg cmnd/tasmota_EF41A8/Power1 off\
toggle:noArg cmnd/tasmota_EF41A8Power1 2
attr MQTT2_DVES_EF41A8 stateFormat LWT\
state


in der Zeile

line4R:textField { my $payload = $EVENT;;$payload =~ s/$EVTPART0 //g;; qq(cmnd/tasmota_EF41A8/DisplayText [l4c16]$payload)}\

anzeigen lassen.

Das versuche ich in einem DOIF so:

set MQTT2_DVES_EF41A8 line4R {sprintf('%d',(ReadingsNum("Regenmenge","countsPerDay",0)*0.505050505))}l/m

dann zeigt das Display aber"set MQTT2_DVES_EF41A8 line4R {sprintf('%d',(ReadingsNum("Regenmenge","countsPerDay",0)*0.505050505))}l/m" an.
Ich würde aber gern den berechneten Wert anzeigen lassen?

matze1999

Beta-User

a) Halbe Schnippsel sind (denk dir was)...

b) Dein Suchwort für https://fhem.de/commandref_modular_DE.html ist "set magic" (falls du es nicht komplett in Perl lösen willst).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

matze1999

#2
Danke,

a.) alle "Schnipsel" geprüft, sind komplett

b. "setMagic gefunden, aber nicht verstanden

matze1999

Beta-User

Das DOIF ist nicht komplett, oder habe ich was übersehen? (Ich kann DOIF eh' nicht, aber prinzipiell weiß der Hilfesuchende in der Regel nicht, wo das Problem ist, und der Helfer ist auf VOLLSTÄNDIGE Info angewiesen).

Hier ist das aber nicht sooo das Problem, es fehlt einfach die "innere Klammer" für "set magic". In der commandref steht sowas:
{(hier dein perl)}

ergibt übersetzt in etwa:
set MQTT2_DVES_EF41A8 line4R {(sprintf('%d',(ReadingsNum("Regenmenge","countsPerDay",0)*0.505050505)))}l/m
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

matze1999

setmagic:

ich habs jetzt mal versucht:

setreading CN.Regenmenge appCountsPerMonthTemp {(ReadingsNum("CN.Regenmenge","appCountsPerMonthTemp",0)*0.505050505)}

liefert das gewünschte Ergebnis.

Danke.

matze1999


matze1999

und auch das Display zeigt mit deiner hlfe jetzt alles richtig an.

vielen Dank!

matze1999

DetlefR

#6
setreading CN.Regenmenge appCountsPerMonthTemp {(ReadingsNum("CN.Regenmenge","appCountsPerMonthTemp",0)*0.505050505)}
Das wird garantiert nichts.
Du kannst nicht ein Reading mit sich selbst*irgendwas überschreiben.
Was soll den dabei rauskommen?
Beim nächsten Regentropfen kommt zu appCountsPerMonthTemp noch 1 dazu. Und dann?

matze1999


matze1999

Zusammenfassung für das Display Problem, eine Klammerebene hat gefehlt.

matze1999