Funktion ausführen nur wenn sich Wert erhöht

Begonnen von hummeruli, 15 Juni 2026, 19:26:21

Vorheriges Thema - Nächstes Thema

hummeruli

cloudkey:oldreadings:-UC_wlan_users Das hatte ich aus Unverständnis rein gesetzt, da ich es nicht wirklich verstanden habe wie oldreadings zu verwenden ist.

Das Reading im cloudkey ist mit dem - am Anfang richtig.

Hab das jetzt so versucht, ohne Erfolg:

defmod Feuer_ntf notify cloudkey:-UC_wlan_users if (ReadingsNum("cloudkey", "-UC_wlan_users", "1") > OldReadingsNum("-UC_wlan_users", "-UC_wlan_users", "2")) fhem("set Optokoppler on-for-timer 1")
Beim Erstellen dieser Nachricht kamen weder Tiere zu Schaden, noch wurde Papier verschwendet. Alles von mir geschriebene ist biologisch abbaubar.


FHEM auf Debian Buster in einr Proxmox VM , LaCrosseGateway, AVR-NET-IO, Homematic, Alexa, S300TH, Signalduino..........

passibe

Nächstes Mal bitte googeln und versuchen zu verstehen wie Perl-Code in FHEM eingebunden werden muss (durch {}) und wie überhaupt ein korrektes Perl-if aussieht.

Insofern jetzt Schritt für Schritt:
  • attr cloudkey oldreadings -UC_wlan_users ausführen
  • Ein leeres notify erstellen: defmod Feuer_ntf notify cloudkey:-UC_wlan_users:.* {}
  • Das notify in FHEMWEB aufrufen und auf DEF klicken.
  • Dort das Folgende einfügen und dann auf modify Feuer_ntf klicken:
cloudkey:-UC_wlan_users:.* {
if (ReadingsNum("cloudkey", "-UC_wlan_users", "1") > OldReadingsNum("cloudkey", "-UC_wlan_users", "99")) {
fhem("set test on-for-timer 2");
}
}
Es kann sein, dass -UC_wlan_users einmal aktualisiert werden muss (d.h. ein Event generieren muss), bevor oldreadings funktioniert. Also ggfs. einmal mit trigger nachhelfen.

Ansonsten fällt mir grade auf, weil wir notify benutzen, kann man bei Schritt 4 auch mit $EVTPART1 arbeiten. Das ist dann etwas schlanker:
cloudkey:-UC_wlan_users:.* {
if ($EVTPART1 > OldReadingsNum("cloudkey", "-UC_wlan_users", "99")) {
fhem("set test on-for-timer 2");
}
}