OldReadingsVal Werte sind nach jedem"shutdown restart" oder "save fhem.cfg" weg

Begonnen von cocojambo, 30 August 2020, 14:48:28

Vorheriges Thema - Nächstes Thema

cocojambo

Ich habe eine "withings Waage" von der ich mir täglich die entsprechenden Daten hole, tabellarisch darstelle und grafisch darstelle. Da ich auch immer noch die Vortagswerte haben möchte, hole ich mir diese über "OldReadingsVal".
bmi_old { OldReadingsVal("Waage_Norbert","bmi",0) },...........usw

Das nach jedem Neustart die OldReadingsVal leer sind sind ist mir schon klar, da sie nicht dauerhaft gespeichert sind. Zusätzlich aktualisiert das "withings Modul" alle 30min die Werte  und dadurch werden auch die bmi_old Werte neu erstellt aus den leeren OldReadingVal Werten. Dadurch entsteht der Wert ,,0" beim Anlegen des userReading bmi_old.
Ziel meiner Überlegung ist, das nur dann ein neues userReading (z.b. bmi_old) aus den OldReadingsVal Werten erstellt werden soll, wenn der Wert von bmi_old nicht ,,0" ist. Damit müsste eigentlich immer der letzte Wert des bmi_old erhalten bleiben.
Ich habe folgendes probiert.
bmi_old { if (OldReadingsVal("Waage_Norbert","bmi",0) > 0 )  { fhem ("set bmi_old (OldReadingsVal("Waage_Norbert","bmi",""))") }}

bmi_old { if ((OldReadingsVal("Waage_Norbert","bmi",0)) = 0)   return }

bmi_old { if (OldReadingsVal("Waage_Norbert","bmi",0)) = 0 } {fhem("set bmi_old (Value(bmi_old))") }

Nicht gleich die Hände überm Kopf zusammenschlagen....ich weiß, das einiges vom Ansatz her an diesen Versuchen falsch ist, aber vielleicht kann mir doch einer sagen, wie ich es dann richtiger machen kann.

Gruß aus Köln
Norbert
FHEM6.2 FB7490 FB7430 3xraspi2+3+4 2xHM-LAN-CFG 2xESP CUL868 CUNO868 HUE-Bridge Harmony-Hub 5xHM-LC-Sw-PI-2 3xHM-WDS30-T2-SN 1xHM-LC_Sw4-DR 3xHM-ES-PMSw1-PI 7xFS20SIG2 6xFS20KSE 2xHM-ES-PMSW1-PL 5xS300TH 1xASH2200 1xEM1000

amenomade

- Vergleichsoperator ist == und nicht =
- Wenn oldreadingsval(bmi) nicht 0 musst Du doch den Wert zurückgeben.
- kein set in einem userReading

bmi_old { if (OldReadingsVal("Waage_Norbert","bmi",0) > 0) {OldReadingsVal("Waage_Norbert","bmi",0)} else {return}}
oder
bmi_old {OldReadingsVal("Waage_Norbert","bmi",0) > 0 ? OldReadingsVal("Waage_Norbert","bmi",0) : return}
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Beta-User

Anmerkungen:

- Da das wohl ein userReading ist und vermutlich einige Readings mehr vorhanden sind, die regelmäßig aktualisiert werden: trigger nicht vergessen ;) ;
- Wenn der Rückgabewert direkt als Wahrheitswert interpretiert werden kann (0=false, alles andere ist true), kann man sich den Vergleich auch sparen.

Demnach sollte das hier auch funktionieren:
bmi_old:bmi.* {OldReadingsVal("Waage_Norbert","bmi",0) ? OldReadingsVal("Waage_Norbert","bmi",0) : return}
Oder sogar das:
bmi_old:bmi.* {OldReadingsVal("Waage_Norbert","bmi",undef)}
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

cocojambo

@amenomade
@Beta-User

Vielen Dank, ich werde mal alle vier Vorschläge zusätzlich eingeben und mit "shutdown restart" und "sudo reboot" morgen mal testen was danach noch davon da ist:

bmi_old { OldReadingsVal("Waage_Norbert","bmi",0) }, bmi_old_Test:bmi.* {OldReadingsVal("Waage_Norbert","bmi",undef)}, bmi_old_Test1:bmi.* {OldReadingsVal("Waage_Norbert","bmi",0) ? OldReadingsVal("Waage_Norbert","bmi",0) : return}, bmi_old_Test2 { if (OldReadingsVal("Waage_Norbert","bmi",0) > 0) {OldReadingsVal("Waage_Norbert","bmi",0)} else {return}}, bmi_old_Test3 {OldReadingsVal("Waage_Norbert","bmi",0) > 0 ? OldReadingsVal("Waage_Norbert","bmi",0) : return}

Ich werde mich dann mal mit dem Ergebniss melden.

Gruß
Norbert
FHEM6.2 FB7490 FB7430 3xraspi2+3+4 2xHM-LAN-CFG 2xESP CUL868 CUNO868 HUE-Bridge Harmony-Hub 5xHM-LC-Sw-PI-2 3xHM-WDS30-T2-SN 1xHM-LC_Sw4-DR 3xHM-ES-PMSw1-PI 7xFS20SIG2 6xFS20KSE 2xHM-ES-PMSW1-PL 5xS300TH 1xASH2200 1xEM1000

cocojambo

Mein Ergebniss:

Alle vier Vorschläge funktionieren einwandfrei auch nach "shutdown restart" und nach "sudo reboot".
Jetzt muß ich mal sehen welche Version ich nehme, da ja 12 Werte aus der Waage ausgelesen werden und dementsprechend viele userReadings angelegt und umgewandelt werden müßen.

Danke für die schnelle Hilfe.
Gruß aus "Kölle"
Norbert
FHEM6.2 FB7490 FB7430 3xraspi2+3+4 2xHM-LAN-CFG 2xESP CUL868 CUNO868 HUE-Bridge Harmony-Hub 5xHM-LC-Sw-PI-2 3xHM-WDS30-T2-SN 1xHM-LC_Sw4-DR 3xHM-ES-PMSw1-PI 7xFS20SIG2 6xFS20KSE 2xHM-ES-PMSW1-PL 5xS300TH 1xASH2200 1xEM1000