Wie sende ich Daten von einer Android App über WLAN an ein Gateway?

  • Hallo zusammen,


    ich muss für meine Bachelorarbeit eine Android App im Bereich "Smart Home" entwickeln. Dazu muss die App über folgende Stationen mit einem Endgerät bidirektional kommunizieren (Sensordaten visualisieren, Befehle senden):


    Smartphone<->WLAN und 3G/UMTS <->WLAN-Router <->Powerline-Gateway <->Powerline-Modul <->Endgerät


    Die Kommunikation soll nicht über den KNX-Standard sondern über eine eigenes Protokoll, also eigene Befehle erfolgen. Das heißt, die Software auf dem Gateway wird selber aufgespielt.


    Nun meine Fragen:


    1.) Die Kommunikation von Smartphone zum Router (und umgekehrt) sollte über UDP erfolgen, oder?


    2.) Da die Kommunikation bidirektional sein soll, muss dann die App und die Software auf dem Gateway beide als Server/Client programmiert werden?


    3.) Könnt Ihr mir Tipps geben, wie ich das eigene Protokoll am besten erstelle? Wäre in meinem Fall JSON eine gute Wahl?


    Sorry, falls ich mich unklar ausdrücke, dann einfach nachhaken, dann versuch ich es besser zu erklären. Bin erst frisch in der Thematik drin. :P


    Vielen Dank!


    Gruß Mike

  • Also ich hab nun noch ein bisschen weiter recherchiert und bin auf folgende weitere Erkenntnisse gekommen:


    Zu 1.) Eine TCP-Verbindung ist besser, da ich damit ein Acknowledge erhalte, sofern die Daten erfolgreich angekommen sind.


    Zu 2.) Ich muss auf Router und Gateway jeweils zwei Sockets mit untersch. Ports öffnen, damit können beide als Client und Server gleichzeitig betrieben werden.


    Zu 3.) JSON kann ich im Datenfeld des TCP-Befehls verwenden


    Stimmt ihr mir da zu?

  • Also UDP ist generell eher eine schlechte Idee für so etwas. Zum einen hast du nur eine best-effort-delivery. Zum anderen musst du bedenken, dass Provider auch bei UMTS häufig NAT einsetzen, was eine direkte Verbindung erschwert. TCP ist hier besser.
    Du könntest jetzt auf TCP-Basis natürlich ein komplett eigenes Protokoll bauen. Aber du könntest z.B. auch XMPP nutzen und auf einfach mit eigenen Paketerweiterungen deine Daten verschicken. Das schöne ist, dass die ganzen grundlegenden Probleme (Verbindungsmanagement etc.) bereits fertig implementiert sind. Außerdem hast du so eine einfach zu erweiternde Grundlage.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!