NEWS
Kann im MQTT Objekte nicht löschen
-
Darf ich dich mal bitten einen Blick auf meinen Fall zu werfen. Wie oben geschrieben habe ich durch mein Ausprobieren mit ESPEasy / Wemos D1 mini 8266 diverse Objekte als Restmüll in den MQTT Objekten stehen. Ich habe die beim Testen umbenannt und/oder die Daten die vom 8266 gepublished werden, geändert. Bei jeder Namesänderung z.B. wurde unter dem neuen Namen ein neues Objekt angelegt und nicht das alte Objekt überschrieben. Löschen hilft nicht, sie kommen wieder. Schaue ich in "states.json" und "objects.json" finde ich darin die alten und neuen Bezeichnungen. Gemeinsam haben die verschiedenen Namen die fest zugewiesene IP-Adresse vom Router.
Ich habe heute nun mal einen Sensor in beiden Dateien gelöscht der aber nach Starten des MQTT adapters wieder da war. Daher die Frage wie ioBroker mit den angelegten Datensicherungen "states.json.bak" und "objects.json.bak" umgeht. Bzw was ist mit den anderen Sicherungen in dem Ordner "/opt/iobroker/backup-objects". Welche Datei benutzt das System beim Start?
Ich habe folgendes gemacht.
- mqtt im iobroker angehalten
- Alle objekte im mqtt adapter gelöscht
- iobroker in der shell gestoppt
- Datensatz in "objects.json" und parallel in "states.json" gelöscht
- iobroker reboot
Wie wäre die richtige Reihenfolge bzw. was fehlt das ich die Einträge endgültig gelöscht kriege.
Gruß und Dank
-
DIe die diese Namensprobleme haben ... welche js.controller version ist im Einsatz?
-
@apollon77
Nutze Version 3.1.6VG
Leif -
Ahhh ok, habs verstanden
-
@apollon77 Also den Fehler gefunden? Das würde mich echt freuen!
Und übrigens: Danke, dass du dich dem Problem annimmst! -
@capitaenz Ne so wirklich gefunden wäre übertrieben ... aber am Ende ist klar was man ändern muss ... unerlaubte Zeichen müssen au den IDs raus ...
-
@apollon77
vielen Dank.
Ideal wäre natürlich, wenn solche unerwünschten Einträge erst gar nicht entstehen würden,
aber diese Ursache zu finden ist natürlich sehr schwierig. -
@hanss Zur Ursache: Wenn man es schafft das verhalten zu reproduzieren dann könnte man das mit einem Debug log dann mal dokumentieren
-
@apollon77 Wenn man jetzt genau wüsste, welches die unerlaubten Zeichen sind, dann könnte man doch veranlassen, z.B. ein Gerät mit Tasmota ein Objekt damit zu erstellen.
Was müsste dann genau geloggt werden? Den MQTT-Adapter auf Debug stellen würde reichen? -
@capitaenz @apollon77
Ich meine, die Fehlervermeidung müsste weiter unten erfolgen, beim QOS, Prüfsumme, fehlerhafte MQTT Datenpakete erkennen usw..
Wenn MQTT mit fehlerhaften Datenpaketen weiter arbeitet, kann ja alles mögliche passieren, nicht nur diese unerwünschten Objekte.Was bisher aufgefallen ist:
Diese verstümmelten Objekte hatten immer eine Ähnlichkeit mit bestehenden Objekten.
Evtl. auch Störungen im WLAN oder js.controller (hohe Auslastung, Speicher Überlauf etc.) als Ursache -
@hanss Es klingt auf jeden Fall danach das irgendwie "garbage" über die Leitung kommt ...
Ich würde also erstmal hingehen und versuchen solche IDs zu erkennen und zu ignorieren und das zu loggen. Dann sehen wir ob plötzlich was anderes nicht tut
-
@apollon77
Das sehe ich genauso, denn was ich bisher darüber gelesen habe, wird reproduzieren wahrscheinlich nicht möglich sein.Ich habe gerade jetzt wieder einen Eintrag (in ein bestehendes MQTT Objekt) bemerkt, obwoh derim Client wurde ein Interrupt ausgelöst,
dafür zuständige Client nichts im Logbuch stehen hatte, daß er etwas weggeschrieben hätte.
Der Wert wurde wie üblich auch in der SQL Datenbank gespeichert und ist durchaus plausibel.
Dieses Mal ohne WiFi Störung, ohne JS Besonderheiten.
Eintrag war i.O. -
Naja am Ende müsste jemand der das Problem hat im texteditor mit so einem kaputten Objects File einfach mal schauen was das genau "Hex Code technisch" für ein zeichen ist
-
mach ich gerne, wenn das wieder einmal auftritt.
In welcher Datei stehen denn die Zeichen, die Dich interessieren? -
@hanss In dem File was Du bearbeitestn kannst um es zu fixen ...
-
@apollon77 Also die "states.json" und "objects.json"?
-
@capitaenz jupp
-
@apollon77 Da hatte ich ja bereits eine betroffene Stelle hochgeladen.
-
@capitaenz haste mal den Link wo genau? du es hochgeladen ist
-