NOTIFY bei FHEM Neustart verzögert aktivieren

Begonnen von Achim, 20 Mai 2014, 23:17:24

Vorheriges Thema - Nächstes Thema

Achim

Hallo,

wie kann ich eine NOTIFY Definition erst Zeitverzögert beim Neustart von FHEM aktivieren?

Es gibt zwar das Attribut "Disable", aber für NOTIFY existiert (bzw. hat) kein SET Befehl.

Hintergrund. Ich will aufgrund einer Schalteränderung meine FHTs in der Wohnung umstellen. Der Schalter ist über Firmata in FHEM eingebunden. Beim Neustart von FHEM kommen für diesen Schalter Events, auf die das definierte NOTIFY reagiert. Ein Eventfilter hilft mir auch nicht, da der Event beim Einschalten auch den Status hat, den ich abfragen will. Das Umstellen der FHTs beim Neustart hat zwei gravierende Nachteile. Die Umstellung bringt mir mein Tagesprogramm durcheinander und bei zwei Neustarts kurz hintereinander hat der COC Buffer einen Overflow (LOVF). Deshalb die Einschaltverzögerung für das erkennen des Schalterevents.

Viele Grüße
Achim
1x RPi V1, COC, 6x FHT, 1x S300TH, 2x DS18B20, 1x KS300
1x Arduino Nano mit Firmata, 2x DS2423old, 4x DS18B20, HIH5030, verschiedene Ein/Ausgangsschaltungen am Arduino
Mysensors-Seriell Gateway, Si7021, BH1750, Relais

Rince

#1
attr <namevomnotify> disable 1

Das geht also schon.

Jetzt baust dir halt ein at beim Start, das dein Notify xxx Minuten später auf disable 0 setzt.


global:INITIALIZED dürfte das passende Suchwort sein :)
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

betateilchen

Du kannst auch im notify prüfen, ob seit dem fhem-Start bereits eine von Dir definierte Zeitspanne vergangen ist.

if((time - $fhem_started) > 60) {führe diesen Code nur aus, wenn seit dem fhem-Start mindestens 60 Sekunden vergangen sind}
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Achim

Hallo,

ich habe mich für die Lösung von Betateilchen entschieden. Ich habe jetzt folgenden Befehl im Einsatz:
define Heizung_Hauptschalter_SetOn notify Heizung_Hauptschalter.reading:.on {if((time - $fhem_started) > 60) {\
{fhem "set Wohnzimmer_Heizung mode auto desired-temp 20.0"};;\
        ....
  }\
}
Hat etwas gedauert bis ich das NOTIFY mit dem richtigen Event (Input über FRM_IN) getriggert bekommen habe.

Die Lösung mit:
define Heizung_Hauptschalter_Set2 notify global:INITIALIZED define Heizung_Hauptschalter_at1 at +00:00:40 attr Heizung_Hauptschalter_Set1 disable 0
hat den Nachteil, das dabei der ursprüngliche Befehl in der fhem.cfg
attr Heizung_Hauptschalter_Set1 disable 1
auf disable 0 gesetzt wird. Damit müsste ich mit global:SAVE oder SHUTDOWN dies wieder rückgängig machen damit die Einstellung bei einem Neustart wieder korrekt ist.

Vielen Dank für die Lösungsvorschläge
Viele Grüße
Achim

PS.: ich habe noch eine fhem.cfg  ;)
1x RPi V1, COC, 6x FHT, 1x S300TH, 2x DS18B20, 1x KS300
1x Arduino Nano mit Firmata, 2x DS2423old, 4x DS18B20, HIH5030, verschiedene Ein/Ausgangsschaltungen am Arduino
Mysensors-Seriell Gateway, Si7021, BH1750, Relais