Bei Statusänderung prüfen ob es ein AT mit einem bestimmten Namen gibt?

Begonnen von JMC, 22 Dezember 2017, 11:06:36

Vorheriges Thema - Nächstes Thema

JMC

Hi,

Ich habe folgendes eingerichtet damit eine Steckdose die beim starten von FHEM ggf. angeschaltet ist nach 6 Stunden ausgeschaltet wird:

define n_global_INITIALIZED notify global:INITIALIZED IF ([Steckdose1] eq "on")(define Steckdose1AutoAus at +06:00:00 set Steckdose1 off )

Eigentlich mache ich das über einen Watchdog, aber das funktioniert ja nicht wenn die Steckdose beim FHEM start schon angeschaltet ist.

define wd_Steckdose1 watchdog Steckdose1:on 08:00:00 Steckdose1:off set Steckdose1 off;; trigger wd_Steckdose1 .

Jetzt zu meinem eigentlichen "Problem":

Schalte ich die Steckdose in den 6 Stunden nach FHEM start händisch aus läuft das at ja trotzdem noch weiter. Sollte ich dann z.B. 5 Minuten bevor das at ausgeführt wird die Steckdose wieder einschalten wird sie vom at danach ausgeschaltet... Also hatte ich mir überlegt ob man nicht beim ausschalten der Steckdose mit FHEM prüfen kann ob es ein at mit dem Namen Steckdose1AutoAus gibt und das dann einfach löscht?

Vielen Dank schonmal und viele Grüße
Viele Grüße
JMC

betateilchen

Kann man machen, z.B. mit devspec auf den Namen. Aber es geht noch einfacher:

Lösche das at device doch einfach unabhängig davon, ob es existiert oder nicht - die dabei auftretende Fehlermeldung kannst Du getrost ignorieren, sie ist ja "gewollt".
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Otto123

Hi,

Du kannst doch anstatt at auch den watchdog in den gewünschten Zustand bringen?
Zitattrigger <watchdogname> . aktiviert den Trigger wenn dessen Status defined ist und setzt ihn in den Status defined wenn sein status triggered oder aktiviert (Next:...) ist.
Der Watchdog musst immer mit diesem Befehl reaktiviert werden wenn er getriggert wurde.

Hab ich noch nicht gemacht, wäre aber einfach zu probieren.

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

MadMax-FHEM

Oder beim (bzw. bei jedem) Einschalten das at per defmod wieder auf 6h stellen...

Schlimmstenfalls wird 6h nach dem letzten Einschalten halt ausgeschaltet, obwohl schon aus...
Bzw. kann das ja im at geprüft werden und dann eben nicht noch mal ausgeschaltet werden...

Mache ich beim Badlüfter so, damit auf jeden Fall nach 1h aus ist...
Ansonsten soll er je nach Feuchtigkeit ausgehen...

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

Wie wäre es mit "on-till" oder "on-for-timer"? Wenn das zu schaltende Gerät das nicht direkt unterstützt ggf. mit einem readingsProxy dazwischen?
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

betateilchen

Oder einen Homematic Schaltaktor verwenden, denn der gibt auch eine Rückmeldung an FHEM, wenn er manuell bedient wurde.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

JMC

Hallo zusammen,

vielen Dank für eure vielen Tipps. Ich habs jetzt per defmod gemacht

Zitat von: MadMax-FHEM am 22 Dezember 2017, 11:23:59
Oder beim (bzw. bei jedem) Einschalten das at per defmod wieder auf 6h stellen...

Falls nochmal jemand suchen sollte hier der Vollständigkeit halber:
define n_global_INITIALIZED notify global:INITIALIZED IF ([Steckdose1] eq "on")(defmod Steckdose1AutoAus at +06:00:00 set DF_SD_1 off;;  attr Steckdose1AutoAus room Raum1 )
define notify_Steckdose1 notify DF_SD_1 { if ($EVENT eq "on") { fhem "defmod Steckdose1AutoAus at +06:00:00 set DF_SD_1 off;;;; attr Steckdose1AutoAus room Raum1" } elsif ($EVENT eq "off") { fhem "delete Steckdose1AutoAus" } }
attr notify_Steckdose1 room Raum1


Das einzige was mich noch etwas stört: Wenn die Steckdose beim FHEM start an ist, dann wird als Raum aber "Raum 1 )" als Raum erstellt, ich hatte da zuerst kein Leerzeichen und dachte es läge daran, aber das hat keinen Unterschied gemacht (bzw schon, vorher war es "Raum1)" jetzt ist es "Raum 1 )")

Den Watchdog habe ich komplett deaktiviert, ich gehe jetzt über das notify generell den at-Weg.
Viele Grüße
JMC

MadMax-FHEM

Hmmm, ich bin mir nicht sicher bzw. so weit hab ich noch nicht experimentiert...

Aber ich würde erwarten, dass wenn ich einschalte und ich einen (relativen) Timer/at anlege, dass dieser nach einem Neustart von fhem weiterläuft...
(vielleicht probiere ich das [irgendwann] mal aus)

D.h. den defmod mit global:INITIALIZED brauchst du dann ja nicht, oder?
Bzw. wenn fhem nun 1min vor Ablauf des Timers neu startet setzt du ja wieder auf die vollen 6h...

Das delete des Timers/at brauchst du eigentlich nicht, oder?
Bzw. kann es zu Einträgen im Log führen (define first)...
Da es sich um einen einmaligen (da relativ) Timer/at handelt, verschwindet der eh nach den 6h...
...gut ohne delete würde er noch mal ausschalten, who cares ;)

Dann ist auch die Abfrage auf "on" bzw. "off" im Notify unnötig bzw. kann das ("on") dann gleich mit ins RegEx des Notify...

Mein "Notaus-Notify" ist einfach:

define nTurnOffLuefterBadSec notify Schaltaktor_Bad_Luefter:on defmod atTurnOffLuefterBad at +01:00:00 set Schaltaktor_Bad_Luefter off

Das mit dem Raum, hmm.
Evtl. ist das define noch nicht "aktuell" (durch) und das attr room kann daher nicht so richtig ausgeführt werden...
Steht was im Log?

Macht ein Raum überhaupt Sinn?
Der Timer/at ist ja nur vorhanden, wenn das Licht eingeschaltet wurde und dann auch nur für 6h.
Den Rest vom Tag (und wenn nicht ein geschalten wurde) ist er ja gar nicht da...

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)

JMC

Ich bin von dem Homepilot Modul auf das Duofernstick Modul umgestiegen - mit dem alten Modul war das ganze gebastel notwendig, da beim starten der Watchdog nicht von alleine angetriggert worden war. Ich habe festgestellt, dass der Watchdog mit dem neuen Modul ohne Probleme funktioniert und von alleine getriggert wird wenn FHEM startet. Also das ganze at-gebimmel wieder weg und den Watchdog aktiviert - alles funktioniert so wie es soll :)

Hätte ich das vor dem ganzen gebastel mal getestet ob das mit dem neuen Modul funktioniert...  ::)

Vielen Dank aber für die Hinweise
Viele Grüße
JMC