NEWS
[Vorlage] LightControl
-
@denis1988 was der Adapter schreibt ist eine Sache, was das Gerät als min Wert annimmt das andere. Wenn die Lampe bei 2700 sein Minimum erreicht bringt es nichts darunter zugehen.
-
@cino meine Lampe kann durchaus 2100 K. In javascript.0.LightControl2.0.ct wird auch nur der Wert von 2700K geschrieben und nicht tiefer. wenn ich manuell 2100K reinschreibe wird die Lampe auch mit 2100K geschalten. Nur das Skript macht das scheinbar nicht bei mir
-
@denis1988 sagte in [Vorlage] LightControl:
@cino meine Lampe kann durchaus 2100 K. In javascript.0.LightControl2.0.ct wird auch nur der Wert von 2700K geschrieben und nicht tiefer. wenn ich manuell 2100K reinschreibe wird die Lampe auch mit 2100K geschalten. Nur das Skript macht das scheinbar nicht bei mir
Hast Du auch minVal, maxVal für ct entsprechend bei der Lampe konfiguriert?
-
@pittini ja hab ich. Denke du meinst das hier:
const LightGroups = { 0: { description: "Büro Denis", lights: { 0: { description: "Tischlampe", power: { oid: "hue.1.Schreibtischlampe_Denis.on"/*Schreibtischlampe Denis on*/, onVal: true, offVal: false }, bri: { oid: "hue.1.Schreibtischlampe_Denis.level"/*Schreibtischlampe Denis level*/, minVal: 0, maxVal: 100, defaultVal: 100 }, ct: { oid: "hue.1.Schreibtischlampe_Denis.ct"/*Schreibtischlampe Denis ct*/, minVal: 2100, maxVal: 6500 }, sat: { oid: "", minVal: null, maxVal: null }, modeswitch: { oid: "", whiteModeVal: false, colorModeVal: true }, color: { oid: "", type: "", default: "" } }
-
@denis1988 Ja, genau das meinte ich. Das passt soweit auch. Müßte dann auch gesetzt werden so, ich schau mal ob da noch nen Problem ist, meld mich dann.
-
@denis1988 So, hier die versprochene Meldung. Ja, das ist/war noch ein Bug chen. Ist in der nächsten Version gefixt, bis dahin ist der Workaround: Zeile 392, min von 2700 auf 2100 ändern. Alle ct Datenpunkte löschen und skript neustarten.
-
@pittini super vielen Dank werde ich später ausprobieren und Rückmeldung geben.
Ist es auch möglich, dass bei Aktualisierung des Bewegungsstatuses, die Lampe geschaltet wird? Zur Zeit funktioniert es bei mir nur bei Änderung von false auf true. Bei mir ist es zur Zeit wie folgt:
wenn ich schon vorher, bevor die mindest Helligkeit unterschritten wurde im Raum bin und dann erst die Helligkeit unterschritten wird, schaltet die Lame erst ein wenn ich den Raum verlasse, warte bis der Bewegungsmelder auf false springt, und dann wieder den Erfassungsbereich betrete.Vielen Dank für deine tolle Arbeit!!
-
Hi,
Ich habe LightControl2 installiert und erste Tests durchgeführt.
Folgende Fragen habe ich hierzu:-
Welche Helligkeit wird gesetzt, wenn das Putzlicht eingeschaltet wird? Aktuell stelle ich fest, dass hier der aktuelle Brighness-Wert verwendet wird. Wäre es möglich, den Default-Wert zu verwenden? Evtl. sogar wählbar?
-
Zum Thema Putzlicht hätte ich noch eine Idee: Ein AutoOff, damit wenn man das Putzlicht einschaltet, dieses nach einer bestimmten Zeit wieder deaktiviert wird. Weil wenn dies vergessen wird, brennt im schlechtesten Fall das Licht die ganze Zeit. On Top: durch die BWM wird das AutoOff jedesmal zurückgesetzt.
-
Wenn ich das Putzlicht einschalte, kann ich die Helligkeit nachträglich nicht über den Datenpunkt "bri" verändern.
Ich muss gleichzeitig "power" ebenfalls aktivieren. Ist das so gewollt oder ein Bug? Wünschenswert wäre, die Helligkeit unabhängig vom Datenpunkt "power" ändern zu können. -
all.power: Werden bei aktivierung von all.power die vorherigen Zustände zwischengespeichert, damit beim Deaktivieren von all.power die Lichter in Ihren Ursprungszustand zurückgehen? Wenn nicht, wäre das ein tolles Feature.
Danke und Grüße
-
-
Hallo,
kann es nicht installieren? Code 25
host.MedionHome) 2021-11-24 14:39:20.801 error host.Medion(Home) iobroker host.Medion(Home) Cannot install Pittini/iobroker-LightControl#c5720a05c924bbdda8da2e0e0af76bdff4626a2b: 1 host.MedionHome) 2021-11-24 14:39:20.762 info host.Medion(Home) iobroker npm ERR! A complete log of this run can be found in: npm ERR! C:\Program Files\iobroker\Home\env\npm-cache\_logs\2021-11-24T13_39_20_728Z-debug.log host.MedionHome) 2021-11-24 14:39:20.761 info host.Medion(Home) iobroker host.MedionHome) 2021-11-24 14:39:20.728 info host.Medion(Home) iobroker npm ERR! premature close host.MedionHome) 2021-11-24 14:39:09.780 info host.Medion(Home) iobroker npm install Pittini/iobroker-LightControl#c5720a05c924bbdda8da2e0e0af76bdff4626a2b --loglevel error (System call) host.MedionHome) 2021-11-24 14:39:09.778 info host.Medion(Home) iobroker NPM version: 6.14.15 host.MedionHome) 2021-11-24 14:39:08.541 info host.Medion(Home) iobroker install Pittini/iobroker-LightControl#c5720a05c924bbdda8da2e0e0af76bdff4626a2b
Plattform: Windows
RAM: 16 GB
Node.js: 14.18.1
NPM: 6.14.15
JS Controller: 3.3.19
Admin: 5.1.28
Web: 3.4.16
Socket.io: 3.1.4
Script Engine: 5.2.16ERLEDIGT, ist ja ein Skript.
-
@sigi234 Es handelt sich um ein Javascript, kein Adapter! Installation erfolgt, indem du ein neues JS-Script erstellst und dir den Code aus der Datei "LichtControl.js" auf Github kopierst und in dein Script einfügst.
-
EDIT: Mein Vorschlag kann verworfen werden. Hab den falschen Trigger angenommen.
EDIT: @Pittini: Das ist doch der Trigger für den BWM?, wenn ja, dann wäre mein Vorschlag wieder aktuell.@denis1988 said in [Vorlage] LightControl:
@pittini super vielen Dank werde ich später ausprobieren und Rückmeldung geben.
Ist es auch möglich, dass bei Aktualisierung des Bewegungsstatuses, die Lampe geschaltet wird? Zur Zeit funktioniert es bei mir nur bei Änderung von false auf true. Bei mir ist es zur Zeit wie folgt:
wenn ich schon vorher, bevor die mindest Helligkeit unterschritten wurde im Raum bin und dann erst die Helligkeit unterschritten wird, schaltet die Lame erst ein wenn ich den Raum verlasse, warte bis der Bewegungsmelder auf false springt, und dann wieder den Erfassungsbereich betrete.Vielen Dank für deine tolle Arbeit!!
@Pittini Das müsste doch gehen, indem der Trigger auf change: "any" anstatt "ne" geändert wird, oder? Hätte das noch irgendwelche Auswirkungen auf das restliche Script?
//Trigger für Dp Inhalt erzeugen wenn nicht leer if (LightGroups[Group].sensors[sensorCount].id != "") { on({ id: LightGroups[Group].sensors[sensorCount].id, change: "ne", ack: true }, function (dp) { //Trigger erstellen für eingetragenen Sensor if (logging) log("Triggered linked Sensor " + dp.id + " new value is " + dp.state.val); if (dp.state.val == LightGroups[Group].sensors[sensorCount].motionVal) {//Inhalt lesen und neues Property anlegen und füllen LightGroups[Group].sensors[sensorCount].isMotion = true; } else { LightGroups[Group].sensors[sensorCount].isMotion = false; }; SummarizeSensors(Group); }); }
-
@schmakus sagte in [Vorlage] LightControl:
Hi,
Ich habe LightControl2 installiert und erste Tests durchgeführt.
Folgende Fragen habe ich hierzu:- Welche Helligkeit wird gesetzt, wenn das Putzlicht eingeschaltet wird? Aktuell stelle ich fest, dass hier der aktuelle Brighness-Wert verwendet wird. Wäre es möglich, den Default-Wert zu verwenden? Evtl. sogar wählbar?
Es soll die max. Helligkeit verwendet werden. Möglich wär alles, aber den default zu nehmen führt den Sinn des Putzlichtes ad absurdum. Dieses soll frei von allen Automatiken weißes Licht zur Raumreinigung haben.
- Zum Thema Putzlicht hätte ich noch eine Idee: Ein AutoOff, damit wenn man das Putzlicht einschaltet, dieses nach einer bestimmten Zeit wieder deaktiviert wird. Weil wenn dies vergessen wird, brennt im schlechtesten Fall das Licht die ganze Zeit. On Top: durch die BWM wird das AutoOff jedesmal zurückgesetzt.
Siehe Antwort oben, keine Automatiken. Wenn die Putzfrau mal länger braucht soll se ja nich im dunkeln stehen.
- Wenn ich das Putzlicht einschalte, kann ich die Helligkeit nachträglich nicht über den Datenpunkt "bri" verändern.
Ich muss gleichzeitig "power" ebenfalls aktivieren. Ist das so gewollt oder ein Bug? Wünschenswert wäre, die Helligkeit unabhängig vom Datenpunkt "power" ändern zu können.
Siehe Antwort oben.Die Helligkeit sollte überhaupt nicht eingestellt werden können beim Putzlicht, das steht völlig außerhalb des Systems
- all.power: Werden bei aktivierung von all.power die vorherigen Zustände zwischengespeichert, damit beim Deaktivieren von all.power die Lichter in Ihren Ursprungszustand zurückgehen? Wenn nicht, wäre das ein tolles Feature.
Nein, aktuell wird da nix gespeichert. Die Funktion kam gestern erst dazu, da kann sich noch was ändern und das speichern wär diskutabel, würde aber den angedachten Sinn der Funktion etwas ändern. Ich hab das reingebaut weil wir hier öfters mal kleine Stromausfälle haben, danach sind alle smarten Lampen im Haus an, weil die das automatisch so machen. Das System weis aber nicht dass die an sind, deswegen will ich eben sagen können all.power aus und gut is..
-
@pittini kann die Zeile leider nicht finden, weder in deinem Skript noch bei mir bei V.2.0.14
-
@denis1988 Na dann nimm doch einfach die aktuelle 2.0.15, da is der fix ja schon drin. Die ct Datenpunkte mußt trotzdem löschen, damit die neu angelegt werden können.
-
@pittini said in [Vorlage] LightControl:
Es soll die max. Helligkeit verwendet werden. Möglich wär alles, aber den default zu nehmen führt den Sinn des Putzlichtes ad absurdum. Dieses soll frei von allen Automatiken weißes Licht zur Raumreinigung haben.
Siehe Antwort oben, keine Automatiken. Wenn die Putzfrau mal länger braucht soll se ja nich im dunkeln stehen.
Ok, Deshalb ja mein Vorschlag, das AutoOff des Putzlichts zurückzusetzen, sofern Bewegung erkannt. Aber dann muss ich selbst einen Timer setzen, wenn ich das Putzlicht aktiviere. Bei uns kommt es öfters vor, dass meine Frau das Licht per Taster einschaltet, jedoch vergisst, es wieder auszuschalten, weil wir ja eigentlich BWMs haben und das Licht i.d.R. von alleine wieder ausgeht.
Siehe Antwort oben.Die Helligkeit sollte überhaupt nicht eingestellt werden können beim Putzlicht, das steht völlig außerhalb des Systems
Ok, dann werde ich die Funktion des Putzlichts so nicht nutzen. Mein Gedanke ist, dass ich ein Licht auf Dauer-Ein schalten möchte, wenn z.B. Gäste im Haus. Aber dann muss ich als Workaround bei mir dein vorhandenes AutoOff einfach deaktivieren, wenn ich das Licht per Taster einschalte und wieder aktivieren, wenn ich per Taster ausschalte.
Nein, aktuell wird da nix gespeichert. Die Funktion kam gestern erst dazu, da kann sich noch was ändern und das speichern wär diskutabel, würde aber den angedachten Sinn der Funktion etwas ändern. Ich hab das reingebaut weil wir hier öfters mal kleine Stromausfälle haben, danach sind alle smarten Lampen im Haus an, weil die das automatisch so machen. Das System weis aber nicht dass die an sind, deswegen will ich eben sagen können all.power aus und gut is.
Ja, diesen Fall hatte ich auch schon. Mir gehts es z.B. darum, dass ich "all.Power" mit meiner Alarmanlage oder Rauchmelder verknüpfe. Wenn der Alarm dann zurückgesetzt wird, sollen alle Lampen wieder in den Zustand, welchen sie vor dem Alarm hatten. Aber das ist wirklich nice to have.
-
@schmakus sagte in [Vorlage] LightControl:
Ja, diesen Fall hatte ich auch schon. Mir gehts es z.B. darum, dass ich "all.Power" mit meiner Alarmanlage oder Rauchmelder verknüpfe. Wenn der Alarm dann zurückgesetzt wird, sollen alle Lampen wieder in den Zustand, welchen sie vor dem Alarm hatten. Aber das ist wirklich nice to have.
Dafür hab ich das blink in jeder Gruppe, das speichert auch den vorherigen Zustand. Wär evtl. ne Überlegung nochn all.blink zu machen.
Ok, dann werde ich die Funktion des Putzlichts so nicht nutzen. Mein Gedanke ist, dass ich ein Licht auf Dauer-Ein schalten möchte, wenn z.B. Gäste im Haus.
Es heisst ja Putzlicht und nicht Gästelicht und ist eben wirklich nur zum putzen gedacht.
-
@Pittini
Ich bekomme eine Fehler im Javascript. Dieser Fehler führt sporadisch zum Neustart der Instanz und macht das Script extrem langsam.
Version: 2.0.15
js-controller: 3.3.18
Node-js: 12.22.6Hier die Zeilen 1085 - 1121 aus dem Script:
/* ------------------------- FUNCTIONS FOR Switching Off --------------------------------- */ async function AutoOffLux(Group) {//Handling für AutoOffLux if (logging) log("Reaching AutoOffLux, for Group=" + Group + " =" + LightGroups[Group].description) if (LightGroups[Group].autoOffLux.operator == "<" && LightGroups[Group].actualLux < LightGroups[Group].autoOffLux.minLux && LightGroups[Group].autoOffLux.enabled && LightGroups[Group].power && !LightGroups[Group].autoOffLux.dailyLock) { GroupPowerOnOff(Group, false); LightGroups[Group].autoOffLux.dailyLock = true; await setStateAsync(praefix + "." + Group + ".autoOffLux.dailyLock", true, true); } else if (LightGroups[Group].autoOffLux.operator == ">" && LightGroups[Group].actualLux > LightGroups[Group].autoOffLux.minLux && LightGroups[Group].autoOffLux.enabled && LightGroups[Group].power && !LightGroups[Group].autoOffLux.dailyLock) { GroupPowerOnOff(Group, false); LightGroups[Group].autoOffLux.dailyLock = true; await setStateAsync(praefix + "." + Group + ".autoOffLux.dailyLock", true, true); }; if (LightGroups[Group].autoOffLux.operator == "<") { //DailyLock resetten if (LightGroups[Group].actualLux > LightGroups[Group].autoOffLux.minLux && LightGroups[Group].autoOffLux.dailyLock) { LightGroups[Group].autoOffLux.dailyLockCounter++; if (LightGroups[Group].autoOffLux.dailyLockCounter >= 5) { LightGroups[Group].autoOffLux.dailyLock = false; await setStateAsync(praefix + "." + Group + ".autoOffLux.dailyLock", false, true); LightGroups[Group].autoOffLux.dailyLockCounter = 0; }; }; } else if (LightGroups[Group].autoOffLux.operator == ">") { if (LightGroups[Group].actualLux < LightGroups[Group].autoOffLux.minLux && LightGroups[Group].autoOffLux.dailyLock) { LightGroups[Group].autoOfLux.dailyLockCounter++; if (LightGroups[Group].autoOnLux.dailyLockCounter >= 5) { LightGroups[Group].autoOffLux.dailyLock = false; await setStateAsync(praefix + "." + Group + ".autoOffLux.dailyLock", false, true); LightGroups[Group].autoOffLux.dailyLockCounter = 0; }; }; }; }
Hier die Zeilen 263 - 280 aus dem Script:
LightGroups[Group][prop1][z] = (await getStateAsync(GroupTemplate[prop1][z].id)).val; //Daten in Lightgroups einlesen (auch wenn neu erzeugt), dann if (GroupTemplate[prop1][z].common.write) { // log("Setting Trigger for: " + GroupTemplate[prop1][z].id) on({ id: GroupTemplate[prop1][z].id, change: "any", ack: false }, function (dp) { //Trigger erstellen if (logging) log("Triggered " + dp.id + " new value is " + dp.state.val) LightGroups[Group][prop1][z] = dp.state.val; Controller(Group, prop1 + "." + z, dp.oldState.val, dp.state.val); }); }; }; if (!await existsObjectAsync(praefix + "." + Group + "." + prop1)) { // Channel erstellen wenn noch nicht vorhanden await setObjectAsync(praefix + "." + Group + "." + prop1, { type: 'channel', common: { name: LightGroups[Group].description + " " + prop1 }, native: {} }); log("Init: Subchannel " + praefix + "." + Group + "." + prop1 + " created"); };
-
@schmakus Hmm, ich denke nicht dass das ein Skriptfehler ist, sonst hätte ich den Fehler auch, und auch jeder andere der AutoOffLux verwendet. Kann den Fehler auch nicht reproduzieren. Bitte mal genau zeigen/schreiben was da eingestellt ist und dazu ein Log posten, idealerweise mit aktiviertem logging. Aber bitte keinen Programmcode posten, weil....den kenn ich
-
@pittini ok, werde ich morgen in Ruhe nochmal testen. Hab jetzt AutoOffLux mal deaktiviert.
-
Erledigt.