FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: matze1999 am 16 Juni 2022, 17:02:53

Titel: [gelöst] readingsVal/Num mit set auf einem display anzeigen
Beitrag von: matze1999 am 16 Juni 2022, 17:02:53
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
Titel: Antw:readingsVal/Num mit set auf einem display anzeigen
Beitrag von: Beta-User am 16 Juni 2022, 17:19:39
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).
Titel: Antw:readingsVal/Num mit set auf einem display anzeigen
Beitrag von: matze1999 am 16 Juni 2022, 17:22:46
Danke,

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

b. "setMagic gefunden, aber nicht verstanden

matze1999
Titel: Antw:readingsVal/Num mit set auf einem display anzeigen
Beitrag von: Beta-User am 16 Juni 2022, 17:49:55
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
Titel: Antw:readingsVal/Num mit set auf einem display anzeigen
Beitrag von: matze1999 am 16 Juni 2022, 17:52:44
setmagic:

ich habs jetzt mal versucht:

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

liefert das gewünschte Ergebnis.

Danke.

matze1999

Titel: Antw:readingsVal/Num mit set auf einem display anzeigen
Beitrag von: matze1999 am 16 Juni 2022, 17:54:37
und auch das Display zeigt mit deiner hlfe jetzt alles richtig an.

vielen Dank!

matze1999
Titel: Antw:readingsVal/Num mit set auf einem display anzeigen
Beitrag von: DetlefR am 16 Juni 2022, 18:07:39
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?
Titel: Antw:readingsVal/Num mit set auf einem display anzeigen
Beitrag von: matze1999 am 16 Juni 2022, 18:18:34
stimmt, haut nicht hin

matze1999
Titel: Antw:readingsVal/Num mit set auf einem display anzeigen
Beitrag von: matze1999 am 16 Juni 2022, 18:35:10
Zusammenfassung für das Display Problem, eine Klammerebene hat gefehlt.

matze1999