Mqtt nach update auf 4.0.0

Hallo,

ich benutze zwei 9408 2K+ und Homeassistant.

Vor der Firmware 4.0.0 habe ich selber Mqtt eingerichtet und mir die Information über neue Firmware abgegriffen. Das hat sehr gut funktioniert, ich bekam immer eine Meldung wenn neue Firmware vorhanden war.
Mit dem neuestem Update kam ja die Funktion Auto-Discovery hinzu, und ich habe das auslesen der Variable für das Update aus meiner Homeassitant instanz enfernt und mir die zwei Kameras automatisch einfügen lassen.
Das hat auch soweit gut funktioniert. Jedoch bekomme ich an einer Kamera immer die Meldung das ein Software Update vorhanden ist. Dem ist es aber nicht so.
Auch im Mqtt Explorer sehe ich das die Variable immer auf TRUE ist obwohl es kein Update gibt.

Kamera wurde schon neu gestartet, jedoch ohne erfolg.
Das interesante dabei ist, wenn ich die API im Browser anwende, steht die Variable auf FALSE.

Und das verhalten ist nur bei einer der beiden Kameras.

Die Kamera verwendet für dieses Topic den gleichen Output wie der folgende CGI Befehl:

  • /param.cgi?cmd=getupdateavailable

Dieser sollte das folgende zurückgeben - wenn die MQTT Angabe oben richtig ist:

cmd="getupdateavailable";
current_version="1251";
latest_version="1251";
current_fw="4.0.1";
latest_fw="4.0.1";
available="1";
response="200";

Aber hier steht dann available="0";?

Läuft der MQTT Broker auf der IP 192.168.178.37 auf einer Kamera? Oder ist das ein externer Broker?

Wir hatten es schonmal das im Mosquitto Broker - extern oder auf der Kamera - die gespeicherten MQTT Daten (retained Topics) Probleme machten. Man bekommt einfach über die Befehl-Topics keine Updates mehr durch.

Bei einem externen Broker kann man dann einmal die Datenbank Datei löschen (der Speicherpfad ist in der Mosquitto Broker Konfigurationsdatei angegeben) und den Broker neustarten.

Bei der Kamera hat ein Soft-Reset (über die WebUI bei Beibehaltung der Netzwerk und Benutzer-Konfiguration) den gleichen Effekt.

Danach werden alle Einträge nochmal neu erstellt und bislang liess sich das Problem dadurch immer beheben.

Allerdings sind in dem Fall alle Topics betroffen. Also durch Klicken in der WebUI lassen sich die Status-Topics aktualisieren. Durch ein Befehl-Topic Update jedoch nicht.

Wenn nur das eine Status-Topic updateavailable betroffen ist, würde ich einmal nachsehen ob man dieses eventuell irgendwo eingebunden hat. Also einen MQTT Klienten hat, der das Satus-Topic aktualisiert anstelle des Befehl-Topics. man kann z.B. einmal über den MQTT Explorer den Status auf 0 stellen und schauen ob dann von irgendwo wieder die 1 herkommt.

Ich habe einmal spaßeshalber bei mir nachgesehen:

Ich habe insgesamt vier Kameras auf v4.0.1 geupdatet. Davon zeigt nur die 9820 „updateavailable = 0“, die drei anderen (9808, 8401, 9408) stehen alle auf „1“. Über CGI abgefragt steht überall „0“, ganz wie Du beschreibst.

Dann habe ich in der MQTT-Datenbank nachgesehen: Das Topic „system/update/updateavailable“ war gültig, aber markiert als „retained“. Daraufhin habe ich es in der DB gelöscht und die Kamera neu gestartet. Und siehe da: Der Wert wurde gar nicht neu übertragen. Der Stand war offenbar noch der alte, vor dem Update v4.0.0 → v4.0.1.

Dafür gibt es nun aber das neue Topic „available“. Wurde das vielleicht einfach umbenannt von zuvor „updateavailable“?

Tatsächlich steht auch der „latest“ Topic nicht auf einer gültigen Version:

Dabei wurde dieser im Gegensatz zu „updateavailable“ durchaus neu übertragen.

Kann es sein, daß die Kamera mit v4.0.1 den ganzen Update-Check mit dem zugehörigen Reporting nicht richtig ausführt und deswegen alte Werte stehenbleiben bzw. nicht erneuert werden? Im UI scheint alles ok, dort steht alles auf grün/„ist aktuell“.

PS: per CGI wird ebenfalls gemeldet:

cmd=„getupdateavailable“;
current_version=„1251“;
latest_version=„0“;
current_fw=„4.0.1“;
latest_fw=„“;
available=„0“;
response=„200“;

… also auch keine gültige Version in „latest“.

Das sieht man, wenn der Update Check in der Kamera fehl schlägt. In der WebUI unter Sytem/Update bekommt man dann einfach die installierte Version angezeigt und hinter der Versionsnummer keine Revisionsnummer.

Der CGI Befehl param.cgi?cmd=getupdateavailable fragt nicht direkt beim Update Server an, sondern nur bei der Kamera. Also nur nachdem die Kamera einmal erfolgreich online nachgefragt hatte, sieht man dann auch beim Topic system/update/available den neuen Wert - spätestens nach 3600s (das Update Intervall für dieses Topic).

Danke für den Hinweis - das ist die Lösung des Problems! @Duescha Für das neue Autodiscovery wird das Topic system/update/available verwendet - nicht mehr system/update/updateavailable.

Letzteres war retained - wird also vom Broker beibehalten, auch wenn die Kamera es nicht mehr nutzt. D.h. wenn man es über den MQTT Explorer löscht wird es nicht mehr wiederkommen.

Das neue system/update/available ist nicht retained - wird also erst dann angezeigt werden, wenn es ein Update des Topics gab (also wenn eine neue Firmware Version bereitsteht).

Hallo,

habe da jetzt wie beschrieben alles gemacht und es hat funktioniert.

Danke @150D und @INSTAR

:+1:

Leider denke ich, dass das Problem nicht gelöst ist … heute Morgen begrüßte mich eine CAM in HA mit

Also genau die im Thread beschriebenen Fehler … btw: die CAMs werden nachts neu gestartet …

In der 3.x Version war das bisher kein Problem (auch nicht mit externem Mosquitto Broker !) - besonders der Topic system/update/updateavailablehat zuverlässig mit Retain Flag funktioniert! Jetzt mit system/update/available und ohne Retain Flag ist die ganze Update-Info nicht mehr eindeutig / konsistent z.B.: bei HA Neustart und fehlendem ‘avaible‘ Eintrag steht dort ‘unbekannt‘. Warum wird der ‘avaible‘ Eintrag nicht auch auf ‘retained‘ gesetzt?

Die (0) kommt nicht vom MQTT Dienst, sondern vom internen Update Check - immer dann, wenn die Kamera,erfolglos, versucht den Update Server zu kontaktieren. Wir schauen gerade wie man das fürs MQTT Topic umgehen kann.

Kann das eine Art race condition nach einem Reboot sein? Daß der Updater nach dem Start „zu früh“ läuft, wenn noch keine Netzwerkverbindung besteht, dann aber erst ein paar Tage später einen zweiten Versuch startet?

Bei mir hat sich die Lage von selbst bereinigt, auch unter „latest“ steht bei mir inzwischen überall die aktuelle Version. Allerdings hat das ein paar Tage (gerechnet seit dem letzten Reboot) gedauert.

Also bei mir starten die Kameras einmal in der Woche neu. Sonntag um 00:00 Uhr.
Das habe ich natürlich nicht bedacht als ich das als Antwort markiert habe. (War nur glücklich das es funktioniert hat.)
Jetzt sehe ich bei mir auch das selbe Bild wie bei dir.
Es wird ein Update angezeigt obwohl es keines gibt.
Somit ist die Anpassung nur temporär bis zum nächsten neustart der Kamera.

Meine Konfiguration:

  • Homeassistant: 2025.11.2
  • Mosquitto broker als Addon in Homeassistant 6.5.2
  • Firmware Kameras 4.0.1

Mit dem nächsten Release wird anstelle der 0 - als Indikator eines fehlgeschlagenen Versuchs den Update Server zu kontaktieren - die bereits installierte Version als Default-Wert angezeigt werden. Damit wird diese falsche Update Benachrichtigung unterdrückt werden.

2 „Gefällt mir“

Das Update ist jetzt online in Form der Firmware 4.0.2 die dieses Problem behebt.

Dieses Thema wurde automatisch 2 Tage nach der letzten Antwort geschlossen. Es sind keine neuen Antworten mehr erlaubt.