[98_HyperionNG] Hyperion Next Generation Module

Begonnen von WarLLe, 04 Dezember 2020, 01:03:54

Vorheriges Thema - Nächstes Thema

WarLLe

Hi zusammen,

ich suche ein paar Tester für mein Modul.
Es ist aufbauend auf dem Modul 98_Hyperion.pm, allerdings wurde die Verbindung komplett überarbeitet und alles auf die neue Json Server Api angepasst. Das Modul handelt entsprechend des alten Hyperion Modul. Bisher sind alle nötigen Abfragen beim define drin. Das Steuern der Instanz ist implementiert, allerdings fehlt die GET-Funktion derzeit und das setzen von Konfigurationsparameter in Hyperion ist auch noch nicht implementiert. Alles in allem also noch etwas zwischen Alpha und Beta Status. Doku ist auch noch nicht vorhanden.

Wer trotzdem schon mal testen mag, ist gerne Willkommen.
Zur Abfrage wird der Subscribe Mechanismus der Hyperion API benutzt. Somit sollten die Daten "LIVE" aktualisiert werden.

define <name> HyperionNG <IP[:PORT]> [<TOKEN>]

PS: Ist nur ein kleines Hobby Projekt für mich daher keine Ahnung wann Aktualisierungen kommen. Trotzdem ist Feedback gerne erwünscht.

LG

_____________________________________________
EDIT:

Aktuellste Version gibt es im Github unter: https://github.com/boredomwontgetus/fhem-hyperionng

Der_Tom

guten morgen,

da sich die definition immer auf den Modulnamen bezieht gehe ich hier von einem Fehler aus

Zitatdefine <name> Hyperion <IP[:PORT]> [<TOKEN>]

und denke das sollte wie folgt heisssen :

define <name> HyperionNG <IP[:PORT]> [<TOKEN>]

sehe ich das richtig ?

ich habe testweise mal ein Device angelegt , wusste aber auf die schnelle nicht , was genau er bei " Token" habe möchte .
Edit: ok, den Token habe ich gefunden


Das Device hat sich anlegen lassen , ich scheine aber ( auf die schnelle ) keinen Zugriff zu haben .


Internals:
   CFGFN     
   DEF        192.168.178.40 19444 572c99fd-1703-44bc-a753-0c10d0490e73
   DeviceName 192.168.178.40:19444
   FUUID      5fc9c4d2-f33f-1e75-17a2-2e4f2b05cb4ea519
   NAME       Hyperiontest
   NOTIFYDEV  global
   NR         244002
   PARTIAL   
   STATE      ERROR
   TYPE       HyperionNG
   READINGS:
     2020-12-04 06:10:43   active_priority_componentId V4L
     2020-12-04 06:10:43   active_priority_duration_ms -1
     2020-12-04 06:10:43   active_priority_origin System
     2020-12-04 06:10:43   active_priority_owner V4L2:/dev/video0
     2020-12-04 06:10:43   active_priority_priority 250
     2020-12-04 06:10:43   adjustment_Blue 0,0,255
     2020-12-04 06:10:43   adjustment_Cyan 0,255,255
     2020-12-04 06:10:43   adjustment_Green 0,255,0
     2020-12-04 06:10:43   adjustment_Magenta 255,0,255
     2020-12-04 06:10:43   adjustment_Red  255,0,0
     2020-12-04 06:10:43   adjustment_White 255,255,255
     2020-12-04 06:10:43   adjustment_Yellow 255,255,0
     2020-12-04 06:10:43   adjustment_backlightColored 1
     2020-12-04 06:10:43   adjustment_backlightThreshold 0
     2020-12-04 06:10:43   adjustment_brightness 100
     2020-12-04 06:10:43   adjustment_brightnessCompensation 97
     2020-12-04 06:10:43   adjustment_gammaBlue 1.5
     2020-12-04 06:10:43   adjustment_gammaGreen 1.5
     2020-12-04 06:10:43   adjustment_gammaRed 1.5
     2020-12-04 06:10:43   adjustment_id   default
     2020-12-04 06:10:43   debug           serverinfo
     2020-12-04 06:10:43   effect          Atomic_swirl
     2020-12-04 06:10:43   hyperion_build  (HEAD detached at 08909b8a) (Paulchen-Panther-75963ca9/08909b8a-1600115237)
     2020-12-04 06:10:43   hyperion_gitremote https://github.com/hyperion-project/hyperion.ng
     2020-12-04 06:10:43   hyperion_id     dc86256f-9799-5ab2-8dea-4bd0f132a4b1
     2020-12-04 06:10:43   hyperion_time   Sep 14 2020 21:05:54
     2020-12-04 06:10:43   hyperion_version 2.0.0-alpha.8
     2020-12-04 06:18:20   lastError       No Authorization
     2020-12-04 06:18:20   loginState      not authorized
     2020-12-04 06:10:43   priorities_autoselect 1
     2020-12-04 06:18:20   serverResponse  ERROR
     2020-12-04 06:18:20   state           ERROR
     2020-12-04 06:10:43   system_architecture arm
     2020-12-04 06:10:43   system_domainName fritz.box
     2020-12-04 06:10:43   system_hostName HyperBian
     2020-12-04 06:10:43   system_kernelType linux
     2020-12-04 06:10:43   system_kernelVersion 5.4.51-v7+
     2020-12-04 06:10:43   system_prettyName HyperBian GNU/Linux 10 (buster)
     2020-12-04 06:10:43   system_productType HyperBian
     2020-12-04 06:10:43   system_productVersion 10
     2020-12-04 06:10:43   system_wordSize 32
     2020-12-04 06:10:43   transform_blacklevel 2.50,2.50,2.50
     2020-12-04 06:10:43   transform_id    default
     2020-12-04 06:10:43   transform_luminanceGain 1.00
     2020-12-04 06:10:43   transform_luminanceMinimum 0.00
     2020-12-04 06:10:43   transform_saturationGain 1.00
     2020-12-04 06:10:43   transform_saturationLGain 1.00
     2020-12-04 06:10:43   transform_threshold 1.00,1.00,1.00
     2020-12-04 06:10:43   transform_valueGain 1.00
     2020-12-04 06:10:43   videomode       2D
Attributes:
   alias      Ambilight
   cmdIcon    on:general_an off:general_aus dimDown:dimdown dimUp:dimup
   devStateIcon {HyperionNG_devStateIcon($name)}
   homebridgeMapping On=state,subtype=TV.Licht,valueOn=/rgb.*/,cmdOff=off,cmdOn=mode+rgb On=state,subtype=Umgebungslicht,valueOn=clearall,cmdOff=off,cmdOn=clearall On=state,subtype=Effekt,valueOn=/effect.*/,cmdOff=off,cmdOn=mode+effect
   hyperionOriginName FHEM
   icon       light_led_stripe_rgb
   lightSceneParamsToSave state
   room       Hyperion
   token      19444
   userattr   lightSceneParamsToSave
   webCmd     rgb:effect:mode:dimDown:dimUp:on:off
   widgetOverride dimUp:noArg dimDown:noArg


Ich werde mich heute abend damit beschäftigen .

gruss Thomas

WarLLe

#2
Zitat von: Der_Tom am 04 Dezember 2020, 06:23:47
und denke das sollte wie folgt heisssen :

define <name> HyperionNG <IP[:PORT]> [<TOKEN>]

sehe ich das richtig ?

Danke das war ein Tippfehler von mir, es war schon spät gestern.

Zitat von: Der_Tom am 04 Dezember 2020, 06:23:47
ich habe testweise mal ein Device angelegt , wusste aber auf die schnelle nicht , was genau er bei " Token" habe möchte .
Edit: ok, den Token habe ich gefunden


Das Device hat sich anlegen lassen , ich scheine aber ( auf die schnelle ) keinen Zugriff zu haben .

Also da ich die login Funktion noch nicht getestet habe und derzeit noch frei nach gedächtnis drin steht, schonmal so viel dazu:

Der Token muss eigentlich nur gesetzt werden wenn in Hyperion Lokale API-Authentifizierung angehakt wird unter Netzwerk.
Ansonsten ist der Zugriff ohne Token möglich. Ich schaue mir das heute aber noch schnell an wenn dort mit Token gearbeitet werden soll.


     2020-12-04 06:18:20   lastError       No Authorization
     2020-12-04 06:18:20   loginState      not authorized


Hier geht hervor entweder ist meine Login Funktion nicht richtig oder dein Token. Der wird übrigens in den Attributen gesetzt schau mal nach ob er da den richtigen Wert hat und nicht 0 sonst habe ich dort noch einen Fehler im Define.
Ich hatte das derzeit noch nicht ausprobiert, da noch nicht alles komplett implementiert war von Hyperions Seite aus was die Authorizierung betrifft, wenn ich mich recht entsinne.

Zitattoken      19444

Bei dir scheint der token auf den Port gesetzt zu sein. Das schaue ich mir nochmal genau an.

Der_Tom

Bevor du da zu tief gehst.... ich habe mich damit heute morgen auch nur 5 min mit beschäftigen können. insofern kann es durchaus sein das mir was durchgerutscht ist.

dank dir das du das "NG" problem angehst.
ich hatte es auch mal begonnen, dann hat mir aber leider die zeit gefehlt.

gruss Thomas

WarLLe

#4
Ich habe eine neue Version im 1. Post angehangen.
Diese enthält jetzt auch die GET Funktion für sysinfo und serverinfo.

Ich habe mir das mal auf die schnelle nebenbei angeschaut.
Der Token funktioniert sofern man diesen bei der Definition mit angibt. Im Nachgang zu ändern wollte aktuell noch nicht. Schaue ich mir noch an.

Also sieht das define derzeit ungefähr so aus mit Token:
define Ambilight HyperionNG 192.168.2.148:19444 45379a60-aa0e-45f5-95b3-3399c4c642de

Zitat
DEF        192.168.178.40 19444 572c99fd-1703-44bc-a753-0c10d0490e73
Du hast zwischen IP und Port ein Leerzeichen eingefügt das ist so nicht vorgesehen. Dann rutscht der Port als token durch.

Falls kein anderer Port als der Standard benutzt wird reicht auch:
define Ambilight HyperionNG 192.168.2.148 45379a60-aa0e-45f5-95b3-3399c4c642de

Der_Tom

ZitatIch habe mir das mal auf die schnelle nebenbei angeschaut.
Der Token funktioniert sofern man diesen bei der Definition mit angibt. Im Nachgang zu ändern wollte aktuell noch nicht. Schaue ich mir noch an.

genau das habe ich heute morgen gemacht.. somit klar.

ich teste heute abend.

gruss Thomas

WarLLe

#6
Zitat von: Der_Tom am 04 Dezember 2020, 11:54:49
genau das habe ich heute morgen gemacht.. somit klar.

ich teste heute abend.

gruss Thomas

Sollte jetzt auch im Nachgang möglich sein.
Zu beachten ist, wenn man in Hyperion die Lokale API-Authentifizierung aktiviert und danach wieder deaktiviert, dann verlangt er trotzdem einen Token bis Hyperion neu gestartet wird. (2.0.0-alpha.9)

Der_Tom

ich habe gerade die aktuelle version eingespielt , allerdings ohne token definiert .

sieht erstmal alles gut aus , teste später mehr.

gruss Thomas

albundy118

Hallo,
vielen Dank für das Modul!
Ich benutze einige devices mit der alten Hyperion Software und habe mal eins auf die aktuelle Hyperion SW umgestellt.
Die Verbindung über Token hat erstmal ohne Problem funktioniert und ich werde die Tage noch weiter testen.

Sind noch weitere Befehle geplant? Die API gibt ja noch einiges her https://docs.hyperion-project.org/en/json/Control.html#sections. Neben einigen Coloradjustments interessiert mich am meißten die Umschaltung des videomodes. (2D/3DSBS/3DTAB).

Gibt es ein Github projekt zu dem modul bzw. besteht die Möglichkeit sich an der weiterentwicklung zu beteiligen? ( Ich denke über GitHub wäre das am praktikabelsten)

Beste Grüße
AB

WarLLe

#9
Ja, ich habe noch vor die restlichen Befehle zu implementieren.
Da dies allerdings nebenbei läuft wusste ich noch nicht so genau wann es hier weitergeht.
Ich habe dir mal eine neue Version hochgeladen, wo der Videomode geändert werden kann. Ich habe kein Github Projekt hierzu und plane eigentlich auch keins daraus zu machen. Ich denke ich werde im Laufe des Tages noch ein paar Änderungen vornehmen und das Modul hier updaten.

\\EDIT
Adjustments und Videomode sind nun drin. Neue Version hängt am ersten Post.
Da sich einige Readings vom Namen geändert haben legt das Device noch einmal neu an um Müll zu vermeiden.

VG WarLLe

albundy118

#10
Super, vielen Dank. Habe die version gleich mal eingespielt und teste die Tage mal damit rum und gebe Feedback. Muss mich aber auch noch an das neue Hyperion und deren Funktionen gewöhnen.
Was mir noch grundsätzlich in HyperionNG fehlt ist die Saturation, aber ich finde dazu nicht mal eine Einstellung im webui. Ich muss da nochmal nachlesen.
Wünsche erholsame Feiertage.

Beste Grüße
AB

StephanFHEM

#11
Danke erst mal für das neue Modul. Ich hab es installiert und es läuft soweit. Wofür ich es aber am ehesten brauchen würde wäre das umstellen der Quelle.
Ich hab einmal einen USB-Grabber und ich hab als Quelle LibreElec mit Kodi. Leider funktioniert die automatische Erkennung nicht sauber, ließe sich aber perfekt über FHEM erledigen.

Hab ich die Funktion der Quellenwahl im Modul übersehen? und falls nicht: kann sie bitte noch eingebaut werden?

Grüße
Stephan

edit:jetzt hab ich noch das Problem, dass HyperionNG im Sekunden-Takt disappear/reappear ins Log schreibt. Unter Reading "Debug" springt er immer zwischen den Einträgen "sysinfo" und "serverinfo" hin und her....

WarLLe

#12
Ich habe das Modul geupdated und an den ersten Post gehangen.
Autoselect kann nun gesetzt werden (An oder Aus). Unter dem Reading "source" taucht nun immer die Priorität auf die aktuell ausgewählt ist. Mittels "set source [1-250]" kann die Quelle bestimmt werden die aktuell angezeigt werden soll. Standard hier ist 250 für Platform Aufnahme und 240 für USB Grabber.

Zu deinem Problem mit dissappear/reapear hast du dort mehr Infos zu? Logs oder sonstiges? Das Phänomen konnte ich bei mir bisher nicht beobachten.

VG WarLLe

//edit
Das Problem scheint mir alledings aus DevIO zu kommen da vermutlich dort die Verbindung nicht richtig zu stande kommt. Das heißt er probiert immer wieder sysinfo und serverinfo aufzurufen was als Init Funktion nach dem DevIo_OpenDev von mir aufgerufen wird. Hast du davor irgendein Token gesetzt oder verändert? Besteht das Problem auch nach dem neu anlegen des Devices?
Vor allem aber, welchen Port benutzt du? Damit das Modul vernünftigt läuft muss der TCP Socket (default port: 19444) von Hyperion benutzt werden. Bei Websocket (8090) oder HTTP/S Json (8090/8092) steht die Subscribe Möglichkeit nicht zu Verfügung und die Anfragen auf diesen Ports könnte zu diesen Problemen führen. Unterschiede und Hinweise sind hier aufgeführt: https://docs.hyperion-project.org/en/json/#connect
Danke für deine Infos.

StephanFHEM

ich hab das neue Modul geladen und das Device gelöscht und neu angelegt. Jetzt hat er das Appear/Disappear-Problem nicht mehr. Ich hatte am Anfang mal den Web-Port angegeben und als er da nichts gefunden hat im Nachgang die DEF auf den 19444 geändert. Da hatte er es gefunden aber das Problem gehabt. Vielleicht hatte sich da etwas verhakt?

Wie gesagt: jetzt läuft es und er zeigt auch Source an und das wichtigste: Ich kann Source jetzt umsetzen zwischen 240 und 250. Also genau das was ich brauche, vielen Dank!
Folgende Punkte gibt es aber noch:
- Als State hat er "initialized" und wenn ich über das Modul auf "Aus" klicke dann ändert sich nichts. Eine Änderung schaltet also Source nicht um auf manuelle Steuerung. Ist das so gewollt? Besser wäre doch, wenn ich bei manueller Eingabe automatisch auf Source "JsonRpc" gehe. In der WEB-Oberfläche wird mir diese mit Prio 50 angezeigt, ist aber nicht gewählt.
- dazu gibt es noch folgende Perl-Fehler im Log:
2020.12.28 14:11:04 1: PERL WARNING: Subroutine HyperionNG_Initialize redefined at ./FHEM/98_HyperionNG.pm line 66.
2020.12.28 14:11:04 1: PERL WARNING: Subroutine HyperionNG_Define redefined at ./FHEM/98_HyperionNG.pm line 93.
2020.12.28 14:11:04 1: PERL WARNING: Subroutine HyperionNG_Ready redefined at ./FHEM/98_HyperionNG.pm line 137.
2020.12.28 14:11:04 1: PERL WARNING: Subroutine HyperionNG_ReadEffects redefined at ./FHEM/98_HyperionNG.pm line 149.
2020.12.28 14:11:04 1: PERL WARNING: Subroutine HyperionNG_ReadTransform redefined at ./FHEM/98_HyperionNG.pm line 166.
2020.12.28 14:11:04 1: PERL WARNING: Subroutine HyperionNG_ReadVideomode redefined at ./FHEM/98_HyperionNG.pm line 221.
2020.12.28 14:11:04 1: PERL WARNING: Subroutine HyperionNG_ReadActiveEffects redefined at ./FHEM/98_HyperionNG.pm line 234.
2020.12.28 14:11:04 1: PERL WARNING: Subroutine HyperionNG_ReadActiveColor redefined at ./FHEM/98_HyperionNG.pm line 268.
2020.12.28 14:11:04 1: PERL WARNING: Subroutine HyperionNG_ReadAdjustment redefined at ./FHEM/98_HyperionNG.pm line 302.
2020.12.28 14:11:04 1: PERL WARNING: Subroutine HyperionNG_ReadPriorities redefined at ./FHEM/98_HyperionNG.pm line 373.
2020.12.28 14:11:04 1: PERL WARNING: Subroutine HyperionNG_Read redefined at ./FHEM/98_HyperionNG.pm line 511.
2020.12.28 14:11:04 1: PERL WARNING: Subroutine HyperionNG_Get redefined at ./FHEM/98_HyperionNG.pm line 549.
2020.12.28 14:11:04 1: PERL WARNING: Subroutine HyperionNG_GetServerinfo redefined at ./FHEM/98_HyperionNG.pm line 576.
2020.12.28 14:11:04 1: PERL WARNING: Subroutine HyperionNG_GetSysinfo redefined at ./FHEM/98_HyperionNG.pm line 590.
2020.12.28 14:11:04 1: PERL WARNING: Subroutine HyperionNG_Set redefined at ./FHEM/98_HyperionNG.pm line 607.
2020.12.28 14:11:04 1: PERL WARNING: Subroutine HyperionNG_ParseJson redefined at ./FHEM/98_HyperionNG.pm line 872.
2020.12.28 14:11:04 1: PERL WARNING: Subroutine HyperionNG_Attr redefined at ./FHEM/98_HyperionNG.pm line 987.
2020.12.28 14:11:04 1: PERL WARNING: Subroutine HyperionNG_Init redefined at ./FHEM/98_HyperionNG.pm line 1046.
2020.12.28 14:11:04 1: PERL WARNING: Subroutine HyperionNG_Callback redefined at ./FHEM/98_HyperionNG.pm line 1075.
2020.12.28 14:11:04 1: PERL WARNING: Subroutine HyperionNG_Undef redefined at ./FHEM/98_HyperionNG.pm line 1089.
2020.12.28 14:11:04 1: PERL WARNING: Subroutine HyperionNG_Call redefined at ./FHEM/98_HyperionNG.pm line 1097.
2020.12.28 14:11:04 1: PERL WARNING: Subroutine HyperionNG_list2array redefined at ./FHEM/98_HyperionNG.pm line 1108.
2020.12.28 14:11:04 1: PERL WARNING: Subroutine HyperionNG_devStateIcon redefined at ./FHEM/98_HyperionNG.pm line 1120.


Grüße
Stephan

StephanFHEM

und noch ein Wunsch:

das alte Modul konnte man auf Inactive/Active setzen per Set. Da ich das Ambilight bei mir über eine schaltbare Steckdose an/aus schalte konnte ich so verhindern, dass er alle paar Sekunden ein Log-Eintrag generiert weil er den Hyperion-Server nicht finden kann. Hab das Modul dann immer mit auf inactive gesetzt.
Wäre prima, wenn du das auch einbauen könntest.