Reading zu einem bestimmten Zeitpunkt in Variable speichern

Begonnen von Jackie, 07 Dezember 2022, 08:41:20

Vorheriges Thema - Nächstes Thema

Jackie

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!
Raspi 3 mit FHEM, LWZ 304 Trend, Fronius Symo 10.0-3-M, Conbee II Stick, Optokoppler (USB, FTDI), diverse Ikea Tradfri Komponenten,...

KölnSolar

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
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

Jackie

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 :-)
Raspi 3 mit FHEM, LWZ 304 Trend, Fronius Symo 10.0-3-M, Conbee II Stick, Optokoppler (USB, FTDI), diverse Ikea Tradfri Komponenten,...

KölnSolar

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]
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt