felixganzer / ioBroker.hyperion_ng

adapter for control hyperionng for iobroker
MIT License
4 stars 5 forks source link

adapter disconnect fro hyperionNG device after timeout #4

Closed volkerrichert closed 3 years ago

volkerrichert commented 3 years ago

Wenn running the adapter, it will disconnect from the device after the timeout and did not reconnect. after that the adaptor will not recognize any changes e.b. done by HyperionNG web frontend.

To Reproduce

Expected behavior
I'd like to see synced data of hyperion in ioBorker and not just reconnect an changes in ioBroker

Cosmicbase commented 3 years ago

Zuerst mal Hallo!

Dein Englisch ist Grottenschlecht, aber egal. 😂 Deinen Fehler kann ich so nicht nachvollziehen. Habe den Adapter schon mehrere Wochen am laufen und das ehrlich ohne Probleme. Ich muss dem @felixganzer ein großes Lob aussprechen, der es ermöglicht hat ne Lösung für Hyperion NG zu programmieren. Meine Lösungsansätze sind sehr gut umgesetzt worden und ich bin froh diesen Adapter zu haben.

Einen Tip von mir. Stelle zu deinem Fehler ein Log dazu und beschreibe Ihn wann er vorkommt, wie oft und vorallem was für eine System du hast.

Raspbian OS? Js-controller? Nodejs? Npm?

usw.

volkerrichert commented 3 years ago

So I have to practice ;-) I'll post some logs later this day.

volkerrichert commented 3 years ago

Ok, here we go... I started with the default setting and got this Logs:

hyperion_ng.0 2021-05-04 13:24:58.826 info (29679) Adjustment is set hyperion_ng.0 2021-05-04 13:24:58.825 info (29679) read out Adjustments finished hyperion_ng.0 2021-05-04 13:24:58.286 info (29679) set Adjustment gammaBlue of instance 0 to 1.5 hyperion_ng.0 2021-05-04 13:24:39.796 info (29679) component is set hyperion_ng.0 2021-05-04 13:24:39.795 info (29679) read out components finished hyperion_ng.0 2021-05-04 13:24:39.249 info (29679) socket is connected hyperion_ng.0 2021-05-04 13:24:39.237 info (29679) set component LEDDEVICE of instance 0 to true
hyperion_ng.0 2021-05-04 13:20:05.787 info (29679) Connection closed
hyperion_ng.0 2021-05-04 13:20:05.724 info (29679) socket timeout
hyperion_ng.0 2021-05-04 13:19:10.869 info (29679) setup finished
hyperion_ng.0 2021-05-04 13:19:05.772 info (29679) create effects
hyperion_ng.0 2021-05-04 13:19:05.407 info (29679) read out priorities finished
hyperion_ng.0 2021-05-04 13:19:03.402 info (29679) create priorities
hyperion_ng.0 2021-05-04 13:19:02.701 info (29679) read out Adjustments finished
hyperion_ng.0 2021-05-04 13:19:02.302 info (29679) read out components finished
hyperion_ng.0 2021-05-04 13:19:01.507 info (29679) socket is connected
hyperion_ng.0 2021-05-04 13:19:01.458 info (29679) 210,0.5000000000000001,0.39215686274509803
hyperion_ng.0 2021-05-04 13:19:01.391 info (29679) create Control Parameter
hyperion_ng.0 2021-05-04 13:19:01.348 info (29679) starting. Version 0.1.19 in /opt/iobroker/node_modules/iobroker.hyperion_ng, node: v12.22.1, js-controller: 3.2.16

As you can see, the connection to hyperionNG is closed due to a timeout after 1 minute. Any changes made in the GUI of hyperionHG(!) like setting effects will not be detected by the adaptor. It will reconnect if some data is changed inside ioBorker only (above the "---" by enabling the led device).

Volker

felixganzer commented 3 years ago

Hi Volker,

Das ist kein Bug. Das ganze ist so gebaut, dass du vom Adapter aus die Kommunikation anstoßen musst. Von alleine fragt dieser keine Daten ab. Das ist im Prinzip möglich, habe mich bis jetzt aber dagegen entschieden. Das alles wurde schon im IOBroker Forum besprochen. Entschuldige, dass ich dies jetzt nicht widerholen will. Das ist der Link:

https://forum.iobroker.net/topic/40307/test-adapter-hyperionng-v0-1-x-github/24?_=1620159293101

Wenn die Funktionalität für dich wichtig ist, kann ich eine loop einbauen, die nach einem gewissen Zeitintervall die Daten ausließt. Das Ganze wäre dann deaktivierbar oder aktivierbar über ein Datenpunkt. Das Zeitintervall über die Adapter Config, also im Betrieb nicht Änderbar.

Zum manuellen aktualisieren gibt es unter general.control einen Datenpunkt.

volkerrichert commented 3 years ago

Danke für den Link. Das über einen loop zu machen ist sicherlich nicht optimal. Da reicht mir auf jeden Fall das "updateAdapter". Das eventbasiert zu bauen ist eher eine major release. Auch wenn der Client sehr schön gekapselt ist wird das einiges an Arbeit bedeuten das in Richtung "eventdriven" zu schieben.

volkerrichert commented 3 years ago

Und Danke für die Arbeit!