Letztes Reading am Tag speichern, wie?

Begonnen von Gisbert, 14 Dezember 2022, 07:03:42

Vorheriges Thema - Nächstes Thema

Gisbert

Hallo zusammen,

ich benötige das letzte Reading <last_reading> am Tag, da ich mit dessen Hilfe die prozentuale Änderung am nächsten Tag berechnen will. Am nächsten Tag gibt es dann wieder ein neues <last_reading> usw.
Ich habe es mit at versucht, bin aber gescheitert:
defmod lastReading at *00:00:05 setreading <Device> last_reading ReadingsVal("Device","reading","")
Als Ergebnis bekomme ich exakt den String, aber nicht den erhofften Wert.
last_reading ReadingsVal("Device","reading","")

Die commandref habe ich befragt, aber ich hab keine Idee gefunden, die mir weiterhilft.

Gibt es für meine Anwendung eine Lösung?

Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

Beta-User

Die Lösung sollte in der Commandref unter "set magic" zu finden sein.

Du versuchst Perl und "normale FHEM-Kommandos" zu mischen, und das klappt nur, wenn man die Regeln für set magic einhält.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

KölnSolar

Hi Gisbert,

ich mache es sodefmod Reset_Daily at *00:00:15 {fhem("setreading zaehler Lasttotal_feed ".ReadingsVal("zaehler","total_feed",0).";;setreading zaehler Lasttotal_consumption ".ReadingsVal("zaehler","total_consumption",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

Otto123

Hallo Gisbert,
Zwei Varianten mit set magic:
setreading <Device> last_reading [Device:reading]
setreading <Device> last_reading {( ReadingsVal("Device","reading","") )}

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Gisbert

Hallo zusammen,

vielen Dank für die zahlreichen Anregungen, die ich alle in diversen Varianten probiert hatte. Prinzipiell hatte ich auch bereits die gleichen Ideen, nur leider ohne Erfolg.

Hier nun das eigentliche Reading, was ich anfänglich verfremdet habe. Ich glaube, dass es etwas mit dem Reading zu tun hat. Das Reading wird in einem Device vom Type Shares erzeugt und beginnt mit einem "^", es handelt sich um den DAX-Index.
defmod lastIndex at *00:00:30 setreading Index _GDAXI_last { (ReadingsVal("Index","^GDAXI_last","") )}
Ergebnis:
_GDAXI_last { (ReadingsVal("Index","^GDAXI_last","") )}

Habt ihr irgendeine Idee, was man da machen kann?

Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

Otto123

Das Reading darf nicht so heißen:
Zitatbad reading name '^GDAXI_last' (allowed chars: A-Za-z/\d_\.-)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Beta-User

Davon abgesehen dürfte auch das Leerzeichen zwischen den "set-magic-Klammern"  ein Problem sein....
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Gisbert

Hallo Markus, Jörg und Otto,

es liegt eindeutig an dem "^", das mir die Show stiehlt.
Positiv ist, dass ich ein userReading ohne das "^" erzeugen kann, welches auch den update-Zyklus des Moduls überlebt:
GDAXI_last {ReadingsVal($name,'^GDAXI_last','')},\

Leider überleben die durch das setreading erzeugten Readings den update-Zyklus nicht.
Ich muss dann wohl einen Umweg über ein Dummy gehen oder, falls das funktioniert, mit setreading Readings im at-Device erzeugen.
Falls ihr eine Idee habt, Readings zu erhalten, die das Modul partout nicht behalten will, dann gerne her damit.

Viele Grüße Gisbert
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY

Otto123

Zitat von: Beta-User am 15 Dezember 2022, 00:13:20
Davon abgesehen dürfte auch das Leerzeichen zwischen den "set-magic-Klammern"  ein Problem sein....
Stimmt, da wollte ich es noch im Post schön machen  :'(
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Beta-User

Zitat von: Otto123 am 15 Dezember 2022, 10:24:30
Stimmt, da wollte ich es noch im Post schön machen  :'(
So wie du das geschrieben hattest, dürfte es funktionieren, aber Gisbert hat noch ein Leerzeichen eingefügt...

Zitat von: Gisbert am 15 Dezember 2022, 07:27:28
Leider überleben die durch das setreading erzeugten Readings den update-Zyklus nicht.
Was ist das für ein Modul, das alle Readings löscht? (Bei sowas sollte man den Maintainer fragen, ob das noch zeitgemäß ist! Dto. für die unzulässigen Reading-Namen. Klingt danach, als würden nicht die internen Routinen genutzt, sondern noch direkt im Device-Hash geschrieben. Auch nicht mehr zeitgemäß...)

PS: userReadings ohne Trigger sind nur ok, wenn alle Readings per bulk update auf einmal aktualisiert werden...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Otto123

Zitat von: Beta-User am 15 Dezember 2022, 10:32:34
So wie du das geschrieben hattest, dürfte es funktionieren, aber Gisbert hat noch ein Leerzeichen eingefügt...
Stimmt, habe ich vielleicht noch nie so explizit getestet:
Funktioniert:
setreading rgr_Bewohner reading {(ReadingsVal('rgr_Bewohner','state','error'))}
setreading rgr_Bewohner reading {( ReadingsVal('rgr_Bewohner','state','error') )}

Funktioniert nicht!
setreading rgr_Bewohner reading { (ReadingsVal('rgr_Bewohner','state','error')) }

Man muss also bei set magic Perlmodus darauf achten, die notwendige zusätzliche runde Klammer ohne Leerzeichen zu schreiben: {( Perlausdruck kann Leerzeichen enthalten )}
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

TomLee

Zitat von: Beta-User am 15 Dezember 2022, 10:32:34
Was ist das für ein Modul, das alle Readings löscht?

Zitat von: Gisbert am 14 Dezember 2022, 20:36:20
... Das Reading wird in einem Device vom Type Shares erzeugt ...

Beta-User

Zitat von: TomLee am 15 Dezember 2022, 10:45:45
Zitat... Das Reading wird in einem Device vom Type Shares erzeugt ...
OK, dann mische ich mich wohl besser nicht ein, der Maintainer wird schon wissen, warum das so sein muss...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files