NEWS
Test Adapter hueemu (Hue Emulator) v0.0.x
-
@c_hoch_b
Ja genau. Du siehst ja in den logs die m_search Nachrichten. Der adapter kann dann so tun er wäre auf port 80 erreichbar, obwohl er das nicht ist. Dafür brauchst du dann bspw. Nginx um auf 8070 weiterzuleiten -
@holomekc
Ich habe heute mal deinen Adapter getestet, da ich meine hue Emulation gerne in den iobroker umziehen lassen willBisher nutze ich den Pythonscript von falke0069 und der funktioniert tadellos.
Allerdings möchte ich gerne alles zentral im iobroker haben.Nun habe ich aber festgestellt, dass einige Dinge in meinem System auf den Port 1900 lauschen und deshalb kein Pairing stattfindet.
Ausschalten ist da sehr schwierig, da nicht nur deconz sondern einige WLAN Geräte und mein komplettes Homematic System laut silly Log darauf lauschtKannst du mal über den Pythonscript schauen, wie es dort gelöst wurde, um das zu umgehen?
Mit dem Pythonscript kann ich problemlos pairen. -
@simatec
Hi. Ssdp läuft immer über port 1900. Auch die genannte Library macht es so
https://github.com/falk0069/hue-upnp/blob/f6a216ddeb6f94591585240066e55c833871dc58/hueUpnp.py#L20Hattest du vielleicht deine Geräte mit der python lib gepaired bevor port 1900 in Verwendung war? Ich kann noch einmal bissle recherchieren aber ich glaube nicht das es da eine andere Option gibt.
Es hängt auch zum großen Teil davon ab wie die Geräte arbeiten die du pairen willst. Bspw. Lässt Harmony dort keine andere Option. Bei anderen Geräten kannst du host und port vom Adapter direkt eingeben, so dass ssdp komplett übersprungen wird.
Da es nur ums Pairing geht wäre der einfachste weg kurzzeitig einmal den Prozess zu stoppen der Port 1900 blockiert. Dann den Adapter wieder starten und alle Geräte die du nutzen möchtest zu pairen. Dann kannst du anschließend die Prozesse wieder starten oder dein System einmal neustarten.
Weiter oben stehen Befehle mit denen du die Prozesse identifizieren kannst.
-
@holomekc
Ich hatte gestern die Python Bridge komplett aus der Harmony entfernt, um deinen Adapter zu pairen. Die ging bis zum Punkt, als ich die Pairingtaste drücken sollte.Danach ging es nicht weiter und der Log hatte einige benutzte 1900 Ports ausgegeben.
Als ich dann alles probiert hatte und nicht weiter kam, hatte ich die Python Bridge wieder gepairt und das ging sofort.
Da liefen alle meine Systeme im Smarthome.
Von daher denke ich, dass dort ne Kleinigkeit anders läuft, als in deinem Adapter.
Python ist jetzt nicht so meins, von daher ist es schwierig für mich nachzuvollziehen
-
@simatec
Siehe https://github.com/falk0069/hue-upnp/tree/f6a216ddeb6f94591585240066e55c833871dc58#some-pitfalls-to-mentionDort steht:
The UDP response needs to be bound to port 1900 (like the request) and sent to the same port that the client used (for Harmony)Sicher das die Python lib nicht lief? Normalerweise kann auch nur eine Anwendung einen Port belegen. Es sei du hättest mehrere Netzwerkinterfaces. Kannst du mal schauen, was bei dir in der python Lib eingestellt ist für UPNP_PORT? Der Default ist 1900.
Ich bin aktuell nicht mehr vor Ort und kann es mit Harmony nicht ausprobieren Für einen schnellen Test könntest du auch in der hue-upnp.js Datei vom hue-emu den Port oben einmal abändern.
Ich bin gerade dabei den Port konfigurierbar zu machen. Könnte ein bissle dauern. Ich muss erst die Lib ändern und dann den ioBroker adapter.
Ich bin jedoch nicht sicher, ob dir das bei Harmony helfen würde. Laut der Beschreibung von der python lib mag Harmony nicht über andere Ports reden.
-
@holomekc
Ich habe mal den Log hier für dich. Vielleicht hilft der dir weiter ...
Da ist vom Pairing mit hueUpnp2020-12-06 14:43:49,900 [INFO ] hueUpnp: Server starting 2020-12-06 14:43:49,903 [INFO ] hueUpnp: Starting HTTP server for 192.168.123.34:8080 2020-12-06 14:44:16,453 [INFO ] hueUpnp: received M-SEARCH from ('192.168.123.254', 52581) 2020-12-06 14:44:21,455 [INFO ] hueUpnp: received M-SEARCH from ('192.168.123.254', 52581) 2020-12-06 14:44:26,457 [INFO ] hueUpnp: received M-SEARCH from ('192.168.123.254', 52581) 2020-12-06 14:44:31,456 [INFO ] hueUpnp: received M-SEARCH from ('192.168.123.254', 52581) 2020-12-06 14:44:36,456 [INFO ] hueUpnp: received M-SEARCH from ('192.168.123.254', 52581) 2020-12-06 14:45:25,361 [INFO ] hueUpnp: 192.168.123.52: reading http request 2020-12-06 14:45:25,401 [INFO ] hueUpnp: 192.168.123.52 Sent HTTP New Dev Sync Response 2020-12-06 14:45:25,440 [INFO ] hueUpnp: 192.168.123.52: reading http request 2020-12-06 14:45:25,832 [INFO ] hueUpnp: 192.168.123.52: reading http request 2020-12-06 14:45:25,842 [INFO ] hueUpnp: 192.168.123.52 Got request for new dev: groups 2020-12-06 14:45:25,842 [INFO ] hueUpnp: 192.168.123.52 Sent HTTP New Dev Response 2020-12-06 14:45:25,874 [INFO ] hueUpnp: 192.168.123.52: reading http request 2020-12-06 14:45:25,881 [INFO ] hueUpnp: 192.168.123.52 Got request for new dev: scenes 2020-12-06 14:45:25,881 [INFO ] hueUpnp: 192.168.123.52 Sent HTTP New Dev Response 2020-12-06 14:45:27,287 [INFO ] hueUpnp: 192.168.123.52: reading http request 2020-12-06 14:45:27,295 [INFO ] hueUpnp: 192.168.123.52 Got request for new dev: groups 2020-12-06 14:45:27,295 [INFO ] hueUpnp: 192.168.123.52 Sent HTTP New Dev Response 2020-12-06 14:45:28,926 [INFO ] hueUpnp: 192.168.123.52: reading http request 2020-12-06 14:45:39,028 [INFO ] hueUpnp: 192.168.123.52: reading http request 2020-12-06 14:45:39,828 [INFO ] hueUpnp: received M-SEARCH from ('192.168.123.45', 52758) 2020-12-06 14:45:40,830 [INFO ] hueUpnp: received M-SEARCH from ('192.168.123.45', 52758) 2020-12-06 14:45:41,828 [INFO ] hueUpnp: received M-SEARCH from ('192.168.123.45', 52758) 2020-12-06 14:45:42,830 [INFO ] hueUpnp: received M-SEARCH from ('192.168.123.45', 52758) 2020-12-06 14:45:49,104 [INFO ] hueUpnp: 192.168.123.52: reading http request 2020-12-06 14:45:59,171 [INFO ] hueUpnp: 192.168.123.52: reading http request 2020-12-06 14:46:09,237 [INFO ] hueUpnp: 192.168.123.52: reading http request 2020-12-06 14:46:17,452 [INFO ] hueUpnp: received M-SEARCH from ('192.168.123.254', 52581) 2020-12-06 14:46:19,300 [INFO ] hueUpnp: 192.168.123.52: reading http request 2020-12-06 14:46:22,453 [INFO ] hueUpnp: received M-SEARCH from ('192.168.123.254', 52581) 2020-12-06 14:46:27,453 [INFO ] hueUpnp: received M-SEARCH from ('192.168.123.254', 52581) 2020-12-06 14:46:29,414 [INFO ] hueUpnp: 192.168.123.52: reading http request 2020-12-06 14:46:32,454 [INFO ] hueUpnp: received M-SEARCH from ('192.168.123.254', 52581) 2020-12-06 14:46:37,454 [INFO ] hueUpnp: received M-SEARCH from ('192.168.123.254', 52581) 2020-12-06 14:46:39,525 [INFO ] hueUpnp: 192.168.123.52: reading http request 2020-12-06 14:46:49,598 [INFO ] hueUpnp: 192.168.123.52: reading http request 2020-12-06 14:46:59,838 [INFO ] hueUpnp: 192.168.123.52: reading http request 2020-12-06 14:47:09,113 [INFO ] hueUpnp: 192.168.123.52: reading http request ./hue-upnp-helper.sh called with 'Homematic Deckenfluter WZ' 'on' 'true' Running directive for Homematic Deckenfluter WZ 1 on true HTTP/1.1 200 OK Access-Control-Allow-Origin: * Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept Content-Type: application/json; charset=utf-8 Date: Sun, 06 Dec 2020 13:47:09 GMT Connection: keep-alive Content-Length: 60 {"id":"hm-rpc.0.OEQ0189022.1.STATE","value":true,"val":true}2020-12-06 14:47:10,496 [INFO ] hueUpnp: 192.168.123.52: reading http request ./hue-upnp-helper.sh called with 'Homematic Deckenfluter WZ' 'on' 'false' Running directive for Homematic Deckenfluter WZ 1 on false HTTP/1.1 200 OK Access-Control-Allow-Origin: * Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept Content-Type: application/json; charset=utf-8 Date: Sun, 06 Dec 2020 13:47:10 GMT Connection: keep-alive Content-Length: 62 {"id":"hm-rpc.0.OEQ0189022.1.STATE","value":false,"val":false}2020-12-06 14:47:20,911 [INFO ] hueUpnp: 192.168.123.52: reading http request 2020-12-06 14:47:31,051 [INFO ] hueUpnp: 192.168.123.52: reading http request 2020-12-06 14:47:39,831 [INFO ] hueUpnp: received M-SEARCH from ('192.168.123.45', 55235) 2020-12-06 14:47:40,833 [INFO ] hueUpnp: received M-SEARCH from ('192.168.123.45', 55235) 2020-12-06 14:47:41,118 [INFO ] hueUpnp: 192.168.123.52: reading http request 2020-12-06 14:47:41,833 [INFO ] hueUpnp: received M-SEARCH from ('192.168.123.45', 55235) 2020-12-06 14:47:42,834 [INFO ] hueUpnp: received M-SEARCH from ('192.168.123.45', 55235) 2020-12-06 14:47:51,187 [INFO ] hueUpnp: 192.168.123.52: reading http request 2020-12-06 14:48:01,255 [INFO ] hueUpnp: 192.168.123.52: reading http request 2020-12-06 14:48:11,323 [INFO ] hueUpnp: 192.168.123.52: reading http request 2020-12-06 14:48:18,454 [INFO ] hueUpnp: received M-SEARCH from ('192.168.123.254', 52581) 2020-12-06 14:48:21,387 [INFO ] hueUpnp: 192.168.123.52: reading http request 2020-12-06 14:48:23,454 [INFO ] hueUpnp: received M-SEARCH from ('192.168.123.254', 52581) 2020-12-06 14:48:28,454 [INFO ] hueUpnp: received M-SEARCH from ('192.168.123.254', 52581) 2020-12-06 14:48:31,511 [INFO ] hueUpnp: 192.168.123.52: reading http request 2020-12-06 14:48:33,456 [INFO ] hueUpnp: received M-SEARCH from ('192.168.123.254', 52581) 2020-12-06 14:48:38,456 [INFO ] hueUpnp: received M-SEARCH from ('192.168.123.254', 52581) 2020-12-06 14:48:41,579 [INFO ] hueUpnp: 192.168.123.52: reading http request 2020-12-06 14:48:51,647 [INFO ] hueUpnp: 192.168.123.52: reading http request 2020-12-06 14:49:01,711 [INFO ] hueUpnp: 192.168.123.52: reading http request 2020-12-06 14:49:11,966 [INFO ] hueUpnp: 192.168.123.52: reading http request 2020-12-06 14:49:22,027 [INFO ] hueUpnp: 192.168.123.52: reading http request 2020-12-06 14:49:32,141 [INFO ] hueUpnp: 192.168.123.52: reading http request 2020-12-06 14:49:39,795 [INFO ] hueUpnp: received M-SEARCH from ('192.168.123.45', 54125) 2020-12-06 14:49:40,796 [INFO ] hueUpnp: received M-SEARCH from ('192.168.123.45', 54125) 2020-12-06 14:49:41,797 [INFO ] hueUpnp: received M-SEARCH from ('192.168.123.45', 54125) 2020-12-06 14:49:42,207 [INFO ] hueUpnp: 192.168.123.52: reading http request 2020-12-06 14:49:42,799 [INFO ] hueUpnp: received M-SEARCH from ('192.168.123.45', 54125) 2020-12-06 14:49:52,272 [INFO ] hueUpnp: 192.168.123.52: reading http request 2020-12-06 14:50:02,336 [INFO ] hueUpnp: 192.168.123.52: reading http request 2020-12-06 14:50:12,402 [INFO ] hueUpnp: 192.168.123.52: reading http request 2020-12-06 14:50:19,452 [INFO ] hueUpnp: received M-SEARCH from ('192.168.123.254', 52581) 2020-12-06 14:50:22,464 [INFO ] hueUpnp: 192.168.123.52: reading http request 2020-12-06 14:50:24,453 [INFO ] hueUpnp: received M-SEARCH from ('192.168.123.254', 52581) 2020-12-06 14:50:29,454 [INFO ] hueUpnp: received M-SEARCH from ('192.168.123.254', 52581) 2020-12-06 14:50:32,582 [INFO ] hueUpnp: 192.168.123.52: reading http request 2020-12-06 14:50:34,455 [INFO ] hueUpnp: received M-SEARCH from ('192.168.123.254', 52581) 2020-12-06 14:50:39,455 [INFO ] hueUpnp: received M-SEARCH from ('192.168.123.254', 52581) 2020-12-06 14:50:42,651 [INFO ] hueUpnp: 192.168.123.52: reading http request 2020-12-06 14:50:52,717 [INFO ] hueUpnp: 192.168.123.52: reading http request 2020-12-06 14:51:02,955 [INFO ] hueUpnp: 192.168.123.52: reading http request 2020-12-06 14:51:13,022 [INFO ] hueUpnp: 192.168.123.52: reading http request 2020-12-06 14:51:23,086 [INFO ] hueUpnp: 192.168.123.52: reading http request
Hier noch die Einstellungen von hueUpnp
# Some Global Variables standard = { #Start with a '-d' to force debug mode 'DEBUG': False, #Standard Broadcast IP UPNP 'BCAST_IP': "239.255.255.250", #Standard UPNP Port 'UPNP_PORT': 1900, # Seconds between upnp broadcast 'BROADCAST_INTERVAL': 200, # Callback http webserver IP (this machine) 'IP': "192.168.123.34", # HTTP-port to serve icons, xml, json (80 is most compatible but requires root) 'HTTP_PORT': 8080, # shouldn't matter but feel free to adjust 'GATEWAYIP': "192.168.123.254", # shouldn't matter but feel free to adjust 'MACADDRESS': "aa:bb:cc:dd:ee:ff", # Set default ON state for all device to "true" or "false" when first starting 'DEFAULT_ON_STATE': "false", # Set default BRIGHTNESS state for all device to a value 0-254 when first starting 'DEFAULT_BRI_STATE': 0, }
Ich habe die python lib beendet und das Pairing aufgehoben. Wird dnach auch nicht mehr von der Harmony gefunden.
-
@holomekc sagte in Test Adapter hueemu (Hue Emulator) v0.0.x:
Für einen schnellen Test könntest du auch in der hue-upnp.js Datei vom hue-emu den Port oben einmal abändern.
Die Datei
hue-upnp.js
habe ich leider nicht gefunden -
@simatec
/opt/iobroker/node_modules/hue-emu/dist/upnp/hue-upnp.jsDie neue Version steht aber jetzt auch bereit. Da kannst du das über die admin ui einstellen.
-
@holomekc
So habe mal auf meine Prod System das ganze getestet und konnte mit Port 8080 statt 8070 pairen.
Deine Idee mit dem Adapter ist echt klasse und ich verfolge das gerne weiter, aber aktuell sehe ich den eher als Alpha Version.- Meine Systemlast geht nach dem Pairing sehr hoch (Pythonscript fällt da garnicht auf)
- beim schalten entsteht eine relativ lange Verzögerung
- Geräte anlegen wäre über ein Gui (eventuell Tabelle) sinnvoll ... Beispiel die GUI von shuttercontrol
- Geräteverknüpfungen zu den tatsächlichen Geräten wäre sinnvoll
- Da der Pythonscript seit Jahren bei mir absolut rund läuft, wäre hier sicher ein guter Ansatz für dich drauf aufzubauen
Grundsätzlich begrüße ich es sehr, dass du dich der Sache annimmst und unterstütze gerne, wenn du Fragen zur GUI hast.
Python ist leider nicht meine Sprache, aber wenn du Python kannst, würde ich den Script von Falke in js nachbauen -
@simatec
Hi. Jetzt bin ich verwirrt. Hast du den UPNP Port jetzt geändert oder auf 1900 gelassen. "Port 8080 statt 8070" klingt eher nach dem Port auf den der Server lauscht. Also der Port der nach der Discovery verwendet wird. Bei dem hängt es sehr stark vom Gerät ab. Bspw. will Amazon Echo nur via Port 80 sprechen. Die Empfehlung ist hier so oder so klar Port 80 (via nginx oder vergleichbares), da das einem Hue Gerät am ehesten entspricht. Ansonsten hätte ich angenommen das Port 8080 oder 8070 keine Rolle spielt. Das Logging vom Adapter ist auf Info noch schlecht. Vielleicht konntest du eine Fehlermeldung nicht sehen.Alpha trifft ziemlich zu. Daher noch 0.0.x. Ich glaube niedriger kann ich mit der Version nicht gehen
Wegen der Verzögerung und Last kann ich gerne mal schauen, ob ich da was sehe.
Wegen GUI will ich nichts versprechen. Ich habe aktuell sehr wenig Zeit für ioBroker Projekte. Das Projekt ist auch mehr entstanden weil ich keinen hue simulator finden konnte der mit Amazon Echo kommunizieren konnte und die features hatte die ich brauchte.
Der Hinweis mit Geräteverknüpfungen kam bereits. Wie gesagt ist eine Zeit frage. Müsste mir erst einmal anschauen wie das funktioniert.
Das Python Script wird mir da nicht viel bringen, da die Protokolle an sich passen, die verwendeten libs aber grundverschieden sind. Vielleicht habe ich auch irgendwo noch einen Bock geschossen bei der Server Implementierung, so dass dort Zeit verloren geht.
-
@holomekc
War auch absolut nicht als Kritik gemeint sondern konstruktiv gedacht.
Den Port 1900 habe ich zum pairen gelassen. -
@simatec
Habe ich auch nicht so aufgefasst. Alles gut -
@holomekc
Wäre aber schön, wenn der Adapter weiter entwickelt wird und die Bugs mit Systemlast und Verzögerung behoben werden.
Ich mache mir mal Gedanken über die Gui wenn du magst. -
@holomekc
Vielleicht noch als Hinweis zur Systemlast.
Wenn der Adapter gepairt ist, steigt die Systemlast erst an, wenn ich deconz und den deconz Adapter wieder starte.
Da scheint ein Konflikt zu sein, da dann auch die auf Port 1900 lauschen.
Eventuell kannst du das lauschen auf Port 1900 nach erfolgreicher Pairing deaktivieren -
@holomekc Du hast auf Github ein Beispiel für eine on/off und eine dimmbare Lampe. Könntest du noch ein Template für eine RGB Lampe dazu packen? Am liebsten mit "Hue", "Sat" und "CT" als farbgebende Werte. Dann würde ich auch mal etwas testen.
EDIT: Achja und nocht eine Frage: Sind die ganzen anderen Werte zwingend notwendig? Ich meine, zur Steuerung einer RGB lampe benötigt man ja nur on/off, helligkeit, hue, sat und ct. Kann man ModelID, swversion, etc etc. einfach weglassen?!
-
@siggi85
Das template was du suchst ist das extended-color-light.json . Das stammt von meiner Hue Lampe bei der ich die Farben einstellen kann. Das ist das Modell was ich habe:
https://www.amazon.de/Philips-Hue-Ambiance-Doppelpack-Bluetooth/dp/B07SHVQCTJ/ref=sr_1_5?__mk_de_DE=ÅMÅŽÕÑ&dchild=1&keywords=hue+gU10+color&qid=1607454048&sr=8-5Soweit deckt sich das auch mit der Beschreibung aus der Hue API. Ich glaube etwas anderes gibt es nicht.
Zu deiner anderen Frage. Ich glaube nicht das alle anderen Werte notwendig sind. Mein Gedanke war hier das der Adapter es erlaubt diese Werte zu setzen für den Fall das ein Gerät diese Werte tatsächlich doch verwendet. Daher habe ich die Werte der Hue Lampen im Template mit aufgenommen. Dadurch sollte so ein Fall abgedeckt sein und der Emulator so nah wie möglich an einer echten Hue Bridge sein. Private habe ich nur mit Harmony und Amazon Echo getestet. Ich habe jetzt jedoch nicht probiert den einen oder anderen Wert wegzulassen.
Dann vielleicht einmal generell. Suchst du vielleicht die Umrechnung von RGB nach xy?
https://stackoverflow.com/questions/22564187/rgb-to-philips-hue-hsbDas wäre tatsächlich etwas was der Adapter anbieten könnte. Damit wäre jedoch ein rgb Wert mehr als Umrechnungswert zu betrachten und ein Wert, der dann an der API nicht mit ausgegeben werden würde. Denn die Hue API selber bietet rgb nicht an. Gott das war jetzt eine komische Beschreibung. Ich hoffe der Gedanke wird klar?
-
@holomekc Jetzt habe ich das alles etwas besser verstanden. Ich habe mir über:
https://<bridge ip address>/api/1028d66426293e821ecfd9ef1a0731df/lights
Die Konfigurationen meiner Lampen geholt. Danach habe ich den Namen einer Farblampe verändert und in den Emulator importiert.Mit der HuePro App konnte ich mich danach sogar verbinden (automatisch wurde die Bridge nicht gefunden, manuell ging es aber). Hier wurden Veränderungen an meiner Testlampe an den Datenpunkten übernommen. Die Hue Werte von existierenden Leuchtmitteln im ioBroker sind meist 0-360 und er spuckt hier 0-65535 aus, aber das kann man ggf. noch regeln (vielleicht kann das irgendwann auch der Adapter übernehmen )
Leider ging das Verbinden mit Hue Essentials nicht (das wäre allerdings mein Favorit). Hier kam entweder ein Fehler beim Anmelden oder die App ist abgebrochen beim Versuch sich zu verbinden. Die Bridge wurde auch hier nicht automatisch entdeckt und ich musste die IP-Adresse manuell eingeben. Beim manuellen Pairen kann ich in Hue Essentials dann folgendes auswählen:
Philips Hue
IKEA TRADRFRI
deCONZ
diyHueIch habe Philips Hue und diyHue ausprobiert, beides ging nicht. Hast du hier ggf. noch ne Idee?
Hier mal der Log, wenn ich es mit diyHue ausprobiere und die App dabei abstürzt.
Aber trotzdem schon mal cool, dass es mit deinem Adpater mind. eine schicke Hue App gibt, die beim Konfigurieren einer Lampe Daten in den ioBroker gepusht bekommt.
-
@siggi85
Das mit Hue Essentials kann ich mir mal anschauen. Auch das mit Umrechnungen zwischen Hue Api und ioBroker. Ich packe es zumindest mal auf die Liste. Was ich aktuell jedoch noch abarbeiten muss ist:
wolf ism7 to mqtt für einen Freund, Jalousien automatisieren auch für einen Freund, Definitiv noch Cyberpunk 2077, ioBroker.bshb noch updaten und dann hätte ich Zeit für hueemu. -
@holomekc OK, ich warte gespannt.
-