NEWS
Selber einen Dimmer programmieren (Wo ist der Fehler?)
-
Hallo,
das Ziel ist es, dass das Licht immer langsam hochgedreht wird, und später wieder langsam runter gedreht wird.
Warum geht mein Script nicht?
-
@dave83
Versuch es mal in der Art.
-
Danke.
Das funktioniert schon mal deutlich besser.
Ich werde das die Tage testen. Es soll schön hochfahren und danach wieder runter fahren.
Ich hab den Eindruck, dass es etwas "ruckelt". Eventuell liegt es an den Glühbirnen von Innr oder ioBroker kann nicht so viele Befehle in wenigen Millisekunden versenden.
Mal schauen. Ich möchte da etwas schönes hinbekommen.
Vermutlich, muss ich die Funktion dann in jedes Script reinkopieren, oder? Sowas wie die Funktion aufrufen und die Lampen mitgeben, geht über mehrere Skripte nicht?
-
@dave83 sagte in Selber einen Dimmer programmieren (Wo ist der Fehler?):
Ich hab den Eindruck, dass es etwas "ruckelt". Eventuell liegt es an den Glühbirnen von Innr oder ioBroker kann nicht so viele Befehle in wenigen Millisekunden versenden.
Mal schauen. Ich möchte da etwas schönes hinbekommen.
Vermutlich, muss ich die Funktion dann in jedes Script reinkopieren, oder? Sowas wie die Funktion aufrufen und die Lampen mitgeben, geht über mehrere Skripte nicht?Mal dumm gefragt - über welchen Adapter hast du die Birnen von Innr angeschlossen ?
Sollte es der Zigbee Adapter sein, dann hast du zwei viel einfachere Möglichkeiten die Lampen langsam (und ohne zucken) zu dimmen:
-
Option 1:
-- Lampe auf Helligkeit 1
-- Lampe einschalten
--transitiontime
auf die Zeit in der sie hell werden soll
-- Lampe auf Helligkeit x
--transitiontime
auf den alten Wert (üblicherweise 0) setzen. -
Option 2:
-- Lampe auf Helligkeit 1
-- Lampe einschalten
-- Datenpunktbrightness_move
auf x (die Einheit von brightness_move sollte 1/255 s sein)
-- nach Ablauf der Dimm-Zeit:brightness_move
auf 0
Etwas äquivalentes sollte auch bei Nutzung von deconz bzw. des Hue Adapters gehen - zumindest der Trick mit der Transition Time.
A.
Nachtrag: Sofern eine bestimmte Lampe immer langsam dimmen soll kannst du die Transitiontime generell auf einen höheren Wert setzen.
-
-
@dave83 sagte: Eindruck, dass es etwas "ruckelt".
Mit 50 ms Sendeabstand wird sicherlich die Schnittstelle (Zigbee?) überfordert.
Wenn es innerhalb von 5 s durchlaufen werden soll, versuche es mal mit 150 ms und Schritten von 3 %. -
@dave83 sagte: Sowas wie die Funktion aufrufen und die Lampen mitgeben, geht über mehrere Skripte nicht?
Doch: Wenn die Funktion in der Gruppe "global" erstellt wird. In Blockly benötigt man dann noch eine Javascript-Funktion, die wiederum die globale Funktion aufruft.
// globale Funktion async function langsamLichtAn(idParent) { setState(idParent + '.on', true); setState(idParent + '.ct', 500); let level = 1; while (level <= 100) { setState(idParent + '.level', level); level += 3; await wait(150); } }
-
@Asgothian , Danke für den Tipp. Es war für mich nicht einfach, aber ich habe etwas hinbekommen.
So schaut es nun aus, und es funktioniert erstmal:
Ich habe herausgefunden, dass man die Lampen nicht einschalten muss, wenn man mit dem Level arbeitet. Aber beim herunterfahren, darf man nicht die 0 verwenden. Weil er dann nicht nimmt, sondern aus macht. Deswegen muss man zuerst auf 1% Level und danach manuell die Lampe aus setzen.
Danke für eure Hilfe. Ich werde das nun eine Woche mal laufen lassen. Es wird uns alle gefallen. Ist viel ruhiger.
Sonstiges:
So schauen alle Möglichkeiten aus:
Ich habe auch etwas mit "dimdown" , "dimup" und "dipspeed" gespielt, aber das habe ich nicht verstanden. Weder wie man das aktiviert, deaktiviert, oder verstellt. Was das genau macht, hat sich mir auch nicht erschlossen. Aber das mag auch sein, dass ich etwas anderes verstellt hatte. Diese beiden Knöpfe sind bei mir aktiviert, ich weiß gar nicht, was die machen, oder ob ich die jetzt wieder aus machen muss.