Derzeit erfreuen sich ja viele an dem neuen Gadget aus dem Hause Fibaro. Den sogenannten Button. Wir zeigen euch in diesem kleinen Artikel, wie Ihr diesen mit LUA, um weitere Aktionen auszuführen, nutzen könnt.
Der Fibaro Button nutzt die centralSceneEvent-Klasse, welche Fibaro bei einem Update für das Fibaro HomeCenter 2 vor wenigen Monaten nachgeliefert hat. Diese Klasse wird zum Beispiel auch von dem Philio Smart Color Button genutzt, welchen wir bereits in einem Artikel ausführlich getestet haben und dort auch bereits eine Szene für die Nutzung mit dem Fibaro HomeCenter 2 programmiert haben. Das Fibaro-Gadget haben wir natürlich auch in einem ausführlichen Artikel unter die Lupe genommen und unsere Meinung zu dem kleinen SmartHome-Helfer veröffentlicht. Diesen Artikel und die Möglichkeit diesen käuflich zu erwerben findet Ihr hier.
Dort hat euch Chris bereits gezeigt, wie Ihr den Button mit einer Magic-Scene in euer System einbringen könnt. Wir sind jetzt aber noch einen Schritt weiter gegangen und steuern alles mit einer einzigen Szene...
Szene für den Fibaro Button
Auf Basis dieser Szene haben wir uns den Fibaro Button genauer angeschaut und das oben genannte Skript für den Philio-Schalter noch weiter verbessert. So ist es mit einer Szene möglich alle Funktionen (1x Klick, 2x Klick, 3x Klick, 4x Klick, 5x Klick, gedrückt halten & loslassen) abzufangen und daraufhin Aktionen zu schalten, Knöpfe in einem VD drücken oder auch Szenen zu starten. Dazu müsst Ihr euch nur den folgenden Code in eine neue Szene kopieren und die ID im Config-Header anpassen.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
--[[ %% properties %% events 363 CentralSceneEvent %% globals --]] local button_source = fibaro:getSourceTrigger()["event"]["data"] if (tostring(button_source["keyAttribute"]) == "Pressed") then fibaro:debug('Fibaro Button 1x gedrückt.') elseif (tostring(button_source["keyAttribute"]) == "Pressed2") then fibaro:debug('Fibaro Button 2x gedrückt.') elseif (tostring(button_source["keyAttribute"]) == "Pressed3") then fibaro:debug('Fibaro Button 3x gedrückt.') elseif (tostring(button_source["keyAttribute"]) == "Pressed4") then fibaro:debug('Fibaro Button 4x gedrückt.') elseif (tostring(button_source["keyAttribute"]) == "Pressed5") then fibaro:debug('Fibaro Button 5x gedrückt.') elseif (tostring(button_source["keyAttribute"]) == "HeldDown") then fibaro:debug('Fibaro Button gehalten.') elseif (tostring(button_source["keyAttribute"]) == "Released") then fibaro:debug('Fibaro Button losgelassen.') end |
Mit dem oben genannten Config-Header ist hier folgender Abschnitt gemeint. Hier muss anstatt der 363 eure ID eingetragen werden.
1 2 3 4 5 6 7 8 9 |
--[[ %% properties %% events 363 CentralSceneEvent %% globals --]] |
Diese findet Ihr unter den Einstellungen des entsprechenden Moduls. Wenn Ihr diese Anpassung vorgenommen habt, dann sollte die Szene bereits bei euch ohne Probleme funktionieren und der entsprechende Debug sollte anhand eurer Aktion ausgegeben werden. Das war es dann auch schon. :)
Mit diesem Skript funktioniert der Fibaro Button übrigens auch mit Firmware-Versionen, welche eigentlich offiziell das Modul noch nicht unterstützen. So ist es also auch möglich, den Button in der Version 4.070 zusammen mit dem Zipato RFID-Tagreader zu nutzen. In einer der nächsten Folge dieser Reihe stellen wir euch ein Skript vor, mit welchem Ihr die nodon-Schalter mit der centralSceneEvent-Klasse nutzen könnt. Wir würden uns über Kommentare freuen, was Ihr mit dem neuen Gadget aus dem Hause Fibaro realisiert habt. :)
Interessant zu sehen wie so ein Button im Fibaro HomeCenter 2 abgefragt wird. Hätte nicht gedacht das sich der Code mit dem Wandschalter in der Vera etwas ähnelt. Wobei der Code in der HC2 besser zu lesen ist und die integrierte Debug-Ausgabe klasse ist.
Hi,
ja, ähnelt sich schon, da gebe ich dir Recht :) Leider habe ich keine Erfahrungen mit dem Vera-System gemacht.
Gruß
Hi,
kann man über Halten und Loslassen irgendwie ein Lauter- und Leiserstellen realisieren?
Mir fehlt da gerade der Einstieg.....
Ansonsten fällt mir nur ein:
2x Drücken = +2 lauter
3x Drücken -2 leiser
Bin damit aber nicht zufrieden.
Hmmm...
Wüsste leider nicht wie... Ein Releasen des Buttons wird ja erst nach dem Halten des Buttons erkannt. Würde also nur beim Halten gehen.
Gruß
Ja, genau.
Dachte nur, ich hätte was übersehen...
Ah, wird durch das Loslassen des Buttons eine for- oder while-Schleife verlassen?
Oder bleibt er in dem elseif und der Schleife bis zum Schleifnende hängen?
Wenn in der Schleife der Status des Buttons abgefragt wird, dann ja... Wüsste dafür leider keine Lösung.
Ich habe jetzt mit dem Button etwas gespielt.
Besonders zuverlässig erkennt er zB das "Loslassen" nach "gedrück halten" leider nicht.
Wenn dadurch die Lautstärke explodiert, ist das nicht gut.....
Nutze die beiden Funktionen in meinem Setup leider nicht. Deshalb kann ich dazu leider keine Aussage treffen.
Hallo zusammen,
funzt bei mir mit der 4.100 leider nicht.
ID hab ich angepasst, aber das Debug-Fenster bleibt leer.
In der Modul-Übersicht sagt der Button, dass die Übertragung OK ist.
Hi,
hast Du auch die richtige ID erwischt? Sorry, aber das kann ja mal schnell passieren.....
Bei manuellen Start der Szene gibt es eine Fehlermeldung.
VG Hoggle
Nee, die ID passt.
Manueller Start gibt folgendes aus:
[DEBUG] 18:49:17: line 8: attempt to index field ‚event‘ (a nil value)
Nee, die ID passt.
Manueller Start gibt folgendes aus:
[DEBUG] 18:49:17: line 8: attempt to index field 'event' (a nil value)
Habe ich auch, aber bei einmal Klick etc kommt im Debug etwas an.
Ach so, habe auch die 4.100.
Exkludiere ihn doch mal und lerne ihn dann neu an.
Ggf. ist irgendetwas nicht richtig mitgekommen.
Das Skript funktioniert ohne Probleme mit 4.100. Wird in der Weboberfläche erkannt, dass gedrückt wurde, bzw. ändert sich das Icon? Wenn ja, dann ist die Id falsch. Wenn nicht, dann funktioniert irgendwas nicht richtig.
Gruß
Ja, denke ich werde mal neu inkludieren: Drücken löst zwar ein "Übertragung OK" aus, aber das Icon ändert sich nicht (zeigt ja normal die "Drück-Anzahl" mit an).
Will ich nicht exkludieren lassen (mind. 6x drücken) :-o
Reset (5x +5ek. drücken) geht auch nicht.
Was ist denn wohl los mit dem Teil?
Das Teil will sich immernoch nicht exkludieren oder reseten lassen. Hat jemand ne Idee?
Hat keiner nen Vorschlag wie ich den Button reseten kann? 4x drücken und dann halten laut Anleitung bringt nichts ?
Ich denke mal, dass der Button defekt ist. Hab hier auch so einen liegen, der nimmt auch keine Befehle mehr an.
Gruß
Dann werde ich doch mal schauen wie Cyberport Reklamationen handhabt.
Kann ich die NodonOctan eigentlich auch mir CentralScenes verwenden?
Ja, schau dir mal die Parameter in der Anleitung an.
https://doc.eedomus.com/files/NodOn-CRC-3-1-xx-UserGuide-150609-DE-online.pdf
Ja okay, Central Scenes sind mit Parameter 3 und Wert 0 ja Standard.
Aber wie kriege ich raus welchen Wert mir welcher Druck liefert?
Mit dem Script des Fibaro Buttons bringt mir jeder Klick (egal auf welche Taste) ein "Button 1x gedrückt". Doppelklick usw. wird nicht erkannt.
Du weißt was ich meine, oder?
Musst dir mal die JSON-Response mal in einem Debug anzeigen lassen. Im Forum hatte ich mal ein fertiges Skript für den NodOn gepostet.
Gruß
Stimmt, ist ja noch gar nicht so lange her :-D
-> https://www.siio.de/board/thema/szenen-programm-fuer-nodon-wall-switch/#post-49989
Danke Dir
Verzeiung for das schlechte Deutsch aber ich versuche es trotsdem.
Ich habe code gemacht fur die steurung von Dimmer via ein WallC-S von den hersteller Popp.
sie finden diese code hier aber mit Englischen commentar
https://forum.fibaro.com/index.php?/topic/22713-zwaveme-wallcs/#comment-99390
Hi,
spricht was dagegen anstatt mit dem LUA Script dies mit den beim Button hinterlegten Möglichkeiten zu machen?
Also gibt es Vorteile beim Script?
Grüße!
Ah. oh. Ich sollte genauer hinschauen: dabei wird quasi nur jeweils eine Magic Szene erstellt.
Dann ist das eine LUA Script mit Sicherheit übersichtlicher, gerade wenn man mehrere Buttons einbindet.
Hi...
ja, genauso ist es. Wesentlicher Vorteil ist die Übersichtlichkeit.
Gruß
Ist es möglich die Buttons mithilfe von Variablenabfragen mehrfach zu belegen?
Also die Richtung:
Wenn Button 1x gedrückt setze Globale Variable "Licht" auf "An" und dann,
wenn Button 1x gedrückt und Globale Variable "Licht" ist "An", dann setzte Globale Variable "Licht" auf "Aus".
Bekomme es nicht auf die Reihe. Mir ist klar:
if (tostring(button_source["keyAttribute"]) == "Pressed") then
fibaro:debug('Fibaro Button 1x gedrückt.')
fibaro:setGlobal(Licht', 'An');
Jetzt soll er abfragen, ob Variable Licht nicht bereits an ist. Ist das "fibaro:getGlobalValue("Licht") == 'An'" ?
Grüße