Webradio einschalten beim Betreten der Küche

Begonnen von tfriedrich85, 26 Januar 2016, 21:05:15

Vorheriges Thema - Nächstes Thema

tfriedrich85

Hallo zusammen,

ich habe auf dem Raspberry neben Fhem auch noch ein WebRadio Dienst laufen und möchte erreichen, dass wenn der Bewegungsmelder in der Küche eine Bewegung erkannt, das Radio eingeschaltet wird.
-Das Radio ist schon ein Dummy in Fhem

Das Problem ist wenn man das Radio über folgende Zeile einschalten lässt, dass es sich bei jeder Bewegung erneut einschaltet und das eine kurze Unterbrechung zur Folge hat.
define RadioOn notify Bewegung_Kueche:on set Radio on

Aus diesem Grund habe ich mich an dem folgendem IF Statement versucht, bei dem ich erst überprüfen will ob das Radio schon "ON" ist aber es klappt irgendwie nicht.

Radio  IF ([Bewegung_Kueche] eq "on") ( IF ([Radio] eq "off") (set Radio on) ELSE () ) ELSE ()

Habt ihr Ideen dazu oder das Problem schon mal gehabt?
Vielen Dank

l2r

define di_Radio DOIF ([Bewegung_Kueche] eq "on" and [Radio] eq "off")(set Radio on)
DOELSEIF ([Bewegung_Kueche] ne "on" and [Radio] eq "on")(set Radio off)


Das DOIF wird nur einmal ausgeführt, und muss dananch den DOELSEIF-Fall durchlaufen, um wieder in den IF-Fall zu kommen. Es sein denn man setzt
attr di_Radio do always

Gruß
Wissen ist Macht.
Ich weiß nix.
Macht nix.

tfriedrich85

Hallo l2r,

vielen Dank für deine Lösung ich werde das am Wochenende mal testen und geb dir dann Rückmeldung.

Bedeutet das im DOELSEIFD, dass wenn sich keiner mehr bewegt sich das Radio wieder ausschaltet und ich dann in der Küche herumspringen muss?   ;D
Oder kann ich das auch an eine zeit oder einen Watchdog koppeln?

Danke für deine Hilfe!


VB90

ja, das bedeutet es.

du kannst das ausschalten z.B. über zwei Ansätze verzögern.
1. du schaltest von vornherein "on-for-timer", man hat ja so seine Zeiten, die man üblicher Weise in der Küche ist.
oder
2. du setzt über das Attribut "wait" eine Verzögerung ungefähr so: attr Radio wait 0:300
hierbei wird sofort eingeschaltet (0 Sekunden Verzögerung für den ersten Befehl des DOIF) und erst nach 5Minuten (300 Sekunden für den zweiten Befehl) ohne Bewegung ausgeschaltet.

Der zweite Ansatz ist natürlich flexibler, weil die 300Sek ja bei jeder erkannten nicht-Bewegung neu starten. Vor allem läuft das Radio nicht ne Stunde für die Katz, wenn man mal schon nach 10Minuten fertig ist.

vb
Man muss das Rad nicht neu erfinden, nur wissen wie es gedreht wird.

tfriedrich85

OK, das macht Sinn! Ich versuch das mal so...

Vielen Dank

VB90

lies dir mal in der commandref den Absatz zu DOIF durch.
Da gibt es viele nette Beispiele zur Umsetzung, auch mit relativem Zeitbezug

http://fhem.de/commandref_DE.html#DOIF

vb
Man muss das Rad nicht neu erfinden, nur wissen wie es gedreht wird.

tfriedrich85

Hallo zusammen,

ich hab am Wochenende ein bißchen an FHEM gearbeitet aber das Radio will immer noch nicht wie ich will.
Mit dem folgenden Code bleibt das Radio zwar 5 Minuten an geht aber auch wenn man sich bewegt.

define di_Radio DOIF ([Bewegung_Kueche] eq "on" and [Radio] eq "off")(set Radio on) DOELSEIF ([Bewegung_Kueche] ne "on" and [Radio] eq "on")(set Radio off)
attr di_Radio wait 1:300


Ich hab es mit einem Watchdog versucht aber das klappt auch nicht.

#Watchdog definieren
define watchdogRadio watchdog Bewegung_Kueche2:on 00:00:30 SAME set Radio off;; setstate watchdogRadio defined


Gibts noch andere Möglichkeiten?

l2r

die erste Bedingung wird nur wahr, wenn das Radio auch aus ist, und somit wird der Timer nicht zurückgesetzt, wenn das Radio an ist und sich jemand bewegt
Wissen ist Macht.
Ich weiß nix.
Macht nix.

Per

Zitat von: l2r am 01 Februar 2016, 09:08:23
die erste Bedingung wird nur wahr, wenn das Radio auch aus ist, und somit wird der Timer nicht zurückgesetzt, wenn das Radio an ist und sich jemand bewegt
Mach noch ein DOELSE ohne Timer und Doing dran, dann sollte es gehen. Damit wird nicht ständig ein neues On gesendet, der Timer aber dennoch zurückgesetzt.

tfriedrich85

Hallo zusammen,

vielen Dank Euch allen, jetzt klappt es!

mit dem zusätzlichen DOELSE ohne doing.