Neues Modul für Hyperion Server 98_Hyperion.pm

Begonnen von DeeSPe, 29 Juni 2016, 18:54:18

Vorheriges Thema - Nächstes Thema

DeeSPe

Ein aktuell entwickeltes Modul kann nicht alle Software Versionen unterstützen.
Darum gibt es im Eingangsbeitrag die Mindestvoraussetzungen zur Benutzung dieses Moduls.  :)

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

juppzupp

Ein aktuell entwickeltes Modul sollte nicht fhem zum Sterben bringen.
Was passiert denn, wenn nur ein Bit kippt? Heizung aus? ;-)

DeeSPe

Ich werte das mal als Verbesserungsvorschlag!  8)

Werde mal schauen ob ich eine sinnvolle Fehlerprüfung einbauen kann um dann ein define mit einer entsprechenden Fehlermeldung zu blockieren.
Kannst natürlich auch gern selbst einen entsprechenden Patch erstellen und zur Verfügung stellen. Das ist ja einer der Vorteile von Open Source und Community basierter Software, jeder kann mitwirken.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

juppzupp

Na klar ist das ein Verbesserungsvorschlag. Abgesehen von meinem Problemchen das ich hyperiond nicht mal eben upgraden kann, finde ich das schon gravierend.

Die Stabilität (Lebensfahigkeit) von fhem sollte doch nicht davon abhängig sein welcher code auf einem externen Gerät läuft.

;)

Spezialtrick

Warum kannst du Hyperion nicht updaten? Mit dem aktuellen Hypercon ist das eine Sache von nicht mal 5 Minuten!
FHEM - Debmatic - Zigbee2MQTT - Homekit

DeeSPe

Es wird auch niemand dazu gezwungen ein Modul (bzw. eine ganze Software) zu verwenden welches in langer Kleinarbeit in privater Freizeit entstanden ist, welches dann der Community (zum Testen) zur Verfügung gestellt wird und dessen Mindestvoraussetzungen man nicht einhalten kann/möchte.
Ich für meinen Teil jedenfalls bin kein professioneller Entwickler sondern mache das in meiner Freizeit und stelle den Output dann, u.a. hier, kostenlos zur Verfügung.

Für Kritik und Verbesserungsvorschläge bin ich jederzeit offen, nur:
Der Ton macht die Musik!  8)

Gruß
Dan

P.S. Komisch, Office 2016 bringt mein Windows 3.11 immer zum Abstürzen! Das darf doch nicht sein...  ;)
Und da steckt sogar noch eine Firma dahinter die damit Geld verdient.
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

DeeSPe

#171
@juppzupp:
Könntest Du bitte Log-Auszüge und/oder Konsolenmeldungen vom Absturz hier posten?
EDIT: Die eingesetzte Hyperion Version wäre auch hilfreich.
Das könnte wesentlich zur Fehlerbehebung beitragen.

Danke.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

DeeSPe

#172
@juppzupp:
Anbei eine Testversion.
Es wäre schön wenn Du die mal bei Dir testen und ein Feedback liefern könntest.

Ohne weiteres Hintergrundwissen über den eigentlichen Fehler habe ich direkt nach dem Abfragen des JSON Servers eine Versionsprüfung eingebaut. Wenn die nicht klappt oder eine zu niedrige Version liefert, zeigt das Device einen ERROR in state an und in lastError den Text des Fehlers. Ich kann nicht mit Bestimmtheit sagen dass das den gemeldeten Absturz von FHEM verhindert oder ob sich FHEM schon vorher verabschiedet, da ich es nicht testen kann.
Das define kann ich nicht unterbinden, da die JSON Daten erst später ankommen wenn das Device schon angelegt ist.
Bei Bedarf könnte ich das Device im Fehlerfall gleich noch auf disable setzen, aber das ist mE nicht nötig.

Gruß
Dan

EDIT: Testmodul entfernt
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

juppzupp

Hallo Dan,

entschuldige - ich war kurz und bündig mit meinen beschreibungen, kann da keinen falschen ton erkennen. wer module entwickelt, so wie du, brauch doch keine prosa, oder ?  ;D

gezwungen wird mit sicherheit niemand, ich bin dennoch der meinung, das ein modul welches "seit 4.8.2016 offizieller Teil von FHEM und somit im Update enthalten." ist, rudimentär fehler abfangen können und sollte. wenn das modul crashed, vollkommen ok, aber nicht ganz fhem.
ich brauche das modul auch nicht, hatte nur kurz in einem anflug von spielerei mal eben die eine zeile abgesetzt.

p.s.: ich habe von windows 8 auf windows 10 upgegraded, wenn ich jetzt mit dem mitgelieferten edge browser auf eine veraltete webseite browse, bleibt ganz windows stehen und ich muss neu starten


Zitat von: DeeSPe am 17 September 2016, 16:07:24
Es wird auch niemand dazu gezwungen ein Modul (bzw. eine ganze Software) zu verwenden welches in langer Kleinarbeit in privater Freizeit entstanden ist, welches dann der Community (zum Testen) zur Verfügung gestellt wird und dessen Mindestvoraussetzungen man nicht einhalten kann/möchte.
Ich für meinen Teil jedenfalls bin kein professioneller Entwickler sondern mache das in meiner Freizeit und stelle den Output dann, u.a. hier, kostenlos zur Verfügung.

Für Kritik und Verbesserungsvorschläge bin ich jederzeit offen, nur:
Der Ton macht die Musik!  8)

Gruß
Dan

P.S. Komisch, Office 2016 bringt mein Windows 3.11 immer zum Abstürzen! Das darf doch nicht sein...  ;)
Und da steckt sogar noch eine Firma dahinter die damit Geld verdient.

juppzupp

weil es ein imx6 mit read only memory ist. da läuft kein hypercon, und zum updaten braucht es einen lötkolben.

Zitat von: Spezialtrick am 17 September 2016, 15:09:26
Warum kannst du Hyperion nicht updaten? Mit dem aktuellen Hypercon ist das eine Sache von nicht mal 5 Minuten!

juppzupp

hi,

mehr als das
Global global DEFINED wz_TVLicht
Hyperion wz_TVLicht serverResponse: ERROR
Hyperion wz_TVLicht ERROR
Hyperion wz_TVLicht serverResponse: ERROR
Hyperion wz_TVLicht ERROR
Connection closed by foreign host.


war nicht zu sehen.

hyperionversion.....kann nur folgendes finden
Application build time: Jun 19 2014 22:14:22

Zitat von: DeeSPe am 17 September 2016, 16:57:51
@juppzupp:
Könntest Du bitte Log-Auszüge und/oder Konsolenmeldungen vom Absturz hier posten?
EDIT: Die eingesetzte Hyperion Version wäre auch hilfreich.
Das könnte wesentlich zur Fehlerbehebung beitragen.

Danke.

Gruß
Dan

juppzupp

kann ich morgen, wenn ich wieder  zuhause bin probieren.

grüße

jupp
Zitat von: DeeSPe am 17 September 2016, 18:16:54
@juppzupp:
Anbei eine Testversion.
Es wäre schön wenn Du die mal bei Dir testen und ein Feedback liefern könntest.

Ohne weiteres Hintergrundwissen über den eigentlichen Fehler habe ich direkt nach dem Abfragen des JSON Servers eine Versionsprüfung eingebaut. Wenn die nicht klappt oder eine zu niedrige Version liefert, zeigt das Device einen ERROR in state an und in lastError den Text des Fehlers. Ich kann nicht mit Bestimmtheit sagen dass das den gemeldeten Absturz von FHEM verhindert oder ob sich FHEM schon vorher verabschiedet, da ich es nicht testen kann.
Das define kann ich nicht unterbinden, da die JSON Daten erst später ankommen wenn das Device schon angelegt ist.
Bei Bedarf könnte ich das Device im Fehlerfall gleich noch auf disable setzen, aber das ist mE nicht nötig.

Gruß
Dan

DeeSPe

Zitat von: juppzupp am 17 September 2016, 19:52:36
Global global DEFINED wz_TVLicht
Hyperion wz_TVLicht serverResponse: ERROR
Hyperion wz_TVLicht ERROR
Hyperion wz_TVLicht serverResponse: ERROR
Hyperion wz_TVLicht ERROR
Connection closed by foreign host.


Hmmm, das sieht mir erst einmal danach aus als wenn sich das Modul richtig verhält, denn es gibt ja bereits einen Fehler aus.
Das "Connection closed by foreign host." ist dann wohl schon der FHEM Shutdown. Ich bin gerade etwas ratlos...
Wenn möglich wäre es großartig wenn Du kurzzeitig beim define mal das globale Attribut verbose 5 setzen und das Log dazu posten könntest. Bitte verbose danach aber wieder zurücksetzen da es sehr viele Daten im Log erzeugt. Das Hyperion Modul sollte dann auch alle seine JSON Daten loggen.

Zitat von: juppzupp am 17 September 2016, 19:53:46
kann ich morgen, wenn ich wieder  zuhause bin probieren.

Das wäre ganz großartig!  8)
Noch großartiger wäre es wenn Du den oben beschriebenen Output mit "verbose 5" noch zur Verfügung stellen könntest.  8) 8)

Vielen Dank im Voraus.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

juppzupp

Here we go.   ;D

fhem stirbt nicht mehr. Fehlermeldung eindeutig.


Hier mit dem Modul welches ausgeliefert wird :
2016.09.18 10:18:32 5: Cmd: >define wz_TVLicht Hyperion 192.168.0.76 19444 10<
2016.09.18 10:18:32 5: Loading ./FHEM/98_Hyperion.pm
2016.09.18 10:18:32 3: Opening wz_TVLicht device 192.168.0.76:19444
2016.09.18 10:18:32 4: HttpUtils url=http://192.168.0.76:19444/
2016.09.18 10:18:32 3: Opening wz_TVLicht device 192.168.0.76:19444
2016.09.18 10:18:32 4: HttpUtils url=http://192.168.0.76:19444/
2016.09.18 10:18:32 5: Triggering global (1 changes)
2016.09.18 10:18:32 5: Starting notify loop for global, first event DEFINED wz_TVLicht
2016.09.18 10:18:32 5: SW: {"command":"serverinfo"}

2016.09.18 10:18:32 3: wz_TVLicht device opened
2016.09.18 10:18:32 5: Triggering wz_TVLicht (1 changes)
2016.09.18 10:18:32 5: Starting notify loop for wz_TVLicht, first event serverResponse: ERROR
2016.09.18 10:18:32 5: Triggering wz_TVLicht (1 changes)
2016.09.18 10:18:32 5: Starting notify loop for wz_TVLicht, first event ERROR
2016.09.18 10:18:32 5: SW: {"command":"serverinfo"}

2016.09.18 10:18:32 3: wz_TVLicht device opened
2016.09.18 10:18:32 5: Triggering wz_TVLicht (1 changes)
2016.09.18 10:18:32 5: Starting notify loop for wz_TVLicht, first event serverResponse: ERROR
2016.09.18 10:18:32 5: Triggering wz_TVLicht (1 changes)
2016.09.18 10:18:32 5: Starting notify loop for wz_TVLicht, first event ERROR
2016.09.18 10:18:32 5: wz_TVLicht: url 192.168.0.76:19444 returned result: {"info":{"effects":[{"args":{"brightness":1.0,"reverse":false,"rotation-time":3.0},"name":"Rainbow swirl fast","script":"/opt/hyperion/effects/rainbow-swirl.py"},{"args":{"brightness":1.0,"reverse":false,"rotation-time":20.0},"name":"Rainbow swirl","script":"/opt/hyperion/effects/rainbow-swirl.py"}],"priorities":[{"duration_ms":991,"priority":800},{"duration_ms":26,"priority":1000}],"transform":[{"blacklevel":[0.0050,0.0050,0.0050],"gamma":[1.60,1.60,1.80],"id":"default","saturationGain":1.0,"threshold":[0.0,0.0,0.0],"valueGain":1.0,"whitelevel":[1.0,0.80,0.80]}]},"success":true}

Can't use an undefined value as an ARRAY reference at ./FHEM/98_Hyperion.pm line 246.


Und hier mit dem Modul aus deinem Beitrag :

2016.09.18 10:27:13 5: Cmd: >define wz_TVLicht Hyperion 192.168.0.76 19444 10<
2016.09.18 10:27:13 5: Loading ./FHEM/98_Hyperion.pm
2016.09.18 10:27:13 3: Opening wz_TVLicht device 192.168.0.76:19444
2016.09.18 10:27:13 4: HttpUtils url=http://192.168.0.76:19444/
2016.09.18 10:27:13 3: Opening wz_TVLicht device 192.168.0.76:19444
2016.09.18 10:27:13 4: HttpUtils url=http://192.168.0.76:19444/
2016.09.18 10:27:13 5: Triggering global (1 changes)
2016.09.18 10:27:13 5: Starting notify loop for global, first event DEFINED wz_TVLicht
2016.09.18 10:27:13 5: SW: {"command":"serverinfo"}

2016.09.18 10:27:13 3: wz_TVLicht device opened
2016.09.18 10:27:13 5: Triggering wz_TVLicht (1 changes)
2016.09.18 10:27:13 5: Starting notify loop for wz_TVLicht, first event serverResponse: ERROR
2016.09.18 10:27:13 5: Triggering wz_TVLicht (1 changes)
2016.09.18 10:27:13 5: Starting notify loop for wz_TVLicht, first event ERROR
2016.09.18 10:27:13 5: SW: {"command":"serverinfo"}

2016.09.18 10:27:13 3: wz_TVLicht device opened
2016.09.18 10:27:13 5: Triggering wz_TVLicht (1 changes)
2016.09.18 10:27:13 5: Starting notify loop for wz_TVLicht, first event serverResponse: ERROR
2016.09.18 10:27:13 5: Triggering wz_TVLicht (1 changes)
2016.09.18 10:27:13 5: Starting notify loop for wz_TVLicht, first event ERROR
2016.09.18 10:27:13 5: wz_TVLicht: url 192.168.0.76:19444 returned result: {"info":{"effects":[{"args":{"brightness":1.0,"reverse":false,"rotation-time":3.0},"name":"Rainbow swirl fast","script":"/opt/hyperion/effects/rainbow-swirl.py"},{"args":{"brightness":1.0,"reverse":false,"rotation-time":20.0},"name":"Rainbow swirl","script":"/opt/hyperion/effects/rainbow-swirl.py"}],"priorities":[{"duration_ms":955,"priority":800},{"duration_ms":54,"priority":1000}],"transform":[{"blacklevel":[0.0050,0.0050,0.0050],"gamma":[1.60,1.60,1.80],"id":"default","saturationGain":1.0,"threshold":[0.0,0.0,0.0],"valueGain":1.0,"whitelevel":[1.0,0.80,0.80]}]},"success":true}

2016.09.18 10:27:13 1: ATTENTION!!! Can't detect your version of hyperion! Please update your hyperion to V1.03.2 at least using HyperCon...
2016.09.18 10:27:13 5: Triggering wz_TVLicht (2 changes)
2016.09.18 10:27:13 5: Starting notify loop for wz_TVLicht, first event serverResponse: ERROR
2016.09.18 10:27:23 5: wz_TVLicht: Hyperion_Call: json object: {"command":"serverinfo"}
2016.09.18 10:27:23 5: SW: {"command":"serverinfo"}

2016.09.18 10:27:23 5: wz_TVLicht: url 192.168.0.76:19444 returned result: {"info":{"effects":[{"args":{"brightness":1.0,"reverse":false,"rotation-time":3.0},"name":"Rainbow swirl fast","script":"/opt/hyperion/effects/rainbow-swirl.py"},{"args":{"brightness":1.0,"reverse":false,"rotation-time":20.0},"name":"Rainbow swirl","script":"/opt/hyperion/effects/rainbow-swirl.py"}],"priorities":[{"duration_ms":998,"priority":800},{"duration_ms":54,"priority":1000}],"transform":[{"blacklevel":[0.0050,0.0050,0.0050],"gamma":[1.60,1.60,1.80],"id":"default","saturationGain":1.0,"threshold":[0.0,0.0,0.0],"valueGain":1.0,"whitelevel":[1.0,0.80,0.80]}]},"success":true}

2016.09.18 10:27:23 1: ATTENTION!!! Can't detect your version of hyperion! Please update your hyperion to V1.03.2 at least using HyperCon...
2016.09.18 10:27:23 5: Triggering wz_TVLicht (1 changes)
2016.09.18 10:27:23 5: Starting notify loop for wz_TVLicht, first event serverResponse: ERROR


Danach habe ich dann auf eine nicht vorhandene IP Adresse gebogen, da kommt der "alte" lastError noch immer hinterher :

Global global MODIFIED wz_TVLicht
Hyperion wz_TVLicht serverResponse: ERROR
Hyperion wz_TVLicht lastError: 192.168.0.75: No route to host
Hyperion wz_TVLicht serverResponse: ERROR
Hyperion wz_TVLicht ERROR
Hyperion wz_TVLicht serverResponse: ERROR
Hyperion wz_TVLicht lastError: ATTENTION!!! Can't detect your version of hyperion! Please update your hyperion to V1.03.2 at least using HyperCon...
Hyperion wz_TVLicht serverResponse: ERROR


Grüße
jupp

DeeSPe

Perfekt, vielen Dank für's Testen und die schnelle Rückmeldung Jupp.
Deine alte Hyperion Version liefert wirklich sehr viel weniger Daten per JSON als das aktuelle Versionen tun. Eine Versionsnummer ist bei Dir im JSON gar nicht enthalten, deswegen auch:
ATTENTION!!! Can't detect your version of hyperion! Please update your hyperion to V1.03.2 at least using HyperCon...

Wenn ich eine IP Adresse eingebe auf der gar kein Hyperion läuft dann bekomme ich allerdings Folgendes:

2016.09.18 14:20:40 3 : Opening tvlrr device 192.168.1.233:19444
2016-09-18 14:20:40 Global global DEFINED tvlrr
2016.09.18 14:20:43 3 : Can't connect to 192.168.1.233:19444:
2016-09-18 14:20:43 Hyperion tvlrr lastError: 192.168.1.233: Keine Route zum Zielrechner
2016-09-18 14:20:43 Hyperion tvlrr serverResponse: ERROR
2016-09-18 14:20:43 Hyperion tvlrr state: ERROR


Wenn ich die IP dann abändere (in DEF) auf eine auf der Hyperion läuft, dann dauert es ein paar statusRequests bis die Verbindung zum Server wieder steht, das liegt aber denke ich am verwendeten DevIo. Das muss ich nochmal prüfen.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe