Aktor mit nur einem Befehl on/off schalten

Begonnen von sek_is_back, 05 März 2017, 20:06:50

Vorheriges Thema - Nächstes Thema

sek_is_back

Moin,

was muss ich wo einstellen, damit ich einen Lampe mit nur einem Befehl aus bzw einschalten kann?

Hintergrund:
Ich habe zu Testzwecken eine RGB WLAN LD686 eingerichtet, dieser funktioniert problemlos per on / off
Jetzt habe ich die Sprachsteuerung von Snowboy implementiert. Wenn das Hotword erkannt wurde setzt Snowboy per Shell einen Befehl zu FHEM ab, der die Lampe einschaltet. (perl /opt/fhem/fhem.pl 7072 "set TVLight on")

Jetzt möchte ich mit dem gleichen Befehl die Lampe wieder ausschalten. Ich habe irgendwas von set toggle gelesen, das bietet der LD686 aber nicht an.

Jemand eine Idee?

Thorsten Pferdekaemper

Zitat von: sek_is_back am 05 März 2017, 20:06:50Jemand eine Idee?
Ja, liefere erst einmal ein list von dem Device, um das es geht.
Gruß,
   Thorsten
FUIP

Otto123

Hi,

und wenn Du Dir einfach ein toggle baust?

Also ein notify auf "toggle" und dann ein: wenn an dann aus und wenn aus dann an? Ist doch ziemlich simpel.

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

betateilchen

Zitat von: Thorsten Pferdekaemper am 06 März 2017, 15:44:33
Ja, liefere erst einmal ein list von dem Device, um das es geht.

oder zumindest den Namen des Moduls, mit dem Du den LD686 eingebunden hast.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

sek_is_back

#4
Moin,
also die LED Stripe (TVLight) habe ich mit WifiLight RGBWW LD686:192.168.0.46 als Actor definiert, diesen kann ich per App von allen mobilen Geräten und der Weboberfläche problemlos an und ausschalten.
Ich habe mir jetzt einen Dummy Schalter wie folgt angelegt:
define TVSwitch dummy
define m-TV notify TVLight {UntoggleDirect("TVLight")}
attr TVSwitch comment Untoggle
define n_1Untoggle notify .*:toggle {UntoggleDirect("$NAME") if( AttrVal($NAME, "comment", "") eq "Untoggle" )}

wenn ich jetzt das WebCommand perl opt/fhem/fhem.pl 7072 "set TVSwitch toggle" absetzte wird der TVSwitch geschaltet
Readings state bleibt auf toggle aber die Uhrzeit ändert sich 2017-03-07 14:13:05

dann habe ich den noch unter notify eingebunden
TVSwitch { if ("%" eq "toggle") {if ($value{TVLight} eq "off") {fhem "set TVLight on"} else {fhem "set TVLight off"}}}

wenn der Befehl zum Schalten kommt, wird nur der TVSwitch geschaltet, aber nicht der Aktor TVLight.
Stehe gerade etwas auf dem Schlauch

Otto123

#5
Hi,

zunächst mal brauchst Du Code tags ->  Die # Taste über :-X

Dieser Code funktioniert:
defmod nty_TVSwitch notify TVSwitch { if ($EVENT eq "toggle") {if (Value("TVLight") eq "off") {fhem"set TVLight on"} else {fhem"set TVLight off"}}}


Wie und wo du versucht hast deinen Code einzugeben ist mir völlig schleierhaft, da muss es doch vor Fehlern nur so geregnet haben?

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

sek_is_back

#6
defmod nty_TVSwitch notify TVSwitch { if ($EVENT eq "toggle") {if (Value("TVLight") eq "off") {fhem"set TVLight on"} else {fhem"set TVLight off"}}}

Damit hat es dann funktioniert, vielen Dank