Forum: Mikrocontroller und Digitale Elektronik IoT mit App verbinden beste Herangehensweise


von Harald (Gast)


Lesenswert?

Moin,

ich bin gerade dabei, meine Schaltung per App bedienbar zu machen.

Meine Herangehensweise ist derzeit, dass ich in der App per UDP 
Broadcast nach den Schaltungen/Geräten suche. Alle Geräte, die mit einer 
definierten Antwort reagieren werden anschließend aufgelistet.

Wenn ich mich nun mit einem Gerät verbinden möchte wird zu einem 
definierten TCP Port eine Verbindung hergestellt. Ist diese geglückt 
springt die App auf den nächsten Bildschirm, der den "Verbunden" Status 
repräsentiert.

Wird die TCP Verbindung von einem Teilnehmer geschlossen, wird wird 
wieder auf dem Startbildschirm gewechselt.

Wäre das so sinnvoll oder gibt es da bessere Möglichkeiten? Über den TCP 
Port kann der Client mit einem simplen Protokoll während einer 
Verbindung Daten lesen oder schreiben.

von Hannes J. (Firma: _⌨_) (pnuebergang)


Lesenswert?

Broadcast, Multicast oder eines der kompliziert(er)en Protokolle aus der 
Zero-Conf Wunderkiste.

von Stefan F. (Gast)


Lesenswert?

Brauchst du überhaupt den Zustand "verbunden" und den damit verbunden 
Overhead (Verbindungsaufbau, Anzeige des Verbindungs-Status, Reaktion 
auf unerwartete Trennung, warten auf ACK wenn es mal hakt)?

Je nach Anwendung ist es viel simpler, die Kommunikation per UDP zu 
machen. Jede Eingabe in der App wird als ein UDP Paket an den µC 
gesendet und jede Antwort von ihm wird in der App dargestellt.

Wenn mal was verloren geht - so what? Dann tippt man halt nochmal auf 
den Button. In vielen Anwendungen reicht das so.

TCP ist nur nötig, wenn die Pakete in beide Richtungen in definierter 
Reihenfolge und garantiert ohne Verluste übertragen werden. Bedenke, 
dass Übertragungsstörungen die Kommunikation in beide Richtungen für 
einige Sekunden blockieren können. Erst nach einigen automatischen 
Wiederholversuchen wird die Verbindung getrennt. Dann weiß der Sender 
nicht, ob sein Paket den Empfänger erreicht hat oder nicht.

Während der automatischen Wiederholversuche kann der User nicht erneut 
auf den Button tippen. Aus seiner Sicht hängt die Anwendung. Und wenn 
sie getrennt wurde, muss erstmal eine neue Verbindung aufgebaut werden. 
Das ist lästig.

Ich habe einige Anwendungen mit TCP (genauer HTTP) gemacht, damit es in 
einem Web-Browser ohne Softwareinstallation laufen kann. Aber so richtig 
zufrieden war ich mit den Ergebnissen nie.

Das Verhalten von UDP erscheint mir "natürlicher", denn es verhält sich 
eher wie die zahlreichen Fernsteuerungen mit denen wir jeden Tag zu tun 
haben. Wenn der Fernseher nicht reagiert, drückt man nochmal. Reagiert 
er wieder nicht, geht man näher heran und drückt nochmal.

TCP braucht man eigentlich nur für kontinuierliche Datenströme. Doch 
selbst bei Video Streams nutzt man inzwischen UDP weil die 
Anwendungsprogramme damit bessere Möglichkeiten haben, auf Fehler zu 
reagieren.

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.