FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Jackie am 07 Dezember 2022, 08:41:20

Titel: Reading zu einem bestimmten Zeitpunkt in Variable speichern
Beitrag von: Jackie am 07 Dezember 2022, 08:41:20
Hallo,

ich habe vermutlich "nur" ein Syntaxproblem, und wäre sehr dankbar wenn mich jemand auf die richtige Spur führen könnte :-)

Ich möchte zu einem bestimmten Zeitpunkt x ein Reading in eine Variable speichern. Anschließend will ich das Reading auf einen neuen Wert setzen, und zu einem bestimmten Zeitpunkt wieder auf den "alten" Wert zurücksetzen.

Mein bisheriger Code, der nicht funktioniert, sieht so aus:


define SaveVariable at *8:35:00 my $prevtemp=ReadingsVal("LWZ","p01RoomTempDayHC1","");
define LWZOverrideHystereseOn at *8:36:00 set LWZ p01RoomTempDayHC1 30
define LWZOverrideHystereseOff at *8:37:00 set LWZ p01RoomTempDayHC1 $prevtemp


die zweite Zeile funktioniert, aber das Zurücksetzen der Variable nicht. Wie speichere ich den Wert p01RoomTempDayHC1 so in eine Variable, dass ich ihn später wieder zum Setzen per set verwenden kann?

Vielen Dank!
Titel: Antw:Reading zu einem bestimmten Zeitpunkt in Variable speichern
Beitrag von: KölnSolar am 07 Dezember 2022, 09:17:21
Das kann nicht funktionieren. In der ersten Zeile benutzt Du perl. Dann müsste das auch in geschweifte Klammern.
$prevtemp ist aber nur eine "temporäre" Variable, weshalb Du mit der 3. Zeile(soll wohl auch wieder perl sein) nicht darauf zugreifen kannst.

Im Log solltest Du auch entsprechende Fehlermeldungen finden.  ::)
Wenn Du Befehle im Frontend eingibst solltest Du auch sofort die Fehler sehen.

Ich würde mir an Deiner Stelle eine reading per setreading LWZ prevtemp beschreiben.

define SaveVariable at *8:35:00 setreading LWZ prevtemp {ReadingsVal("LWZ","p01RoomTempDayHC1",0)}
define LWZOverrideHystereseOn at *8:36:00 setreading LWZ p01RoomTempDayHC1 30
define LWZOverrideHystereseOff at *8:37:00 setreading LWZ p01RoomTempDayHC1 {ReadingsVal("LWZ","prevtemp",0)}


Grüße Markus
Titel: Antw:Reading zu einem bestimmten Zeitpunkt in Variable speichern
Beitrag von: Jackie am 07 Dezember 2022, 09:24:49
Danke, das funktioniert leider nur halb, weil am Ende dann folgender String im Reading steht:

{ReadingsVal("LWZ","prevtemp",0)}

Also irgendwas passt noch nicht ganz von der Syntax :-)
Titel: Antw:Reading zu einem bestimmten Zeitpunkt in Variable speichern
Beitrag von: KölnSolar am 07 Dezember 2022, 10:12:07
Stimmt.

define SaveVariable at *8:35:00 setreading LWZ prevtemp [LWZ:p01RoomTempDayHC1]
define LWZOverrideHystereseOn at *8:36:00 setreading LWZ p01RoomTempDayHC1 30
define LWZOverrideHystereseOff at *8:37:00 setreading LWZ p01RoomTempDayHC1 [LWZ:prevtemp]