ich habe eine Frage bzgl der Nutzung von IPS_SetProperty/IPS_ApplyChanges.
Im Tibber_Realtime Module wird ein Websocket verwendet, hin und wieder kommt es vor, das die Verbindung stecken bleibt. Dazu habe ich einen Timer und wenn der abläuft wird die Instanz geschlossen, zufällig zwischen 60-120 sek gewartet und dann wieder geöffnet.
Laut Tibber-Doku soll das so auch ablaufen. Verbindung schließen, warten, neu aufbauen.
No data due to networking issues: it may be wise to implement reconnect mechanism in case no data has been received for several minutes. During a retry, the old websocket connection must first be destroyed and proper jitter and exponential delay implemented.
Ein ApplyChanges reicht aus. Active (heißt der nicht Open??) brauchst du dafür nicht anfassen. Wenn der durch den User auf false stand, ist er danach immernoch geschlossen. Das musst du dann ggf. andersweitig abfangen und die Abfragen garnicht mehr starten.
entweder verstehe ich deine Ausführung nicht, oder du meine
Der User macht gar nichts… Schaltet der User die Instanz aus, bleibt sie das auch.
Schaltet der User die Instanz an, läuft ein Timer mit, kommen Daten an, beginnt der Timer von neu.
Läuft der Timer jedoch ab (weil keine Daten kommen), DANN wird ein neuer Timer gestartet mit einer zufälligen Zeit zwischen 60-120 sek, die Instanz geschlossen und im Anschluss, nach Ablauf des Timers, wieder gestartet.
Dafür muss ich den Websocket aber schließen. Es läuft ja auch alles, die Frage ist aber, ist das ganze noch Review-Konform… Das Modul ist schon 2x (zurecht) wegen IPS_SetProperty Nutzung nicht durchgekommen, ich gehe daher diesmal alles nochmal durch und da fiel mir das auf.
@tobiasr meint bestimmt den IO also die websocket Instanz.
Wenn deine Instanz eine übergeordnete Instanz mit der Einstellung Open/Close aktive/inaktiv hat, dann nutzt man normalerweise diese und baut keine eigene in seine Instanz ein.
Genau diese i/o instanz (WS-Client) muss ich ja programmatisch für 60-120 sek schließen. Und das mache ich derzeit über das deaktivieren/aktivieren der Instanz mit
Ja, aber du solltest sie natürlich nur neu öffnen, wenn sie vorher auch schon aktiv war.
Wenn der User sie vorher deaktiviert hat, darfst du sie nicht einfach wieder aktivieren.
Michael