Jump to content

Kommunikation zwischen RED-Brick und Android App


boritian

Recommended Posts

Hallo Zusammen,

 

meine Anfängerfrage ist, wie setze ich den am besten eine Kommunikation zwischen RED-Brick und einer Android App um (beide sind in einem Netz)?

 

Ich möchte z.B. Steuerbefehle von der App nicht direkt an einen Servo-Brick senden, sondern erst an den RED-Brick, der dann den Servo-Brick über sein Programm steuert.

 

Ähnliches habe ich umgekehrt vor. Der RED-Brick soll Werte von einem Bricklet an die App senden. Also die App liest (auch wenn sie es könnte) nicht direkt ein Bricklet aus.

 

Also simple Übertragung von wenigen Daten. Z.B. in einem XML-File oder über direktes setzen/lesen von Public Variablen im RED-Brick oder eine Message Queue... .

 

Über Tips wie ihr so etwas umsetzen würdet und was überhaupt machbar ist mit dem RED-Brick, wäre ich sehr dankbar.

 

Besten Gruß,

Boritian

 

 

Link zu diesem Kommentar
Share on other sites

Ich habe sowas ähnliches mit einem einfachen Socket-Protokoll gemacht. D.h. einen Dienst auf dem "Server" der einen Socket öffnet und die App verbindet sich dagegen und dann werden die Daten ausgetauscht.

 

Theoretisch könntest Du das auch einfacher haben, wenn Du auf dem RED einen HTTP Server hast und dann Daten per HTTP austauschst, dann ist das Protokoll vordefiniert. Hängt ein wenig von den Anforderungen ab.

Link zu diesem Kommentar
Share on other sites

nach Sockets in der Tinkerforge API.

Sockets werden zum Zweck der Kommunikationsschicht in der Tinkerforge API intern verwendet. Remotecontrol meinte eher an ein eigenes, selbstgeschriebens Protokoll von dir, das ebenso Sockets verwendet.

am besten eine Kommunikation zwischen RED-Brick und einer Android App um

Ev. würden Websockets besser passen als ein Komm.Protokoll neu aufzurollen. Mittels der Websockets die dann spätestens im Image 1.4 vom RED unterstützt werden, sollten sich sich Web-Anwendungen schreiben lassen, die im Android z.B. nur den Browser erfordern.

Link zu diesem Kommentar
Share on other sites

Moin,

ich habe bei mir etwas ähnliches laufen (Raspberry Pi, LED-Strip, Linear Poti und Android)...

Auf dem Raspberry läuft ein kleiner mit Python geschriebener HTTP-Server, der die Befehle annimmt und an TinkerForge weiterleitet, auf dem Handy habe ich mit der App NetIO (http://netio.davideickhoff.de/de/), da kannst du dir einfach eine Oberfläche zusammenklicken und HTTP-Aufrufe zuweisen, die App ist aber nicht gerade günstig (4,99€ im Play Store).

 

Code kann ich gerne Posten, wenn gewünscht...

Link zu diesem Kommentar
Share on other sites

Alternativer Ansatz serverseitig und ev. mit angenehmeren Sprachdialekt als Phython (Geschmackssache ;) ) mit Node.js bzw. Javascript und ev. in Kombination mit den Websockets. Node.js ist im RED enthalten und mit http.createServer erzeugt man einen kleinen Webserver der auf Requests vom Browser lauscht. Beispiel unter http://www.sitepoint.com/creating-a-http-server-in-node-js/.

 

Websockets werden z.B. in der Beispielanwendung von TF IOT http://www.iot-remote.com/ ganz gut gezeigt.

Link zu diesem Kommentar
Share on other sites

Hallo,

 

wenn es für dich OK ist, dass der Server (RED) nicht aktiv Werte an deine App sendet, sondern deine App in regelmäßigen Abständen die Werte per Request vom Server abholt, könntest du auch WebServices benutzen.

Du bräuchtest dann kein eigenes Protokoll und kannst die WebServices auch "außerhalb" der App einfach nutzen.

Ein WebServices-Server muss nicht extra installiert werden, wenn du ihn mit Java erstellst. Mit Node.js musst du vmtl. ein paar Module nachinstallieren, sollte aber auch kein Problem sein.

Link zu diesem Kommentar
Share on other sites

Wenn damit Node.js auf dem RED Image 1.3 gemeint ist, stimmt das so nicht. Ich hatte eine Node.js Anwendung mit einem Http-Server in wenigen Min. auf dem RED erstellt. Ohne irgendein Package nachzuinstallieren.

 

Ich habe (noch) keinen RED und kann deshalb nicht sagen, was darauf alles installiert ist. Ein HTTP-Server ist mit Node.js natürlich ohne weitere Packages installieren zu müssen, möglich. Für WebServices reicht das aber nicht aus, wenn man "echte" WebServices nutzen möchte, d.h. nicht nur HTTP-GET- und PUT-Requests (REST), sondern auch z.B. WSDL-basierende RPCs.

Link zu diesem Kommentar
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Reply to this topic...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...