Fibaro Szenenaktivierung: Musik via Lichtschalter steuern

Fibaro - Multimedia via Szene steuerna
Geschrieben von crissxcross

Der Fibaro Fensterkontakt kann deutlich mehr als nur zu prüfen, ob das Fenster auf oder zu ist. Dank der Binäreingänge kann man neben einem Temperatursensor auch einen Schalter anschließen und damit Szenen steuern. So gehts:

Wie man in den Fibaro Tür- / Fensterkontakt ein zusätzlichen Temperatursensor einbindet, hatte ich dir in dem Tutorial: Fibaro Fensterkontakt mit Temperatur & Binär Eingang gezeigt. Das du an den Binär Eingang auch einen Schalter, bzw. Taster anschließen kannst, hat Armon gezeigt, als er beschrieb wie man den Videogate, also die Türsprechanlage mit Fibaro einrichtet. (So richtest du den Fibaro Video-Gate als Türsprechanlage ein)

So ist es auch möglich, mit dem Fibaro Tür- / Fensterkontakt Szenen zu steuern. Ab diesem Moment sind deiner Fantasie keine Grenzen gesetzt. Du kannst so Variablen (wie die Anwesenheitsvariable) setzen, Musik laut oder leiser machen, das Fernsehprogramm wechseln, Lichter einschalten, dimmen oder einfach das alles zusammen mit einem Knopfdruck :-)

Taster am Fibaro Fensterkontakt anschließen

Ich habe mir im Baumarkt um die Ecke einen Unterputz Taster besorgt (ähnlich diesem Wipptaster) und diesen mit zwei Kabeln, mit dem Binäreingang des Fibaro Fensterkontakt verbunden.

HLC24 Auszug aus Bedienungsanleitung von fibaro Tür Fenster Sensor Kontakt

Wenn du nun den Taster bestätigst, so blinkt die blaue LED am Tür- / Fensterkontakt auf. In der Fibaro Weboberfläche sieht du "die Tür" oder das "Fenster" als offen. Wenn du auf den Taster drückst, wird diese geschlossen, da wir im Beispiel einen Taster 1-pol Schließer verwenden. Dieser schließt den Kontakt wenn du den Taster bestätigst, die blaue LED am Tür- / Fensterkontakt sollte aufblinken - so als wenn der Magnet an den Reed Kontakt kommt. Der funktioniert jetzt übrigens nicht mehr. Entweder den Binäreingang verwenden, oder den Reed Kontakt.

[carousel arrows="display" buttons="display"] [panel title="Fibaro Fensterkontakt" description="Taster zur Szenenaktivierung"]
Fibaro Fensterkontakt mit Binäreingang

Fibaro Fensterkontakt mit Binäreingang

[/panel] [panel title="Fibaro Fensterkontakt" description="Taster zur Szenenaktivierung"]
Fibaro Fensterkontakt - mit Taster

Fibaro Fensterkontakt - mit Taster

[/panel] [panel title="Fibaro Fensterkontakt" description="Taster zur Szenenaktivierung"]
Fibaro Fensterkontakt - zur Szenensteuerung

Fibaro Fensterkontakt - zur Szenensteuerung

[/panel] [/carousel]

Szenensteuerung aktivieren

Nun müssen wir noch zwei kleine Einstellungen in den Parametern des Fibaro Tür- / Fensterkontakts vornehmen, denn Ziel ist es ja, das uns der Fensterkontakt zurück meldet, ob und wie der Taster gedrückt wurde.

Hierzu gehst du im Fibaro Home Center auf die Einstellungen des Fensterkontakt, dort auf die Registerkarte "Erweitert". Hier setzt du den Parameter 14 (Scene activation functionality) auf "functionality activated". Speichern > und den Fensterkontakt wecken (3x Taster drücken oder innen den TMP Button.

Nun gibt uns der Fensterkontakt folgende Werte zurück.

  • von "AUS" nach "EIN" wird id 10 generiert
  • von "EIN" nach "AUS" wird id 11 generiert
Fibaro Fensterkontakt Parameter 14

Fibaro Fensterkontakt Parameter 14

Nett, aber wir wollen ja auch wissen wenn der Taster lange gedrückt- doppelt, oder gar dreifach gedrückt wurde. Hierzu müssen wir noch den Parameter 3 verändern auf: "INPUT_MOMENTARY". Das war es schon. Ab jetzt kann der Taster, welchen du am Fibaro Tür- / Fensterkontakt angeschlossen hast deine Szenen auslösen.

Fibaro Fensterkontakt Parameter 3

Fibaro Fensterkontakt Parameter 3

Szenenaktivierung mit Blockszene

Fangen wir mal einfach an. Auch Nutzer des Fibaro HCL können dies nutzen. Dazu einfach eine neue Blockszene anlegen, als Trigger den Fensterkontakt wählen und als Parameter die "Szenenaktivierung". In das leere grüne Feld kommt nun die erwartete ID. Wir wissen ja, wenn wir 1x kurz drücken bekommen wir die ID 10 zurück. Da wir den Parameter 3 vorhin geändert haben, bekommen wir nun auch noch folgende IDs zurück:

  • von "AUS" nach "EIN" = ID 10
  • von "EIN" nach "AUS" = ID11
  • gedrückt halten = ID12
  • Taste loslassen = ID13
  • Doppelklick = ID14
  • Dreifach Klick = ID15

Somit hast du nun mit einem Taster direkt 6 Trigger (Auslöser), um verschiedene Szenen "abzufeuern".

Fibaro Blockszene - Szenenaktivierung mit Fibaro Fensterkontakt

Fibaro Blockszene - Szenenaktivierung mit Fibaro Fensterkontakt

Szenenaktivierung mit LUA

Das Ganze geht natürlich auch in LUA. Dazu legst du dir eine neue Szene an und wählst anstelle der Blockszene eben LUA. Hier mal ein kleines Script zum starten:

Hier erstmal eine kurze Erklärung des Scripts. Also, beginnen wir in Zeile 3: Die ID 472 in den Properties ist bei mir der Fibaro Tür- und Fensterkontakt. Ändert sich an dessen Zustand etwas, triggert er diese Szene, löst diese also aus.

Weiter in Zeile 6, in der ich eine "locale" Variable setze, welche ich "pushTHEbutton" genannt habe. Diese fülle ich mit dem Wert, welchen mir der Fensterkontakt zurück gibt. Jetzt steht also einer der IDs von 10-15 darin. Was genau will ich mir natürlich anzeigen lassen und mache dies mit dem Befehl "fibaro:Debug". Den Text + ID siehst du unten im Debug Fenster der Szene.

Danach geht es schon los. Mit einer "if" Abfrage gehe ich alle Möglichkeiten durch, von ID 10 bis 15. Mithilfe von "tonumber" wird der Wert, welcher mit "getValue" als String zurück kommt, zu einer Zahl formatiert. Somit kann man dann einen Vergleich anstellen. Auch hier musst du anstelle der "472" deine ID des Fensterkontakt eintragen

In dem entsprechenden "then" Befehl kannst du dich nun austoben. Ich habe dort mal zum einen wieder ein Debug Befehl gesetzt, welcher in Text Form ausgibt wie der Taster gedrückt wurde, zum anderen ein Beispiel (auskommentiert) wie du eine andere Szene startest. Du könntest dort aber auch Lichter dimmen [mit fibaro:call(ID, "setValue", "WERT")] oder ein und ausschalten [mit fibaro:call(445, "turnOn")] .

Alle Geräte und dessen Befehle findest du ja rechts in der Modul Liste.

Fibaro LUA Libary

Fibaro LUA Libary

So lassen sich aber nicht nur Szenen starten und "physikalische" Z-Wave Module einschalten oder dimmen, du kannst auch auf "Knöpfe" von virtuellen Geräten drücken.

Multimedia Steuerung via Lichtschalter

Der Fensterkontakt ist nur ein Beispiel für Z-Wave Geräte welche Szenenaktivierung unterstützen. Alles oben beschriebene kannst du mit jedem anderen Z-Wave Gerät machen, welches Szenenaktivierung unterstützt, wie:

So kannst du also ab sofort deinen Wandschalter nehmen um damit deine Multimedia Geräte zu steuern. Du kannst die Fensehsender umschalten (Samsung TV als virtuelles Modul), du kannst deinen Staubsauger starten oder zur Dock schicken (Roomba als virtuelles Modul) oder die Musik lauter und leiser machen. Oder doch vielleicht den Radiosender wechseln ? ;-)

Das ganze habe ich mal realisiert mit Amazon (Link).

Rocki - WLAN Musik Streamer steuern

Rocki WLAN Musik streamen

Rocki WLAN Musik streamen

Zunächst braucht du das virtuelle Modul um Rocki im Netzwerk anzusteuern. Das kannst du dir hier herunterladen.

ROCKI - Virtuelles Modul

Ich habe mir noch ein paar zusätzliche Knöpfe mit Internet-Radiostationen hinzugefügt. Dazu einfach ein Button einer vorhandenen Radiostation kopieren und die URL des Streams einfügen. Eine Liste mit verfügbaren Radiosendern findest du hier: Webradio-Live-Stream-Alle-Sender-im-Überblick

Danach kannst du das Virtuelle Modul in Szenen "ansprechen".

Ein paar Sachen gehen natürlich auch via Blockszene - kann also auch im HCL genutzt werden. So kannst du einen Sender direkt anwählen oder eine definierte Lautstärke einstellen. Das sieht dann so aus:

Blockszene steuert Rocki Musik Streamer

Blockszene steuert Rocki Musik Streamer

Um die Lautstärke individuell per Wandschalter anzupassen, oder die Radiosender "durchzuschalten" bedarf es dann aber der Unterstützung von LUA.

Als Grundlage dient auch hier die LUA Szene welche wir uns oben angeschaut haben. Welche Tastenkombination du nun für welchen Befehl nutzen möchtest, ob mit Doppelklick oder doch lieber per langem Tastendruck "lauter machen" ist natürlich völlig dir überlassen. Du schreibst einfach die Befehle hinter das entsprechende "then".

Um die Lautstärke per Tastendruck zu variieren, lese ich zunächst den aktuell gesetzten Wert des Lautstärkesliders aus und schreibe diesen in eine lokale Variable. In diesem Fall habe ich diese "Volume" genannt. Danach eine kleine Mathematikaufgabe, mit welcher ich +5 dazu addiere, also die Lautstärke um 5 Punkte erhöhe. Das Ergebnis speichere ich wieder in einer lokalen Variable welche ich "Volumeneu" genannt habe. So sieht das dann aus:

Damit Rocki die Lautstärke auch erhöht, muss diese nun auch "gesetzt" werden. Das geht mit dem Befehl "fibaro:call" und "setslider" Das sieht dann so aus:

Wie du die Lautstärke "leiser machst", das bekommst du jetzt bestimmt selbst hin ;-)

Radiosender durchschalten

Die Radiosender habe ich alle auf einem eigenen, virtuellen Button. Den kann ich via LUA auch problemlos drücken, nur weiß meine LUA Szene ohne Hilfe nicht, welcher Radiosender gerade gespielt wird. Daher schreibe ich die ID des zuletzt gedrückten Senderbutton in eine globale Variable und lese diese beim Starten der Szene aus.

Beim "durchschalten" erhöhe ich diese ID einfach um +1.

Da ich jetzt nicht unendlich Tasten habe und irgendwann Schluss ist, begrenze ich dies mit einer ganz einfachen if-then Abfrage:

Wenn ich also bei Radiostation 19 angekommen bin (mehr habe ich aktuell nicht), setzt er die ID zurück auf 10. Wenn du nicht soviel globale Variablen haben möchtest, dann speichere die ID doch auch in einem Slider, analog zur Lautstärke. Dazu einfach einen neuen Slider im virtuellen Device von Rocki anlegen.

So smart kann es werden ;-)

Wenn es dich noch interessiert, kannst du dir meine Szene zum steuern von Rocki via Wandtaster hier herunterladen: Szenenaktivierung: WLAN MusikPlayer Rocki per Lichtschalter

Nicht über die "englischen Farbnamen" wundern, ich habe die Debuginfos etwas bunt gemacht, um den Überblick nicht zu verlieren.

Viel Spaß beim nachbauen und lass ruhig einen Kommentar da, was du ab sofort per Lichtschalter steuern wirst :-)

Diesen Blogpost hat geschrieben ...

crissxcross

Chris, Gründer und Blogger von siio.
Gelernter IT-Systemelektroniker, seit vielen Jahren beruflich als Produktmanager im Smart Home unterwegs. Technikverliebter Familienvater, Apple Fan. Nach einigen Jahren Stadtleben wieder froh auf dem Land zu sein.

28 Kommentare

    • nein das ist nur für das Tutorial zur Veranschaulichung.
      Im Produktiveinsatz nimmst du statt dem Tür-Fenster natürlich den Fibaro Dimmer. Der kann auch Szenenaktivierung.
      Das Tutorial passt da 1:1 drauf.

  • Hallo,

    zuerst einmal toller Artikel! DANKE!
    Frage: ist ein script eigentlich performanter ohne ständiges Abfragen der Value über getValue in jeder IF abfrage ?
    (Da die Variable pushTHEbutton ja dann eh geladen ist oder macht dies keinen unterschied ?
    Bzw. verkürzt nur den Befehl ?

    also z.B. so:

    --[[
    %% properties
    27 sceneActivation
    %% globals
    --]]
    local pushTHEbutton = tonumber((fibaro:getValue(27, "sceneActivation")));
    print('es wurde gedrückt: '..pushTHEbutton);

    if ( pushTHEbutton == 10)
    then
    fibaro:debug('kurz gedrückt AUS nach EIN')
    -- fibaro:startScene(214);
    end

    if ( pushTHEbutton == 11)
    then
    fibaro:debug('kurz gedrück EIN nach AUS')
    -- fibaro:startScene(214);
    end

    if ( pushTHEbutton == 12)
    then
    fibaro:debug('Taste lange gedrückt')
    -- fibaro:startScene(214);
    end

    if ( pushTHEbutton == 13)
    then
    fibaro:debug('Taste losgelassen')
    -- fibaro:startScene(214);
    end

    if ( pushTHEbutton == 14)
    then
    fibaro:debug('DoppelKlick')
    -- fibaro:startScene(214);
    end

    if ( pushTHEbutton == 15)
    then
    fibaro:debug('TripleKlick')
    -- fibaro:startScene(214);
    end

    • Hi,

      danke für deinen Kommentar und das Lob :)

      Bei diesen kurzen Skripts macht es eigentlich keinen Unterschied, ob du über getValue die API (http://IP-HC2/api/devices) abfragst oder dir das Ergebnis einmalig in einer Variablen abspeicherst. Hab bisher keinen Unterschied feststellen können.

      Du sparst dir aber möglicherweise Zeit beim proggen ;)

      Gruß

  • Klasse, danke auch für den Hinweis, dass das auch mit dem Dimmer entsprechend funktioniert, da brauche ich keine Batterielösung... Noch zwei Fragen:
    1) Funktioniert das mit Sonos genauso?
    2) Ich gehe davon aus, dass ich einen Taster (momentary Switch), keinen Tastschalter nehmen muss, richtig?
    Beste Grüße
    TK

    • Hi,

      danke für deinen Kommentar :)

      1.) Geht mit Sonos genauso.
      2.) Mit einem Taster geht es angenehmer :) Bei dem Festschalter müsstest du immer on und anschließend off klicken.

      Gruß

  • Hallo,

    wie kann ich denn eine Szene zu einer bestimmten Uhrzeit aktivieren und deaktivieren? Geht das überhaupt?

    Ich will z.B. das morgens um 6.00 Uhr eine Szene aktiviert wird die meine Sonos Play1 über einen Motion Sensor startet und die Szene um 7 Uhr wieder deaktiviert wird.
    Sonst gehen die Sonos Lautsprecher der ganzen Tag an wenn Bewegung erkannt wird.

    Vielen Dank schon mal.... !!!

    • HI Boomx,

      ich habe eine Szene in der bei Bewegung mit dem Motion Sensor meine Sonos Lautsprecher angeschaltet werden.
      Diese spielen dann einen Radiosender X ab, solange Bewegung in der Küche ist. Wenn keine Bewegung gehen die Sonos nach 3 Minuten aus.

      Ich möchte aber, das die Szene nur zu einer bestimmten Zeit aktiv ist, z.B. von morgens 5 Uhr bis morgens 6 Uhr.
      Sonst gehen ja den ganzen Tag die Sonos an wenn ich mich in der Küche befinde.

      Hab das von crissxcross probiert aber nicht hinbekommen mit zweiter Szene, Daytime = Evening usw... :-(

      Gruß

      • Hallo,

        erstelle doch eine Variable die "Werktag Morgens" oder so heißt und dann erstelle eine Szene in der die Variable mit einem Timer "Mo-Fr um 05:00 Uhr" auf "1" gesetzt wird und eine zweite Szene die die Variable um 07:00 auf "0" setzt. Dann füge die Variable mit einem "und" in deine Szene mit der Sonos hinzu. Dann sollte es funktionieren.

        Gruß

  • HI Boomx,

    ich habe eine Szene in der bei Bewegung mit dem Motion Sensor meine Sonos Lautsprecher angeschaltet werden.
    Diese spielen dann einen Radiosender X ab, solange Bewegung in der Küche ist. Wenn keine Bewegung gehen die Sonos nach 3 Minuten aus.

    Ich möchte aber, das die Szene nur zu einer bestimmten Zeit aktiv ist, z.B. von morgens 5 Uhr bis morgens 6 Uhr.
    Sonst gehen ja den ganzen Tag die Sonos an wenn ich mich in der Küche befinde.

    Hab das von crissxcross probiert aber nicht hinbekommen mit zweiter Szene, Daytime = Evening usw... :-(

    Gruß

  • Hallo. Ich möchte gerne mit einem Wandtaster mein SONOS-System ein und ausschalten. WIe kann ich folgende Punkte realisieren:

    1. Mit Taster Ein/Aus soll sich ein Sonos1 mit allen in der Gruppe angewählten Sonos-Lautsprechern einschalten. Es soll nicht nur ein Sonos einschalten sondern die ganze Gruppe.

    2. Es soll ein bestimmter Radiosender abgespielt werden.

    Bisher habe ich nur LUA-Scripte gefunden die einen einzigen Lautsprecher steuern.

    Vielleicht kann mir jemand helfen. Ich sag schon mal vieeelen Dank!!!!!

    • Schau dazu mal in unsere Fibaro Datenbank: http://www.siio.de/fibaro-db.
      Dort gibt es ein Virtual Device "Sonos Commander" der kann wohl auch Gruppen ansteuern.
      Einen bestimmten Radiosender abspielen funktioniert genauso wie bei dem Beispiel mit Rocki. Einen entsprechenden "Knopf" im Virtual device anlegen und dann in der Szene ansteuern via fiabro:call("ID" PressButton "ID Button")

  • Hi, das Virtuelle Modul funktioniert echt Super! Vielen Dank dafür.
    Ich versuche gerade noch Tasten einzufügen, mit denen Ich bestimmte MP3-Files von meinem NAS abspielen kann.
    Habt ihr hier vielleicht einen Typ für mich?

    local file = "\\SERVER\File.mp3" oder ähnlich?

      • Danke für die Rasche Antwort:
        sieht jetzt bei mir so aus:

        Habe einen Button erstellt und den Payload geändert und den Play befehl unten gesetzt, aber will leider nicht so wie ich das will, ich arbeite mich da langsam ran..

        POST /upnp/control/rendertransport1 HTTP/1.1
        SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#SetAVTransportURI"
        CONTENT-TYPE: text/xml ; charset="utf-8"
        Content-Length: 347

        \\SERVER\Ordner\File.mp3]]

    • Hm, leider wollen die Tasten und die Lautstärke etc. noch nicht so wie ich mir das Vorstelle, hat sich da irgendwas in den Steuerbefehlen verändert, dass das nicht mehr funktioniert?

  • Hi Leute,
    folgendes Vorhaben habe ich.
    Einen Festschalter zu einem doppelten Festschalter umwandeln.
    An den zweiten ein Dimmermodul ran.
    Dann Szene schreiben, Magnetkontakte armed etc
    Wenn man jetzt den Festschalter in eine Position drückt, Alarmanlage bzw. Magnetkontakte scharf

    Geht das, oder hab ich da Denkfehler?

Gib deinen Senf dazu!

Cookie Consent mit Real Cookie Banner