Notify + Reading + secondsSinceReadingChange = ???

Begonnen von o.l.i, 09 September 2020, 14:43:16

Vorheriges Thema - Nächstes Thema

o.l.i

Hallo,

ich habe mir ein notify gebaut um den Trockner smart zu machen, sprich es wird eine Ansage gespielt wenn der Trockner fertig ist und es wird per DBlog die events in die DB geschrieben zur Auswertung des Leistungsverbrauch.

Die erste und dritte IF Schleife funktioniert aber die zweite IF Schleife nicht.
Was ich herausgefunden habe is, dass die "secondsSinceReadingChange" Funktion mit dem "ENERGY_Power" Reading nicht funktioniert.
Ich habe dies mal mit dem "running" Reading anstatt "ENERGY_Power" ausprobiert und da hat es funktioniert.

Der Unterschied ist, dass das ""ENERGY_Power" Reading vom Device kommt; das "Running" Reading ist ein eigenes Reading als Behelf.

Hat jemand eine Erklärung / Lösung dazu?


KE_Trockner:ENERGY_Power:.* {
# Wenn der Trockner eingeschaltet wurde
if (ReadingsNum($NAME, "ENERGY_Power", 0) > 400 && ReadingsVal($NAME, "running", "off") eq "off") {
fhem("sleep 0.1; setreading $NAME running on");
}

if (secondsSinceReadingChange($NAME, "ENERGY_Power") > 5 && ReadingsVal($NAME, "running", "off") eq "on") {
fhem("set TR_EG_Gong_Mp3,TR_2OG_Gong_Mp3 playTone 005,034 1 10");
fhem("sleep 0.1; setreading $NAME running off");

# Wenn Fehler aufgetreten ist, und der Trockner nach 4 Stunden nicht automatisch ausgegangen ist
if (secondsSinceReadingChange($NAME, "running") > 14400 && ReadingsVal($NAME, "running", "off") eq "on") {
fhem("sleep 0.1; setreading $NAME running off");
fhem("set TR_EG_Gong_Mp3,TR_2OG_Gong_Mp3 playTone 005,035 1 10");
}
}

amenomade

Was gibt es für event-on-change-reading | event-on-update-reading | event-min-interval Attribute auf KE_Trockner?
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

o.l.i

Hallo,

ich habe für die relevanten Readings "event-on-change-reading" eingestellt.
Aber diese Parameter sollten egal sein, da mein "ENERGY_Power" Reading den aktuellen Verbrauch in Watt anzeigt, was sich ja ständig während dem Trockner Vorgang ändert. D.h. der Timestamp des Readings wird immer wieder im FHEM UI aktualisiert bis ich den Trockner ausschalte. Spätestens dann nach 5 Sekunden würde ich erwarten, dass die Ansage kommt, da der Timestamp dann nicht mehr aktualisiert wird. Aber das macht es eben nicht.

MadMax-FHEM

#3
Wie soll denn nach 5 Sek etwas passieren, wenn sich eben der Wert nicht mehr ändert, also das notify ja nicht mehr aufgerufen wird...

Du kannst ja mal die geforderten Infos liefern, also das list...

EDIT: Ok, ich dachte amenomade hätte darum gebeten... ;)

...oder (wenn du es eh besser zu wissen scheinst) eindach selber weiter tüfteln... ;)

Ein Blick in den Eventmonitor zeigt dir auch was passiert...

EDIT: ich würde aus diesem Grund mal Logausgaben ins notify bzw. in die if-Zweige einbauen. Dann siehst du wann es mit welchen Werten "gerufen" wird und was passiert oder auch nicht und v.a. warum...

EDIT: event-on-change-reading etc. sollte mit bedacht eingesetzt werden. Gerade bei plots oder automatischen Steuerungen "dahinter" nehme ich die aus einem evtl. event-on-change-reading .* mittels event-on-update-reading bewusst wieder rein. Aber eben nur die, die ich auch brauche (Loggen/Automatismen). Evtl. noch "versorgt" mit einem min-interval... Events einschränken ist eine "gute Tat" aber der ein oder andere Event der weiterhin (evtl. doch "unbenötigt") durchs System "huscht" tut nun auch nicht weh... Außer eben evtl. für gewisse Automatismen die dran hängen... ;)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

amenomade

Zitat von: MadMax-FHEM am 10 September 2020, 08:47:37
Wie soll denn nach 5 Sek etwas passieren, wenn sich eben der Wert nicht mehr ändert, also das notify ja nicht mehr aufgerufen wird...


Genau. Mit event-on-change-reading auf dem Reading [KE_Trockner:ENERGY_Power], dass das notify triggert, klingt es nach:
wenn der Wert sich geändert hat {mach etwas, wenn der Wert sich nicht geändert hat}
Wann hat sich der Wert zuletzt geändert? Antwort: gerade eben, sonst wäre ich nicht im notify. secondsSinceReadingChange = 0
   
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

MadMax-FHEM

Zitat von: amenomade am 10 September 2020, 10:34:19
Wann hat sich der Wert zuletzt geändert? Antwort: gerade eben, sonst wäre ich nicht im notify. secondsSinceReadingChange = 0

Stimmt!
Daran hatte ich auch nicht gedacht ;)

Evtl. dann OldReadings und das event-on-change weglassen (zumindest für das Event das das Notify triggert) und dann eben selbst vergleichen, ob der Wert sich nicht geändert hat...
Evtl. geht dann sogar rauszufinden, dass es mind. 5 Sek her ist...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Beta-User

Zum einen fehlte mir gedanklich eine schließende Klammer nach dem 2. Zweig (das ändert aber nichts an ReadingsAge()=0), zum anderen suchst du nach einem watchdog-Mechanismus.

Vielleicht liefert dir jemand eine "DOIF mit wait"-Lösung, evtl. hilft es dir auch weiter, wenn du mal ab ca. hier weiterliest: https://forum.fhem.de/index.php/topic,114041.msg1083255.html#msg1083255
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