logo elektroda
logo elektroda
X
logo elektroda

Wie verbindet man Arduino R4 Wi-Fi mit Home Assistant über MQTT? ArduinoMqttClient und Wi-FiS3

p.kaczmarek2 1710 0
WERBUNG
  • Arduino R4 WiFi mit MQTT-Logo auf einem Holztisch
    Hier zeige ich, wie man Arduino R4 Wi-Fi über MQTT mit Home Assistant verbinden kann, um Daten per MQTT-Publish zu empfangen und zu senden. Ich werde dafür die ArduinoMqttClient-Bibliothek verwenden. Der Beispielcode, den ich hier einfüge, verbindet sich zuerst mit unserem Wi-Fi-Netzwerk, dann mit unserem MQTT-Broker über Benutzername und Passwort, und schließlich abonniert er das angegebene MQTT-Topic und hor­cht auf Nachrichten, während er auch Daten von sich selbst veröffentlicht.

    Das Thema basiert auf dem neuen Arduino R4 Wi-Fi Board:
    Arduino UNO R4 WiFi auf einer Holzoberfläche liegend.
    Auf der Softwareseite habe ich ArduinoMqttClient verwendet:
    https://www.arduino.cc/reference/en/libraries/arduinomqttclient/
    https://github.com/arduino-libraries/ArduinoMqttClient
    Die Bibliothek sollte über Libraries installiert werden:
    Screenshot des Arduino Library Manager mit der installierten ArduinoMqttClient-Bibliothek.
    Dann können wir den Beispielcode ausführen, den wir in Kürze gemeinsam schreiben werden.
    Zunächst fügen wir die Header ein und definieren die Konstanten (Ortung von Wi-Fi- und MQTT-Server):
    Code: C / C++
    Melde dich an, um den Code zu sehen

    Als nächstes erstellen wir global Instanzen von WiFi- und MQTT-Clients:
    Code: C / C++
    Melde dich an, um den Code zu sehen

    Als Nächstes führen wir im Setup alles aus:
    Code: C / C++
    Melde dich an, um den Code zu sehen

    Der obige Code startet die serielle Schnittstelle, so dass man beobachten kann, was der Arduino im Serial Monitor tut.
    Als nächstes starten wir Wi-Fi:
    Code: C / C++
    Melde dich an, um den Code zu sehen

    In der Schleife versuchen wir, uns als Client mit dem drahtlosen Netzwerk zu verbinden. Wenn die Verbindung erfolgreich ist, drucken wir unsere IP:
    Code: C / C++
    Melde dich an, um den Code zu sehen

    Dann starten wir MQTT:
    Code: C / C++
    Melde dich an, um den Code zu sehen

    Der Verbindungsversuch wird in einer Schleife durchgeführt. Die erste Verbindung wird mit einem Fehler -2 fehlschlagen. Ich habe den Code auf den ArduinoMqttClient-Beispielen und der Diskussion im Arduino-Forum basiert und es sieht so aus, als ob jeder dieses Problem hat.
    Wir abonnieren dann die MQTT-Themen, die uns interessieren, und richten einen Callback ein, den die Bibliothek von MQTT aufruft, wenn sie Daten empfängt:
    Code: C / C++
    Melde dich an, um den Code zu sehen

    Ohne subscribe eines bestimmten Themas auszuführen erhalten wir keine an dieses Thema gesendeten Daten!
    Die Fortsetzung erfolgt in dem erwähnten Callback. Er wird nur aufgerufen, wenn wir Daten erhalten:
    Code: C / C++
    Melde dich an, um den Code zu sehen

    In diesem Callback kann man die empfangenen Daten frei verarbeiten, das Relais schalten, etc.

    Die Hauptschleife bleibt noch - dort muss man den MQTT-Client aktualisieren, ich veröffentliche dort zusätzlich die Zeit vom Arduino:
    Code: C / C++
    Melde dich an, um den Code zu sehen

    Das ist alles. Wir speichern und laden es auf Arduino hoch. Ich gehe davon aus, dass Home Assistant bereits aktiviert ist. Wir rufen das MQTT-Tool auf, Home Assistant sieht die von Arduino veröffentlichten Informationen:
    Screenshot der MQTT-Einstellungen in Home Assistant mit Veröffentlichen und Anhören von Nachrichten.
    Arduino sieht auch, was HA veröffentlicht:
    Screenshot zeigt die Kommunikation von Arduino R4 WiFi mit einem MQTT-Broker in Home Assistant.
    Die Kommunikation funktioniert in beide Richtungen korrekt.
    Vollständiger Code:
    Spoiler:
    Code: C / C++
    Melde dich an, um den Code zu sehen


    Zusammenfassung
    Der Arduino R4 WiFi ist gerade erst auf den Markt gekommen und bietet bereits fertige Mechanismen, um einfach eine Verbindung zu einem MQTT-Broker herzustellen, wie z. B. dem in Home Assistant. Das Abonnieren eines MQTT-Topics und das Veröffentlichen von Daten auf dem ausgewählten Topic funktioniert ebenfalls problemlos. Es gibt also nichts, was uns daran hindern könnte, unsere Projekte einfach mit IoT-Netzwerken zu verbinden, und ich beziehe mich dabei sogar auf unsere älteren Projekte, die vor dem R4 entstanden sind, denn die Migration vom Uno R3 zum R4 WiFi ist auch nicht so schwierig.
    Seht Ihr irgendwelche potenziellen Anwendungen für MQTT auf dem R4?

    Cool? DIY-Rangliste
    Hilfreicher Beitrag? Kauf mir einen Kaffee.
    Hast du ein Problem mit Arduino? Stelle bei uns eine Frage. Besuche unser Arduino-Forum.
    Über den Autor
    p.kaczmarek2
    Moderator Smart Home
    Offline 
    p.kaczmarek2 hat 11954 Beiträge geschrieben mit der Bewertung 9992, und dabei 572 Mal geholfen. Er ist seit 2014 bei uns.
  • WERBUNG
WERBUNG