Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Praktische Anwendungen (Showcase)
    4. Xiaomi Yeelight Smart LED (DE)

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Xiaomi Yeelight Smart LED (DE)

    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      Magda last edited by

      @speedy78:

      ps: noch einen kleinen Tipp für mich wie ich unter Objekte Blub1 den Namen ändern kann und er in Zukunft den neuen Namen erkennt und Aktualisiert falls nötig. Sprich Zuordnung zum Raum würde ich gerne schon dort hinterlegen ist einfacher später wieder zu finden. Oder muss ich mir hier eine Extra Word Datei pflegen? `
      Die meisten Fragen scheinen sich ja schon geklärt zu haben :). Für meine Lösung werden die Shell-Scripte nicht benötigt, alles ist in diesen zwei Javascripten enthalten.

      Den Namen der Lampe kann man manuell in den Datenpunkt eintragen, der wird aber noch nicht auf die Lampe zurück geschrieben, ist somit also nur im ioBroker bekannt. Es gibt zwar die Methode set_name und die ist mit 2 Zeilen Code auch zu implementieren … warum ich das aber nicht gemacht habe weiß ich aktuell selber nicht mehr :).

      Also wenn genwünscht einfach die in den Switch in sendBulbCommand vor das default folgendes einfügen:

      case 'name':
      command = '{"id":' + bulbID + ',"method":"set_name","params":["' + param1 + '"]}\r\n';
      break;
      
      1 Reply Last reply Reply Quote 0
      • M
        Magda last edited by

        @Lunax:

        (1) Yee-White = 192.168.0.144 - ping läuft `
        Ich hab leider keine weiße Yeelight, kann also auch nicht testen. Die API sollte aber trotzdem die gleiche sein. Hat es denn mit der Weißen jemals funktioniert? Ist dort der Developer-Modus eingeschaltet, damit lokale Verbindungen überhaupt erst zugelassen werden?

        1 Reply Last reply Reply Quote 0
        • L
          Lunax last edited by

          Hi ho,

          ahhhhhhh - ich Vollpfosten - der Developer-Modus wars - Kaum eingeschaltet läuft es

          Oh, man, wie blöd. An den habe ich natürlich gar nicht mehr gedacht. Nachdem ich die Yeelight ja Komplet unpaired habe und dann wieder ins Netz genommen habe ist logischerweise auch der Developer-Mode wieder aus

          :roll: :roll: :roll: :roll: :roll: :roll: :roll: :roll:

          Naja, schreiben hilft. Lesen und antworten auch !

          Übrigens, mal ganz am Rande: der Ton in diesem Forum ist angenehm von Euch Mitstreitern und macht es ioBroker-Newbies deutlich angenehmer und einfacher .

          Auch wenn solche "Doofmannsfälle" auftreten

          Liebe Grüße und DANKE

          LunaX

          Ergänzung:

          Die Yeelight White hat die gleichen Funktionen wie eine RGB (allerdings halt keine Farben). Ansonsten alles andere Auch (Scheduler, Name, …)

          1 Reply Last reply Reply Quote 0
          • M
            Magda last edited by

            So, hab jetzt die Gruppensteuerung drin und bei mir läuft das mit 2 Lampen auch schon eine ganze Weile stabil.

            Damit die Gruppensteuerung bei vorhandener Nutzung funktioniert muss man den Datenpunkt "group" entweder manuell anlegen, oder den Yeelight-Baum komplett löschen, damit der automatisch neu angelegt wird.

            Die Funktion der Gruppensteuerung ist recht simpel. Lampen, die die gleiche Gruppennummer haben erhalten die gleichen Kommandos. Ich hab dafür im VIS einen Schieberegler der nur die Werte 1,2 und 3 annehmen kann. Das kann aber jeder machen wie er lustig ist.

            Hier das Script zum Anlegen der Lampen (lesen des Broadcast):

            var dgram = require('dgram');
            var s = dgram.createSocket('udp4');
            var debug = true;
            
            const MULTICAST_IP = '239.255.255.250';
            const s_dataset = 'javascript.0.Yeelight.Bulb';
            const s_id = '.id';
            const s_address = '.Location';
            const s_bright = '.bright';
            const s_hue = '.hue';
            const s_colorMode = '.color_mode';
            const s_rgb = '.rgb';
            const s_sat = '.sat';
            const s_power = '.power';
            const s_ct = '.ct';
            const s_name = '.name';
            const s_group = '.group';
            
            s.bind(1982, function() {
            	s.addMembership(MULTICAST_IP);
            	if (debug) console.log("listening on all addresses");
            });
            
            s.on("message", function (msg, rinfo) {
            	if (debug) console.log('Broadcast empfangen: ' + msg);
            	if (msg.indexOf('yeelight') < 0) {
            	    if (debug) console.log("Kein Yeelight Broadcast");
            	    return;
            	}
            	var bulbID = extractValue('id: ', msg);
            	var i = 1;
            	var unknownBulb = true;
            
            	//wenn Lampe vorhanden, dann Werte aktualisieren
            	while (getObject(s_dataset + i + s_id)) {
            		if (getState(s_dataset + i + s_id).val == bulbID) {
            			setState(s_dataset + i + s_address, extractValue('Location: ', msg), false);
            			setState(s_dataset + i + s_bright, parseInt(extractValue('bright: ', msg)), true);
            			setState(s_dataset + i + s_hue, parseInt(extractValue('hue: ', msg)), true);
            			setState(s_dataset + i + s_colorMode, parseInt(extractValue('color_mode: ', msg)), true);
            			setState(s_dataset + i + s_rgb, '#' + parseInt(extractValue('rgb: ', msg)).toString(16), true); //Wert umgewandelt von Dec zu Hex damit Colorpicker Widget einfacher zu nutzen ist
            			setState(s_dataset + i + s_sat, parseInt(extractValue('sat: ', msg)), true);
            			setState(s_dataset + i + s_ct, parseInt(extractValue('ct: ', msg)), true);
            			setState(s_dataset + i + s_power, extractValue('power: ', msg), true);
            			unknownBulb = false;
            			if (debug) console.log('Werte für Lampe ' + i + ' aktualisiert');
            			break;
            		}
            		i++;
            		//Notaus
            		if (i >= 100) {
            			if (debug) console.log('zu viele Schleifendurchläufe');
            			break;
            		}
            	}
            	//wenn Lampe nicht gefunden, dann neue Lampe erstellen
            	if (unknownBulb) {
            		if (debug) console.log('neue Lampe wird erstellt');
            		createNewBulb(i, msg);  
            	}
            });
            
            function createNewBulb(i, msg) {
            	createState(s_dataset + i + s_id, extractValue('id: ', msg), {read: true, write: true, desc: "unique ID der Yeelight Lampe", type: "string", def: ""});
            	createState(s_dataset + i + s_address, extractValue('Location: ', msg), {read: true, write: true, desc: "URL der Yeelight Lampe", type: "string", def: ""});
                createState(s_dataset + i + s_bright, parseInt(extractValue('bright: ', msg)), {read: true, write: true, desc: "Helligkeit", type: "number", min: 1, max: 100, def: 1, unit: "%"});
            	createState(s_dataset + i + s_hue, parseInt(extractValue('hue: ', msg)), {read: true, write: true, desc: "HSV Farbwert", type: "number", min: 0, max: 359, def: 1, unit: ""});
            	createState(s_dataset + i + s_colorMode, parseInt(extractValue('color_mode: ', msg)), {read: true, write: true, desc: "Farbwert", type: "number", min: 1, max: 3, def: 1, unit: ""});
            	createState(s_dataset + i + s_rgb, '#' + parseInt(extractValue('rgb: ', msg)).toString(16), {read: true, write: true, desc: "RGB Farbwert in HEX", type: "string", def: ""});
            	createState(s_dataset + i + s_sat, parseInt(extractValue('sat: ', msg)), {read: true, write: true, desc: "HSV Sättigung", type: "number", min: 1, max: 100, def: 1, unit: ""});
            	createState(s_dataset + i + s_ct, parseInt(extractValue('ct: ', msg)), {read: true, write: true, desc: "Farbtemperatur weiß", type: "number", min: 1700, max: 6500, def: 5000, unit: ""});
            	createState(s_dataset + i + s_power, extractValue('power: ', msg), {read: true, write: true, desc: "Zustand on/off", type: "string", def: ""});
                createState(s_dataset + i + s_name, '', {read: true, write: true, desc: "selbst vergebener Name", type: "string", def: "Yeelight"});
            	createState(s_dataset + i + s_group, i, {read: true, write: true, desc: "Gruppe", type: "number", min: 1, max: 100, def: 1, unit: ""});
            	if (debug) console.log('neue Lampe erstellt mit ID: ' + i);
            }
            
            function extractValue(key, message) {
                var text = message.toString('utf-8');
                var startPos = (text.indexOf(key) + key.length);
                var endPos = text.substring(startPos).indexOf('\r\n');
                return text.substr(startPos, endPos);
            }
            
            // close connection if script stopped
            onStop(function (callback) {
                if (s) {
                    // close connection
                    s.close();
                    if (debug) console.log('UDP Client gestoppt');
                }
                callback();
            }, 2000 /*ms*/); 
            
            

            Hier das Script zum Steuern der Lampen:

            var net = require('net');
            var clients = [];
            var debug = true;
            
            const switchEffect = 'smooth'; //smooth or sudden
            const switchEffectTime = 1000; // min value 30
            
            const s_dataset = 'javascript.0.Yeelight.Bulb';
            const s_bright = '.bright';
            const s_hue = '.hue';
            const s_colorMode = '.color_mode';
            const s_rgb = '.rgb';
            const s_sat = '.sat';
            const s_power = '.power';
            const s_ct = '.ct';
            const s_name = '.name';
            const s_group = '.group';
            const s_location = '.Location';
            
            function createClient(bulbID, location) {
                var port = (new RegExp(':([0-9]{1,5})')).exec(location)[1];
                var ipAddress = (new RegExp('(?:[0-9]{1,3}\.){3}[0-9]{1,3}')).exec(location)[0];
            	clients[bulbID - 1] = net.createConnection(port, ipAddress);
            	if (debug) console.log('Client erstellt für Lampe ' + bulbID);
            
            	clients[bulbID - 1].on('data', function(data) {
            		if (debug) console.log('Empfangen: ' + data);
            		notificationReceived(bulbID, data)
            	});
            
            	clients[bulbID - 1].on('close', function() {
            	    if (debug) console.log('Verbindung geschlossen');
            	}); 
            
            	clients[bulbID - 1].on('error', function() {
            		if (debug) console.log('Verbindung fehlerhaft');
            	}); 
            }
            
            function killClient(bulbID) {
            	if (clients[bulbID - 1]) {
            		clients[bulbID - 1].destroy();
            		if (debug) console.log('Client beendet für Lampe ' + bulbID);
            	}
            }
            
            function sendBulbCommand(bulbID, changedValue, param1, effect, effectTime) {
            	var command;
                switch (changedValue) {
                    case 'ct':
                        command = '{"id":' + bulbID + ',"method":"set_ct_abx","params":[' + param1 + ', "' + effect + '", ' + effectTime + ']}\r\n';
                        break;
                    case 'rgb':
                        command = '{"id":' + bulbID + ',"method":"set_rgb","params":[' + parseInt(param1.substring(1), 16) + ', "' + effect + '", ' + effectTime + ']}\r\n';
                        break;
                    case 'hue':
            			var sat = getState(s_dataset+ bulbID + '.sat').val;
                        command = '{"id":' + bulbID + ',"method":"set_hsv","params":[' + param1 + ', ' + sat + ', "' + effect + '", ' + effectTime + ']}\r\n';
                        break;
            		case 'sat':
            			var hue = getState(s_dataset + bulbID + '.hue').val;
                        command = '{"id":' + bulbID + ',"method":"set_hsv","params":[' + hue + ', ' + param1 + ', "' + effect + '", ' + effectTime + ']}\r\n';
                        break;	
                    case 'bright':
                        command = '{"id":' + bulbID + ',"method":"set_bright","params":[' + param1 + ', "' + effect + '", ' + effectTime + ']}\r\n';
                        break;
                    case 'power':
                        command = '{"id":' + bulbID + ',"method":"set_power","params":["' + param1 + '", "' + effect + '", ' + effectTime + ']}\r\n';
                        break;
                    case 'toggle':
                        command = '{"id":' + bulbID + ',"method":"toggle","params":[]}\r\n';
                        break;
            		case 'name':
            			command = '{"id":' + bulbID + ',"method":"set_name","params":["' + param1 + '"]}\r\n';
            			break;	
                    default:
                        if (debug) console.log('Unbekanntes Kommando');
                        return;
                }
                if (debug) console.log(command);
            
                var commandClient = new net.Socket();
                //if (debug) console.log(clients[bulbID - 1].remoteAddress);
                //if (debug) console.log(clients[bulbID - 1].remotePort);
            
                var location = getState(s_dataset + bulbID + s_location).val;
                var port = (new RegExp(':([0-9]{1,5})')).exec(location)[1];
                var ipAddress = (new RegExp('(?:[0-9]{1,3}\.){3}[0-9]{1,3}')).exec(location)[0];
            
                try {
                    commandClient.connect(port, ipAddress, function() {
                        commandClient.write(command); 
                        if (debug) console.log("CommandClient Command gesendet");
                    });
                    commandClient.on('data', function(data) {
                        if (debug) console.log('CommandClient empfangen: ' + data);
            	        commandClient.destroy(); // kill client after server's response
            	        if (debug) console.log('CommandClient beendet');
                    });
                    commandClient.on('error', function(ex) {
                        if (debug) console.log('CommandClient Fehler beim Verbinden');
                    });
                } catch (err) {
                    if (debug) console.log('CommandClient Fehler allgemein');
                }
            }
            
            function notificationReceived(bulbID, data) {
            	var notification = JSON.parse(data);
            	if (notification.params.power) {
            		setState(s_dataset + bulbID + s_power, notification.params.power, true);
            	}
            	if (notification.params.bright) {
            		setState(s_dataset + bulbID + s_bright, parseInt(notification.params.bright), true);
            	}
            	if (notification.params.ct) {
            		setState(s_dataset + bulbID + s_ct, parseInt(notification.params.ct), true);
            	}
            	if (notification.params.rgb) {
            		setState(s_dataset + bulbID + s_rgb, '#' + parseInt(notification.params.rgb).toString(16), true);
            	}
            	if (notification.params.hue) {
            		setState(s_dataset + bulbID + s_hue, parseInt(notification.params.hue), true);
            	}
            	if (notification.params.sat) {
            		setState(s_dataset + bulbID + s_sat, parseInt(notification.params.sat), true);
            	}
            	if (notification.params.color_mode) {
            		setState(s_dataset + bulbID + s_colorMode, parseInt(notification.params.color_mode), true);
            	}
            
            }
            
            //Subscribe für Änderung der Datenpunkte
            subscribe({id: /^javascript\.0\.Yeelight.Bulb.*/, change: 'any', ack: false}, function (obj) {
            	var bulbID = (new RegExp('^javascript\.0\.Yeelight.Bulb([0-9]?[0-9])\.')).exec(obj.id)[1];
            	var changedValue = (new RegExp('^javascript\.0\.Yeelight.Bulb[0-9]?[0-9]\.(.*)')).exec(obj.id)[1];
            	if (debug) console.log('Kommando für Lampe ' + bulbID + ' mit ' + changedValue);
            	if (changedValue == 'Location') {
            		killClient(bulbID);
            		createClient(bulbID, obj.state.val);
            	} else {
            		sendBulbCommand(bulbID, changedValue, obj.state.val, switchEffect, switchEffectTime);
            		//Änderung an Gruppe weitergeben
            		var group = parseInt(getState(s_dataset + bulbID + s_group).val);
            		if (group > 0 && changedValue != 'group' && changedValue != 'name') {
            		    if (debug) console.log('Kommando wird an Gruppe weitergegeben');
            		    var i = 1;
            			while (getObject(s_dataset + i + s_group)) {
            				if (debug) console.log('Schleifendurchlauf ' + i);
            				if (i == bulbID) { //sich selbst muss man nicht updaten
            				   if (debug) console.log('Gruppenmitglied bin ich selbst'); 
            				} else if (getState(s_dataset + i + s_group).val == group) { //jemand anderes ist in der gleichen Gruppe
            					sendBulbCommand(i, changedValue, obj.state.val, switchEffect, switchEffectTime);
            					if (debug) console.log('Lampe ' + i + ' in Gruppe ' + group + ' wurde angepasst');
            				} else {
            					if (debug) console.log('Lampe ' + i + ' nicht Mitglied in Gruppe ' + group);   
            				}
            				i++;
            			} 
            		}
            
            	}
            });
            
            1 Reply Last reply Reply Quote 0
            • S
              speedy78 last edited by

              Hallo,

              habe mal wieder ein kleines Problem, oder finde die Lösung leider nicht.

              Befehl mit dem Dimmer geht ohne Probleme jq slider ( Bright )

              Nur leider der RGB Klappt leider nicht. Was mache ich falsch, im LOG

              javascript.0 2017-10-29 13:05:44.864 error at Object. (script.js.Test-Scripts.Yeelight-Steuern:145:7)

              javascript.0 2017-10-29 13:05:44.864 error at sendBulbCommand (script.js.Test-Scripts.Yeelight-Steuern:55:94)

              javascript.0 2017-10-29 13:05:44.864 error Error in callback: TypeError: param1.substring is not a function

              Und Bei Bulb Objekt kann ich zur Zeit immer nur An oder Aus machen kommt drauf an was der letzte Stand ist. Beim ändern setzt er auch immer nur 0 = aus 1 = an. Aber zum Steuern brauch ich doch 0 = off 1 = on

              Habe es schon mit Extrasteuerung versucht, dann kann ich aber nur off Schalten.

              Update:

              An Aus geht jetzt man muss Wert Eintragen min off max on dann geht es. Aber ob das so Richtig ist ?

              Update:

              Nicht RGB muss als Objekt genutzt werden sondern HUE. Wer lesen kann 😉

              1 Reply Last reply Reply Quote 0
              • M
                Mischa last edited by

                Hallo zusammen,

                ich habe vor zwei Tagen das erste Mal iobroker installiert und mich scheinbar direkt einem komplexeren Thema gewidmet ohne überhaupt auch nur die Basics zu kennen.

                Gibt es eine Schritt für Schritt Anleitung, wie ich eine Yeelight Birne /LED Streifen in iobroker einfügen bzw. steuern kann?

                Bis jetzt habe ich die zwei Skripte kopiert und in dem Reiter "Skripte" -> "global" -> zwei neue Skripte angelegt, in die ich eben die in diesem Thread vorgestellten Skripte kopiert habe.

                Nun weiß ich allerdings nicht wo ich weiter machen soll. In "Objects" und auch in "Instanzen" finde ich die Birnen nicht.

                Danke schonmal für Eure Hilfe!

                1 Reply Last reply Reply Quote 0
                • arteck
                  arteck Developer Most Active last edited by

                  @Mischa:

                  Hallo zusammen,

                  ich habe vor zwei Tagen das erste Mal iobroker installiert und mich scheinbar direkt einem komplexeren Thema gewidmet ohne überhaupt auch nur die Basics zu kennen.

                  Gibt es eine Schritt für Schritt Anleitung, wie ich eine Yeelight Birne /LED Streifen in iobroker einfügen bzw. steuern kann?

                  Bis jetzt habe ich die zwei Skripte kopiert und in dem Reiter "Skripte" -> "global" -> zwei neue Skripte angelegt, in die ich eben die in diesem Thread vorgestellten Skripte kopiert habe.

                  Nun weiß ich allerdings nicht wo ich weiter machen soll. In "Objects" und auch in "Instanzen" finde ich die Birnen nicht.

                  Danke schonmal für Eure Hilfe! `

                  dann lösche diese wieder aus dem "global" den da gehören die nicht hin…

                  erstelle leider einen neuen Ordner..

                  und damit kannst du anfangen 8-)

                  1 Reply Last reply Reply Quote 0
                  • F
                    FlyingM last edited by

                    Hallo Zusammen,

                    ich habe die letzte Version von Magda bei mir implementiert und Bulb1 wurde erfolgreich gefunden und alle Objekte angelegt.

                    Wenn ich nun das Widget importieren will, passiert nichts. Kein Fehler, kein Import. Liegt das evtl. daran, dass ich nur eine Lampe habe? Ich denke der Import müsste dennoch funktionieren oder?

                    Hat jemand ein Widget, welches auf die letzte Version angepasst ist?

                    Ich habe das erste getestet und die Object ID's angepasst. Lampe geht zwar aus aber nicht mehr an 😄

                    Log beim klicken auf "off":

                    javascript.0	2017-10-31 10:40:06.787	info	script.js.Control_Yeelights: CommandClient beendet
                    javascript.0	2017-10-31 10:40:06.786	info	script.js.Control_Yeelights: CommandClient empfangen: {"id":1, "result":["ok"]}
                    javascript.0	2017-10-31 10:40:06.781	info	script.js.Control_Yeelights: CommandClient Command gesendet
                    javascript.0	2017-10-31 10:40:06.778	warn	Object "javascript.0.Yeelight.Bulb2.group" does not exist
                    javascript.0	2017-10-31 10:40:06.778	info	script.js.Control_Yeelights: Gruppenmitglied bin ich selbst
                    javascript.0	2017-10-31 10:40:06.778	info	script.js.Control_Yeelights: Schleifendurchlauf 1
                    javascript.0	2017-10-31 10:40:06.778	info	script.js.Control_Yeelights: Kommando wird an Gruppe weitergegeben
                    javascript.0	2017-10-31 10:40:06.777	info	script.js.Control_Yeelights: {"id":1,"method":"set_power","params":["0", "smooth", 1000]}
                    javascript.0	2017-10-31 10:40:06.777	info	script.js.Control_Yeelights: Kommando für Lampe 1 mit power
                    

                    Log beim klicken auf "on"

                    javascript.0	2017-10-31 10:40:54.090	info	script.js.Control_Yeelights: CommandClient beendet
                    javascript.0	2017-10-31 10:40:54.088	info	script.js.Control_Yeelights: CommandClient empfangen: {"id":1, "result":["ok"]}
                    javascript.0	2017-10-31 10:40:54.082	info	script.js.Control_Yeelights: CommandClient Command gesendet
                    javascript.0	2017-10-31 10:40:53.679	warn	Object "javascript.0.Yeelight.Bulb2.group" does not exist
                    javascript.0	2017-10-31 10:40:53.679	info	script.js.Control_Yeelights: Gruppenmitglied bin ich selbst
                    javascript.0	2017-10-31 10:40:53.679	info	script.js.Control_Yeelights: Schleifendurchlauf 1
                    javascript.0	2017-10-31 10:40:53.679	info	script.js.Control_Yeelights: Kommando wird an Gruppe weitergegeben
                    javascript.0	2017-10-31 10:40:53.678	info	script.js.Control_Yeelights: {"id":1,"method":"set_power","params":["1", "smooth", 1000]}
                    javascript.0	2017-10-31 10:40:53.677	info	script.js.Control_Yeelights: Kommando für Lampe 1 mit power
                    

                    Vielen Dank & Grüsse

                    Michael

                    1 Reply Last reply Reply Quote 0
                    • F
                      FlyingM last edited by

                      Problem gefunden..

                      Er hatte als wert immer True oder False anstatt on und off gesetzt somit ging der Befehl nicht korrekt an die Yeelight.

                      Funktioniert im VIS und .Mobile jetzt problemlos.

                      Über Szenen, setzt er aber immer noch true und false. Hat jemand eine Idee wie ich das umbauen kann?

                      VG

                      Michael

                      @FlyingM:

                      Hallo Zusammen,

                      ich habe die letzte Version von Magda bei mir implementiert und Bulb1 wurde erfolgreich gefunden und alle Objekte angelegt.

                      Wenn ich nun das Widget importieren will, passiert nichts. Kein Fehler, kein Import. Liegt das evtl. daran, dass ich nur eine Lampe habe? Ich denke der Import müsste dennoch funktionieren oder?

                      Hat jemand ein Widget, welches auf die letzte Version angepasst ist?

                      Ich habe das erste getestet und die Object ID's angepasst. Lampe geht zwar aus aber nicht mehr an 😄

                      Log beim klicken auf "off":

                      javascript.0	2017-10-31 10:40:06.787	info	script.js.Control_Yeelights: CommandClient beendet
                      javascript.0	2017-10-31 10:40:06.786	info	script.js.Control_Yeelights: CommandClient empfangen: {"id":1, "result":["ok"]}
                      javascript.0	2017-10-31 10:40:06.781	info	script.js.Control_Yeelights: CommandClient Command gesendet
                      javascript.0	2017-10-31 10:40:06.778	warn	Object "javascript.0.Yeelight.Bulb2.group" does not exist
                      javascript.0	2017-10-31 10:40:06.778	info	script.js.Control_Yeelights: Gruppenmitglied bin ich selbst
                      javascript.0	2017-10-31 10:40:06.778	info	script.js.Control_Yeelights: Schleifendurchlauf 1
                      javascript.0	2017-10-31 10:40:06.778	info	script.js.Control_Yeelights: Kommando wird an Gruppe weitergegeben
                      javascript.0	2017-10-31 10:40:06.777	info	script.js.Control_Yeelights: {"id":1,"method":"set_power","params":["0", "smooth", 1000]}
                      javascript.0	2017-10-31 10:40:06.777	info	script.js.Control_Yeelights: Kommando für Lampe 1 mit power
                      

                      Log beim klicken auf "on"

                      javascript.0	2017-10-31 10:40:54.090	info	script.js.Control_Yeelights: CommandClient beendet
                      javascript.0	2017-10-31 10:40:54.088	info	script.js.Control_Yeelights: CommandClient empfangen: {"id":1, "result":["ok"]}
                      javascript.0	2017-10-31 10:40:54.082	info	script.js.Control_Yeelights: CommandClient Command gesendet
                      javascript.0	2017-10-31 10:40:53.679	warn	Object "javascript.0.Yeelight.Bulb2.group" does not exist
                      javascript.0	2017-10-31 10:40:53.679	info	script.js.Control_Yeelights: Gruppenmitglied bin ich selbst
                      javascript.0	2017-10-31 10:40:53.679	info	script.js.Control_Yeelights: Schleifendurchlauf 1
                      javascript.0	2017-10-31 10:40:53.679	info	script.js.Control_Yeelights: Kommando wird an Gruppe weitergegeben
                      javascript.0	2017-10-31 10:40:53.678	info	script.js.Control_Yeelights: {"id":1,"method":"set_power","params":["1", "smooth", 1000]}
                      javascript.0	2017-10-31 10:40:53.677	info	script.js.Control_Yeelights: Kommando für Lampe 1 mit power
                      

                      Vielen Dank & Grüsse

                      Michael `

                      1 Reply Last reply Reply Quote 0
                      • F
                        FlyingM last edited by

                        @FlyingM:

                        Problem gefunden..

                        Er hatte als wert immer True oder False anstatt on und off gesetzt somit ging der Befehl nicht korrekt an die Yeelight.

                        Funktioniert im VIS und .Mobile jetzt problemlos.

                        Über Szenen, setzt er aber immer noch true und false. Hat jemand eine Idee wie ich das umbauen kann?

                        VG

                        Michael

                        @FlyingM:

                        Hallo Zusammen,

                        ich habe die letzte Version von Magda bei mir implementiert und Bulb1 wurde erfolgreich gefunden und alle Objekte angelegt.

                        Wenn ich nun das Widget importieren will, passiert nichts. Kein Fehler, kein Import. Liegt das evtl. daran, dass ich nur eine Lampe habe? Ich denke der Import müsste dennoch funktionieren oder?

                        Hat jemand ein Widget, welches auf die letzte Version angepasst ist?

                        Ich habe das erste getestet und die Object ID's angepasst. Lampe geht zwar aus aber nicht mehr an 😄

                        Log beim klicken auf "off":

                        javascript.0	2017-10-31 10:40:06.787	info	script.js.Control_Yeelights: CommandClient beendet
                        javascript.0	2017-10-31 10:40:06.786	info	script.js.Control_Yeelights: CommandClient empfangen: {"id":1, "result":["ok"]}
                        javascript.0	2017-10-31 10:40:06.781	info	script.js.Control_Yeelights: CommandClient Command gesendet
                        javascript.0	2017-10-31 10:40:06.778	warn	Object "javascript.0.Yeelight.Bulb2.group" does not exist
                        javascript.0	2017-10-31 10:40:06.778	info	script.js.Control_Yeelights: Gruppenmitglied bin ich selbst
                        javascript.0	2017-10-31 10:40:06.778	info	script.js.Control_Yeelights: Schleifendurchlauf 1
                        javascript.0	2017-10-31 10:40:06.778	info	script.js.Control_Yeelights: Kommando wird an Gruppe weitergegeben
                        javascript.0	2017-10-31 10:40:06.777	info	script.js.Control_Yeelights: {"id":1,"method":"set_power","params":["0", "smooth", 1000]}
                        javascript.0	2017-10-31 10:40:06.777	info	script.js.Control_Yeelights: Kommando für Lampe 1 mit power
                        

                        Log beim klicken auf "on"

                        javascript.0	2017-10-31 10:40:54.090	info	script.js.Control_Yeelights: CommandClient beendet
                        javascript.0	2017-10-31 10:40:54.088	info	script.js.Control_Yeelights: CommandClient empfangen: {"id":1, "result":["ok"]}
                        javascript.0	2017-10-31 10:40:54.082	info	script.js.Control_Yeelights: CommandClient Command gesendet
                        javascript.0	2017-10-31 10:40:53.679	warn	Object "javascript.0.Yeelight.Bulb2.group" does not exist
                        javascript.0	2017-10-31 10:40:53.679	info	script.js.Control_Yeelights: Gruppenmitglied bin ich selbst
                        javascript.0	2017-10-31 10:40:53.679	info	script.js.Control_Yeelights: Schleifendurchlauf 1
                        javascript.0	2017-10-31 10:40:53.679	info	script.js.Control_Yeelights: Kommando wird an Gruppe weitergegeben
                        javascript.0	2017-10-31 10:40:53.678	info	script.js.Control_Yeelights: {"id":1,"method":"set_power","params":["1", "smooth", 1000]}
                        javascript.0	2017-10-31 10:40:53.677	info	script.js.Control_Yeelights: Kommando für Lampe 1 mit power
                        

                        Vielen Dank & Grüsse

                        Michael

                        Auch erledigt. Habe im Script die Variable param1 abgefragt, wenn sie True ist soll er sie auf on wechseln. Der Befehl geht dann richtig an die yeelights.

                        1 Reply Last reply Reply Quote 0
                        • M
                          Magda last edited by

                          Die Steuerung des Yeelight Smart Strip funktioniert mit dem Script auch sehr gut, am Wochenende getestet.

                          Und falls es jemand wissen will, an den Schnittmarken und den Lötstellen kann man den Strip auftrennen und auch neu verbinden mit bspw. LED Eckverbindern. Der Strip hat 4 Pins und etwas tricky ist die transparente Isolierschicht unter der weißen Isolierschicht, die man abkratzen muss um Kontakt zu bekommen.

                          1 Reply Last reply Reply Quote 0
                          • S
                            Spaceball last edited by

                            Guten Abend,

                            in meiner Wohnung sind einige Yeelight RGBW als auch Strips verbaut. Bisher nutze ich die Yeelight App bzw. Mi Home App um diese zu steuern. Durch den Alexa Skill auch recht komfortabel.

                            Nun war mein nächster Schritt, die Yeelights in io broker zu implementieren. Dank dem Skript von Lenny.CB auch absolut problemlos. Auch die Visualisierung funktioniert hervorragend.

                            Was leider absolut nicht hervorragend funktioniert ist die Alexa Anbindung. Der Cloud Adapter funktioniert bestens, da ich auch andere Geräte über io broker mit Alexa steuern kann. Nu die Yeelight zicken rum.

                            Meine Installationsschritte:

                            1. In Yeelight App RGBW-Birnen bzw, Strips eingepflegt

                            2. In der Yeelight App die LAN Steuerung aktiviert, somit werden die IP´s in der Fritzbox sichtbar und die Steuerung über Drittanbieter möglich

                            3. Objekte angelegt. Bis auf das "on" Objekt, bei dem es sich um true/false handelt, sind die Objekte alle Zeichenketten. Dabei habe ich die gleiche

                            Ordnerstruktur wie Lenny.CB

                            4. Skripte angelegt. Für jeden Befehl einen eigenen Skript. Die Skripte sind 1zu1 von Lenny.CB

                            5. Visualisierung für die io broker app

                            6. den Objekten im raw-Modus "smartName" : "Lampe", gegeben. Dabei habe ich allen Objekten, die zu einer Lampe gehören (on, dimm, hsv) den

                            gleichen smartName gegeben

                            7. Objekte werden unter Smarte Geräte im Cloud Adapter angezeigt

                            8. Alexa nach neuen Geräten suchen lassen….diese werden auch problemlos erkannt

                            tja, und dann hört der Spaß leider auf. Manchmal lassen sich die Lampen in der Alexa App ein und ausschalten, meist jedoch nicht. Per Sprachbefehl erst recht nicht. Von "Alexa schalte Lampe auf Rot" oder "Alexa, dimme Lampe auf 25%" ganz zu schweigen 😕

                            Hätte da jemand eine Idee wie ich das realisieren kann?

                            Jetzt könnte man ja sagen, na dann steuere die Lampen doch mit dem Alexa skill von Yeelight. Das geht leider nicht, weil die Lampen im Mi Home Ökosystem eingepflegt sind und der mit dem Server Main China läuft (um das Gateway und den Magic Cube nutzen zu können). Für den Alexa Skill müsste ich die Lampen auf dem Singapore Server laufen lassen, da wiederum zickt Mi Home rum.

                            Beste Grüße,

                            Spaceball

                            Edit: Das Schalten der Yeelights über Alexa konnte ich lösen, indem ich anstatt dem on/off Befehl den toggle Befehl als separaten Skript (nur für Alexa) nutze (Funktioniert Perfekt). Der On/off Befehl funktioniert weiterhin bei der Visualisierung (also Widget) hervorragend.

                            Edit: Den on/off Befehl habe ich komplett aus dem Sortiment genommen, da sich Alexa mit dem toggle Befehl und per VIS dann on/off Befehl überschlagen. Nun nutze ich für Alexa und VIS den toggle Befehl und das läuft super. Nur die Helligkeitsregulierung als auch Farbwechsel funktionieren nur per VIS (als auch Terminal), jedoch nicht über Alexa. Wenn ich das dim Objekt (als Zahl von 0 bis 100 %) im Cloud Adapter einpflege, wird dieses auch nicht als Dimmer erkannt....auch nicht bei Alexa (sonst hat man bei Alexa unter den An und Aus Button eine Auswahl an prozentualen Helligkeiten).

                            1 Reply Last reply Reply Quote 0
                            • S
                              Snatch last edited by

                              Hallo zusammen,

                              ich habe es nun doch hinbekommen. Vielen Dank dafür.

                              Eine Frage noch. In den Objekten tauchen die Einstellungen nun unter "Javascript.0 -> Yeelight -> Blub1" auf. Kann man dass javascript.0 auch umbenennen?

                              Grüße

                              1 Reply Last reply Reply Quote 0
                              • C
                                Chris76 last edited by

                                Ich fände es auch cool, wenn es einen nativen Adapter geben würde. Oder ist es noch ein großer Schritt?

                                1 Reply Last reply Reply Quote 0
                                • arteck
                                  arteck Developer Most Active last edited by

                                  @Snatch:

                                  Hallo zusammen,

                                  ich habe es nun doch hinbekommen. Vielen Dank dafür.

                                  Eine Frage noch. In den Objekten tauchen die Einstellungen nun unter "Javascript.0 -> Yeelight -> Blub1" auf. Kann man dass javascript.0 auch umbenennen?

                                  Grüße `

                                  kurz und knapp … nö..

                                  1 Reply Last reply Reply Quote 0
                                  • D
                                    dali3 last edited by

                                    @FlyingM

                                    Sorry bin blutiger Anfänger…

                                    Kannst du mir den Code schicken für das Ändern von True auf ON?

                                    Vielen Dank

                                    @FlyingM:

                                    @FlyingM:

                                    Problem gefunden..

                                    Er hatte als wert immer True oder False anstatt on und off gesetzt somit ging der Befehl nicht korrekt an die Yeelight.

                                    Funktioniert im VIS und .Mobile jetzt problemlos.

                                    Über Szenen, setzt er aber immer noch true und false. Hat jemand eine Idee wie ich das umbauen kann?

                                    VG

                                    Michael

                                    @FlyingM:

                                    Hallo Zusammen,

                                    ich habe die letzte Version von Magda bei mir implementiert und Bulb1 wurde erfolgreich gefunden und alle Objekte angelegt.

                                    Wenn ich nun das Widget importieren will, passiert nichts. Kein Fehler, kein Import. Liegt das evtl. daran, dass ich nur eine Lampe habe? Ich denke der Import müsste dennoch funktionieren oder?

                                    Hat jemand ein Widget, welches auf die letzte Version angepasst ist?

                                    Ich habe das erste getestet und die Object ID's angepasst. Lampe geht zwar aus aber nicht mehr an 😄

                                    Log beim klicken auf "off":

                                    javascript.0	2017-10-31 10:40:06.787	info	script.js.Control_Yeelights: CommandClient beendet
                                    javascript.0	2017-10-31 10:40:06.786	info	script.js.Control_Yeelights: CommandClient empfangen: {"id":1, "result":["ok"]}
                                    javascript.0	2017-10-31 10:40:06.781	info	script.js.Control_Yeelights: CommandClient Command gesendet
                                    javascript.0	2017-10-31 10:40:06.778	warn	Object "javascript.0.Yeelight.Bulb2.group" does not exist
                                    javascript.0	2017-10-31 10:40:06.778	info	script.js.Control_Yeelights: Gruppenmitglied bin ich selbst
                                    javascript.0	2017-10-31 10:40:06.778	info	script.js.Control_Yeelights: Schleifendurchlauf 1
                                    javascript.0	2017-10-31 10:40:06.778	info	script.js.Control_Yeelights: Kommando wird an Gruppe weitergegeben
                                    javascript.0	2017-10-31 10:40:06.777	info	script.js.Control_Yeelights: {"id":1,"method":"set_power","params":["0", "smooth", 1000]}
                                    javascript.0	2017-10-31 10:40:06.777	info	script.js.Control_Yeelights: Kommando für Lampe 1 mit power
                                    

                                    Log beim klicken auf "on"

                                    javascript.0	2017-10-31 10:40:54.090	info	script.js.Control_Yeelights: CommandClient beendet
                                    javascript.0	2017-10-31 10:40:54.088	info	script.js.Control_Yeelights: CommandClient empfangen: {"id":1, "result":["ok"]}
                                    javascript.0	2017-10-31 10:40:54.082	info	script.js.Control_Yeelights: CommandClient Command gesendet
                                    javascript.0	2017-10-31 10:40:53.679	warn	Object "javascript.0.Yeelight.Bulb2.group" does not exist
                                    javascript.0	2017-10-31 10:40:53.679	info	script.js.Control_Yeelights: Gruppenmitglied bin ich selbst
                                    javascript.0	2017-10-31 10:40:53.679	info	script.js.Control_Yeelights: Schleifendurchlauf 1
                                    javascript.0	2017-10-31 10:40:53.679	info	script.js.Control_Yeelights: Kommando wird an Gruppe weitergegeben
                                    javascript.0	2017-10-31 10:40:53.678	info	script.js.Control_Yeelights: {"id":1,"method":"set_power","params":["1", "smooth", 1000]}
                                    javascript.0	2017-10-31 10:40:53.677	info	script.js.Control_Yeelights: Kommando für Lampe 1 mit power
                                    

                                    Vielen Dank & Grüsse

                                    Michael

                                    Auch erledigt. Habe im Script die Variable param1 abgefragt, wenn sie True ist soll er sie auf on wechseln. Der Befehl geht dann richtig an die yeelights. `

                                    1 Reply Last reply Reply Quote 0
                                    • H
                                      Hardy007 last edited by

                                      Hallo … Möchte meine LED`s Yeelight alle über den IO broker ansprechen und in die VIS einbinden..

                                      Es werden nicht alle LED erkannt und sind steuerbar. ( Die ich vor 6 Wochen per App eingebunden habe funktionieren )

                                      Die ich gestern noch hinzugefügt habe funktionieren nicht ...

                                      Wer hat mir eine Tip ( Port ? )

                                      ( Diese LED geht super an. Eingepflegt vor 6 Wochen )

                                      echo -ne '{ "id": 1, "method": "set_power", "params":["on", "smooth", 500]} \r\n' | nc -w1 192.168.178.81 55443

                                      ( Diese LED geht nicht )

                                      echo -ne '{ "id": 1, "method": "set_power", "params":["on", "smooth", 500]} \r\n' | nc -w1 192.168.178.91 55443

                                      1 Reply Last reply Reply Quote 0
                                      • S
                                        Snatch last edited by

                                        Kannst du mir erklären wo ich das machen kann? Ich habe nämlich das gleiche Problem. Aus geht sie, aber nicht mehr an.

                                        Danke und Gruß.

                                        @FlyingM:

                                        @FlyingM:

                                        Problem gefunden..

                                        Er hatte als wert immer True oder False anstatt on und off gesetzt somit ging der Befehl nicht korrekt an die Yeelight.

                                        Funktioniert im VIS und .Mobile jetzt problemlos.

                                        Über Szenen, setzt er aber immer noch true und false. Hat jemand eine Idee wie ich das umbauen kann?

                                        VG

                                        Michael

                                        @FlyingM:

                                        Hallo Zusammen,

                                        ich habe die letzte Version von Magda bei mir implementiert und Bulb1 wurde erfolgreich gefunden und alle Objekte angelegt.

                                        Wenn ich nun das Widget importieren will, passiert nichts. Kein Fehler, kein Import. Liegt das evtl. daran, dass ich nur eine Lampe habe? Ich denke der Import müsste dennoch funktionieren oder?

                                        Hat jemand ein Widget, welches auf die letzte Version angepasst ist?

                                        Ich habe das erste getestet und die Object ID's angepasst. Lampe geht zwar aus aber nicht mehr an 😄

                                        Log beim klicken auf "off":

                                        javascript.0	2017-10-31 10:40:06.787	info	script.js.Control_Yeelights: CommandClient beendet
                                        javascript.0	2017-10-31 10:40:06.786	info	script.js.Control_Yeelights: CommandClient empfangen: {"id":1, "result":["ok"]}
                                        javascript.0	2017-10-31 10:40:06.781	info	script.js.Control_Yeelights: CommandClient Command gesendet
                                        javascript.0	2017-10-31 10:40:06.778	warn	Object "javascript.0.Yeelight.Bulb2.group" does not exist
                                        javascript.0	2017-10-31 10:40:06.778	info	script.js.Control_Yeelights: Gruppenmitglied bin ich selbst
                                        javascript.0	2017-10-31 10:40:06.778	info	script.js.Control_Yeelights: Schleifendurchlauf 1
                                        javascript.0	2017-10-31 10:40:06.778	info	script.js.Control_Yeelights: Kommando wird an Gruppe weitergegeben
                                        javascript.0	2017-10-31 10:40:06.777	info	script.js.Control_Yeelights: {"id":1,"method":"set_power","params":["0", "smooth", 1000]}
                                        javascript.0	2017-10-31 10:40:06.777	info	script.js.Control_Yeelights: Kommando für Lampe 1 mit power
                                        

                                        Log beim klicken auf "on"

                                        javascript.0	2017-10-31 10:40:54.090	info	script.js.Control_Yeelights: CommandClient beendet
                                        javascript.0	2017-10-31 10:40:54.088	info	script.js.Control_Yeelights: CommandClient empfangen: {"id":1, "result":["ok"]}
                                        javascript.0	2017-10-31 10:40:54.082	info	script.js.Control_Yeelights: CommandClient Command gesendet
                                        javascript.0	2017-10-31 10:40:53.679	warn	Object "javascript.0.Yeelight.Bulb2.group" does not exist
                                        javascript.0	2017-10-31 10:40:53.679	info	script.js.Control_Yeelights: Gruppenmitglied bin ich selbst
                                        javascript.0	2017-10-31 10:40:53.679	info	script.js.Control_Yeelights: Schleifendurchlauf 1
                                        javascript.0	2017-10-31 10:40:53.679	info	script.js.Control_Yeelights: Kommando wird an Gruppe weitergegeben
                                        javascript.0	2017-10-31 10:40:53.678	info	script.js.Control_Yeelights: {"id":1,"method":"set_power","params":["1", "smooth", 1000]}
                                        javascript.0	2017-10-31 10:40:53.677	info	script.js.Control_Yeelights: Kommando für Lampe 1 mit power
                                        

                                        Vielen Dank & Grüsse

                                        Michael

                                        Auch erledigt. Habe im Script die Variable param1 abgefragt, wenn sie True ist soll er sie auf on wechseln. Der Befehl geht dann richtig an die yeelights. `

                                        1 Reply Last reply Reply Quote 0
                                        • S
                                          Snatch last edited by

                                          Hallo,

                                          das Script funktioniert 1a. Ich habe nur ein Problem. Wenn ich im Cloudadapter "power" wähle, geht die Lampe per Alexa aus aber nicht mehr an. Wenn ich eine Szene dafür erstelle und statt "TRUE/FALSE" eben "ON/OFF" als befehl angebe, geht alles. Im Cloud-Adapter selbst kann ich ja soetwas nicht ändern. Daher der Umweg über eine Szene.

                                          Dumm ist nur, dass wenn ich in Vis meinen SliderButton wähle und das auch steuern will, dass dieser auch "True/False" sendet und das wiederum nur aus und nicht mehr an geht. Sobald der Button in Vis eingebaut ist, geht auch Alexa nicht mehr, weil sich das irgend wie überschneidet. Sage ich dann "Lampe an", geht sie kurz an und gleich wieder aus.

                                          Daher meine Frage. Was muss ich im Script ändern, dass immer statt "True/False" eben "On/Off" verwendet wird?

                                          Grüße

                                          1 Reply Last reply Reply Quote 0
                                          • D
                                            dali3 last edited by

                                            Hier das angepasst Script für On/Off:

                                            var net = require('net');
                                            var clients = [];
                                            var debug = true;
                                            
                                            const switchEffect = 'smooth'; //smooth or sudden
                                            const switchEffectTime = 1000; // min value 30
                                            
                                            const s_dataset = 'javascript.0.Yeelight.Bulb';
                                            const s_bright = '.bright';
                                            const s_hue = '.hue';
                                            const s_colorMode = '.color_mode';
                                            const s_rgb = '.rgb';
                                            const s_sat = '.sat';
                                            const s_power = '.power';
                                            const s_ct = '.ct';
                                            const s_name = '.name';
                                            const s_group = '.group';
                                            const s_location = '.Location';
                                            
                                            function createClient(bulbID, location) {
                                                var port = (new RegExp(':([0-9]{1,5})')).exec(location)[1];
                                                var ipAddress = (new RegExp('(?:[0-9]{1,3}\.){3}[0-9]{1,3}')).exec(location)[0];
                                               clients[bulbID - 1] = net.createConnection(port, ipAddress);
                                               if (debug) console.log('Client erstellt für Lampe ' + bulbID);
                                            
                                               clients[bulbID - 1].on('data', function(data) {
                                                  if (debug) console.log('Empfangen: ' + data);
                                                  notificationReceived(bulbID, data)
                                               });
                                            
                                               clients[bulbID - 1].on('close', function() {
                                                   if (debug) console.log('Verbindung geschlossen');
                                               }); 
                                            
                                               clients[bulbID - 1].on('error', function() {
                                                  if (debug) console.log('Verbindung fehlerhaft');
                                               }); 
                                            }
                                            
                                            function killClient(bulbID) {
                                               if (clients[bulbID - 1]) {
                                                  clients[bulbID - 1].destroy();
                                                  if (debug) console.log('Client beendet für Lampe ' + bulbID);
                                               }
                                            }
                                            
                                            function sendBulbCommand(bulbID, changedValue, param1, effect, effectTime) {
                                               var command;
                                                switch (changedValue) {
                                                    case 'ct':
                                                        command = '{"id":' + bulbID + ',"method":"set_ct_abx","params":[' + param1 + ', "' + effect + '", ' + effectTime + ']}\r\n';
                                                        break;
                                                    case 'rgb':
                                                        command = '{"id":' + bulbID + ',"method":"set_rgb","params":[' + parseInt(param1.substring(1), 16) + ', "' + effect + '", ' + effectTime + ']}\r\n';
                                                        break;
                                                    case 'hue':
                                                     var sat = getState(s_dataset+ bulbID + '.sat').val;
                                                        command = '{"id":' + bulbID + ',"method":"set_hsv","params":[' + param1 + ', ' + sat + ', "' + effect + '", ' + effectTime + ']}\r\n';
                                                        break;
                                                  case 'sat':
                                                     var hue = getState(s_dataset + bulbID + '.hue').val;
                                                        command = '{"id":' + bulbID + ',"method":"set_hsv","params":[' + hue + ', ' + param1 + ', "' + effect + '", ' + effectTime + ']}\r\n';
                                                        break;   
                                                    case 'bright':
                                                        command = '{"id":' + bulbID + ',"method":"set_bright","params":[' + param1 + ', "' + effect + '", ' + effectTime + ']}\r\n';
                                                        break;
                                                    case 'power':
                                            			var onOff = "";
                                            			if(param1==1){
                                            				onOff = "on"
                                            			} else {
                                            				onOff = "off"
                                            			}
                                                        command = '{"id":' + bulbID + ',"method":"set_power","params":["' + onOff + '", "' + effect + '", ' + effectTime + ']}\r\n';
                                                        break;
                                                    case 'toggle':
                                                        command = '{"id":' + bulbID + ',"method":"toggle","params":[]}\r\n';
                                                        break;
                                                  case 'name':
                                                     command = '{"id":' + bulbID + ',"method":"set_name","params":["' + param1 + '"]}\r\n';
                                                     break;   
                                                    default:
                                                        if (debug) console.log('Unbekanntes Kommando');
                                                        return;
                                                }
                                                if (debug) console.log(command);
                                            
                                                var commandClient = new net.Socket();
                                                //if (debug) console.log(clients[bulbID - 1].remoteAddress);
                                                //if (debug) console.log(clients[bulbID - 1].remotePort);
                                            
                                                var location = getState(s_dataset + bulbID + s_location).val;
                                                var port = (new RegExp(':([0-9]{1,5})')).exec(location)[1];
                                                var ipAddress = (new RegExp('(?:[0-9]{1,3}\.){3}[0-9]{1,3}')).exec(location)[0];
                                            
                                                try {
                                                    commandClient.connect(port, ipAddress, function() {
                                                        commandClient.write(command); 
                                                        if (debug) console.log("CommandClient Command gesendet");
                                                    });
                                                    commandClient.on('data', function(data) {
                                                        if (debug) console.log('CommandClient empfangen: ' + data);
                                                       commandClient.destroy(); // kill client after server's response
                                                       if (debug) console.log('CommandClient beendet');
                                                    });
                                                    commandClient.on('error', function(ex) {
                                                        if (debug) console.log('CommandClient Fehler beim Verbinden');
                                                    });
                                                } catch (err) {
                                                    if (debug) console.log('CommandClient Fehler allgemein');
                                                }
                                            }
                                            
                                            function notificationReceived(bulbID, data) {
                                               var notification = JSON.parse(data);
                                               if (notification.params.power) {
                                                  setState(s_dataset + bulbID + s_power, notification.params.power, true);
                                               }
                                               if (notification.params.bright) {
                                                  setState(s_dataset + bulbID + s_bright, parseInt(notification.params.bright), true);
                                               }
                                               if (notification.params.ct) {
                                                  setState(s_dataset + bulbID + s_ct, parseInt(notification.params.ct), true);
                                               }
                                               if (notification.params.rgb) {
                                                  setState(s_dataset + bulbID + s_rgb, '#' + parseInt(notification.params.rgb).toString(16), true);
                                               }
                                               if (notification.params.hue) {
                                                  setState(s_dataset + bulbID + s_hue, parseInt(notification.params.hue), true);
                                               }
                                               if (notification.params.sat) {
                                                  setState(s_dataset + bulbID + s_sat, parseInt(notification.params.sat), true);
                                               }
                                               if (notification.params.color_mode) {
                                                  setState(s_dataset + bulbID + s_colorMode, parseInt(notification.params.color_mode), true);
                                               }
                                            
                                            }
                                            
                                            //Subscribe für Änderung der Datenpunkte
                                            subscribe({id: /^javascript\.0\.Yeelight.Bulb.*/, change: 'any', ack: false}, function (obj) {
                                               var bulbID = (new RegExp('^javascript\.0\.Yeelight.Bulb([0-9]?[0-9])\.')).exec(obj.id)[1];
                                               var changedValue = (new RegExp('^javascript\.0\.Yeelight.Bulb[0-9]?[0-9]\.(.*)')).exec(obj.id)[1];
                                               if (debug) console.log('Kommando für Lampe ' + bulbID + ' mit ' + changedValue);
                                               if (changedValue == 'Location') {
                                                  killClient(bulbID);
                                                  createClient(bulbID, obj.state.val);
                                               } else {
                                                  sendBulbCommand(bulbID, changedValue, obj.state.val, switchEffect, switchEffectTime);
                                                  //Änderung an Gruppe weitergeben
                                                  var group = parseInt(getState(s_dataset + bulbID + s_group).val);
                                                  if (group > 0 && changedValue != 'group' && changedValue != 'name') {
                                                      if (debug) console.log('Kommando wird an Gruppe weitergegeben');
                                                      var i = 1;
                                                     while (getObject(s_dataset + i + s_group)) {
                                                        if (debug) console.log('Schleifendurchlauf ' + i);
                                                        if (i == bulbID) { //sich selbst muss man nicht updaten
                                                           if (debug) console.log('Gruppenmitglied bin ich selbst'); 
                                                        } else if (getState(s_dataset + i + s_group).val == group) { //jemand anderes ist in der gleichen Gruppe
                                                           sendBulbCommand(i, changedValue, obj.state.val, switchEffect, switchEffectTime);
                                                           if (debug) console.log('Lampe ' + i + ' in Gruppe ' + group + ' wurde angepasst');
                                                        } else {
                                                           if (debug) console.log('Lampe ' + i + ' nicht Mitglied in Gruppe ' + group);   
                                                        }
                                                        i++;
                                                     } 
                                                  }
                                            
                                               }
                                            });
                                            

                                            Bin jedoch ein Laie und mit hilfe von "google" entsprechend angepasst.

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            828
                                            Online

                                            31.7k
                                            Users

                                            79.6k
                                            Topics

                                            1.3m
                                            Posts

                                            61
                                            277
                                            74223
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo