Licht nach x Minuten aus, wenn enigma2-Receiver Status wechselt von on nach off

Begonnen von der_da, 11 Januar 2016, 11:10:31

Vorheriges Thema - Nächstes Thema

der_da

Hallo liebes Forum,

bisher war ich nur stiller Mitleser und habe seit einiger Zeit meine FHEM-Installation am laufen. Ich habe eine (für mich) knifflige Aufgabe, die ich nicht so recht hinbekomme:
Wenn abends der TV ausgeschaltet wird, muss ich derzeit manuell die letzten Lichter ausschalten (oder man schaltet halt zu einer festen Uhrzeit automatisch).
Schön wäre es, wenn die Hausautomation so schlau wäre, und nach dem Ausschalten des TV (Enigma2-Receiver) nach einiger Zeit die diversen Lichter selbst ausschalten würde.
Mit
get TVReceiver power
kann ich ja den Zustand des Receivers abfragen. Aber wie bekomme ich mit, dass der Receiver (sagen wir zw. 20:00 und 22:30) an gewesen ist und jetzt aus ist. Ich will ja verhindern, dass das Licht einfach ausgeschaltet wird, nur weil mal kein fernsehen geguckt wurde.

betateilchen

Falls der TVReceiver einen event generiert, wenn er ausgeschaltet wird, kannst Du einfach ein notify definieren, das darauf reagiert.

define Licht_aus notify TVReceiver.off set Licht on-for-timer 1800

Dann geht 1800 Sekunden (30 Minuten) nach dem Abschalten des Receivers das Licht aus.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

der_da

Hmm - Danke, aber ...  :)

Das Event sieht so aus:
ENIGMA2 Wz.TvReceiver power: off
und mein notify so:
Wz.TvReceiver:off set Fernsehboard on-for-timer 10
nur 10 Sekunden, damit ich nicht so lange warten muss, bis das Licht ausgeht :-)
Leider geht das Licht aber nicht aus :-\
Wenn ich es richtig verstehe, dann bedeutet Wz.TvReceiver:off in meinem notify, egal ob power: off oder irgendwas: off das notify auslöst. Das sollte dann doch so gehen - oder?

marvin78

Du musst auf das exakte Event reagieren bzw. RegEx verwenden. off != power: off. Mit deinem notify reagierst du nur auf state.

Sowas

define Licht_aus notify TVReceiver.power.*off set Licht on-for-timer 1800

könnte funktionieren, je nachdem, was durch das Device noch für Events ausgelöst werden, aber zu ungenau sein.

Wie das Event ganz genau aussieht, kannst du auch mit der sub Log feststellen, falls es noch nicht passt.

Bitte mit den Grundlagen beschäftigen.

betateilchen

Zitat von: marvin78 am 11 Januar 2016, 12:33:16
Sowas

define Licht_aus notify TVReceiver.power.*off set Licht on-for-timer 1800

könnte funktionieren,

Da fehlte das Wz. davor ;)

define Licht_aus notify Wz.TvReceiver.power..off set FernsehBoard on-for-timer 1800

Zitat von: marvin78 am 11 Januar 2016, 12:33:16
Wie das Event ganz genau aussieht,

wissen wir ja:

Zitat von: der_da am 11 Januar 2016, 12:29:06
Das Event sieht so aus:
ENIGMA2 Wz.TvReceiver power: off
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

marvin78

Wenn das stimmt, schon. Ich traue Usern nicht, die nicht einmal wissen, dass jedes Reading ein eigenes Event erzeugen kann.

betateilchen

Zitat von: marvin78 am 11 Januar 2016, 13:21:06
Ich traue Usern nicht, die nicht einmal wissen, dass jedes Reading ein eigenes Event erzeugen kann.

Denk mal bitte zurück an Deine Anfangszeit von fhem. War Dir von der ersten Minute an klar, wie die Begriffe "event" und "reading" zusammenhängen?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

marvin78

Bevor ich mich an sowas hier gewagt habe, wusste ich das, ja. Ich lese deutlich länger hier mit, als ich Hausautomation tatsächlich betreibe. ;) Aber ich bin kein Maßstab, ITler und ich habe das auch nicht als Vorwurf gemeint. Ich glaube bloß nicht ohne Vorbehalt, dass Angaben über das Event stimmen und zudem wollte ich eine weitere Möglichkeit aufzeigen, mit der man das Event heraus findet (der Event-Monitor ist hier nicht immer 100% hilfreich bzw. anstrengend bei vielen Events).

betateilchen

Zitat von: marvin78 am 11 Januar 2016, 13:21:06
Ich traue Usern nicht, die nicht einmal wissen,

Eine solche Aussage finde ich gegenüber einem Fragesteller mit erkennbar weniger als 10 Beiträgen trotzdem unpassend.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

marvin78

Das ist deine Meinung. Meine ist eine andere. Ich sage nur, was ich denke und das ist nunmal, dass ich so einer Aussage nicht traue.

Wir sollten den Thread des Users aber nicht für diesen Kram kapern. Das ist nämlich wirklich unpassend.


Brice

Interessante Idee, muss auch automatisieren, wenn mein Enigma2-Modul wieder läuft.
Zitat von: der_da am 11 Januar 2016, 12:29:06
Wz.TvReceiver:off set Fernsehboard on-for-timer 10
sollte so funktionieren:
Wz.TvReceiver:set_off.* set Fernsehboard on-for-timer 10

Und wenn du nicht möchtest, das beim Ausschalten des Receiver am Nachmittag das Licht für 10 Sekunden angeht, gibst du eine eine Bedingung mit, z.B.
Wz.TvReceiver:set_off.* if (hour >=21) set Fernsehboard on-for-timer 10
FHEM auf RPi 4 4GB (Buster) | produktiv) CUL 868 für FS20 | S300TH | KS300 | Max!Cube als CUN 868 für TechemWZ | HM-MOD-RPI-PCB für HM | Z-Wave ZME_UZB1 | FRITZ!DECT 200 | HUE | Lightify | Echo Dot | WS3080

betateilchen

Zitat von: Brice am 11 Januar 2016, 18:23:10

Wz.TvReceiver:set_off.* if (hour >=21) set Fernsehboard on-for-timer 10



Das funktioniert so definitiv nicht.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Brice

Richtig, war ungetestet. Nachdem ich meine VUPlus Uno wieder in FHEM eingebinden konnte, habe ich es für mich so gelöst:

SetTopBox:power:.off {if (ReadingsVal("LED_TV","state","on")) { fhem "set LED_TV on-for-timer 10" }}

FHEM auf RPi 4 4GB (Buster) | produktiv) CUL 868 für FS20 | S300TH | KS300 | Max!Cube als CUN 868 für TechemWZ | HM-MOD-RPI-PCB für HM | Z-Wave ZME_UZB1 | FRITZ!DECT 200 | HUE | Lightify | Echo Dot | WS3080

betateilchen

das ist keine Lösung, denn das kann auch nicht funktionieren...
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Brice

Funktioniert, sogar mit der Structure Licht. Und nein, ich bin nicht blind...

Warum sollte es nicht funktionieren, wo sollte der Fehler liegen? Bei mir: Vu+ Uno, diverse FS20ST und HUE.
FHEM auf RPi 4 4GB (Buster) | produktiv) CUL 868 für FS20 | S300TH | KS300 | Max!Cube als CUN 868 für TechemWZ | HM-MOD-RPI-PCB für HM | Z-Wave ZME_UZB1 | FRITZ!DECT 200 | HUE | Lightify | Echo Dot | WS3080