Autor Thema: CoProcess Start bei init_done=0  (Gelesen 226 mal)

Offline dominik

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2042
CoProcess Start bei init_done=0
« am: 29 September 2020, 22:21:51 »
Hallo,

wäre es möglich, dass man einen CoProcess::start() auch während dem Startup (init_done=0) zulässt? Ich habe nämlich Module die im Define den Prozess gestartet benötigen um das Define auszuführen. Wäre super wenn man folgende Zeile entfernen oder als Parameter deaktivieren könnte:
https://github.com/mhop/fhem-mirror/blob/master/fhem/FHEM/CoProcess.pm#L140

Danke & Gruß
dominik
Autor: 10_EQ3BT (EQ-3 Bluetooth Thermostat), 98_BOSEST (BOSE SoundTouch), 98_DLNARenderer (DLNA Renderer), 98_GOOGLECAST (Google Cast), 39_gassistant (Google Assistant), 10_GFPROBT (G.F.Pro Watering)
Kaffeespende: https://paypal.me/todominik

Offline zap

  • Developer
  • Hero Member
  • ****
  • Beiträge: 3465
    • HMCCU
Antw:CoProcess Start bei init_done=0
« Antwort #1 am: 30 September 2020, 11:54:17 »
Ich denke auch, dass man die Entscheidung dem Entwickler überlassen kann, ob er das vor oder nach Abschluss der FHEM Initialisierung aufruft. Man muss natürlich wissen, was man tut. Ggf. fehlen vor dem init_done = 1 einige Attribute oder Devices, weil die Config noch nicht komplett abgearbeitet wurde.

Das könnte sonst schon zu unangenehmen Seiteneffekten führen.

Alternativ kannst Du natürlich auf CoProcess verzichten und einfach einen fork() nutzen oder z.B. SubProcess.pm verwenden.
« Letzte Änderung: 30 September 2020, 11:55:53 von zap »
2xCCU3, diverse Komponenten (Fenster, Rolladen, Themostate, Stromzähler, Steckdosen ...)
FHEM mit Raspi für CCU Integration.
IOBroker für UI (VIS), Hue, Sonos usw.
Maintainer der Module FULLY, Meteohub und HMCCU (Schnittstelle CCU-FHEM = best of both worlds approach

Offline dominik

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2042
Antw:CoProcess Start bei init_done=0
« Antwort #2 am: 30 September 2020, 19:19:31 »
Da hast du Recht mit den Seiteneffekten, aber das haben wir denke ich so oder so. Bei jedem Define müsste man nämlich in speziellen Fällen auf $init_done prüfen.

Also ich würde mich freuen wenn wir den Start mit einem Parameter forcieren könnten.
Autor: 10_EQ3BT (EQ-3 Bluetooth Thermostat), 98_BOSEST (BOSE SoundTouch), 98_DLNARenderer (DLNA Renderer), 98_GOOGLECAST (Google Cast), 39_gassistant (Google Assistant), 10_GFPROBT (G.F.Pro Watering)
Kaffeespende: https://paypal.me/todominik

 

decade-submarginal