Arduino über LAN steuern und Rückmeldung

Hallo,

Ich möchte gerne über eine Weboberfläche (auf meinem Server im Heimnetz) einen Arduino steuern und vom Arduino eine Rückmeldung auf die Weboberfläche bekommen das der Befehl verstanden und ausgeführt wurde.

Per http get habe ich das einseitige steuern bereits realisiert. Wenn jedoch eine schlechte Verbindung besteht gehen die Get Befehle einfach verloren.

Ich möchte jedoch das der Befehl so lange gesendet wird, bis er auch sicher am Arduino angekommen ist und dieser das zurückgemeldet hat oder ein Timeout erreicht wurde und eine Fehlermeldung generiert wird.

Hat hier jemand einen Ansatz?

Danke schon einmal im Voraus

JavaScript kennt Schleifen und Bedingungen.
Damit kannst du die Requests absetzen, den Response auswerten und wenn nötig den Vorgang beliebig oft wiederholen.

Hallo,

dann trotzdem auf dem Arduino mit Http Get befehlen arbeiten?

Gibt es nichts ein eleganteres Protokoll mit Übertragungsüberwachung?

Zudem möchte ich auch wenn ich ein Taster am Arduino direkt betätige zeitnah der geänderte Status in der Weboberfläche dagestellt wird. Ohne auf die nächste Abfrage vom Master zu warten.

Kennt hier jemand eine saubere Möglichkeit? Am besten bidirectional mit einem Mysql server

Sowohl der Webserver, als auch dein Browser spricht HTTP.
Das ist der kleinste gemeinsame Nenner.

Wie auch immer...
HTTP basiert auf TCP und TCP ist ein Verbindungsorienttieres Protokoll.
Das heißt: Du bekommst eine Rückmeldung, wenn ein GET nicht gelingt.
Diese Rückmeldung musst du dann auch auswerten.

Vielleicht suchst du ja sowas: "Websockets"

hi,

ich verstehe den ersten post nicht ganz. ist der webserver Dein arduino oder arbeitest Du mit einem pc als server?

gruß stefan

ok, danke.

Also würde ich folgendes Prinzip wählen

ein PHPscript sendet bei Aktivierung eines Buttons auf der Website einen Befehl an den Arduino.
Der Arduino fürht den Befehl aus und speichert den Zustand in einer Mysql Datenbank
Der Wert in der Datenbank wird bei Änderung an die Website übertragen.

Wenn ich einen Hardewarebutton am Arduino betätige wird der Zustand ebenfalls in der Mysql gespeichert und auf der Website aktualisiert.

Oder liege ich gerade komplett falsch?

@ Stefan, der Server ist ein Intel I3 im 24h Betrieb (Ubuntu 14.04LTS) Hier könnte auch die MySQL laufen.

Oder liege ich gerade komplett falsch?

In etwa stimmt das schon...

Um die Reaktionszeiten zu steigern könntest du dich mit "long polling" beschäftigen.

hi,

nach Deinem ersten post dachte ich auch an einen extra server, aber dann:

dann trotzdem auf dem Arduino mit Http Get befehlen arbeiten?

bei dieser methode wird Dein arduino nie etwas über http bekommen. oder willst Du dann vom server aus wiederum per netzwerk mit dem arduino reden? dann muß auch auf dem arduino ein webserver (oder ähnliches, es gibt ja auch noch andere protokolle) laufen.

die andere, häufigere methode ist, den arduino mit usb an Deinen server anzuschließen und die befehle vom server darüber zu schicken. da antwortet dann der arduino natürlich auch (wenn Du es programmierst) über usb. und Dein server schickt die antwort übers netzwerk an's eingabegerät zurück. es schreibt auch nicht der arduino in die datenbank, sondern der server, wenn er die richtige antwort vom arduino bekommen hat.

muß genau fragen, sonst kommt ein kuddelmuddel raus...

gruß stefan

Sowohl mit dem Server (per PHP-Socket) als auch mit dem Arduino kann man UDP-Messages versenden. UDP hat zwar keine "eingebaute" Quittung wie TCP, aber es belastet und blockiert vor Allem den Arduino deutlich weniger.

Eine Empfangsbestätigung kann man trotzdem auch per UDP-Message zurücksenden ... also quasi auf der nächst höheren OSI-Schicht.

Das mit UDP klingt interessant.
Gibt es dafür ein Beispiel code?

Danke und Gruß

Hi,

schau mal hier nach. UDP senden (Debugging).Empfang für Kommandos. Wenn Du Fragen hast, kannst Du mich über als User Home38 finden.