NEWS
Zigbee Adapter Objektbeschreibung Farbe/Farbtemperatur
-
@loverz sagte in Zigbee Adapter Objektbeschreibung Farbe/Farbtemperatur:
Wie ich das dort umrechnen soll ist mir noch ein Rätsel.
Es wäre echt cool, wenn man vom Zigbee Adapter diese Werte direkt ziehen könnte.Ja, das wäre es, und ich habe das auch schon auf der Liste - leider habe ich das nicht zu 100% selber in der Hand, da es davon abhängt in wie weit die Herdsman-converters (die Bibliothek die wir zur Kommunikation mit der hardware verwenden) das für alle Lampen unterstützt. Bis es da Besserung gibt kann ich die JS Bibliothek color-convert empfehlen. Diese kannst du zum JS Adapter hinzufügen und dann in einem Skript nutzen. Sie stellt Funktionen zur Umwandlung zwischen HSV und RGB zur Verfügung.
-
@asgothian Ich hätte da auch gleich mal eine Frage. Bei meinen Hue Color Lampen ist der Color Wert nicht beschreibbar.
{ "type": "state", "common": { "name": "Color", "type": "string", "read": true, "write": false, "role": "level.color.rgb", "smartName": { "de": "Deckenlampe im Schlafzimmer", "smartType": "LIGHT" } }, "native": {}, "_id": "zigbee.1.0017880103f808f7.color", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" }, "from": "system.adapter.zigbee.1", "user": "system.user.admin", "ts": 1632731509973 }
Wenn ich ihn auf true setze funktioniert er, allerdings wird er irgendwann wieder auf false gesetzt.
Wie kann ich den Wert dauerhaft verändern?Dankeschön im Voraus
Jan -
@jan-s100 sagte in Zigbee Adapter Objektbeschreibung Farbe/Farbtemperatur:
Wenn ich ihn auf true setze funktioniert er, allerdings wird er irgendwann wieder auf false gesetzt.
Wie kann ich den Wert dauerhaft verändern?gar nicht. Das muss im Adapter liegen. Kannst Du mir bitte die genaue Bezeichnung des / der betroffenen Geräte zukommen lassen, dann kann ich schauen wie der State intern definiert ist.
A.
-
@asgothian sagte in Zigbee Adapter Objektbeschreibung Farbe/Farbtemperatur:
JS Bibliothek color-convert
meinst du diese Funktion:
-
@asgothian Ich hänge dir mal ein Bild mit den Eigenschaften der Lampe an.
Danke das du dich darum kümmerst.
Jan -
@asgothian sagte in Zigbee Adapter Objektbeschreibung Farbe/Farbtemperatur:
@loverz sagte in Zigbee Adapter Objektbeschreibung Farbe/Farbtemperatur:
Wie ich das dort umrechnen soll ist mir noch ein Rätsel.
Es wäre echt cool, wenn man vom Zigbee Adapter diese Werte direkt ziehen könnte.Bis es da Besserung gibt kann ich die JS Bibliothek color-convert empfehlen. Diese kannst du zum JS Adapter hinzufügen und dann in einem Skript nutzen. Sie stellt Funktionen zur Umwandlung zwischen HSV und RGB zur Verfügung.
@Asgothian Wie würde so ein Skript aussehen wenn man color-convert zur JS Bibliothek hinzugefügt hat?
-
@jack99n sagte in Zigbee Adapter Objektbeschreibung Farbe/Farbtemperatur:
@Asgothian Wie würde so ein Skript aussehen wenn man color-convert zur JS Bibliothek hinzugefügt hat?
das könnte so aussehen.
Wichtig ist das bei diesem Beispiel es die states
- 0_userdata.lightstates.lamp1.hue
- 0_userdata.lightstates.lamp1.sat
- zigbee.0.0017880103124d6d.color
- zigbee.0.0017880103124d6d.brightness
gibt, ansonsten klappt das nicht.
Ausserdem muss in der JS Adapter Konfiguration das Paket color-convert als zusätzliches Paket eingetragen sein.
var colorconv = require('color-convert'); // temp states with hue, sat const HS = '0_userdata.lightstates.lamp1' const Lamp = 'zigbee.0.0017880103124d6d' function HSVtoRGB(source, dest) { setState(dest, colorconv.hsv.hex(getState(source+".hue").val, getState(source+".sat").val, getState(dest + ".brightness"))); } function RGBtoHSV(source, dest) { const hsv = colorconv.rgb.hsv(colorconv.hex.rgb(getState(source+'.color'))); setState(dest+'.hue', hsv[0]); setState(dest+'.sat', hsv[1]); } on({[HS+'.hue', HS+'.sat'], change:'ne'}, function(obj) { if (obj.from.includes('javascript')) return; HSVtoRGB(HS, Lamp) } on ({Lamp1+'.color'm change:'ne')}, function(obj) { if (obj.from.includes('javascript')) return; RGBtoHSV(Lamp1, HS); }
-
@asgothian Vielen dank für deine Hilfe! Leider bekomme ich beim Start von deinem Skript diesen Fehler.
javascript.0 2021-10-02 08:21:13.617 error at Object.createScript (vm.js:261:10) javascript.0 2021-10-02 08:21:13.616 error at new Script (vm.js:88:7) javascript.0 2021-10-02 08:21:13.615 error SyntaxError: Unexpected token ',' javascript.0 2021-10-02 08:21:13.614 error ^ javascript.0 2021-10-02 08:21:13.599 error on({[HS+'.hue', HS+'.sat'], change:'ne'}, function(obj) { javascript.0 2021-10-02 08:21:13.598 error script.js.LED-Wand.Color_convert compile failed: at script.js.LED-Wand.Color_convert:22
08:39:14.588 info javascript.0 (24619) Stop script script.js.LED-Wand.Skript-test 08:39:17.078 info javascript.0 (24619) Start javascript script.js.LED-Wand.Skript-test 08:39:17.080 error javascript.0 (24619) script.js.LED-Wand.Skript-test compile failed: at script.js.LED-Wand.Skript-test:22
-
@jack99n Stimmt.. das passiert wenn man "mal eben schnell" ein einen teil aus einem grossen Skript heraus nimmt und "nur eben" anpasst. mir sind beim anpassen 2 Fehler unterlaufen:
Das skipt müsste so laufen
ar colorconv = require('color-convert'); // temp states with hue, sat const HS = '0_userdata.lightstates.lamp1' const Lamp = 'zigbee.0.0017880103124d6d' function HSVtoRGB(source, dest) { setState(dest, colorconv.hsv.hex(getState(source+".hue").val, getState(source+".sat").val, getState(dest + ".brightness"))); } function RGBtoHSV(source, dest) { const hsv = colorconv.rgb.hsv(colorconv.hex.rgb(getState(source+'.color'))); setState(dest+'.hue', hsv[0]); setState(dest+'.sat', hsv[1]); } on({id:[HS+'.hue', HS+'.sat'], change:'ne'}, function(obj) { if (obj.state.from.includes('javascript')) return; HSVtoRGB(HS, Lamp) } on ({id:Lamp1+'.color', change:'ne')}, function(obj) { if (obj.state.from.includes('javascript')) return; RGBtoHSV(Lamp1, HS); }
-
@asgothian Geht leider immer noch nicht, kannst ja mal wenn du Ruhe und Zeit hast dir es noch mal anschauen.
2021-10-02 22:29:24.985 error at processImmediate (internal/timers.js:463:21) javascript.0 2021-10-02 22:29:24.985 error at Immediate._onImmediate (/opt/iobroker/node_modules/iobroker.javascript/main.js:1306:17) javascript.0 2021-10-02 22:29:24.984 error at /opt/iobroker/node_modules/iobroker.javascript/main.js:1817:17 javascript.0 2021-10-02 22:29:24.984 error at prepareScript (/opt/iobroker/node_modules/iobroker.javascript/main.js:1716:37) javascript.0 2021-10-02 22:29:24.984 error at createVM (/opt/iobroker/node_modules/iobroker.javascript/main.js:1469:28) javascript.0 2021-10-02 22:29:24.983 error at Object.createScript (vm.js:261:10) javascript.0 2021-10-02 22:29:24.983 error at new Script (vm.js:88:7) javascript.0 2021-10-02 22:29:24.983 error SyntaxError: missing ) after argument list javascript.0 2021-10-02 22:29:24.982 error ^ javascript.0 2021-10-02 22:29:24.982 error } javascript.0 2021-10-02 22:29:24.981 error script.js.LED-Wand.Skript_Test compile failed: at script.js.LED-Wand.Skript_Test:25
-
@jack99n stimmt.. fehlt noch eine ')' in Zeile 25 und 30
A.