Autor Thema: websocket - Abhängigkeiten verfolgen  (Gelesen 308 mal)

Offline OdfFhem

  • Sr. Member
  • ****
  • Beiträge: 565
websocket - Abhängigkeiten verfolgen
« am: 05 Februar 2020, 08:43:03 »
@rudolfkoenig

Aktuell beschäftige ich mich damit, dass ein websocket eine Verbindung eingeht:

- die Verbindung ist zunächst einmal ohne echte Verbindungen
- mit der Zeit kann man via send Abhängigkeiten festmachen
- die websocket-Variante sollte mit der Zeit zusammenhängen

- ich teile dem websocket mit der Zeit mit, welche Devices ich teilhaben möchte
- es sind eigentlich nur welche Internals, Readings und Attribute, die geteilt werden
- pro Device gibt es immer nur die Dinge, die tatsächlich geteilt werden sollen
- die geteilten Timestamps sollten tatsächlich geteilt werden
- pro Device gibt es keine großen Abhängigkeiten; sie sind von der Zeit abhängig
- es gibt also keine zusätzlichen Möglichkeiten, die Abhängigkeiten festzumachen
- so sollte man mit der Zeit, alles was wirklich benötigt wird, zusammenhängen

Aktuell kann z.B. Raspberry8SysMon festgemacht werden:
"Raspberry8SysMon" --- "STATE" --- "<InternalsValue>" --- null
"Raspberry8SysMon" --- "fhemuptime_text" --- "<ReadingsValue>" --- "<ReadingsTimestamp>"
"Raspberry8SysMon" --- "filesystems" --- "<AttributValue>" --- null

Beispielhaft sind die folgenden Dinge abhängig; eigentlich brauche ich sie nicht und machen das System "kaputt":
["Raspberry8SysMon","Initialized","<div id=\u0022Raspberry8SysMon\u0022  title=\u0022Initialized\u0022 class=\u0022col2\u0022>Initialized</div>"]
["Raspberry8SysMon-cpu_temp","38.63","38.63"]
["Raspberry8SysMon-cpu_temp-ts","2020-02-04 12:22:38","2020-02-04 12:22:38"]
["Raspberry8SysMon-stat_cpu_percent","2.52 0.00 3.49 93.94 0.04 0.00 0.00","2.52 0.00 3.49 93.94 0.04 0.00 0.00"]
["Raspberry8SysMon-stat_cpu_percent-ts","2020-02-04 12:22:38","2020-02-04 12:22:38"]
["Raspberry8SysMon-ram","Total: 926.08 MB, Used: 227.27 MB, 24.54 %, Free: 99.48 MB","Total: 926.08 MB, Used: 227.27 MB, 24.54 %, Free: 99.48 MB"]
["Raspberry8SysMon-ram-ts","2020-02-04 12:22:38","2020-02-04 12:22:38"]
["Raspberry8SysMon-uptime","1889135","1889135"]
["Raspberry8SysMon-uptime-ts","2020-02-04 12:22:38","2020-02-04 12:22:38"]
["Raspberry8SysMon-fhemuptime_text","6 days, 20 hours, 31 minutes","6 days, 20 hours, 31 minutes"]
["Raspberry8SysMon-fhemuptime_text-ts","2020-02-04 12:22:38","2020-02-04 12:22:38"]
["Raspberry8SysMon-loadavg","0.18 0.24 0.26","0.18 0.24 0.26"]
["Raspberry8SysMon-loadavg-ts","2020-02-04 12:22:38","2020-02-04 12:22:38"]
["Raspberry8SysMon-cpu_temp_avg","39.3","39.3"]
["Raspberry8SysMon-cpu_temp_avg-ts","2020-02-04 12:22:38","2020-02-04 12:22:38"]


Die Frage ist, ob wir die websocket-Variante generell festmachen können; ich wäre froh, wenn man die Abhängigkeiten grundsätzlich festmachen könnte. Bin aber natürlich auch nicht sicher, ob man das alles machen kann ...

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 21888
Antw:websocket - Abhängigkeiten verfolgen
« Antwort #1 am: 05 Februar 2020, 09:59:55 »
Ich habe den Beitrag jetzt mehrmals durchgelesen, habe es aber nicht verstanden.

Ich versuche mein Wissen zum Thema "FHEMWEB Benachrichtigung ueber websocket" zu skizzieren, vielleicht hilft das eine gemeinsame Sprache zu finden:
- das FHEMWEB websocket Interface implementiert einen historisch gewachsenen Benachrichtigungsmechanismus (Stichwort longpoll) fuer das Browser-Frontend, weiterhin interpretiert alles Empfangene als FHEM-Befehl, und schickt das Ergebnis auf dem gleichen Weg zurueck.
- mit dem URL/CGI Parameter inform legt man fest, welche Nachrichten gesendet werden sollen, das ist de-facto ein Filter fuer die normalen FHEM Events, so wie notify oder FileLog das auch machen (hier mit einem anderen Syntax).
- neben den Events wird auch "die Anzeige" gesendet, das kann HTML sein.
- wenn man ausser den Events weitere Daten haben will, dann muss man das anders, z.Bsp. ueber ein selbst abgesetzten list/xmllist/jsonlist2 besorgen

Offline OdfFhem

  • Sr. Member
  • ****
  • Beiträge: 565
Antw:websocket - Abhängigkeiten verfolgen
« Antwort #2 am: 05 Februar 2020, 13:40:05 »
@rudolfkoenig

Ich bin gerade dabei, ein websocket zu betreiben - es gibt noch keine direkten Device-Abhängigkeiten; es wird also nur das Login gebildet.

- Nach und nach kommen die Device-Abhängigkeiten zur Geltung und ich habe Devices sowie Internals-,Readings- oder Attributes-Abhängigkeiten.
- Ich kann die Abhängigkeiten im Zweifel etwas verzögern, so dass dann erst mit der Zeit sich Abhängigkeiten festmachen.
- Die Abhängigkeiten würden über die send-Benachrichtigung laufen.
- Nachdem ich die Abhängigkeiten immer weiter verbessere, würde ich immer weiter ein add pflegen (und vielleicht auch ein delete, falls irgendwas nicht mehr gebraucht wird).
- Es würden auf jeden Fall nur wirklich gern gesehene Abhängigkeiten gepflegt werden.

- Zum Testen nutze ich aktuell, das ich myMqttGenericBridge:outgoing-count sowie Raspberry8SysMon:fhemuptime_text nutze.
- Die beiden Readings kommunizieren via onmessage der websocket-Variante.
- Wichtig ist, dass ich nur echte Abhängigkeiten habe ...
- Nach und nach würde ich gerne neue Abhängigkeiten bekommen ... aber nur, was ich haben will, soll auch kommen ... es gibt also keine Abhängigkeiten, die ich gar nicht haben will ...

- Irgendwann ist dann der websocket zu Ende, aber das dauert ja im Zweifel ewig - ist also hier nur erwähnt.


Es ist noch schwierig, das was ich gerne haben will, festzumachen; aber ich möchte praktisch die send-Variante können ... so will ich eigentlich wirklich die Abhängigkeiten festmachen ... bin aber noch unsicher, wie das am besten gemacht werden könnte ... ich brauch auf jeden Fall auch nicht die list/xmllist/jsonlist2-Varianten ... ich möchte ja dem websocket mitteilen, was ich gerne hätte und das soll dann zurückgegeben werden ...

Online herrmannj

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 5407
Antw:websocket - Abhängigkeiten verfolgen
« Antwort #3 am: 05 Februar 2020, 15:49:42 »
Wie ist der Zusammenhang zwischen fhemweb (Forenbereich) und deiner Frage?
smartVisu mit fronthem, einiges an HM, RFXTRX, Oregon, CUL, Homeeasy, ganz viele LED + Diverse

Offline OdfFhem

  • Sr. Member
  • ****
  • Beiträge: 565
Antw:websocket - Abhängigkeiten verfolgen
« Antwort #4 am: 06 Februar 2020, 06:31:46 »
@herrmannj

Dies ist der Verbindungsaufbau zum WebSocket ...
WebSocket connection to 'ws://raspberrypi8:8086/fhem/?XHR=1&inform=type=status;filter=;since=1580966416720;fmt=JSON&timestamp=1580966416720'

Irgendwann mache ich das Device samt Abhängigkeit ... wird via onmessage generiert ...
myMqttGenericBridge,outgoing-count

Irgendwann mache ich das Device samt Abhängigkeit ... wird via onmessage generiert ...
Raspberry8SysMon,fhemuptime_text


Interessant ist, wie man so etwas aufbaut und nur tatsächlich die gewollten Abhängigkeiten ...

 

decade-submarginal