Jump to content
boritian

Kommunikation zwischen RED-Brick und Android App

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

 

 

Share this post


Link to post
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.

Share this post


Link to post
Share on other sites

Hallo remotecontrol. Danke für die Antwort. Ein Socket hört sich gut an. Dann schaue ich mal nach Sockets in der Tinkerforge API. Da ich Fernbedienen will, ist ein Socket hervorragend, da man auch mitbekommt, wenn die Scoketverbindung abbricht.

Share this post


Link to post
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.

Share this post


Link to post
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...

Share this post


Link to post
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.

Share this post


Link to post
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.

Share this post


Link to post
Share on other sites
Mit Node.js musst du vmtl. ein paar Module nachinstallieren

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.

Share this post


Link to post
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.

Share this post


Link to post
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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...