Lichtsteuerung mit Dashbutton aber nur wenn

Begonnen von Mezzanine, 26 April 2018, 19:53:48

Vorheriges Thema - Nächstes Thema

Mezzanine

Hallo Gemeinde,

ich nutze schon seid einiger Zeit FHEM und habe bereits verschiedene Dinge eingebaut.
Momentan aber alles nur Sachen die nebeneinander herlaufen
(z.B. Fahrzeiten zur Arbeit, Abfallkalender, Spritpreise,...)

Nun habe ich vor kurzem einen LED-Schlauch mittels Magic-Ufo WLAN LED-Controller ans laufen bekommen
und kann diesen auch bereits mit einem DashButton und notify schalten.

Momentan sieht mein notify so aus:
DashButton:Nerf:.short
IF ([Licht.Treppenhaus] eq "on") (set Licht.Treppenhaus off 3) ELSE (set Licht.Treppenhaus on 3)


Nun möchte ich den Dashbutton allerdings so umfunktionieren dass er das Licht nur einschaltet wenn mein Twilight Modul
unter 4 oder über 8 ausgibt.

Gibt es außerdem noch vielleicht ne Möglichkeit beim einschalten des Lichts immer eine andere Farbe zu schalten?  :D

Schonmal danke für eure Ideeen

Grüße
Mezze

Wuehler

Hallo Mezze,

auf der fhem IF-Ebene bin ich schon länger nicht mehr unterwegs gewesen, aber laut commandref müsste zumindest deine erste Frage ungefähr folgendemaßen gelöst werden (siehe auch http://fhem.de/commandref.html#IF):
DashButton:Nerf:.short
IF ([Licht.Treppenhaus] eq "on") (set Licht.Treppenhaus off 3) ELSE ( IF ([twilight.light] gt 3 and [twilight.light] lt 8) (set Licht.Treppenhaus on 3))

Bin mir da aber echt nicht sicher.
Mit einer Zufallsfarbe kannst du auf die perl-Ebene wechseln:
DashButton:Nerf:.short {
  if (ReadingsVal("Licht","Treppenhaus","") eq "on") {
    fhem("set Licht.Treppenhaus off");
  }elsif  (ReadingsVal("twilight","light",0) gt 3 && ReadingsVal("twilight","light",0) lt 8) {
    var $color=int(rand(10)); # Zufallsfarbe zwischen 0 und 9
    fhem("set Licht.Treppenhaus on ".$color);
  }
}


Ungetestet und den Namen deines Twilight-Devices musst du korrigieren.

Hoffe es hilft,
Dirk

Otto123

Hi

ZitatIF ([twilight.light] gt 3 and [twilight.light] lt 8)
Zitatdass er das Licht nur einschaltet wenn mein Twilight Modul
unter 4 oder über 8 ausgibt.
Wäre das nicht eher so?
IF ([twilight.light] < 4 or [twilight.light] > 8)

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

Mezzanine

Hallo Dirk,
hallo Otto,

erstmal danke für die schnelle Antwort!

Kurzum: es klappt nocht nicht :(

Getestet habe ich beides.

Noch eine Frage zu dem Perl Schnippsel: muss der in ne eigene myUtils, oder kann ich den direkt notify eintragen?

LG Mezze

Mezzanine

Komando zurück!

so klappts:
DashButton:Nerf:.short
IF ([Licht.Treppenhaus] eq "on") (set Licht.Treppenhaus off 2) ELSE (IF ([LichtWetter] < 4 or [LichtWetter] > 8) (set Licht.Treppenhaus on 2))


Is also ne Kombination aus beiden :D

Wenn jetzt noch die Farben wechseln würden  8) ;D

Danke nochmal
Mezze

Wuehler

Moin,

Kannst den perl-code direkt eintragen in den Editor (hinter den regulären Ausdruck Dashbutton:Nerf:.short ).
Musst nur auf die geschweiften Klammern achten. Die müssen den perl-code umschließen.

Otto123

Hi Mezze,

Dies hier liefert Dir eine zufällige Ganzzahl: {(int(rand(10)))}

Also dann einfach so?
DashButton:Nerf:.short
IF ([Licht.Treppenhaus] eq "on") (set Licht.Treppenhaus off 2) ELSE (IF ([LichtWetter] < 4 or [LichtWetter] > 8) (set Licht.Treppenhaus on {(int(rand(10)))}))


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

Mezzanine

Hi,ich mal wieder  ;D

ich versuche mich gerade in "weiterführender notify Programmierung".

Ich versuche gerade mit einem Button zwei Lichter zu schalten.
Mein Code sieht momentan so aus:

DashButton:Heineken:.short
IF ([Treppe.Licht|WZ.Ofen.Licht] eq "on") (set Treppe.Licht off),(set WZ.Ofen.Licht off) ELSE (set Treppe.Licht HSV 15,100,50),(set WZ.Ofen.Licht on)


Dazu sei gesagt:
Treppe.Licht ist das Wifi Ufo und WZ.Ofen.Licht ist eine schaltbare Intertechno Steckdose mit ner Stehlampe.

Der Code oben funktioniert leider garnicht.

Versucht habe ich es auch so:

DashButton:Heineken:.short
IF ([Treppe.Licht|WZ.Ofen.Licht] eq "on") set Treppe.Licht off ; set WZ.Ofen.Licht off ELSE set Treppe.Licht HSV 15,100,50 ; set WZ.Ofen.Licht on


Allerdings schaltet mit diesem Code die Stehlampe zwar ein, nicht aber der LED-Strip am Ufo.
Auch kann ich darüber die Lampe nicht mehr ausschalten. Das Licht geht zwar aus, aber gleich wieder an  :D

Könnt ihr mir vielleicht bisslauf die Sprünge helfen?

Otto123

Hi,

der Syntax ist falsch.
Beim IF muss das so sein:
(Befehl1,Befehl2)
Zitat Doku
ZitatMehrerer Befehle werden durch ein Komma statt durch ein Semikolon getrennt, dadurch entfällt das Doppeln, Vervierfachen usw. des Semikolons:

define check at +00:10 IF ([outdoor:humidity] > 10) (set switch1 off,set switch2 on) ELSE (set switch1 on,set switch2 off)

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