Nach dem Update alle MQTT/Zigbee devices weg

Begonnen von chdrsto, 01 Mai 2021, 15:42:52

Vorheriges Thema - Nächstes Thema

chdrsto

Hallo Community
Nachdem ich heute ein system update (update all --> shutdown restart) gemacht habe, sind nun alle MQTT/zigbee devices weg.

und bekomme folgende Fehlermeldung im FHEM:
Messages collected while initializing FHEM:configDB: No MQTT IODev found.
setuuid: Please define xBridge first
No MQTT IODev found.
setuuid: Please define Coordinator first
No MQTT IODev found.
setuuid: Please define 0x00158d00044ab259 first
No MQTT IODev found.
setuuid: Please define 0x00158d000444c2ba first
No MQTT IODev found.
setuuid: Please define 0x086bd7fffe36efdc first
No MQTT IODev found.
setuuid: Please define 0xccccccfffe8c4335 first
....


UPDATE - I - 01.05.2021 / 16:08:

Was ich gesehen habe ist, dass das Modul 00_MQTT2_CLIENT.pm aktualisiert wurde ... ich vermute es hängt damit zusammen

kann da jemand unterstützen?

CoolTux

Backup einspielen und Neustart.
Per Default wird bei einem Update immer ein Backup erstellt im Ordner Restore.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Otto123

Zur Unterstützung
https://wiki.fhem.de/wiki/Update#R.C3.BCcksichern_beim_Update_.C3.BCberschriebener_Dateien

Hauptsache die Konfiguration war wirklich gesichert? Nach define xBridge mal save gemacht?
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Beta-User

xBridge und MQTT klingt nach alter Implementierung. Vermute eher was mit IODev. als Ursache.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

chdrsto

Hallo Leute.

Besten Dank, nachdem ich das komplete restore durchgeführt habe funktioniert es wieder. Die Frage ist nur, was muss ich jetzt machen damit ich wieder updaten kann?

rudolfkoenig

Ich habe zwar an der IODev Zuweisung geaendert, allerdings:
- sollte die Aenderung kompatibel sein
- habe gerade ein Test mit MQTT2_CLIENT und MQTT2_DEVICE gemacht, und kein Problem gesehen
- ich finde in den ganzen Quellen keine Meldung mit "No MQTT IODev found.", auch keine Varianten davon
- die setuuid Meldung ist auch merkwuerdig, ich habs nicht geschafft was vergleichbares zu provozieren.

Womoeglich hilft ein "attr global verbose 5" beim FHEM-Start, um das Problem lokalisieren zu koennen.

Beta-User

Wir reden über das inoffizielle Xiaomi_MQTT_Device, oder?
Bitte list bzw. TYPE nennen.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

chdrsto

Genau, es handelt sich hierbei um ein XiaomiMQTTDevice.
Gibt es eine andere Alternative hierfür? Bin gerne bereit zu lernen.

Beta-User

Es gibt auch die "neue" Implementierung, wie unter https://wiki.fhem.de/wiki/Zigbee2mqtt beschrieben. Trotzdem wäre interessant, warum das (alte) IO-Modul nicht geladen wurde. Dazu sollte eigentlich auch was im Log stehen, und an sich müßte das dann auch früher oder später eine ganze Anzahl von anderen Usern betreffen.
Ich kann mir aber im Moment nicht vorstellen, dass da was durch ein update "zerschossen" worden sein soll, dann müßte es auch irgendwelche updates im Perl-Umfeld gegeben haben (das alte IO-Modul braucht lib-pluggable).

(Falls du Pi+SD-Karte nutzt, wäre jetzt Zeit für ein Backup und sicherheitshalber eine neue Karte, ist aber nur ein Bauchgefühl).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

rudolfkoenig

ZitatGenau, es handelt sich hierbei um ein XiaomiMQTTDevice.
Wo findet man dieses Modul?

Beta-User

Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

chdrsto

@Beta-User
Danke, werde ich demnächst durchführen. Aktuell fehlt mir jedoch eine Ersatz-SDKarte.

@rudolfkoenig
Meine Installation ist ca. 3-4 jährig und ich kann Dir ehrlich nicht mehr sagen woher ich dieses Modul geholt habe.
Werde mich aber demnächst mit einer Umstellung auf das "neue" MQTT2_SERVER / Device informieren.

rudolfkoenig

Zitathttps://forum.fhem.de/index.php/topic,84790.msg771021.html#msg771021
Boeses Modul :)
- laedt das MQTT Modul, und ruft direkt Funktionen da drin auf, verhindert damit eine unabhaengige IODev Implementierung
- wenn vorher kein MQTT-Device definiert wurde, stuerzt FHEM ab.
- verweigert das Arbeiten, wenn das IODev Attribut nicht gesetzt ist, anstatt auf $hash->{IODev} zu pruefen.

Falls jemand das Modul trotzdem behalten will, mit folgenden Patch wird das gemeldete Problem vermieden:
--- FHEM/72_XiaomiMQTTDevice.pm 2021-05-02 11:28:18.782942432 +0200
+++ FHEM/72_XiaomiMQTTDevice.pm.orig 2021-05-02 11:01:09.000000000 +0200
@@ -124,7 +124,7 @@
         }
     }

-    return "No MQTT IODev found." if(!defined($hash->{IODev}));
+    return "No MQTT IODev found." if(!defined($main::attr{$name}{IODev}));

     $hash->{NOTIFYDEV} = "global";
     SubscribeReadings($hash) if($main::init_done);
@@ -138,7 +138,7 @@
my ($own_hash, $dev_hash) = @_;
my $ownName = $own_hash->{NAME}; # own name / hash
 
- return "No MQTT IODev found." if(!defined($own_hash->{IODev}));
+ return "No MQTT IODev found." if(!defined($main::attr{$ownName}{IODev}));
 
my $devName = $dev_hash->{NAME}; # Device that created the events
my $events = main::deviceEvents($dev_hash, 1);
@@ -491,4 +491,4 @@
readingsSingleUpdate($hash, 'state', 'offline', 1);
}

-1;
+1;
\ No newline at end of file

chdrsto

#13
Zitat von: rudolfkoenig am 02 Mai 2021, 11:30:57
Boeses Modul :)
- laedt das MQTT Modul, und ruft direkt Funktionen da drin auf, verhindert damit eine unabhaengige IODev Implementierung
- wenn vorher kein MQTT-Device definiert wurde, stuerzt FHEM ab.
- verweigert das Arbeiten, wenn das IODev Attribut nicht gesetzt ist, anstatt auf $hash->{IODev} zu pruefen.

Falls jemand das Modul trotzdem behalten will, mit folgenden Patch wird das gemeldete Problem vermieden:
--- FHEM/72_XiaomiMQTTDevice.pm 2021-05-02 11:28:18.782942432 +0200
+++ FHEM/72_XiaomiMQTTDevice.pm.orig 2021-05-02 11:01:09.000000000 +0200
@@ -124,7 +124,7 @@
         }
     }

-    return "No MQTT IODev found." if(!defined($hash->{IODev}));
+    return "No MQTT IODev found." if(!defined($main::attr{$name}{IODev}));

     $hash->{NOTIFYDEV} = "global";
     SubscribeReadings($hash) if($main::init_done);
@@ -138,7 +138,7 @@
my ($own_hash, $dev_hash) = @_;
my $ownName = $own_hash->{NAME}; # own name / hash
 
- return "No MQTT IODev found." if(!defined($own_hash->{IODev}));
+ return "No MQTT IODev found." if(!defined($main::attr{$ownName}{IODev}));
 
my $devName = $dev_hash->{NAME}; # Device that created the events
my $events = main::deviceEvents($dev_hash, 1);
@@ -491,4 +491,4 @@
readingsSingleUpdate($hash, 'state', 'offline', 1);
}

-1;
+1;
\ No newline at end of file


ich habe den Patch mit meiner Datei überprüft und gesehen, dass diese Änderungen schon implementiert sind / waren. Trotzdem kam der Fehler

rudolfkoenig

Zitatich habe den Patch mit meiner Datei überprüft und gesehen, dass diese Änderungen schon implementiert sind / waren.
Das wuerde mich sehr ueberraschen, ich habe das Modul heute "frisch" vom git geholt.

chdrsto

https://github.com/oskarn97/fhem-xiaomi-mqtt/blob/master/FHEM/72_XiaomiMQTTDevice.pm

Also wenn ich den entsprechenden github öffne, und die Zeilen vergleiche sehe ich die im Patch enthaltenen neuen Zeilen. Ev. mache ich was falsch.

rudolfkoenig

Liegt daran, dass mein Patch "falsch-rum" ist, sorry :)

chdrsto

Perfekt, habe entsprechend angepasst und geupdated ... bisher keine Fehler.
Danke euch, werde aber trotzdem versuchen auf das andere Modul zu wechseln.

magomme

#18
chdrsto, wie sieht nun die 72_XiaomiMqttDevice.pm aus ?
verstehe das nicht was rudolfkoenig da meint : Liegt daran, dass mein Patch "falsch-rum" ist, sorry
danke

magomme

Zitat von: rudolfkoenig am 02 Mai 2021, 19:50:16
Liegt daran, dass mein Patch "falsch-rum" ist, sorry :)

Was meinst DU damit ? Falsch herum ?
Grüsse Martin

Beta-User

Zitat von: magomme am 15 Mai 2021, 21:56:46
Was meinst DU damit ? Falsch herum ?
Grüsse Martin
Die Zeilen, die raus sollen, sind mit einem "+" gekennzeichnet, statt wie sonst üblich mit einem "-" (und umgekehrt).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

rudolfkoenig

Und wenn man patch verwendet, um diesen Textstueck einzubauen, dann muss man -R angeben (reverse patch).

magomme

Ach so, alles klar. DAnke für die Hilfe. Modul läuft wieder.
Schönes WE

Erwin01

Hallo, eine Frage an Rulolfkoenigs Patch:
Was ist gemeint in Zeile 491?
Die 1 muss raus und eine -1 rein? Oder was?

Grüß euch alle

IcedEarth

Ich nutze das Modul ebenfalls und nachdem ich eben ein Update gemacht habe, bin ich aus allen Wolken gefallen, als alle meine Sensoren weg waren.
Habe jetzt das letzte Backup eingespielt und alles ist wieder da.
Wie kriege ich denn jetzt den Patch der auf der ersten Seite gepostet wurde in das System, sodass ich updaten kann? Bin noch nie in die Situation gekommen.

Viele Grüße

chdrsto

Hallo

Du musst die Datei  /opt/fhem/FHEM/72_XiaomiMQTTDevice.pm an zwei stellen abändern:

1) Zeile 127 (bei mir zumindest):
return "No MQTT IODev found." if(!defined($main::attr{$name}{IODev}));
durch ..:
return "No MQTT IODev found." if(!defined($hash->{IODev}));
ersetzen

und:

2) Zeile 142:
return "No MQTT IODev found." if(!defined($main::attr{$ownName}{IODev}));
durch ...:
return "No MQTT IODev found." if(!defined($own_hash->{IODev}));
ersetzen

IcedEarth

Achso. Dachte ich muss da irgendwo ein gut anpassen.
Das kriege ich hin.
Danke dir!

IcedEarth

Eine Frage noch.
Wenn ich jetzt ein Update starte, wird da nicht die alte Version vom GitHub gezogen, weil er einen Unterschied feststellt?

rudolfkoenig

Vermutlich ja.
Eine Loesung ist die Github-Repository aus der update-Liste zu entfernen mit "update list" gefolgt von "update delete <repository>"

mirko_s

Hallo, ich habe heute versehentlich auch ein FHEM Update gestartet und nun keine Xiaomi Geräte mehr..... :-(
Ich würde von euch Spezialisten gerne wissen was der empfohlene Weg ist das Problem zu lösen?
1) Backup einspielen und auf dem Stand verweilen?
2) XiaomiMQTTDevice durch irgendwas anderes (https://wiki.fhem.de/wiki/Zigbee2mqtt#Define_eines_MQTT2-Devices_als_.22Bridge.22) ersetzen und alle Geräte neu konfigurieren?
3) Den Patch bei mir lokal einspielen und dann nie mehr updaten? Wäre ja wie Punkt 1?

Danke und Gruß
Mirko

rudolfkoenig

Aus Sicht des Modul-Maintainers: natuerlich Variante 2.
Wenn man keine Zeit/Lust fuer Umbau hat: Patch einspielen, und "attr global exclude_from_update XiaomiMQTTDevice" setzen.

bnuter

Danke an alle die hier zur Lösung beigetragen haben.
Hatte heute einen Stromausfall und anschließend auch keine Xiaomi Sensoren mehr.
Hab jetzt einmal den Patch ausgeführt und werd' mich über kurz oder lang mit der Umstellung auf was anderes beschäftigen

kennymc.c

#32
Leider kam es bei mir heute nach einem Update trotz gesetztem attr global exclude_from_update XiaomiMQTTDevice zu einem Fhem Bootloop durch das XiaomiModul, den ich erst durch das Einspielen eines Backups beheben konnte. Im Update Log wird das XiaomiMQTTDecvice seltsamerweise auch mit aufgeführt, obwohl es ausgeschlossen werden sollte (Downloading https://raw.githubusercontent.com/oskarn97/fhem-xiaomi-mqtt/master/controls_xiaomi-zb2mqtt.txt).

Leider scheint der selbe Bootloop Fehler jetzt auch bei einem normalen Neustart aufzutreten:
Undefined subroutine &XiaomiMQTT::DEVICE::send_publish called at ./FHEM/72_XiaomiMQTTDevice.pm line 484
In dieser Zeile wurde ja gar nichts verändert:
my $msgid = send_publish($hash->{IODev}, topic => $topic, message => $message, qos => 1, retain => 0);

Könnte eventuell auch etwas mit meinem anderen Problem zu tun haben: https://forum.fhem.de/index.php/topic,122767.0.html. Es reicht wohl aus nur die fhem.cfg aus dem Backup zu ersetzten, damit es wieder läuft. Da scheint beim Neustart irgendetwas mit zu passieren.

Ok, ich hatte aufgrund des anderen Problems den Broker jeweils gelöscht und neu angelegt. Wird Fhem danach neu gestartet, kommt es zu diesem Fehler. Ansonsten nicht.