Licht einschalten wenn es Dunkel ist und der Fernseher läuft

Begonnen von spike08122, 02 Dezember 2015, 11:20:03

Vorheriges Thema - Nächstes Thema

spike08122

Hallo Zusammen,

ich möchte gern, dass sich meine Beleuchtung einschaltet, wenn es draußen dunkel ist und der Fernseher (wird gemeinsam mit Soundanlage eingeschaltet) läuft.

-Anwesenheitserkennung über Netzwerkverbindung für Soundanlage läuft
-Notify für Anwesenheiterkennung läuft (on/off wird ausgegeben)
-Modul Twilight läuft

Einschalten soll entweder die Soundanlage, wenn es bereits dunkel ist, oder Twilight, wenn die Soundanlage läuft. Ich komme aber mit den Bedingungen nicht weiter. Habe verschiedene Dinge ausprobiert.

Ich habe mit "if" experimentiert und auch mit der "state" Abfrage und "watchdog".


Ich möchte es gern selbst rausfinden, brauch eben nur einen Schupps bzw. Denkanstoß

Danke


Spike
FHEM auf RPI B+, Steuerung von Baumarktsteckdosen (ELRO), Steuerung der Aquariumbeleuchtung mit LD382 in Planung, WLAN Temp-Sensor mit ESP8266 und EPSEasy


slor

Mach doch einem Dummy, der via Twilight auf tag oder nacht geschaltet wird. (doif oder notify setzt den Dummy)
Dann ein doif, das bei Anlage=present und Dummy=nacht das licht anschaltet.

Tom_S

oder ganz altmodisch mit at und notify

define Licht_an_1 at *{sunset("REAL")} {if (Value ("TV") eq "present"){fhem ("set Licht on")}}

zweiter Fall

define Licht_an_2 notify TV:present {if (!isday("REAL")) {fhem ("set Licht on")}}

LG
RaspberryPI2 + pilight, 3x AVR-NetIO, LW12, LW12HX, LW12FC; MAX-Lan, ESP8266, Arduino, H801, Neopixel, Solaredge, Modbus

spike08122

Danke Euch erstmal für die schnellen Antworten. Werde heute Abend mal die Varianten probieren und berichten.



Spike
FHEM auf RPI B+, Steuerung von Baumarktsteckdosen (ELRO), Steuerung der Aquariumbeleuchtung mit LD382 in Planung, WLAN Temp-Sensor mit ESP8266 und EPSEasy

spike08122

Ich hab es umgesetzt, bei mir sieht es so aus:

define Licht_an_mit_TV_1 at *{sunset("REAL")} {if (Value ("Teufel_sound") eq "present"){fhem ("set FunkSt1_LED on")}}

define Licht_an_mit_TV_2 notify Teufel_sound:present {if (!isday("REAL")) {fhem ("set FunkSt1_LED on")}}


zum Ausschalten habe ich dann das Notify entsprechend umgebaut:

define Licht_aus_mit_TV_2 notify Teufel_sound:absent set FunkSt1_LED off

Das Licht schaltet mit der Teufel-Anlage ein bzw. aus. Es war heute schon dunkel, also konnte ich nur TV2 testen.

Noch eine Verständnisfrage, warum die zwei unterschiedlichen Wege zum Einschalten. Ist vielleicht ne komische Frage, aber ich würde es auch gern verstehen.

Spike
FHEM auf RPI B+, Steuerung von Baumarktsteckdosen (ELRO), Steuerung der Aquariumbeleuchtung mit LD382 in Planung, WLAN Temp-Sensor mit ESP8266 und EPSEasy

Paul

Zitat von: spike08122 am 02 Dezember 2015, 18:23:43

define Licht_an_mit_TV_1 at *{sunset("REAL")} {if (Value ("Teufel_sound") eq "present"){fhem ("set FunkSt1_LED on")}}

define Licht_an_mit_TV_2 notify Teufel_sound:present {if (!isday("REAL")) {fhem ("set FunkSt1_LED on")}}


1. wenn Fernseher an und es wird dunkel schalte Licht an
2. wenn es dunkel ist und der Fernseher angeschaltet wird => schalte Licht an
Cubietruck, HM-USB, CUL, FS20, FHT, HUE, Keymatic

spike08122

@Paul danke.

Das einzige Problem, das ich festgestellt habe. Jede Minute wenn FHEM die Anlage pingt und sie "present" ist, wird auch der Befehl zum einschalten rausgeschickt.

Wie bekomme ich das weg?
FHEM auf RPI B+, Steuerung von Baumarktsteckdosen (ELRO), Steuerung der Aquariumbeleuchtung mit LD382 in Planung, WLAN Temp-Sensor mit ESP8266 und EPSEasy

Paul

Zitat von: spike08122 am 02 Dezember 2015, 21:55:24
@Paul danke.

Das einzige Problem, das ich festgestellt habe. Jede Minute wenn FHEM die Anlage pingt und sie "present" ist, wird auch der Befehl zum einschalten rausgeschickt.

Wie bekomme ich das weg?

define Licht_an_mit_TV_2 notify Teufel_sound:present {if (!isday("REAL")&& Value "FunkSt1_Led" eq "off") {fhem ("set FunkSt1_LED on")}}
Cubietruck, HM-USB, CUL, FS20, FHT, HUE, Keymatic

Rince

ZitatWie bekomme ich das weg?
Oder du setzt das Attribut event-on-change-reading bei dem Presence Modul.

Oder du nimmst doch die schon vorgeschlagene DOIF Variante. Das triggert in der Standardvariante nur, wenn ein Auslösereading seinen state verändert. (Außer du setzt im DOIF das Attribut do always)

8)
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)

spike08122

Nachdem ich mich mal etwas mit DOIF beschäftigt habe, habe ich mich mal darun versucht. Hier meine Lösung

define LED_auto_TV DOIF ([Automatisch_Schalten] eq "on" and [Teufel_sound] eq "present" and [{sunset("REAL")}]) (set FunkSt1_LED on) DOELSE (set FunkSt1_LED off)

Ich habe noch einen Dummy eingefügt, um die Automatik auch abschalten zu können

define Automatisch_Schalten dummy
attr Automatisch_Schalten setList on off


Veilleicht kann jemand damit was anfangen.

LG Spike
FHEM auf RPI B+, Steuerung von Baumarktsteckdosen (ELRO), Steuerung der Aquariumbeleuchtung mit LD382 in Planung, WLAN Temp-Sensor mit ESP8266 und EPSEasy

sasquuatch

ich habe mal hier die vorschläge aufgegriffen, aber probleme beim umsetzen.

mit dem DOIF Befehl passiert bei mir gar nichts
define Licht_auto_TV DOIF ([Automatisch_Schalten] eq "on" and [Sat] eq "present" and [{sunset("CIVIL")}]) (set StehlampeKleinWohnen on) DOELSE (set StehlampeKleinWohnen off)

ich habe aber auch ein Verständniss Problem mit DOELSE, warum sollte er damit überhaupt ausschalten?
weil nur der "Sat" auf "absent" geht, aber "Automatisch_Schalten" bleibt doch noch auf "on" und wir haben auch noch "sunset". es müsste doch erst gehen, wenn beide Variablen "off" sind und es "sunrise" ist.
ich hoffe man versteht mich, sprich so oder so ähnlich müsste es doch aussehen?
define Licht_auto_TV DOIF ([Automatisch_Schalten] eq "on" and [Sat] eq "present" and [{sunset("CIVIL")}]) (set StehlampeKleinWohnen on) DOELSE ([Sat] eq "absent") (set StehlampeKleinWohnen off)



bei der ersten vorgeschlagenen variante mit dem at befehl und den zwei notify klappt es relativ gut. diese variante ist nicht so schön wie die DOIF variante mit dem dummy zum ausschalten.
aber bei dem 2.notify habe ich das problem, dass er mir die lampe alle 30-60sek ausschaltet, obwohl sie bereits aus. zumindest ist mein log voll mit "set StehlampeKleinWohnen off".

jetzt dachte ich an folgendes, aber das geht nicht, womit ich irgendwie schon gerechnet habe
define Licht_aus_mit_TV_2 notify {if (Value ("Sat") eq "absent" and ("StehlampeKleinWohnen") eq "on") {fhem ("set StehlampeKleinWohnen off")}}
die alternative geht natürlich auch nicht
define Licht_aus_mit_TV_2 notify Sat:absent {if (("StehlampeKleinWohnen") eq "on") {fhem ("set StehlampeKleinWohnen off")}}

das selbe Problem habe ich aber auch mit dem 1.notify zum einschalten, der schaltet auch ständig die Lampe an, obwohl sie bereits an ist.
mein Vorschlag, aber vermutlich wird der auch nicht gehen :S
define Licht_an_mit_TV_2 notify Sat:present {if (!isday("REAL") and ("StehlampeKleinWohnen") eq "off") {fhem ("set StehlampeKleinWohnen on")}}

Paul

Cubietruck, HM-USB, CUL, FS20, FHT, HUE, Keymatic

sasquuatch

stimmt, das muss es gewesen sein, danke.
beim testen hatte ich noch mein handy genommen und da ist "event-on-change-reading" eh schon drin gewesen. für den Satrecevier hatte ich "event-on-change-reading" wohl vergessen gehabt, den jetzt geht es. ich weiß auch gar nicht wann ich das "event-on-change-reading" beim Sat eingefügt hatte, eventuell beim schreiben ins forum :S

Allerdings ist die frage für das DOIF immer noch offen und warum es die Lampe mit DOELSE ausschalten sollte?
müsste wohl alles schritt für schritt testen, ohne soviele variablen und ohne doelse.

ach ja, so wäre es wohl richtiger und nicht was ich unten geschrieben habe, zumindest laut commandref:

define Licht_auto_TV DOIF ([Automatisch_Schalten] eq "on" and [Sat] eq "present" and [{sunset("CIVIL")}]) (set StehlampeKleinWohnen on) DOELSEIF ([Sat] eq "absent") (set StehlampeKleinWohnen off)

sasquuatch

ich nochmal, also das DOIF klappt bei mir nicht wenn ich sunset drin habe. nehme ich die variable raus, schaltet DOIF die Lampe so wie es soll.
hat das Problem noch jemand?
define Licht_auto_TV DOIF ([Automatisch_Schalten] eq "on" and [Sat] eq "present" and [{sunset("CIVIL")}]) (set StehlampeKleinWohnen on) DOELSEIF ([Sat] eq "absent") (set StehlampeKleinWohnen off