NEWS
Leider doch nicht [gelöst]Tradfri über script steuern
-
Hallo,
ich möchte gerne meine Tradfri lampen über script steuern.
Und zwar möchte ich bei mehreren lampen die helligkeit und die Temperatur einstellen.
das Problem ist wenn ich das scripte, macht die Lampe immer nur eines.
Z.b. ich möchte
helligkeit 100%
fabe 100%
Die lampe schaltet 100% Helligkeit
und Farbe bleibt unverändert,
jetzt kommt der clou in den Objekten wird aber 100% farbe eingetragen.
es scheint mir das der Tradfri gateway nicht schon die signale mit bekommt.
Ich habe versucht überall eine verzögerung rein zu machen das die Befehle langsamer übertragen werden, leider ohne erfolg.
Hat jemand schon mal das problem gehabt und wie hat er es gelöst?
Gruß
Mit der version aus der git funktioniert es
-
Hi,
leider funktioniert es immer noch nicht zuverlässig. Die Lampen haben so eine art eigenleben.
hier mal der script
! ````
var helligkeit, farbe, aus;
! createState("beleuchtung_gemuetlich", function () { //<---------ÄNDERN bei neuer Stimmung
});
helligkeit = 15;
farbe = 100;
aus= 0;
on({id: "javascript.0.beleuchtung_gemuetlich"/beleuchtung_gemuetlich/, change: "ne"}, function (obj) { //<---------ÄNDERN bei neuer Stimmung
var value = obj.state.val;
var oldValue = obj.oldState.val;
if (getState("javascript.0.beleuchtung_gemuetlich").val === true) { //<---------ÄNDERN bei neuer Stimmung
// Leselampe Wohnzimmer
setState("tradfri.0.L-65544.lightbulb.brightness"/Brightness/, helligkeit);
setState("tradfri.0.L-65544.lightbulb.colorTemperature"/Color temperature/, farbe);
//setState("tradfri.0.L-65544.lightbulb.state"/on/off/, false);
// Leselampe Esszimmer
setState("tradfri.0.L-65545.lightbulb.brightness"/Brightness/, helligkeit);
setState("tradfri.0.L-65545.lightbulb.colorTemperature"/Color temperature/, farbe);
//setState("tradfri.0.L-65545.lightbulb.state"/on/off/, false);
// Deckenlampe Esszimmer
//setState("tradfri.0.L-65551.lightbulb.brightness"/Brightness/, helligkeit);
//setState("tradfri.0.L-65551.lightbulb.colorTemperature"/Color temperature/, farbe);
setState("tradfri.0.L-65551.lightbulb.state"/on/off/, false);
// Deckenlampe Wohnzimmer
//setState("tradfri.0.L-65552.lightbulb.brightness"/Brightness/, helligkeit);
//setState("tradfri.0.L-65552.lightbulb.colorTemperature"/Color temperature/, farbe);
setState("tradfri.0.L-65552.lightbulb.state"/on/off/, false);
// Fenster Wohnzimmer Links
//setState("tradfri.0.L-65556.lightbulb.brightness"/Brightness/, helligkeit);
//setState("tradfri.0.L-65556.lightbulb.colorTemperature"/Color temperature/, farbe);
setState("tradfri.0.L-65556.lightbulb.state"/on/off/, false);
// Fenster Wohnzimmer Mitte
//setState("tradfri.0.L-65557.lightbulb.brightness"/Brightness/, helligkeit);
//setState("tradfri.0.L-65557.lightbulb.colorTemperature"/Color temperature/, farbe);
setState("tradfri.0.L-65557.lightbulb.state"/on/off/, false);
// Fenster Wohnzimmer Rechts
//setState("tradfri.0.L-65558.lightbulb.brightness"/Brightness/, helligkeit);
//setState("tradfri.0.L-65558.lightbulb.colorTemperature"/Color temperature/, farbe);
setState("tradfri.0.L-65558.lightbulb.state"/on/off/, false);
// Fenster Kueche Rechts 1
//setState("tradfri.0.L-65559.lightbulb.brightness"/Brightness/, helligkeit);
//setState("tradfri.0.L-65559.lightbulb.colorTemperature"/Color temperature/, farbe);
setState("tradfri.0.L-65559.lightbulb.state"/on/off/, false);
// Fenster Kueche Rechts 2
//setState("tradfri.0.L-65560.lightbulb.brightness"/Brightness/, helligkeit);
//setState("tradfri.0.L-65560.lightbulb.colorTemperature"/Color temperature/, farbe);
setState("tradfri.0.L-65560.lightbulb.state"/on/off/, false);
// Fenster Kueche Links 1
//setState("tradfri.0.L-65561.lightbulb.brightness"/Brightness/, helligkeit);
//setState("tradfri.0.L-65561.lightbulb.colorTemperature"/Color temperature/, farbe);
setState("tradfri.0.L-65561.lightbulb.state"/on/off/, false);
// Fenster Kueche Links 2
//setState("tradfri.0.L-65562.lightbulb.brightness"/Brightness/, helligkeit);
//setState("tradfri.0.L-65562.lightbulb.colorTemperature"/Color temperature/, farbe);
setState("tradfri.0.L-65562.lightbulb.state"/on/off/, false);
setState("javascript.0.beleuchtung_gemuetlich"/beleuchtung_gemuetlich/, false);
}
});WIe gesagt das ist nun für stimmung gemütlich die ersten beiden lampen sollen halt gedimmt und warm angehen, das klappt soweit Dann mache ich ein Script für alle aus >! ```` var helligkeit, farbe, aus; createState("beleuchtung_aus", function () { //<---------ÄNDERN bei neuer Stimmung }); helligkeit = 15; farbe = 100; aus= 0; on({id: "javascript.0.beleuchtung_aus"/*beleuchtung_aus*/, change: "ne"}, function (obj) { //<---------ÄNDERN bei neuer Stimmung var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("javascript.0.beleuchtung_aus").val === true) { //<---------ÄNDERN bei neuer Stimmung // Leselampe Wohnzimmer //setState("tradfri.0.L-65544.lightbulb.brightness"/*Brightness*/, aus); //setState("tradfri.0.L-65544.lightbulb.colorTemperature"/*Color temperature*/, aus); setState("tradfri.0.L-65544.lightbulb.state"/*on/off*/, false); // Leselampe Esszimmer //setState("tradfri.0.L-65545.lightbulb.brightness"/*Brightness*/, aus); //setState("tradfri.0.L-65545.lightbulb.colorTemperature"/*Color temperature*/, aus); setState("tradfri.0.L-65545.lightbulb.state"/*on/off*/, false); // Deckenlampe Esszimmer //setState("tradfri.0.L-65551.lightbulb.brightness"/*Brightness*/, aus); //setState("tradfri.0.L-65551.lightbulb.colorTemperature"/*Color temperature*/, aus); setState("tradfri.0.L-65551.lightbulb.state"/*on/off*/, false); // Deckenlampe Wohnzimmer //setState("tradfri.0.L-65552.lightbulb.brightness"/*Brightness*/, aus); //setState("tradfri.0.L-65552.lightbulb.colorTemperature"/*Color temperature*/, aus); setState("tradfri.0.L-65552.lightbulb.state"/*on/off*/, false); // Fenster Wohnzimmer Links //setState("tradfri.0.L-65556.lightbulb.brightness"/*Brightness*/, aus); //setState("tradfri.0.L-65556.lightbulb.colorTemperature"/*Color temperature*/, aus); setState("tradfri.0.L-65556.lightbulb.state"/*on/off*/, false); // Fenster Wohnzimmer Mitte //setState("tradfri.0.L-65557.lightbulb.brightness"/*Brightness*/, aus); //setState("tradfri.0.L-65557.lightbulb.colorTemperature"/*Color temperature*/, aus); setState("tradfri.0.L-65557.lightbulb.state"/*on/off*/, false); // Fenster Wohnzimmer Rechts //setState("tradfri.0.L-65558.lightbulb.brightness"/*Brightness*/, aus); //setState("tradfri.0.L-65558.lightbulb.colorTemperature"/*Color temperature*/, aus); setState("tradfri.0.L-65558.lightbulb.state"/*on/off*/, false); // Fenster Kueche Rechts 1 //setState("tradfri.0.L-65559.lightbulb.brightness"/*Brightness*/, aus); //setState("tradfri.0.L-65559.lightbulb.colorTemperature"/*Color temperature*/, aus); setState("tradfri.0.L-65559.lightbulb.state"/*on/off*/, false); // Fenster Kueche Rechts 2 //setState("tradfri.0.L-65560.lightbulb.brightness"/*Brightness*/, aus); //setState("tradfri.0.L-65560.lightbulb.colorTemperature"/*Color temperature*/, aus); setState("tradfri.0.L-65560.lightbulb.state"/*on/off*/, false); // Fenster Kueche Links 1 //setState("tradfri.0.L-65561.lightbulb.brightness"/*Brightness*/, aus); //setState("tradfri.0.L-65561.lightbulb.colorTemperature"/*Color temperature*/, aus); setState("tradfri.0.L-65561.lightbulb.state"/*on/off*/, false); // Fenster Kueche Links 2 //setState("tradfri.0.L-65562.lightbulb.brightness"/*Brightness*/, aus); //setState("tradfri.0.L-65562.lightbulb.colorTemperature"/*Color temperature*/, aus); setState("tradfri.0.L-65562.lightbulb.state"/*on/off*/, false); setState("javascript.0.beleuchtung_aus"/*beleuchtung_aus*/, false); /// Alle werte nullen // Leselampe Wohnzimmer setState("tradfri.0.L-65544.lightbulb.brightness"/*Brightness*/, 0); setState("tradfri.0.L-65544.lightbulb.colorTemperature"/*Color temperature*/, 0); // Leselampe Esszimmer setState("tradfri.0.L-65545.lightbulb.brightness"/*Brightness*/, 0); setState("tradfri.0.L-65545.lightbulb.colorTemperature"/*Color temperature*/, 0); // Deckenlampe Esszimmer setState("tradfri.0.L-65551.lightbulb.brightness"/*Brightness*/, 0); setState("tradfri.0.L-65551.lightbulb.colorTemperature"/*Color temperature*/, 0); // Deckenlampe Wohnzimmer setState("tradfri.0.L-65552.lightbulb.brightness"/*Brightness*/, 0); setState("tradfri.0.L-65552.lightbulb.colorTemperature"/*Color temperature*/, 0); // Fenster Wohnzimmer Links setState("tradfri.0.L-65556.lightbulb.brightness"/*Brightness*/, 0); setState("tradfri.0.L-65556.lightbulb.colorTemperature"/*Color temperature*/, 0); // Fenster Wohnzimmer Mitte setState("tradfri.0.L-65557.lightbulb.brightness"/*Brightness*/, 0); setState("tradfri.0.L-65557.lightbulb.colorTemperature"/*Color temperature*/, 0); // Fenster Wohnzimmer Rechts setState("tradfri.0.L-65558.lightbulb.brightness"/*Brightness*/, 0); setState("tradfri.0.L-65558.lightbulb.colorTemperature"/*Color temperature*/, 0); // Fenster Kueche Rechts 1 setState("tradfri.0.L-65559.lightbulb.brightness"/*Brightness*/, 0); setState("tradfri.0.L-65559.lightbulb.colorTemperature"/*Color temperature*/, 0); // Fenster Kueche Rechts 2 setState("tradfri.0.L-65560.lightbulb.brightness"/*Brightness*/, 0); setState("tradfri.0.L-65560.lightbulb.colorTemperature"/*Color temperature*/, 0); // Fenster Kueche Links 1 setState("tradfri.0.L-65561.lightbulb.brightness"/*Brightness*/, 0); setState("tradfri.0.L-65561.lightbulb.colorTemperature"/*Color temperature*/, 0); // Fenster Kueche Links 2 setState("tradfri.0.L-65562.lightbulb.brightness"/*Brightness*/, 0); setState("tradfri.0.L-65562.lightbulb.colorTemperature"/*Color temperature*/, 0); } }); >! ```` da geht die 2 lampe auf kalt und ist immer noch an. ich kann mir einfach nicht erklären warum die lampen sich so verhalten. Gruß
-
Moin!
Habe ähnliches .
Blockly welches in meheren Stufen 2 Lampen dimmt und die Farbe anpasst.
Habe jetzt min. 1,5 Sek Pause zwishcne den Befehlen und es geht…sieht halt nur nicht so schön aus...
bis denne
Mr.Lee
-
Moin! Ihr beide ändert gleichzeitig die Farbtemperatur und Helligkeit. Das sind beides Eigenschaften, die auf die TransitionTime zurückgreifen.
Ich hab festgestellt, dass gleichzeitige bzw. überlappende Animationen nicht möglich sind, selbst wenn ich den Befehl ans Gateway von Hand zusammenbaue und nicht die States einzeln setze. Dabei wird immer eine der Eigenschaften ignoriert.
Ihr habt verschiedene Optionen:
1. Die Animation kann man von Hand zusammenbauen, indem man Helligkeit und Farbtemperatur in kurzen Abschnitten mit einer TransitionTime von 0 selbst anpasst, z.b. so http://forum.iobroker.net/viewtopic.php … 61#p120261
2. Die Eigenschaften nacheinander setzen, z.B. Helligkeit, (mind. transitionTime warten), Farbtemperatur.
3. Die Eigenschaften mit TransitionTime 0 setzen: transitionTime auf 0, Helligkeit, transitionTime wieder auf 0, Farbtemperatur. Hier sollte aber auf ack=true vom Adapter gewartet werden, weil sonst die Schaltbefehle und Bestätigung vom Gateway sich überschneiden können.
4. Alternativ könntet ihr in der App für die Gruppen eine eigene Stimmung (Szene) erstellen und diese im Adapter per "<gruppe>.activeScene" setzen. Vielleicht funktioniert das zuverlässiger.</gruppe>
-
Habe es so gelöst, dass ich alle .brightness und .colorTemperature Datenpunkte von Tradfri in "enum.functions.stimmungsdatenpunkte" gepackt habe und dann mit einem Script
Zuerst alle .brightness Datenpunkte aus dieser Aufzählung ändere (vorher immer transitionDuration auf 5 Sekunden - für langsames, gemütliches dimmen).
Und dann nach 6 Sekunden alle .colorTemperature werte aus der Aufzählung auf warmes weiß.
Funktioniert bestens.
Gruß
-
Virtuelle Gruppen (siehe Adapter-Konfig) oder echte Gruppen (für bis zu 9 Lampen, siehe App) tun es auch
Dann kannst du erst die Helligkeit der (virtuellen) Gruppe anpassen und später die Farbtemperatur.
-
Aber wenn ich eine Lampe aus einer Gruppe manuell ändere dann wird die Gruppe nicht angepasst, oder?
Ging mir darum dass ich die alten Werte abspeichere, "gemütlichkeit" aktiviere, und wenn ich dann "gemütlichkeit" deaktiviere die alten Zustände aller Lampen wiederhergestellt werden.
Gruß
-
> Ging mir darum dass ich die alten Werte abspeichere, "gemütlichkeit" aktiviere, und wenn ich dann "gemütlichkeit" deaktiviere die alten Zustände aller Lampen wiederhergestellt werden.
Das geht nicht ohne Weiteres (also nur per Skript).Wenn du einen Gruppen-State setzt, werden auf dem Gateway alle Lampen auf diesen Wert gesetzt => die Lampen-States in ioBroker werden überschrieben.
Wenn du einen Lampen-State setzt, werden in ioBroker ebenfalls die Gruppen-States angepasst. Sind alle Lampen auf dem gleichen Wert, steht dieser in der Gruppe, sonst verschwindet der Gruppen-Wert (=> null).
-
Puh, dann war meine Arbeit doch nicht umsonst… :lol:
Gruß