[gelöst] Statusänderung erkennen und Aktion auslösen?

Begonnen von Pimpinella, 27 November 2015, 12:16:01

Vorheriges Thema - Nächstes Thema

Pimpinella

Hi

Ich verwende hier EdiPlugs, die sich problemlos einbinden und steuern ließen. Nun kann man die aber auch manuell per Schalter am Gerät einschalten, ohne dass diese Statusänderung direkt weitergegeben wird - natürlich wird der neue Status aber dann durch die Intervallabfrage bekannt.
Ich würde nun gerne einen EdiPlug der manuell eingeschaltet wurde nach 2 Stunden wieder automatisch abschalten. Aus Anfänger-PDF und Commandref glaube ich inform und notify für diese Aufgabe identifiziert zu haben, ich finde aber insbesondere z inform keine Beispiele

Wenn ich das richtig verstanden hätte wurde das eventbasierte und zeitversetzte Ausschalten in etwa so funktionieren:

define  NotifyHandler notify InformHandler at +02:00:00 set EdiPlug off

Aber wie muss dann die inform-Anweisung aussehen? Oder denke ich komplett falsch?
Danke im Vorraus für eure Hilfe!

Gruß, Frank

CoolTux

Zitat von: Pimpinella am 27 November 2015, 12:16:01
Hi

Ich verwende hier EdiPlugs, die sich problemlos einbinden und steuern ließen. Nun kann man die aber auch manuell per Schalter am Gerät einschalten, ohne dass diese Statusänderung direkt weitergegeben wird - natürlich wird der neue Status aber dann durch die Intervallabfrage bekannt.
Ich würde nun gerne einen EdiPlug der manuell eingeschaltet wurde nach 2 Stunden wieder automatisch abschalten. Aus Anfänger-PDF und Commandref glaube ich inform und notify für diese Aufgabe identifiziert zu haben, ich finde aber insbesondere z inform keine Beispiele

Wenn ich das richtig verstanden hätte wurde das eventbasierte und zeitversetzte Ausschalten in etwa so funktionieren:

define  NotifyHandler notify InformHandler at +02:00:00 set EdiPlug off

Aber wie muss dann die inform-Anweisung aussehen? Oder denke ich komplett falsch?
Danke im Vorraus für eure Hilfe!

Gruß, Frank

define  NotifyHandler notify EdiPlug:on at +02:00:00 set EdiPlug:FILTER=STATE!=off off
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

Pimpinella

Zitat von: CoolTux am 27 November 2015, 12:20:05

define  NotifyHandler notify EdiPlug:on at +02:00:00 set EdiPlug:FILTER=STATE!=off off


Aaaah! Also ist gar kein Anstubser nötig und notify erkennt sie Statusänderung von alleine?

Wenn ich das richtig verstehe bedeutet das also:

notify EdiPlug:on -> wenn eine Statusänderung auf "on" erfolgt wird die Aktion ausgelöst
set EdiPlug:FILTER=STATE!=off off -> es wird nur dann der Ausschaltbefehl gesendet, wenn der Status nicht off ist

richtig?

Gruß, Frank

CoolTux

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

Pimpinella

Hi

Ich mus das Thema nochmal nach oben holen. Ich habe das jetzt wir vorgeschlagen ausprobiert, aber es funktioniert so leider nicht. Was ich gemacht habe ist folgendes:

define ep_off_2h notify Ediplug2:on define at_2h_ep2_off at +00:01:00 set Ediplug2:FILTER=STATE!=off off

Ediplug2 sollte jetzt nach einer Minute wieder ausgeschaltet werden, und das klappt auch, wenn ich über fhem schalte, aber wie eigentlich ursprünglich erwartet nicht, wenn ich über den Schalter direkt am Ediplug schalte. fehm zeigt zwar den Ediplug korrekt als eingeschaltet an, aber es wird nicht das notify ausgelöst. Irgendeine weitere Idee, wie das gehen könnte?

Gruß, Frank

CoolTux

Schau mal im Eventmonitor nach was genau für ein Event kommt wenn FHEM den ediplug poolt und der auf on ist und fhem zu der zeit auf off
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

Pimpinella

#6
2015-11-27 23:30:43 EDIPLUG Ediplug2 current: 0 A
2015-11-27 23:30:43 EDIPLUG Ediplug2 power_now: 0 W
2015-11-27 23:30:43 EDIPLUG Ediplug2 power_day: 0.000 kWh
2015-11-27 23:30:43 EDIPLUG Ediplug2 power_week: 0.000 kWh
2015-11-27 23:30:43 EDIPLUG Ediplug2 power_month: 0.000 kWh
2015-11-27 23:30:43 EDIPLUG Ediplug2 OFF
2015-11-27 23:31:43 EDIPLUG Ediplug2 ON / 0 W / 0 A
2015-11-27 23:31:43 EDIPLUG Ediplug2 current: 0.0000 A
2015-11-27 23:31:43 EDIPLUG Ediplug2 power_now: 0.00 W
2015-11-27 23:31:43 EDIPLUG Ediplug2 power_day: 0.000 kWh
2015-11-27 23:31:43 EDIPLUG Ediplug2 power_week: 0.000 kWh
2015-11-27 23:31:43 EDIPLUG Ediplug2 power_month: 0.000 kWh
2015-11-27 23:31:43 EDIPLUG Ediplug2 ON / 0.00 W / 0.0000 A



das wäre die Ausgabe...

Gruß, Frank

Pimpinella

Hi

ok, wenn ich den attr model von SP2101W auf unknown setzte, dann liefert das 98_EDIPLUG.pm statt "ON / 0W / 0A" einfach nur "on" und das automatische abschalten klappt wie gewünscht. Leider kann ich dann aber keine Leistungsdaten mehr sehen und die brauche ich auch. Beim erstmaligen erkennen, dass das Ediplug angeschaltet wurde liefert das Modul ja eine Extrazeile. Ich schaue mal, ob ich das im Code finde und ob ich da nicht ein einfaches "on" draus machen kann. Dann sollte es (hoffentlich) klappen.

Gruß, Frank

stromer-12

Lasse doch auf ON mit beliebigen Zeichen danach checken
define ep_off_2h notify Ediplug2:ON.* define...
FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

Pimpinella

Hi

Ja, das klappt, vielen Dank :) So langsam beginne ich zu verstehen, wie fhem funktioniert :)
Ich hatte jetzt zwar gerade schon eine eine Zeile im EDIPLUG-Modul hinzugefügt, mit der es auch gegangen wäre, aber das müsste ich ja nach jedem Update wieder erneuern, so ists besser.

Gruß, Frank

Pimpinella

#10
Hi

So, ich denke jetzt funktionierts wie es soll. Mit folgender Lösung gibt es keine Fehlermeldungen in der Logdatei mehr und der Ausschaltbefehl wird beim manuellen ausschalten auch wieder  entfernt:

define ep2_off_2h notify Ediplug {
if ( "$EVTPART0" eq "ON" ) {
  if(!defined($defs{'at_2h_ep2_off'})) {
    fhem("define at_2h_ep2_off at +02:00:00 set Ediplug2:FILTER=STATE!=off off") }}
  else { if ( "$EVENT" eq "OFF" ) {
    if (defined($defs{'at_2h_ep2_off'})) {
      fhem("delete at_2h_ep2_off")}
    }
  }
}


So bin ich fürs erste zufrieden :)

Gruß, Frank