Forum: Mikrocontroller und Digitale Elektronik Datenaustausch mit ESP8266


von ArduStemmi (Gast)


Lesenswert?

Guten Morgen!

Nachdem ich mich am Wochenende ja schonmal zu Thema geäußert hatte, um 
mir Euren Rat zu holen, habe ich mich weitergebildet und mich mit dem 
Schichtenmodell zur Datenkommunikation in Computernetzwerken 
beschäftigt. Ich habe danach festgelegt, dass ich die Kommunikation 
zwischen meinem PC und meiner Lampensteuerung über TCP/IP ohne 
Zuhilfename eines Webservers (der über den HTML Code eine WebSite 
generieren würde) realisieren werde. dazu werde ich im ESP8266 einen TCP 
- Server und im PC einen TCP Client realisieren. Für den TCP Server gibt 
es ausreichend Beispiele im Netz, den TCP Client werde ich über Visual 
Basic realisieren. Damit kann ich zwar nicht von jedem Mobilen Endgerät 
auf die Lampen zugreifen, aber das war eh nie das Ziel! Vorteil, ich 
brauch nicht HTML sprechen lernen.

Kommentare erwünscht!

Schönen Tag!

von Basic (Gast)


Lesenswert?

MQTT ist Dein Freund!

Lies Dich mal in dieses Konzept ein.

von ArduStemmi (Gast)


Lesenswert?

MQTT habe ich mir angeguckt! Und es ist leider nicht mein Freund 
geworden!

Ich habe verstanden, dass MQTT zweierlei ist, einmal ein Protokoll für 
Hausautomation, zum anderen ein Broker, welcher die Daten zur 
Lampensteuerung verwaltet! Ich habe nicht erkennen können, wie ich mit 
Hilfe des Brokers eine Oberfläche generiere, die meiner Lampensteuerung 
zuträglich wäre. Zudem habe ich nicht auf Anhieb verstanden, was da wo 
programmiert werden muss. Daher bleibe ich bei meinem schön erfundenen 
Protokoll, welches bisher über UART lief, und sende die Daten nun über 
WLAN.

von Michael U. (amiga)


Lesenswert?

Hallo,

ArduStemmi schrieb:
> MQTT habe ich mir angeguckt! Und es ist leider nicht mein Freund
> geworden!
Schade. MQTT nimmt einem etliches an Protokollaufwand ab.
Quality of Service (Betätigung, daß eine Message den Client erreicht 
hat) ist möglich.
Retained Message sind möglich (Deine Lampe mit Empfänger ist nicht 
erreichbar oder zeitweise komplett aus), dann schikct der Broker bei 
Neuanmeldung automatisch den letzten Zustand. Das Licht geht also wieder 
an, wenn es vorher an war und nicht erst, wenn Du von Hand einen neuen 
Einschaltbefehl schickst.
Last Will: Deine Lamle teilt dem Broker beim Anmleden mit, wie lang der 
KeepAlive sein soll und was der Broker machen soll, wenn sich die Lampe 
nicht mehr meldet. Beispielsweise eine Message an Deine Verwaltung, 
Lampe xx ist nicht erreichbar.
Das passiert zusammen mit Retained auch dann, wenn Deine 
Verwaltungssoftware sich Stunden später beim Broker anmeldet.
Sowas alles selber einzubauen macht ziemlichen Aufwand.
>
> Ich habe verstanden, dass MQTT zweierlei ist, einmal ein Protokoll für
> Hausautomation, zum anderen ein Broker, welcher die Daten zur
> Lampensteuerung verwaltet! Ich habe nicht erkennen können, wie ich mit
> Hilfe des Brokers eine Oberfläche generiere, die meiner Lampensteuerung
> zuträglich wäre.

Der Broker ist ein reiner Verwalter.
Deine Oberfläche zur Bedienung muß also ein MQTT-Client sein. Der 
schikct dann z.B. Lampe/Wohnzimmer/Decke Ein zum Broker.
Der Broker schaut nach, wer alles Lampe/Wohnzimmer/Decke abboniert hat 
und schickt es an diese Clients.

MQTT-Clients gibt es nahezu für jedes Betriebssystem, Anbindungen an 
existierende Hausautomatisierungs-Software (FHEM, OpenHAB usw.) auch.

Gruß aus Berlin
Michael

: Bearbeitet durch User
von Joachim S. (oyo)


Lesenswert?

ArduStemmi schrieb:
> Ich habe verstanden, dass MQTT zweierlei ist, einmal ein Protokoll für
> Hausautomation, zum anderen ein Broker, welcher die Daten zur
> Lampensteuerung verwaltet!

Weder das eine noch das Andere würde ich 100%ig unterschreiben. Bspw. 
ist MQTT keineswegs ein Protokoll speziell für die Hausautomation, 
sondern es eignet sich einfach nur (unter Anderem) gut für 
Hausautomation.

Du kannst Dir MQTT bzw. einen MQTT-Broker eher als ein ganz allgemeines 
"Internet-Forum" wie dieses hier vorstellen, wo man beliebige "Threads" 
erstellen kann, in die man beliebige Nachrichten hineinschreiben kann. 
Diese Threads können "beobachtet"/"abonniert"/"subscribed" werden (oder 
wie auch immer man das nennen will), d.h., man kann dafür sorgen, dass 
man automatisch informiert wird, wenn neue Nachrichten in einem 
bestimmten Thread gepostet werden, für den man sich interessiert.
Ist jetzt eine stark vereinfachte Erklärung, hilft aber, eine erste 
grobe Vorstellung davon zu erhalten, was MQTT eigentlich macht. Wer es 
besser verstehen will, dem kann ich z.B. diese kurze Einführung auf 
heise empfehlen:
https://www.heise.de/developer/artikel/MQTT-Protokoll-fuer-das-Internet-der-Dinge-2168152.html

> Ich habe nicht erkennen können, wie ich mit
> Hilfe des Brokers eine Oberfläche generiere

Gar nicht, denn MQTT ist ein minimalistisches Protokoll lediglich zum 
Austausch von Nachrichten, und hat mit Benutzeroberflächen daher erst 
einmal genauso wenig zu tun wie z.B. TCP. Stattdessen machst Du eine 
Benutzeroberfläche z.B. in HTML, und wenn Du dann auf einen bestimmten 
Button klickst, dann wird "unter der Haube" per Javascript eine 
Nachricht an einen MQTT-Broker geschickt.

> Daher bleibe ich bei meinem schön erfundenen
> Protokoll, welches bisher über UART lief, und sende die Daten nun über
> WLAN.

MQTT zu verwenden wäre zwar in meinen Augen eindeutig der sinnvollste 
Weg - aber Du müsstest Dich da natürlich erst kurz einarbeiten. Genau 
wie in HTML, wenn Du zusätzlich eine Benutzeroberfläche haben willst, 
die in jedem Webbrowser läuft.
Stattdessen hast Du Dich jetzt halt für eine letztlich suboptimale 
Lösung entschieden, die aber natürlich den Vorteil hast, dass Du Dich 
nicht erst einarbeiten musst.

von Ardustemmi (Gast)


Lesenswert?

Ich kenne den Artikel von Heise! Der erläutert das dahinter stehende 
System sehr gut! Mir fehlt leider ein Hinweis auf einen Workflow und die 
dazu benötigten Ressourcen und Kompetenzen! Dein Hinweis, die Oberfläche 
mittels HTML zu gestalten deutet ja darauf hin, dass ich irgendeine 
Netzwerk Instanz benötige, die die Website aufnimmt! Und dann noch Java, 
im Untergrund!

Und wo läuft denn der Broker, wenn mein Computer aus ist? Auf dem NAs? 
Ich glaube nicht! Damit fallen 30 % aller Vorteile weg!

Eine wichtige Info noch! Die Computerverbindung zur Lampensteuerung 
dient nur, um Standardwerte für Beleuchtungsszenarien zu hinterlegen! 
Für die Auswahl, welches Szenario gerade aktiv wird, dient das 
Bedienelement, welches bisher über UART angesprochen wurde!

von Johannes S. (Gast)


Lesenswert?

Ardustemmi schrieb:
warum schreist du denn so?
Der MQTT Broker kann auf irgendeinem Gerät im Netz laufen, das kann auch 
ein NAS oder eine FritzBox sein wenn sich auf diesen Geräten zusätzliche 
Pakete installieren lassen. Sinnvoller ist aber eher einen Kleinrecher 
wie Raspberry Pi dafür nehmen. Steht auch auf meiner Roadmap, RaspPi mit 
MQTT, NodeJS und JavaScript.

von Holger W. (holgerw)


Lesenswert?

Mein MQTT Broker lief zusammen mit openHAB jahrelang auf einem Synology 
NAS, beide sind jetzt aber völlig problemlos auf einen Raspi2 umgezogen.
Holger

von Stefan F. (Gast)


Lesenswert?

HTML ist allerdings auch nicht schwer - wenn man sich auf die Grundlagen 
beschränkt. Dein Webserver muss nicht zwingend eine Webseite erzeugen. 
Er könnte auch einfach mit einzeiligen Rückmeldungen im Klartext 
antworten.

Du kannst dann wahlweise mit einem Basic Programm, oder einer Smartphone 
App oder einem Javascript (eingebettet in einer statischen HTML Datei, 
die evtl. irgendwo anders liegt) oder einem Shell Script oder einer 
Batch Datei oder ... ansteuern. Es ist sehr einfach von 
unterschiedlichen Clients aus nutzbar, wenn der Embedded-Server erst 
steht.

In Band 2 beschreibe das HTTP Protokoll und in Band 3 eine konkrete 
Anwendung mit ESP8266: 
http://stefanfrings.de/mikrocontroller_buch/index.html

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.