Super, vielen Dank! Ich werde die Lampen erstmal über einfache Scripte für Szenen einbinden, die dann die jeweiligen Befehle auf die Devices publishen. Melde dich gerne, wenn du noch Debugs brauchst, ich etwas testen soll oder sowas!
Gruß
Super, vielen Dank! Ich werde die Lampen erstmal über einfache Scripte für Szenen einbinden, die dann die jeweiligen Befehle auf die Devices publishen. Melde dich gerne, wenn du noch Debugs brauchst, ich etwas testen soll oder sowas!
Gruß
Kannst du was zu den unterschiedlichen Modi sagen?
Grüße,
Kai
Hi,
das sind meines Wissens nach verschieden, vorprogrammierte „Disco“ Modi. Sprich z.B. vorprogrammierte Lauflichter etc., die zusätzlich in der Geschwindigkeit variiert werden können. Soweit ich weiß, unterstützen das aber nicht alle MiLight Geräte. Ich habe es noch nie genutzt, da ich eher ein Fan statischer Beleuchtung bin. Für mich wären die Modi dementsprechend nicht relevant, oder meintest du andere Modi?
Gruß
Sorry, ich meine den device_type.
Gibt es da eine vernünftige Übersicht für?
Grüße,
Kai
Hi,
ich habe dazu mal eine Übersicht angehängt. Das heißt für die Modi konkret:
RGBW: RGB + Weiß Devices
CCT: Warmweiß + Kaltweiß Devices (Dual LED)
RGB + CCT: RGB + Warmweiß + Kaltweiß Devices
RGB: RGB Devices
FUT089 / B8: Wie RGB + CCT, jedoch mit 8 statt 4 Zonen. Scheinbar für neuere Geräte nötig.
FUT091 / B2: Wie CCT, jedoch scheinbar eine neue Protokollversion
Kannst du mit der Info soweit etwas anfangen?
Also sollte im Modul einstellbar sein, welcher Modus genutzt wird?
Welchen Modus nutzt du, dann würde ich damit anfangen.
Grüße,
Kai
Ich denke das würde für jedes angelegte Device in der entsprechenden Instanz Sinn machen, genau. Ich nutze aktuell ausschließlich RGB+CCT.
Hallo Luca, Kai,
eine schicke Lösung die du hier vorstellst, ich nutze seit einiger Zeit Milight E27 Lampen und die RGBW LED Module. Das im Forum vorgestellt Milight Modul (das erste) funktioniert seit langen bei mir sehr gut, mit dem Limit auf 4 Kanäle bzw. 4 Bereiche.
Die Lösung mit einem WEMOS D1 und dem NRF24L01 habe ich mir heute nachgebaut und Funktioniert, schöne Lösung. Die Verbindung ESP > MQTT > IPS verstehe ich noch nicht so ganz. Kai du implementierst es in das Tasmota Modul? Wenn es hilft teste ich es gerne, bei mir sind wie schon geschrieben RGBW und zwar E27 und LED Module in Betrieb.
Die Eingaben die in dem ESP für MQTT gemacht werden müssen sind mir auch nicht alle klar, ich bin dabei wenn ich helfen kann.
alles Gute D.Voss
Hallo Zusammen,
gibt es hierzu schon etwas Neues?
Habe auch schon so ein Gateway aufgesetzt:
https://blog.christophermullins.com/2017/02/11/milight-wifi-gateway-emulator-on-an-esp8266/
Ging ganz einfach, Zeit für die Realisierung ca. 10 Minuten, Kosten unter EUR 10.
Habe auch schon die Topics per MQTT in IPS, allerdings scheitere ich an der Rückmeldung:
Sofern ich MQTT richtig verstanden habe, ändere ich die Inhalt der Topic-Variable auf dem Server und der Client bekommt es mit?
Mit einem:
$ID = 28904;
RequestAction ($ID, "{"state":"ON","brightness":255,"bulb_mode":"color","color":{"r":255,"g":0,"b":46}}" );
bekomme ich immer diese Fehlermeldung:
Parse error: syntax error, unexpected 'state' (T_STRING), expecting ')' in C:\ProgramData\Symcon\scripts\55926.ips.php on line 6
Abort Processing during Fatal-Error: syntax error, unexpected 'state' (T_STRING), expecting ')'
mit
$ID = 28904;
RequestAction ($ID, "bla" );
wird die Variable gesetzt.
Wenn ich die Variable per Hand auf der Konsole setzte, wird dies auch nicht an die Lampe übertragen.
Im Wireshark sehe ich, daß die Werte per MQTT übertragen werden:
milight/0x0/rgb_cct/1blablub
Wobei ich nach der ganzen Frickelei keine Pakete mehr vom IPS in Richtung Bridge sehe …
Vielleicht kann ja jemand einen Schubs in die richtige Richtung geben …
Dank und Gruß
kea
PS Anbei noch ein Screenshot der Birdge-Konfiguration
Hallo Zusammen,
hab mich mal ein bisschen mit dem System beschäftigt und werfe mal ein paar Brocken in den Thread.
Bau des Gateways (Materialkosten keine €5), siehe oben oder direkt https://github.com/sidoh/esp8266_milight_hub.
MQTT Server in IPS aktivieren
ESP-Bridge einstellen (siehe Bild esp.png)
Lampen an das Gateway anlernen,
Wichtig: Jeder Lampe eine eigene ID verpassen (siehe anlern.png) und den „Remote Type“ „FUT089/B8“ auswählen, dann sind 8 Gruppen möglich.
Die Lampen bei Bedarf an weitere Steuerelemente anlernen
Die Lampen mal schalten/steuern
Jetzt sollte beim IPS schon was ankommen: MQTT lässt sich gut mit dem http://mqtt-explorer.com/ prüfen, einfach auf den IPS-Server zeigen lassen. (siehe mqttexplorer.png)
Nun im IPS mit dem MQTT Konfigurator die Instanz anlegen
Obacht! Es gibt mehrer Topics für eine Lampe:
a) die oben vergebene ID (diese wird auch zum Steuern genutzt)
b) die ID der Fernbedienung
c) ggf, mehrer Gruppen-ID
Lässt sich gut mit dem MQTT Explorer erkennen
Nun die Variablen anlegen (siehe Bild ipsvar.png). Hier sind die Variablendefinitionen:
// Profile erstellen
// MiLiState
IPS_CreateVariableProfile("MiLiState", 1);
IPS_SetVariableProfileText("MiLiState", "", "");
IPS_SetVariableProfileValues("MiLiState", 0, 3, 1);
IPS_SetVariableProfileDigits("MiLiState", 0);
IPS_SetVariableProfileIcon("MiLiState", "");
IPS_SetVariableProfileAssociation("MiLiState", 0, "Aus", "", 16711680);
IPS_SetVariableProfileAssociation("MiLiState", 1, "Ein", "", 65280);
IPS_SetVariableProfileAssociation("MiLiState", 2, "Nacht", "", 160);
IPS_SetVariableProfileAssociation("MiLiState", 3, "Putzlicht", "", 16777215);
// MiLiBulbMode
IPS_CreateVariableProfile("MiLiBulbMode", 1);
IPS_SetVariableProfileText("MiLiBulbMode", "", "");
IPS_SetVariableProfileValues("MiLiBulbMode", 0, 0, 0);
IPS_SetVariableProfileDigits("MiLiBulbMode", 0);
IPS_SetVariableProfileIcon("MiLiBulbMode", "");
IPS_SetVariableProfileAssociation("MiLiBulbMode", 0, "White", "", -1);
IPS_SetVariableProfileAssociation("MiLiBulbMode", 1, "Color", "", -1);
IPS_SetVariableProfileAssociation("MiLiBulbMode", 2, "Scene", "", -1);
IPS_SetVariableProfileAssociation("MiLiBulbMode", 3, "Night", "", -1);
// MiLiScene
IPS_CreateVariableProfile("MiLiScene", 1);
IPS_SetVariableProfileText("MiLiScene", "", "");
IPS_SetVariableProfileValues("MiLiScene", 0, 8, 0);
IPS_SetVariableProfileDigits("MiLiScene", 0);
IPS_SetVariableProfileIcon("MiLiScene", "");
IPS_SetVariableProfileAssociation("MiLiScene", 0, "All Colors Smooth", "", -1);
IPS_SetVariableProfileAssociation("MiLiScene", 1, "White only", "", -1);
IPS_SetVariableProfileAssociation("MiLiScene", 2, "Red Green Blue smooth", "", -1);
IPS_SetVariableProfileAssociation("MiLiScene", 3, "All Colors Hard", "", -1);
IPS_SetVariableProfileAssociation("MiLiScene", 4, "All colors hard II", "", -1);
IPS_SetVariableProfileAssociation("MiLiScene", 5, "Red show", "", -1);
IPS_SetVariableProfileAssociation("MiLiScene", 6, "Green show", "", -1);
IPS_SetVariableProfileAssociation("MiLiScene", 7, "Blue show", "", -1);
IPS_SetVariableProfileAssociation("MiLiScene", 8, "White show", "", -1);
IPS_SetVariableProfileAssociation("MiLiScene", 9, "RGB Circle fade", "", -1);
// MiLiColorTemp_2
IPS_CreateVariableProfile("MiLiColorTemp_2", 1);
IPS_SetVariableProfileText("MiLiColorTemp_2", "", "");
IPS_SetVariableProfileValues("MiLiColorTemp_2", 153, 370, 25);
IPS_SetVariableProfileDigits("MiLiColorTemp_2", 0);
IPS_SetVariableProfileIcon("MiLiColorTemp_2", "");
// MiLi_Brightness
IPS_CreateVariableProfile("MiLi_Brightness", 1);
IPS_SetVariableProfileText("MiLi_Brightness", "", "");
IPS_SetVariableProfileValues("MiLi_Brightness", 0, 255, 0);
IPS_SetVariableProfileDigits("MiLi_Brightness", 0);
IPS_SetVariableProfileIcon("MiLi_Brightness", "");
<?php
// 0.9 2020-08-23 soe (start of engeneering)
if ($_IPS['SENDER'] == "Variable" or $_IPS['SENDER'] =='TimerEvent')
{
$SenderTyp = $_IPS['SENDER'];
$SenderID = $_IPS['VARIABLE']; // alt EVENT
}
// Variablendefinition
$BulbID = 35518;
$BulbValue = 47287;
$Chroma = 35703;
$Mode = 55368;
$White = 43243; // scene white color
$State = 30279;
$Luma = 43777;
$Scene = 45228; // mode 0 - 9
if ($_IPS['SENDER'] == "Variable") { // script wird von einer Variable getriggert
// Werte lesen
$IN = GetValue($SenderID); // org Bulb Value
$json = json_decode($IN);
// var_dump($json); // nur zum debug, erzeugt sonst einen fehler
// State auswerten
IF ($json->state == "OFF" or $json->state == "off") {
SetValue ($State, 0);
}
// Weitere Ablauf nur wenn Lampe an
IF ($json->state == "ON" or $json->state == "on") {
SetValue ($State, 1);
SetValue ($Luma, $json->brightness);// Brightness auswerten
// Mode auswerten
IF ($json->bulb_mode == "white") {
SetValue ($Chroma, 0);
SetValue ($Mode, 0);
SetValue ($White,$json->color_temp);
}
IF ($json->bulb_mode == "night") {
SetValue ($Mode, 3);
SetValue ($State, 2); // Nachtmodus
}
IF ($json->bulb_mode == "color") {
SetValue ($Mode, 1);
// RGB lesen, Einzelwerte nach RGB-Hex umrechnen
$RGB = hexdec(str_pad(dechex($json->color->r),
2,'0', STR_PAD_LEFT).str_pad(dechex($json->color->g),
2,'0', STR_PAD_LEFT).str_pad(dechex($json->color->b),
2,'0', STR_PAD_LEFT));
SetValue ($Chroma, $RGB);
}
IF ($json->bulb_mode == "scene") {
SetValue ($DebugID, $json);
SetValue ($Mode, 2);
IF ($json->mode == "0") SetValue($Scene, 0);
IF ($json->mode == "1") SetValue($Scene, 1);
IF ($json->mode == "2") SetValue($Scene, 2);
IF ($json->mode == "3") SetValue($Scene, 3);
IF ($json->mode == "4") SetValue($Scene, 4);
IF ($json->mode == "5") SetValue($Scene, 5);
IF ($json->mode == "6") SetValue($Scene, 6);
IF ($json->mode == "7") SetValue($Scene, 7);
IF ($json->mode == "8") SetValue($Scene, 8);
IF ($json->mode == "9") SetValue($Scene, 9);
}
}
exit;
}
<?php
// Milight_Brigthness setzen
$parentID = IPS_GetObject($IPS_SELF);
$parentID = $parentID['ParentID'];
$Luma = ( $_IPS['VALUE']);
$BulbValue = 47287;
RequestAction ($BulbValue, "{\"state\":\"ON\",\"brightness\":\"$Luma\"}" );
<?php
//Milight_aus_Farbrad setzen
$Chroma = 35703;
$BulbValue = 47287;
$r = (($_IPS['VALUE'] >> 16) & 0xFF);
$g = (($_IPS['VALUE'] >> 8) & 0xFF);
$b = (($_IPS['VALUE'] >> 0) & 0xFF);
RequestAction ($BulbValue, "{\"state\":\"ON\",\"color\":{\"r\":$r,\"g\":$g,\"b\":$b}}" );
<?php
//Milight_ColorTemp
$White = ($_IPS['VALUE']);
$BulbValue = 47287;
RequestAction ($BulbValue, "{\"state\":\"ON\",\"color_temp\":\"$White\"}" );
<?
// Milight_State setzen
$parentID = IPS_GetObject($IPS_SELF);
$parentID = $parentID['ParentID'];
$State = ($_IPS['VALUE']);
$BulbValue = 47287;
if ($State == 0) RequestAction ($BulbValue, "{\"state\":\"OFF\"}" );
if ($State == 1) RequestAction ($BulbValue, "{\"state\":\"ON\"}" );
if ($State == 2) RequestAction ($BulbValue, "{\"state\":\"ON\",\"command\":\"night_mode\"}" ); // Nachtlich
if ($State == 3) RequestAction ($BulbValue, "{\"state\":\"ON\",\"command\":\"set_white\",\"brightness\":255 }" ); // Putzlicht
<?php
//Milight_Scene
$Scene = ($_IPS['VALUE']);
$BulbValue = 47287;
RequestAction ($BulbValue, "{\"state\":\"ON\",\"mode\":\"$Scene\"}" );
Ein Schönheitspreis werde ich damit nicht gewinnen, aber vielleicht nützt es Euch etwas.
Bin noch am überlegen wie ich die Skalierung mache, entweder für jede Lampe/Bulb/LED-Streifen alles per Hand anlegen oder das Master-Script um eine Auswertung erweitern.
Viel Spaß am Gerät
kea
Hi,
sieht gut aus, ich hatte das damals dann zwischenzeitlich ähnlich gelöst, jedoch nur die Parameter übergeben, die ich persönlich nutze - ich werde deine Variante mal testen - vielen Dank fürs Teilen!
Gruß
Hallo @kea ,
irgendwie sind im neuen Board leider deine Bilder abhanden gekommen
Kannst du die bitte nochmal posten, damit ich sehe wo du die Variablen und die Skripte angelegt hast.
Danke Hofi61
Hallo @kea,
vielen Dank. Inzwischen hab ich es hinbekommen und das GW lässt sich über das Webinterface vom ESP schalten und die Variablen in IPS werden auch gesetzt.
Hast du eine Lösung wie die MiLight auch über ein PHP-Skript ansteuern kann?
Mit dem MQTT-Explorer kann ich zwar sehen, dass gesendet wird aber das GW reagiert nicht.
Im Prinzip nutze ich deine Aktionsscripte leicht modifiziert und triggre diese mit einer Variablen die den Befehl enthält. Getestet am Beispiel State, Variabe = 0 im Explorer kommt auch " rgb_cct = {„state“:„OFF“}" an, aber nichts passiert…
VG Hofi61
PS. Dem Problem mit den fehlenden Bildern ist paresy schon auf der Spur.
Hallo,
ich benötige mal eure Hilfe. Ich habe mir einen MiLight-Hub wie hier https://community.symcon.de/t/milight-ueber-esp8266/50102/16?u=hofi61 aufgebaut und in IPS eingebunden.
Der Hub funktioniert, von dessen Webinterface kann ich meine Geräte steuern. Die MQTT-Konfiguration am Hub sieht wie folgt aus:
In IPS hab ich den MQTT-Server aktiviert und mit dem Konfigurator folgende beiden Geräte eingerichtet:
Die beiden Variablen werden auch bei Veränderungen am Hub korrekt befüllt und die angelegten Statusvariablen erhalten auch die korrekten Werte. Das Empfangen der MQTT-Befehle funktioniert also.
Aber beim Senden reagieren die Leuchten nicht auf die Befehle. Am MQTT-Explorer, der auf IPS hört, kann ich aber die korrekten Befehle sehen (Beispiel State = ON):
Die Steuerung in IPS habe ich wie folgt aufgebaut:
Die Skripte werden beim Verändern der Variablen getriggert, hier als Beispiel das Skript für die State Variable:
<?php
// Milight_State setzen
$State = ($_IPS['VALUE']);
$BulbValue = 42168;
if ($State == 0) RequestAction ($BulbValue, "{\"state\":\"OFF\"}" );
if ($State == 1) RequestAction ($BulbValue, "{\"state\":\"ON\"}" );
if ($State == 2) RequestAction ($BulbValue, "{\"state\":\"ON\",\"command\":\"night_mode\"}" ); // Nachtlich
if ($State == 3) RequestAction ($BulbValue, "{\"state\":\"ON\",\"command\":\"set_white\",\"brightness\":255 }" ); // Putzlicht
Warum funktioniert das Senden nicht bzw. warum reagiert der Hub nicht? Ich habe schon überall gesucht, finde aber keinen Ansatz und im oben genannten Beitrag reagiert keiner auf meine diesbezüglich Frage
Ich hoffe hier kann mir jemand auf die Sprünge helfen
Schon mal vielen Dank im Voraus!
PS. mein IPS läuft im Docker meiner Synology, da bin ich bei der Aktivierung des MQTT-Servers schon gestolpert, da das Port nicht veröffentlicht war
VG Hofi61
Moin,
sorry für die späte Antwort.
Melde mal eine Fernbedienung an den Bulbs an und beobachte den MQTT-Server bei der Nutzung der Fernbedienung. Es ändern sich mehrere Topics, da müsstest Du mal ein bißchen testen, welches Topic zu ändern ist.
War bei mir auch arges Gefummel, habe zwar 15 Bulbs verbaut aber noch nicht integriert. Die Strafarbeit wartet noch auf mich
Viele Grüße
Hi Hofi61,
I hope English is ok with you?!
Did you ever get IPS to send mqtt messages (I read your post through Google translate)?
I can get IPS to receive mqtt but I cant get it to send, do you have any pointers?!
yoggi
Hi,
hat sich jemand die Arbeit gemacht ein Modul zu erstellen?
Wäre klasse.
Hi,
Habe versucht nach der Anleitung hier die Anbindungin Symcon zu erstellen.
https://community.symcon.de/t/milight-ueber-esp8266/50102/16
Bis Punkt 7 funktioniert alles, ich sehe die Daten im MQTT Explorer.
Punkt 8 habe ich ein MQTT Client Gerät angelegt, ist das richtig?
Werte bekomme ich nicht angezeigt
Die Konfiguration sieht so aus
Hat jemand einen Tipp, was ich falsch mache?
Grüße Christoph
Hatte das Topic falsch.
Empfangen funktioniert jetzt.
Jetzt habe ich das gleiche Problem wie Hofi61, senden geht nicht.
@hofi61 bist du hier weiter gekommen?
Gruß Christoph