Was meinst Du mit "beim Hochlauf" genau?
Ankündigung
Einklappen
Keine Ankündigung bisher.
Unterstützung bei Plugin-Entwicklung mit asyncio Loop
Einklappen
X
-
Zitat von Msinn Beitrag anzeigenWas meinst Du mit "beim Hochlauf" genau?
Code:2021-12-30 16:12:28 INFO plugins.velux Update item: 'dg.bad.lang', item has been changed by 2021-12-30 16:12:28 INFO plugins.velux Update item: 'dg.bad.lang', item has been changed outside this plugin 2021-12-30 16:12:28 DEBUG plugins.velux update_item was called with item 'dg.bad.lang' from caller 'knx', source '1.1.98:ga=3/0/10' and dest '3/0/10' 2021-12-30 16:12:28 DEBUG plugins.velux Zu Fahren
Das Item sieht wie folgt aus:
Code:lang: type: bool enforce_updates: 'yes' visu_acl: rw knx_dpt: 1 knx_cache: 3/0/10 velux_cmd: fahren
Angehängte Dateien
Kommentar
-
Zitat von android Beitrag anzeigen2021-12-30 16:12:28 INFO plugins.velux Update item: 'dg.bad.lang', item has been changed by
2021-12-30 16:12:28 INFO plugins.velux Update item: 'dg.bad.lang', item has been changed outside this plugin
2021-12-30 16:12:28 DEBUG plugins.velux update_item was called with item 'dg.bad.lang' from caller 'knx', source '1.1.98:ga=3/0/10' and dest '3/0/10'
2021-12-30 16:12:28 DEBUG plugins.velux Zu Fahren
Wo ist das Problem?
Viele Grüße
Martin
There is no cloud. It's only someone else's computer.
Kommentar
-
Zitat von Msinn Beitrag anzeigen
Wo ist das Problem?
Danke.
Kommentar
-
Ich klinke mich hier mal ein: ich versuche gerade die Lib "goodwe" zu nutzen, die mit asyncio geschrieben ist.
Ich baue auf Basis des aktuellsten sample_plugin templates und mache in plugin_coro eine Verbindung zu WR auf und rufe die Daten ab + packe sie in Items.
Das Problem ist, dass dieser Aufruf nur einmalig erfolgt. Ich hätte dies gerne via Cycle wiederkehrend. Ich rufe nur ab und werde nie Daten rausschreiben.
Rein technisch klappt es, einen Scheduler zu erzeugen, der lediglich self.start_asyncio(self.plugin_coro()) aufruft. Aber so ganz sauber fühlt sich das nicht an.
Ideen? Ansonsten muss ich mich wohl auch einarbeiten oder den Teil wieder rauskicken und nur die MQTT Schnittstelle zum WR im Plugin lassen.
Kommentar
-
Du musst dafür sorgen, dass die plugin_coro nicht endet. Schau mal in das hue_apiv2 Plugin. Das nutzt die neue asyncio Unterstützung.
Dort ist eine While Schlefe (die keinen Code enthält) als Blocker. Die plugin_coro startet „nur“ die notwendigen asyncio Tasks um mit aiohue zu arbeiten. Einen Scheduler musst Du nicht erzeugen (wäre auch nicht wirklich zielführend). Du musst nur dafür sorgen, dass die plugin_coro nicht endet. Solange die läuft, gibt es eine asyncio Eventloop. Die arbeitet die Tasks ab, die Du in der plugin_coro gestartet hast und die Tasks, die Du (von der Thread Seite kommend) mit self.run_asyncio_coro() startest.
Die Doku zur Verwendung der asyncio Unterstützung werde ich erst in den kommenden Wochen erstellen.Zuletzt geändert von Msinn; 03.04.2024, 15:44.Viele Grüße
Martin
There is no cloud. It's only someone else's computer.
- Likes 1
Kommentar
Kommentar