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
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).
Danke,
a.) alle "Schnipsel" geprüft, sind komplett
b. "setMagic gefunden, aber nicht verstanden
matze1999
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
setmagic:
ich habs jetzt mal versucht:
setreading CN.Regenmenge appCountsPerMonthTemp {(ReadingsNum("CN.Regenmenge","appCountsPerMonthTemp",0)*0.505050505)}
liefert das gewünschte Ergebnis.
Danke.
matze1999
und auch das Display zeigt mit deiner hlfe jetzt alles richtig an.
vielen Dank!
matze1999
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?
stimmt, haut nicht hin
matze1999
Zusammenfassung für das Display Problem, eine Klammerebene hat gefehlt.
matze1999