FHEM startet nicht wenn MQTT am Ende der fhem.cfg steht

Begonnen von throbin, 20 März 2018, 10:16:02

Vorheriges Thema - Nächstes Thema

throbin

Hi,

wenn man in FHEM den MQTT Broker löscht und wieder neu anlegt, (MQTT Devices existieren bereits), startet FHEM nicht mehr richtig, zumindest ist kein Webinterface mehr erreichbar.
Einzige Lösung: fhem.cfg editieren und die Definition des Brokers vor dem ersten MQTT Device setzen.

LG

hexenmeister

bekannt. hat damit zu tun, dass die MQTT-Devices ihren IO nicht finden (und zusätzlich nutzen sie auch noch aus dem MQTT-Modul einige Routinen, die dann eben wohl nicht geladen sind). Eine andere Lösung, als Du schon selbst genannt hast, gibt es derzeit nicht.
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

betateilchen

doch, gibt es.

Zitat von: hexenmeister am 20 März 2018, 10:56:59
zusätzlich nutzen sie auch noch aus dem MQTT-Modul einige Routinen, die dann eben wohl nicht geladen sind

Da hilft ein einfaches "require <moduleName>", dann wird 00_MQTT.pm vom ersten MQTT device geladen, falls das Modul noch nicht geladen ist. Damit stehen auch die Funktionen aus dem Modul frühzeitig zur Verfügung.

Und für das Finden des IO durch die einzelnen MQTT devices stellt FHEM seit langem Mechanismen bereit, um das Reihenfolgeproblem zu lösen. Dieses Problem tritt ja prinzipiell nicht nur bei MQTT auf, sondern überall da, wo devices ein vorher definiertes IO benötigen. Im einfachsten Fall verzögert man im xx_Define() das Anlegen eines devices so lange, bis init_done gesetzt ist. Rudi hat das Vorgehen schon mehrmals hier im Forum beschrieben.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

hexenmeister

#3
Stimmt, hätte ich selbst drauf kommen können ;D

Das Problem mit dem IODev ist sogar vermutlich dann gar nicht vorhanden (soweit ich beim schnellen Blick sehe, sind ja nicht meine Module, ich habe nur ein oder anderes Patch dazu eingerecht).
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy