- Official Post
Hallöchen ihr,
wie schon angekündigt möchte ich ein paar Worte über das Projekt espduino verlieren ![]()
Kurz zu meinem Projekt:
Ich möchte über das Message Queue Telemetry Transport Protokoll (kurz MQTT) viele Geräte untereinander kommunizieren lassen. Diese Geräte werden über dieses Protokoll dann ein paar LEDs beschalten. Damit ein Gerät neue Informationen direkt an seine Kollegen weitergegeben kann, verwende ich MQTT.
Auf der Suche nach einer geeigneten Arduino API bin ich dann relativ schnell auf espduino gestoßen. Der Entwickler wirbt mit folgenden Features:
- Sicherer Umgang als über die AT COMMAND
MQTT module:
- Stabiler MQTT client (verwendet Native MQTT client (esp_mqtt))
- Unterstützt folgende MQTT Befehle: subscribe, publish, authentication, keep alive pings und alle 3 QoS Levels
- Mehrfache Verbindungen (auch zu unterschiedlichen Broker) sind möglich
- SSL Support
- Einfach zu installieren und zu benutzen
REST module:
- Unterstützt GET, POST, PUT, DELETE
- setContent type, set header, set User Agent
- Benutzerfreundliche API
- SSL Support
- Mehrfache Verbindungen möglich
Dieses Projekt beinhaltet zum einen eine eigene Firmware für den ESP8266 und zum anderen die API für den Arduino - zusätzlich liegen noch 3 kleinere Beispiel Sketche bei.
Außerdem ist eine komplette Installationsanleitung (mit Bildern über Schaltungen) vorhanden.
Meine in Betriebnahme:
Das Projekt ist leicht durch Git herunter geladen und die ersten Schritte bestehen aus der verkabelung des ESP8266 an den Arduino.
Die Bilder / Fritzing Diagramme sind schön übersichtlich und leicht nachzuvollziehen.
Nachdem alles verkabelt ist, kann man mit einem beiliegenden Python Flash Tool die eigene Firmware auf den ESP ziehen. Danach noch ein paar Leitungen umstecken und schon ist der ESP fertig für den Einsatz - bisher alles super reibungslos.
Danach bestand die Aufgabe darin, einen kostenfreien Broker (einen MQTT Server) zu finden. Einer der ersten Treffer war der mosquitto Test Broker. Mit diesem Server habe ich in dem Beispiel Sketch "mqtt" hinterlegt, dazu noch meine WLan Zugangsdaten eingetragen und direkt mal hochgeladen auf meinen Arduino.
Ich wurde erstmal von einer Welle aus Log-Nachrichten erschlagen - aber irgendwo tauchte mal das "Connected to mosquitto.org" auf und war erstmal begeistert. Um nun irgendwelche Daten hin und her zu verschicken, habe ich mir einen kostenlosen Client runtergeladen (MQTT.fx). Wie auch schon auf dem Arduino verbinde ich mich mit dem Client auf dem Broker. Einen Channel subscribed, eine Message publiziert und enttäuscht festgestellt: es kommt nix an! Naja ok ... kann viele Ursachen haben. Probiere ich doch erstmal vom Arduino eine Nachricht zu verfassen. Leider ging das nicht sooooo wie ich wollte - nämlich gar nicht
Nach tage langer suche im Internet bin ich auf einen Blog-Kommentar aufmerksam geworden, der eine ziemlich einfache und fast auch schon banale Lösung hatte: Einfach mal den Broker wechseln. Darauf hin habe ich noch 2 weitere Broker ausprobiert aber leider auch erfolglos. Bei dem dritten kam dann endlich der lang ersehnte Erfolg! Ich konnte endlich Nachrichten lesen und schreiben - Ja sogar der Letzte Wille (eine Funktion im MQTT Protokoll) funktioniert!
Naja wenn ihr in der Konsole irgendwelche Einträge seht die in etwa so aussehen wie dieser, dann solltet ihr mal den Broker wechseln ![]()
Die Queue wurde bei mir so massiv voll gepackt (2048 bytes), sodass der komplette Arduino sich aufgehangen hatte. Er konnte sich zwar noch 1-2 Minuten wieder fangen aber erstmal kam keine einzige Meldung mehr an.
Display Spoiler
QuoteDisplay More
TCP: Connect to domain home.scargill.org:1884
TCP:Reconect to: home.scargill.org:1884
DNS: found ip 109.170.132.114
TCP: connecting…
TCP: Reconnect to home.scargill.org:1884
MQTT: queuing publish, length: 17, queue size(133/2048)
TCP: Connect to domain home.scargill.org:1884
TCP:Reconect to: home.scargill.org:1884
DNS: found ip 109.170.132.114
TCP: connecting…
TCP: Reconnect to home.scargill.org:1884
MQTT: queuing publish, length: 17, queue size(152/2048)
TCP: Connect to domain home.scargill.org:1884
TCP:Reconect to: home.scargill.org:1884
DNS: found ip 109.170.132.114
TCP: connecting…
MQTT: queuing publish, length: 17, queue size(171/2048)
TCP: Reconnect to home.scargill.org:1884
MQTT: queuing publish, length: 17, queue size(190/2048)
TCP: Connect to domain home.scargill.org:1884
TCP:Reconect to: home.scargill.org:1884
DNS: found ip 109.170.132.114
TCP: connecting…
TCP: Reconnect to home.scargill.org:1884
MQTT: queuing publish, length: 17, queue size(209/2048)
TCP: Connect to domain home.scargill.org:1884
TCP:Reconect to: home.scargill.org:1884
DNS: found ip 109.170.132.114
TCP: connecting…
TCP: Reconnect to home.scargill.org:1884
MQTT: queuing publish, length: 17, queue size(228/2048)
Bis auf das Problem was scheinbar nicht nur ich hatte, ist espduino eine echt starke API für den ESP8266. Die versprochenen Features wurden echt super eingehalten - mit der API ist es super einfach sich mit dem Netzwerk zu verbinden, um diverse Server zu kontaktieren. Wenn ich mein anfängliches gehampel mit den ganzen AT-Commands vorstelle... da ist dieses Projekt eine echte bereicherung!
Hat vielleicht noch jemand von euch Erfahrungen mit dieser API oder mit dem ESP und dem MQTT Protokoll gemacht ? Würde mich brennend interessieren! ![]()
Aber für mich heißt es erstmal wieder: weiter basteln!