(Gelöst) Notify erneut starten

Begonnen von is2late, 06 Dezember 2021, 12:46:11

Vorheriges Thema - Nächstes Thema

is2late

Hi,

folgendes Problem:

Device A wird getriggert. Das Notify gibt daraufhin eine Meldung aus. Nun läuft unter Beteiligung eines AT eine Wartezeit mit Bedingungen, nach deren Ablauf/Erfüllung das Notify erneut melden soll.
Wie bekomme ich das hin, ohne zwischenzeitlich das Device A aus- und wieder angeschaltet zu haben? Gibt es einen "Aufruf" des Notify oä, ohne ein zusätzliches DOIF zu nutzen?

Das AT sieht so aus:
defmod a_Froster_Temperatur at +*01:00:00 {if (Value("Meldung") eq "ein" UND Value(Froster_Alarm") eq "on") {fhem("starte Notify erneut)}}

wobei ich im Klartext die noch fehlenden Teile umschrieben habe.

Vielen Dank,
Ingo
Pi4, Tahoma Jalousien, Hue, Echo, Sonos, Lupusec XT3, FritzBox

DeeSPe

Im Code des "notify" das "notify" selbst auf "inactive" setzen (set $SELF inactive) und durch "das" at dann wieder auf "active" setzen (set notifyA active).

Gruß
Dan

P.S. Evtl. solltest Du Dir auch mal "watchdog" ansehen.
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

MadMax-FHEM

#2
Ein notify kannst du mit trigger auch erneut "manuell" triggern...
https://wiki.fhem.de/wiki/Trigger

Aber schreib doch lieber was du eigentlich willst?

Wenn du nur nach Ablauf der Zeit erneut (1x) das machen willst, was "normalerweise" das notify macht: rufe im notify eine Sub auf und genau diesselbe Sub auch aus dem at -> es passiert dann ja (normalerweise) das gleiche...

Vermutlich denkst du viel zu kompliziert...

EDIT: oder ist das hier das gleiche wie das: https://forum.fhem.de/index.php/topic,124551.msg1191077.html#msg1191077 ? -> warum dann doppelt gefragt? Wenn nicht: wo ist der Unterschied?

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)

CoolTux

eventuell kann hier auch sequenz hilfreich sein.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

is2late

Hi,

vielen Dank!

@Dan: das klingt einfach; werde ich probieren.
@Joachim: Mit Subs kenne ich mich nicht aus. Hast Du vielleicht eine einfache verständliche Quelle zur Hand?
Über meine vorherige Frage (jedenfalls den ersten Teil; der zweite ist noch nicht beantwortet) bin ich mE schon hinweg. Ich will in dem Konstrukt unbedingt die Notifys behalten und höchstens anpassen, daher geht es mir hier speziell um deren erneuten Aufruf.
Trigger klingt aber gut, vielen Dank!
@ Cooltux: Sequenz kannte ich (auch;-) noch nicht, dankeschön!

LG Ingo
Pi4, Tahoma Jalousien, Hue, Echo, Sonos, Lupusec XT3, FritzBox

MadMax-FHEM

Zitat von: is2late am 06 Dezember 2021, 15:27:54
@Joachim: Mit Subs kenne ich mich nicht aus. Hast Du vielleicht eine einfache verständliche Quelle zur Hand?

Hallo Ingo,

https://wiki.fhem.de/wiki/99_myUtils_anlegen

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)

is2late

Habs jetzt mit dem Trigger versucht, produziere aber wohl einen Syntaxfehler:

defmod a_Froster_Temperatur at +*00:03:00 {if (Value("Meldung") eq "ein") & (Value("Froster_Alarm") eq "on") {fhem("trigger n_Froster_Temperatur_on on")}}

Sieht jemand das Problem?

Gibt es übrigens - abgesehen vom RAW in FHEM - eine Testmöglichkeit wie bei Regex, die bei der Fehlersuche hilfreich ist?

Dankeschön,
Ingo
Pi4, Tahoma Jalousien, Hue, Echo, Sonos, Lupusec XT3, FritzBox

is2late

Hm, hab jetzt mal die Klammern abgezählt und "ausgeglichen":

defmod a_Froster_Temperatur at +*00:03:00 {if (Value("Meldung") eq "ein" & (Value("Froster_Alarm") eq "on")) {fhem("trigger n_Froster_Temperatur_on on")}}

Keine Fehlermeldung im RAW, Funktion muss ich noch testen.

LG
Pi4, Tahoma Jalousien, Hue, Echo, Sonos, Lupusec XT3, FritzBox

MadMax-FHEM

Ich denke nicht, dass das so geht.

Steht doch ganz klar im Wiki: NICHT das notify triggern sondern einen Event mit Trigger erzeugen, der dann auf das notify matcht... ;)

Also das ist nat. nur vermutet, anhand der Namen, also Annahme, dass n_Froster_Temperatur_on das notify ist...
...triggern musst du aber das Device, welches auch normalerweise das notify triggert.

Da du hier das notify nicht gepostet hast, kann man auch nicht sagen wie der Trigger sein müsste...

Zitat
    define KellerLicht notify BueroOben1 set Keller1 $EVENT

kann angestoßen werden mit

    trigger BueroOben1 on oder
    trigger BueroOben1 off

Falsch wäre jedoch z.B.:

    trigger KellerLicht on

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)

is2late

Hi Joachim,

Du hast völlig Recht. Der Hinweis im Wiki war zu subtil für mich :(
Richtig war auch Deine Annahme bezüglich des Notify.
So funktioniert es jetzt:

defmod n_Froster_Temperatur_on notify Froster_Alarm:on set ECHO_G090LF1072270A6S speak Der Tiefkuehlschrank verliert Temperatur ;; set Meldung ein ;; set a_Froster_Temperatur active

Herzlichen Dank für Deine erneute Hilfe!

LG Ingo
Pi4, Tahoma Jalousien, Hue, Echo, Sonos, Lupusec XT3, FritzBox

is2late

#10
Eine Frage kommt noch auf:

Wie bringe ich ein "else" in dem Code unter? Das AT soll sich selbst deaktivieren, wenn eine der Bedingungen nicht erfüllt ist.
Verdammte Syntax ;)

Das hier bringt jedenfalls einen Error
Zitatsyntax error at (eval 32826) line 1, near "else ("
defmod a_Froster_Temperatur at +*00:03:00 {if (Value("Meldung") eq "ein" & (Value("Froster_Alarm") eq "on")) {fhem("trigger Froster_Alarm on")} else ("set a_Froster_Temperatur inactive")}

LG Ingo
Pi4, Tahoma Jalousien, Hue, Echo, Sonos, Lupusec XT3, FritzBox

MadMax-FHEM

Das else soll wo rein?
Ins notify oder ins at?

Und: ich würde kein Value(Devicename) verwenden! Value frägt STATE ab, also das Internal! Das kann z.B. durch stateFormat "geändert" werden und dann liefert Value schon mal "unerwartete Dinge"...

Besser mit ReadingsVal oder ReadingsNum den Wert eines Readings abfragen...

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)

is2late

Das "else" soll ins AT, also das Runde ins Eckige.

Pi4, Tahoma Jalousien, Hue, Echo, Sonos, Lupusec XT3, FritzBox

MadMax-FHEM

Meinst du sowas:

defmod a_Froster_Temperatur at +*00:03:00 {if (Value("Meldung") eq "ein" & (Value("Froster_Alarm") eq "on")) {fhem("trigger n_Froster_Temperatur_on on")}else{fhem("set a_Froster_Temperatur inactive")}}


mit dem Handy gedaddelt, also bzgl. Klammern etc. noch mal prüfen ;)

EDIT: und wer/wo/wie soll das dann wieder aktiviert werden?

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)

is2late

#14
Hi Joachim,

tausend Dank!
Das AT wird durch das Notify aktiviert, das seinerseits von dem Dummy, das die Alarmanlage triggert, in die Spur gesetzt wird.

Habs ausprobiert: Die Wiederholung der Meldung bleibt jetzt kurioserweise auf der Strecke, obwohl das AT bei Vorliegen der Bedingungen ordnungsgemäß aktiv ist. Das Notify wird scheinbar nicht mehr angesprochen??? Ich restarte FHEM mal eben.

-> Bleibt dabei, keine Meldungen mehr, egal, ob mit oder ohne Deaktivierung des AT.
Wo ist denn da der logische Fehler:

1. Lupusec triggert Dummy Froster_Alarm (=on)
2. Notify n_Froster_Temperatur_on gibt daraufhin
     a) Meldungen aus
     b) setzt Dummy ,,Meldung" auf ,,ein"
     c) aktiviert AT a_Froster_Temperatur_on
3. AT a_Froster_Temperatur_on wartet bestimmte Zeit. Ist danach das Dummy ,,Meldung" noch auf ,,ein" UND
     Froster_Alarm auf ,,on", wird das Notify per trigger-Befehl wieder losgetreten.
     Andernfalls deaktiviert sich das AT selbst.

Ich bin ja blöd.... Hab Dir als Vorlage den falschen Code gegeben, bei dem der Trigger auf das Notify und nicht das Dummy gesetzt ist. Korrigiere und probiere....

Das war der Fehler; jetzt klappt alles. Heute wieder einiges gelernt... Wenn es in dem Tempo weitergeht, bin ich schon in ein paar Jahren ein mittelguter Anfänger  :D

Vielen Dank, Joachim!

LG Ingo
Pi4, Tahoma Jalousien, Hue, Echo, Sonos, Lupusec XT3, FritzBox

MadMax-FHEM

Ah, ok, geht jetzt...
(war unterwegs und hätte eh erst jetzt schauen können)

Gratuliere!
Auch wenn ich denke, dass das alles viel zu kompliziert gedacht und dann nat. auch gemacht ist...
...aber jeder fängt mal an.

Manches was bei mir noch so läuft finde ich heute auch "eigenartig" und setze es auf die Liste: mal besser machen...

Und wenn dann Zeit ist, mache ich das auch :)

Solltest das hier evtl. auch mal auf die Liste setzen ;)

Und wie bereits geschrieben: ich würde von Value() die Finger lassen...

Viel Spaß noch, 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)