Forum: PC-Programmierung Kommunikation zwischen Webserver und Gerät(ESP8266)


von T.M .. (max)


Lesenswert?

Hallo,
ich habe eine Frage zu einer generellen Vorgehensweise.
Ich habe an einem mehreren ESP8266 einen taster und Leds angeschlossen. 
Diese sollen nun untereinander über das Internet kommunizieren, als der 
Taster von Gerät A soll die LED von Gerät B steuern und umgekehrt.
Ich habe nun das für ein Gerät das über php und GET gemacht. wird eine 
bestimmte Adresse aufgerufen, wird von php in eine txt-Datei eine 1 
geschrieben. Der ESP8266 lädt sich diese Datei zyklisch herunter und 
überprüft deren Inhalt. So funktioniert das momentan. Ich frage mich 
aber, wie man das geschickt macht, wenn nun mehrere Gerät noch 
dazukommen. Für jedes dann eine eigene Datei etc, oder wie?
Wie wird das denn bei diesen ganzen cloudbasierten IoT Geräten gemacht?

Hat da jemand Erfahrung?

von T.roll (Gast)


Lesenswert?

Max .. schrieb:
> einem mehreren

Einer oder Mehrere?

Max .. schrieb:
> Ich frage mich
> aber, wie man das geschickt macht, wenn nun mehrere Gerät noch
> dazukommen.

Sinnvollerweise über eine Datenbank oder ähnliches.

Mit GET kannst du ja die passenden Werte eingeben und abfragen.

Daten eintragen:
index.php?geraet=ESP8266-1&led=1 (AN)
index.php?geraet=ESP8266-1&led=0 (AUS)

Daten abfragen:
index.php?geraet=ESP8266-2&check=1 (Datenstand von led ausgeben)

von Martin (Gast)


Lesenswert?

und solche Dinge wie SSL nicht vergessen ;-)

von Planlos (Gast)


Lesenswert?

Schau dir MQTT an.

Ist mit den ESPs schnell angesprochen, entkoppelt das Ganze, gibt 
fertige Android Apps dafür, Anzeige-Webseite kann mit Mqtt-websocket 
echt Live-Daten anzeigen, ist mit openhab koppelbar, ....

Und bei allen Vorteilen ist der Server noch so "klein", dass er 
Problemlos auf einem Router mitlaufen kann, wo PHP Overkill wäre.

von Joachim S. (oyo)


Lesenswert?

Kann "Planlos" nur zustimmen: Der sinnvolle Weg, so etwas zu machen, ist 
per MQTT. Das ist bislang auch quasi DAS Standard-Protokoll für IoT, und 
wird unter Anderem auch von Amazon AWS IoT genutzt.

Die Kombination aus Webserver, PHP-Skript und zyklischem Herunterladen 
erscheint naheliegend, wenn man noch keine Erfahrung mit MQTT hat, ist 
in meinen Augen aber bestenfalls als Notlösung zu betrachten. Denn in 
diesem Fall müssen ja soundsoviel Geräte alle paar Sekunden einen 
Request an den Server schicken, um etwaige Änderungen zu erfragen. Eine 
Push-Lösung per WebSockets o.Ä. wie bei MQTT, bei dem die 
ESP8266-Clients von selbst informiert werden, ist da einfach viel 
vorteilhafter: Der ganze Overhead von soundsoviel Clients die alle paar 
Sekunden HTTP-Requests absenden fällt weg, und die Clients werden sofort 
informiert, statt erst beim nächsten zyklischen HTTP-Request.

Nachteil ist halt, dass man einen eigenen MQTT-Server (üblicherweise 
"Mosquitto" - https://mosquitto.org/) installieren und laufen lassen 
muss. Aber das geht eigentlich ganz schnell, für die ersten Schritte 
muss man so gut wie gar nix konfigurieren.

von Guido (Gast)


Lesenswert?

Max .. schrieb:
> Ich habe an einem mehreren ESP8266 einen taster und Leds angeschlossen.
> Diese sollen nun untereinander über das Internet kommunizieren,

Aus meiner Sicht solltest du einen Rechner haben, der per https im 
Internet erreichbar ist. Auf diesem dann Passwort-geschützten Zugriff 
und eine REST-Api implementieren und so per JSON Kommandos übertragen 
und Schaltzustände abfragen.
Der Server kann dann meinetwegen per MQTT deine IoT-Devices ansteuern,
indem er die JSON-Befehle kurz in MQQT übersetzt.

Falls du auch die Zustände deiner IoTs visualisieren möchtest, schau dir
Ajax an. Damit kannst du innerhalb deiner Webseite die Schaltzustände
aktualisieren, ohne jedes mal die ganze Webseite neu zu laden.

Wenn du noch Daten aufzeichnen und Verläufe anzeigen willst, kannst du 
auf dem Server eine MySql Datenbank laufen lassen.

Der Vorteil der JSON/REST-Api ist, dass diese Zugriffsmethode von der
Kommandozeile, Smartphone und den meisten Programmiersprachen problemlos 
unterstützt wird. Auch die Datenaufzeichnung würde über diese 
Schnittstelle zugreifen.

...das wäre meines Wissens dann auch der professionelle Ansatz.

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.