Einfacher Lua AN/AUS Switch

Hallo zusammen,

aktuell versuche ich meine HUE Lampen über LUA Szenen einzubinden, da diese in den Widgets der Android App von Fibaro leider nicht angezeigt werden.

Jetzt wollte ich einen einfachen An-/Aus- Schalter wie folgt bauen. Habe hier schon etwas gesucht, jedoch nichts gefunden (vermutlich zu simpel :D)

Hier mein Versuch:

if (tonumber(fibaro:getValue(125, "value"))) < 1 then fibaro:call(125, "turnOn"); fibaro:debug("Eingeschaltet"); else if (tonumber(fibaro:getValue(125, "value"))) > 1 then fibaro:call(125, "turnOff"); fibaro:debug("Ausgeschaltet"); end

Reicht das so oder würdet ihr empfehlen den Code noch zu erweitern? z.B. mit

if (fibaro:countScenes()>1) then fibaro:abort();

oder gibt es sogar irgendwo sowas schon in fertig? :slight_smile: Gruß

Schaut doch ganz ok aus. Den letzten Absatz brauchst Du nur, wenn Du befürchtest, dass die Szene 2x gestartet werden kann. Da sie aber gleich wieder beendet wird, kann wohl nix passieren.
Du kannst den ersten Teil auch in ein Virtual Device hinter einen Button packen. Fänd ich schöner als eine Szene. Vor Allem wenn’s mehrere Schalter sind.

Leider bekomme ich beim Debuggen der oben genannten Szene immer folgendes angezeigt:

“[ERROR] 15:10:43: line 11: ‘end’ expected (to close ‘while’ at line 1) near ‘’”

Hat jemand Erfahrung mit einem derartigen Problem?

Die 2. If Abfrage ist unnötig.
Entferne sie.
Ansonsten musst noch ein end für die 2
Abfrage anhängen.

Gesagt getan:

if (tonumber(fibaro:getValue(125, "value"))) < 1 then
fibaro:call(125, "turnOn");
fibaro:debug("Eingeschaltet");
else (tonumber(fibaro:getValue(125, "value"))) > 1 then
fibaro:call(125, "turnOff");
fibaro:debug("Ausgeschaltet");
end

Debug gibt mir immer noch einen Fehler raus: “[ERROR] 12:59:47: line 5: syntax error near ‘>’”

Hi ZonyD
Zeile 4 darf keine Bedingung enthalten oder du setzt vorne elseif ein

also entweder nur:

if (tonumber(fibaro:getValue(125, "value"))) < 1 then
fibaro:call(125, "turnOn");
fibaro:debug("Eingeschaltet");
else 
fibaro:call(125, "turnOff");
fibaro:debug("Ausgeschaltet");
end

oder:

if (tonumber(fibaro:getValue(125, "value"))) < 1 then
fibaro:call(125, "turnOn");
fibaro:debug("Eingeschaltet");
elseif (tonumber(fibaro:getValue(125, "value"))) > 1 then 
fibaro:call(125, "turnOff");
fibaro:debug("Ausgeschaltet");
end

Gruß Oli

Danke für die Hilfe aber auch bei beiden Codes von Oli bekomme ich einen neuen Fehler:

“[ERROR] 13:24:21: line 2: attempt to compare nil with number”

komisch … ich verwende keine hue. So wie ich das sehe, geben die Ihren Status gar nicht zurück? Die ID ist auch die richtige?

Du könntest mal folgendes testen:
Deinen bisherigen Code ausklammern –[[ bisheriger Code --]] und folgendes hinzufügen

local Wert = fibaro:getValue(125, "value")
fibaro:debug(Wert)

Die Ausgabe würde mich mal interessieren?

Sehr komisch… Dann bleibt der Debug kommt ohne Meldung

Die ID habe ich grade noch einmal geprüft und sie stimmt. Evtl klappt es nicht weil die Lampen ja über das HUE-Plugin eingebunden sind

Moin,
ich rufe den Status, also den Wert value mit


local value = fibaro:getValue(130, "ui.hue.value") -- 130 ist die ID der Hue-Lampe

Ich habe es so glöst


hueState = tonumber(fibaro:getValue(160, "ui.hue.value"))         --Status der HUE Lampe auslesen
if hueState == 0                                             -- ist HUE Lampe aus dann
then                                                          --dann
fibaro:call(160, "turnOn")                                  --schalte HUE Lampe mit der ID 160 an

Schwere Geburt aber ich habe es endlich geschafft… Hier der Code der funktioniert:

if (tonumber(fibaro:getValue(135, "ui.onOff.value"))) < 1 then
fibaro:call(135, "turnOn");
fibaro:debug("Eingeschaltet");
elseif (tonumber(fibaro:getValue(135, "ui.onOff.value"))) == 1 then 
fibaro:call(135, "turnOff");
fibaro:debug("Ausgeschaltet");
end