NEWS
Gelöst: MQTT Server übernimmt Publish in einem Topic nicht
-
Hallo,
der Fehler ist heute plötzlich aufgetreten, ohen das ich am System etwas verändern habe (konfiguriert oder updates).Ich habe eine Herausforderung mit dem MQTT Client/Server Adapter. Von meinem ESP werden immer die ersten paar Publish nach einem Neustart des Servers übernommen und danach keine mehr. DIe Update kommen alle 5 Sekunden. Andere MQTT Clients funktionieren einwandfrei. Ich nutze die Standard Arduino library PubSubClient.h.
Auf der Netzwerkschnittstelle sehe ich den Publish und auch das "Ack" dazu. Im Log File des MQTT Adapters werden diese Update nicht angezeigt. Außer die ersten nach einem Neustart ;-). Jetzt weiß ich nicht genau wo ich suchen und diese Infos as dem System "verloren" gehen oder geblockt werden.
Wie gesagt nach dem Neustart, werden die Infos ein paar mal übernommen.
Danke für eure Ideen,
MartinPS: Ich habe den Frigate Adapter letztens aktualisiert. Der verwendet jetzt einen eignen mqtt Server unter Port 1882. Erklärt aber auch nicht, warum es nach dem Neustart immer kurz funktioniert. Gibt es "Schutz" gegen zu häufige Anfragen?
- Adaptername: mqtt
- Link zu Adapterrepository: www.github.com...
- Adapterversion: v6.1.2
- js-controller Version: ...
- Admin Version: 7.1.5
- Hardwaresystem: NUC, Pi4 Proxmox
- Arbeitsspeicher: 32 GB
- Festplattenart: SD-Karte, SSD, HDD, ...
- Betriebssystem: Debian
- Nodejs-Version: v20.18.0
- NPM-Version: 10.8.2
- Installationsart: Skript oder Manuell ? Skript
- Image, Docker genutzt: Ja - Nein
- Ort, Name der Imagedatei: ...
======================= SUMMARY ======================= v.2024-10-19 Static hostname: iobroker Icon name: computer-container Chassis: container ☐ Virtualization: lxc Operating System: Debian GNU/Linux 12 (bookworm) Kernel: Linux 6.8.12-2-pve Architecture: x86-64 Installation: lxc Kernel: x86_64 Userland: 64 bit Timezone: Europe/Berlin (CET, +0100) User-ID: 1000 Display-Server: false Boot Target: multi-user.target Pending OS-Updates: 53 Pending iob updates: 1 Nodejs-Installation: /usr/bin/nodejs v20.18.0 /usr/bin/node v20.18.0 /usr/bin/npm 10.8.2 /usr/bin/npx 10.8.2 /usr/bin/corepack 0.29.3 Recommended versions are nodejs 20.18.1 and npm 10.8.2 nodeJS installation is correct MEMORY: total used free shared buff/cache available Mem: 34G 2.6G 31G 167K 57M 31G Swap: 8.0G 0B 8.0G Total: 42G 2.6G 39G Active iob-Instances: 34 Upgrade policy: none ioBroker Core: js-controller 7.0.6 admin 7.1.5 ioBroker Status: iobroker is running on this host. Objects type: jsonl States type: jsonl Status admin and web instance: + system.adapter.admin.0 : admin : iobroker - enabled, port: 8081, bind: 0.0.0.0, run as: admin + system.adapter.web.0 : web : iobroker - enabled, port: 8082, bind: 0.0.0.0, run as: admin Objects: 11949 States: 11408 Size of iob-Database: 12M /opt/iobroker/iobroker-data/objects.jsonl 3.2M /opt/iobroker/iobroker-data/states.jsonl Unknown release codenamed ''. Please check yourself if the Operating System is actively maintained. =================== END OF SUMMARY ====================
=== Mark text until here for copying ===
-
@clown007
Nur eine Idee, weil's bei mir deshalb auch immer mal wieder gehakt hatte bis ich's in die Skripte eingebaut habe.
Hast Du einenreconnect
im Sketch drin? Wenn nicht könntest Du evtl. mal sowas in der Art probieren.void reconnect() { // Loop until we're reconnected while (!client.connected()) { Serial.print("Attempting MQTT connection..."); if (client.connect(mqtt_client_name, mqtt_user, mqtt_password)) { Serial.println("connected"); // Once connected, publish an announcement... client.publish(mqtt_client_hostname, mqtt_client_name); client.publish(mqtt_client_ip_adresse, mqtt_ip_adress); // ... and resubscribe client.subscribe(mqtt_client_subscribe); } else { Serial.print("failed, rc="); Serial.print(client.state()); Serial.println(" try again in 5 seconds"); // Wait 5 seconds before retrying delay(5000); } } } void loop() { if (!client.connected()) { reconnect(); } ... }
-
@wolfi913
Habe ich im Script
Nach dem Neustart des Servers sehe ich die Aktualisierungen auch sofort.Wo finde ich das Detail log des MQTT Servers?
Danke und Gruß,
Martin -
@clown007 sagte in MQTT Server übernimmt Publish in einem Topic nicht:
Wo finde ich das Detail log des MQTT Servers?
Kann ich leider nicht beantworten. Ich hab einen eigenständigen Mosquitto-Server und im ioBroker den MQTT-Client am Laufen. Nutze den von Dir verwendeten MQTT-Adapter nicht und hab daher dazu leider keine Ahnung.
-
@wolfi913 Ich denke mittlerweile auch, das wäre geschickter gewesen
Wenn ich jetzt noch einen eigenen DNS Namen für den Service genommen hätte, wäre es einfach (wieder ein Learning )Trotzdem Danke,
Martin -
@clown007
Also, ist mir etwas peinlich, ich habe den Fehler gefunden. Im Nachhinein ist alles ganz logischIch hatte eine falsche Variable bei der Client ID in meinem ESP Programm. Das wäre noch kein Problem, wenn man den Code aber kopiert und im nächsten Projekt verwendet, haben zwei Clients die gleiche ID
Sorry, der Post kann als gelöst markiert werden.
Gruß Martin