Philips HUE Modul

Hallo Zusammen,

ich habe mir ein neues Philips Hue Modul gebaut, da die vorhanden Scripte total verbuggt sind. Um die Probleme mit den XY2RGB Problem zu umgehen, nutze ich nur den HUE Farbraum statt des CIEs. Folgende Funktionen waren mir wichtig:

[ul]
[li]Auswahl des Farbmodus (Farbe / Farbtemperatur)[/li][li]Bei Änderung der Helligkeit oder der Sättigung, soll die Farbauswahl entsprechend angepasst werden und umgekehrt.[/li][li]Wechsel ich auf Farbtemperatur und verändere die Helligkeit und wechsle Zurück zu Farbe soll auch hier der Farbpicker korrekt angepasst sein.[/li][li]Je nach Farbmodus sollen nur die benötigten Variablen/Silder angezeigt werden.[/li][li]Das Syncscript soll immer wieder aufgerufen werden können und die vorhanden Devices aktuallisiert[/li][li]Eine zentrale Kategorie welches die Lampen hältt und auf die mit Links verwiesen werden[/li][li]Farbtemperaturauswahl[/li][/ul]

Beachtet bitte das es für meinen IP-Symcon auf einem RPi gebaut wurde. Es wurde von mir auch keine UTF-8 Konvertierung integriert, da das utf8decode scheinbar nicht benötigt wird und auch keine Auswirkung hatte.

Installation als Modul
Die Installation als Modul erfolgt per git. Folgendes Repo könnt Ihr verwenden.

[ol]
[li]Zuerst tragt Ihr die traxanos/SymconHUE · GitHub unter Module ein.[/li][li]Dann könnt Ihr Unter I/O Instanzen eine Philips HUE Bridge anlegen[/li][li]Hier müsst Ihr einen HOST (Name oder IP_Adresse) eintragen.[/li][li]Als User könnt Ihr die Vorlage belassen oder aber ändern. Sie wird als MD5 für die Anmeldung an der Bridge verwendet.[/li][li]Nun wählt Ihr noch in welcher Kategorie die Lampen gespeichert werden soll[/li][li]Nach dem Speichern, könnt Ihr den User registrieren. Drückt dafür zuerst auf der Bridge den Knopf und dann Button „User registieren“[/li][li]Im Anschluss „Lampen abgleichen“ und fertig.[/li][li]Der Button „Status abgleichen“ fragt die aktuellen Status der Lampen ab[/li][/ol]

Auf Wunsch könnt Ihr euch auch ein Script mit automatisierter Ausführung erstellen.


<? HUE_SyncStates(EUREBRIDGEID); ?>

Bei mir läuft es aktuell im 15 Sekunde Takt.

Versionen

[ul]
[li]Version 0.1 - Initial[/li][li]Version 0.2 - Codestyling optimiert + kleiner Fix im ApplyState.[/li][li]Version 0.3 - Charsetfix und Fix für Crapy PHP[/li][li]Version 0.4 - Fehlerhandling überarbeitet[/li][li]Version 0.5 - Neue Funktion: HUE_SetValues (Um mehrere Parameter gleichzeitig anzupassen)[/li][li]Version 0.6 - Support für Gruppen. Wertbereich für paar Optionen optimiert.[/li][li]Version 0.7 - Support für Sensoren[/li][li]Version 0.8 - Optimierung der „Funktionserkennung“ - damit besserer Support für Fremdlampen.[/li][li]Version 1.0 - Symcon 5 Support.[/li][/ul]

Moin Moin,

da passiert aber nix :frowning:

[b]- Arbeitszimmer stehlampe - 0017880100e0286d0b - 1
Warning: Wrong parameter type for SetValueInteger() in D:\IP-Symcon\scripts\10900.ips.php on line 56

Warning: Variable #0 existiert nicht in D:\IP-Symcon\scripts\11177.ips.php on line 53[/b]

Sicher das du alle IDs korrekt angepasst hast.?

Hallo ,

ja absolut . Nicht schlimm hab es nur mal versucht.

Welche Version von Symcon verwendest du?

EDIT:
Ok, ich kann die Probleme mit einer 3.4 Version reproduzieren. Ich schau mal ob ich das noch für 3.4 hinbekomme.

EDIT2:
Uhh unter 3.4 geht IPS_GetObjectIDByIdent nicht. Somit gleich ich nicht, das ich das ohne Probleme umgesetzt bekommen. Somit geht das ganze weiterhin nur unter 4.0.

Guten Abend ,

ich habe die 4.0 , ich setze aber ein anderes Script zur Steuerung ein , das läuft 1a.

Alles Gut , ich glaube es liegt an den ID der Lampen , hab mehr als 10 .

Dein Problem konnte ich nur unter Windows mit 3.4 nachstellen. Grund ist, das die SetValueInteger einen Fehler liefert, wenn die Zahl als String und nicht als Integer geliefert wird. Der zweite Fehler ist das die IPS_GetObjectIDByIdent welches das passende Objekt einfach nicht liefert, obwohl es vorhanden ist. Meiner Meinung ein Bug in Symcon. Solltest du die 4.0 haben, kann es sein das es eine Windowsversion ist. Dann Verhält sich die Linux und die Windowsversion unterschiedlich. Das wäre ebenfalls ein Bug in Symcon…

Das ist mal eine Erklärung, die 4.0 ist eh noch recht buggi:(

Danke ich warte aber deine Idee ist super

So bei mir geht es nun auch mit Windows 3.4 4.0 und Linux 4.0.

Grund war mal wieder dieses Crapy PHP was nicht Typen sicher ist. Bin ich froh, dass ich beruflich kein PHP mehr programmieren muss :smiley:

Wäre super wenn du es nochmal testen könntest.

Ok ich prüfe .

Hab alles ausgetauscht, gleiches Problem. Soll ich mal meine Scripte senden ?

Welche Scripte? Meine sind ja hier im Beitrag schon enthalten, oder was meinst du?

Ich kann auch gerade nicht glauben, dass es wirklich die gleichen Fehler wenn sind. Deine Fehler konnte ich ja nachstellen und das entsprechende Problem lösen. Kannst du nochmal die Ausgabe schicken von „Geräte einlesen“ schicken, nachdem du alle 4 Script von mir aktualisiert hast und entsprechend konfiguriert hast.

Wenn du magst, kann ich dir anbieten heute abend oder so kurz per TeamViewer zu helfen und mal zu schauen was da los ist. Würde gerne wenn noch Kompatibilitätsprobleme bestehen diese gerne beheben.

Hast du eigentlich schon mal damit geliebäugelt ein PHP Modul aus deinen Skripten zu machen?

paresy

Moin ,

das mit dem Teamviewer können wir jederzeit gerne tun .

@paresy

Ja hab ich. Vor allem da ich dann die Deviceerkennung über die UUID der Moduls machen kann und einige Dummy Variable weglassen kann. Ursprünglich wollte ich es sogar direkt so bauen. Ich habe aber noch keinen weg gefunden, wie ich ein Modul bauen kann ohne es immer zuerst ins Git einzuchecken und den Service neuzustarten. Außerdem kann ich so schon mal prüfen was es alles für Probleme geben kann. (Verschiedene Model etc)

Vielleicht hast du ja einen Tipp für mich wo ich eine ausführliche Doku finde. Den aktuell wollte ich per reverseengeneering deines moduls versuchen das hinzu bekommen.

@Fraunhofer
Ich habe heute Abend gegen 19:00-20:00 Zeit. Du müsstes mir gleich mal eine TeamViewer ID mit Passwort schicken. am besten per PM. Wenn du mir deine SMS Handynummer verraten magst (per PM) kann ich dir auch vorher eine SMS schicken sobald ich Zeit hätte.

Danke @Fraunhofer

Hab noch eine Kleinigkeit angepasst, so dass nun das Problem behoben sein sollte.

Ja , jetzt läuft es 1a! Danke Danke

Ein erster Draft der Doku geht hoffentlich Morgen online. Im Prinzip kannst du aber eines der vorhandenen Module kopieren und einfach angepasst auf deinen RasPi kopieren in den modules Ordner. Und du kannst bei Änderungen an der Module PHP, sofern es nicht gerade die Create() Methode ist einfach während der Laufzeit arbeiten. Bei Änderungen an der module.json/library.json musst du einfach den Dienst neu starten. Das mit GitHub ist sogesehen nur für die Endnutzer wichtig. Während der Entwicklung kannst du direkt mit einem Editor der SFTP/SCP unterstützt direkt auf dem Pi die Dateien ändern :wink:

paresy

Ja das hab ich auch schon soweit raus bekommen :smiley: Hab sogar schon die erste Version der HUE Bridge fertig (vom Konstrukt her) Jetzt muss ich nur noch schauen wie ich von einem Modul auf ein anderes Referenziere :smiley:

SFTP ist mir zu umständlich. VI auf dem Terminal reicht mir erstmal :smiley:

Gibt es für Module sowas wie einen internen Loop/Timer/Event, worüber ich regelmäßig den HUE Status abfragen kann?

Noch nicht. Betonung auf noch :slight_smile:

paresy