Abo
  • Services:
Anzeige
Raspberry Pi mit Touchscreen-Display und Bluetooth-Dongle
Raspberry Pi mit Touchscreen-Display und Bluetooth-Dongle (Bild: Fabian Hamacher/Golem.de)

Mittler zwischen den Welten

Das letzte Skript läuft nun wieder auf dem Raspberry Pi: Es implementiert die Serverseite des Websockets und fungiert zugleich als BluetoothLE Central, Letzteres hin und wieder auch als Server bezeichnet.

Anzeige

Node.js unterstützt - derzeit - keine Websockets direkt, es gibt allerdings mehrere Bibliotheken dafür. Wir benutzen nodejs-websocket. Es ist sehr einfach zu benutzen, bringt aber keine Elemente für komplexere Webanwendungen mit. Hierfür sind unter Node.js zum Beispiel Websocket-Node und TotalJS geeignetere Kandidaten.

Nach Einbindung des Websocket-Moduls wird der Websocket-Server mit createServer() erzeugt, als Parameter übergeben wir eine Callback-Funktion. Sie wird mit einem Connection-Objekt aufgerufen, über das wir die weitere Websocket-Kommunikation abwickeln. Die Callback-Methode wird jedesmal aufgerufen, wenn sich ein Client mit dem Server verbindet. Es reicht also nicht, ein einzelnes Connection-Objekt zu verwalten, sondern es müssen alle einkommenden Objekte verwaltet werden.

Um den Server selbst zu starten, wird dessen Methode listen() mit der Angabe des Ports aufgerufen.

Am Connection-Objekt registrieren wir eine Listener-Funktion für den text-Event mit der Methode on(). Die Listener-Funktion erhält die Daten, welche ein verbundener Client sendet, jeweils als abgeschlossene Zeichenkette. Zum Senden von Daten wird die Methode sendText() verwendet.

  1. var connections = [];
  2. var server = ws.createServer(function (conn) {
  3.  
  4. connections.push(conn);
  5.  
  6. conn.on("text", function (str) {
  7.  
  8. try {
  9. var cmd_data = JSON.parse(str);
  10. } catch(e) {
  11. ...
  12. }
  13.  
  14. if(cmd_data.vol && '' != cmd_data.vol) {
  15. var vol = parseInt(cmd_data.vol);
  16. sendVolume(vol);
  17. return;
  18. }
  19.  
  20. if(cmd_data.cmd && '' != cmd_data.cmd) {
  21. ...
  22. sendCommand(cmd_data.cmd);
  23.  
  24. var message = {
  25. success : true,
  26. cmd = cmd_data.cmd
  27. };
  28.  
  29. conn.sendText(JSON.stringify(message));
  30. return;
  31. }
  32.  
  33. });
  34. }).listen(8001);

Der Bluetooth-Teil auf Basis von Noble enthält soweit keine Überraschungen. Über Noble werden Peripherals gesucht, die unsere spezielle Service-UUID aufweisen. Wurden sie gefunden, können wir mit deren Characteristics arbeiten. Für die Characteristics, welche die Lautstärke und den aktuellen Track übermitteln, werden Abonnements eingerichtet.

 Anzeigen und SendenDaten per Websocket austauschen 

eye home zur Startseite
Anonymer Nutzer 28. Jul 2014

Ich würde sagen hier könnte man eleganter und auch verhältnismäßig preiswert mit Zigbee...

savejeff 24. Jul 2014

perfekt! die Artikel sind echt zeitlos. ich werde noch ein paar Artikel nachholen.

holminger 24. Jul 2014

Meine RasPis dienen einmal als AirPrint-Server für einen 15 Jahre alten Kyocera...

currock63 23. Jul 2014

die guten alten Zeiten der c't, als es noch in fast jeder Ausgabe etwas zum selber...



Anzeige

Stellenmarkt
  1. PBM Personal Business Machine AG, Köln
  2. Arnold & Richter Cine Technik GmbH & Co. Betriebs KG, München
  3. Sky Deutschland GmbH, Unterföhring
  4. Fraunhofer-Institut für Integrierte Schaltungen IIS, Erlangen


Anzeige
Spiele-Angebote
  1. 88,67€ (nur für Prime-Kunden)
  2. (-10%) 35,99€

Folgen Sie uns
       


  1. HMD Global

    Drei neue Nokia-Smartphones laufen mit Android One

  2. Nokia 1 im Hands On

    Android-Go-Smartphone mit Xpress-On-Covern kostet 100 Euro

  3. Nokia 8110 4G im Hands On

    Das legendäre Matrix-Handy kehrt zurück

  4. Galaxy S9 und S9+ im Hands On

    Samsungs neue Smartphones kommen mit variabler Blende

  5. Energizer P16K Pro

    Seltsames Smartphone mit 60-Wh-Riesenakku

  6. Matebook X Pro im Hands on

    Huaweis Notebook kommt mit Nvidia-Grafikkarte

  7. Apple

    iTunes Store sperrt alte Geräte und Betriebssysteme aus

  8. Alcatel 1T

    Oreo-Tablet mit 7-Zoll-Display kostet 70 Euro

  9. Notebook und Tablets

    Huawei stellt neues Matebook und Mediapads vor

  10. V30S Thinq

    LG zeigt sein erstes Thinq-Smartphone



Haben wir etwas übersehen?

E-Mail an news@golem.de


Anzeige
Homepod im Test: Smarter Lautsprecher für den Apple-affinen Popfan
Homepod im Test
Smarter Lautsprecher für den Apple-affinen Popfan
  1. Rückstände Homepod macht weiße Ringe auf Holzmöbeln
  2. Smarter Lautsprecher Homepod schwer reparierbar
  3. Smarter Lautsprecher Homepod-Reparaturen kosten fast so viel wie ein neues Gerät

Indiegames-Rundschau: Tiefseemonster, Cyberpunks und ein Kelte
Indiegames-Rundschau
Tiefseemonster, Cyberpunks und ein Kelte
  1. Indiegames-Rundschau Krawall mit Knetmännchen und ein Mann im Fass
  2. Games 2017 Die besten Indiespiele des Jahres

HP Omen X VR im Test: VR auf dem Rücken kann nur teils entzücken
HP Omen X VR im Test
VR auf dem Rücken kann nur teils entzücken
  1. 3D Rudder Blackhawk Mehr Frags mit Fußschlaufen
  2. Kreativ-Apps für VR-Headsets Austoben im VR-Atelier
  3. Apps und Games für VR-Headsets Der virtuelle Blade Runner und Sport mit Sparc

  1. Re: 11 Jahre Support ...

    ChMu | 02:01

  2. Re: BANAAAAANAAAAA!

    User_x | 01:50

  3. Re: 18,5 : 9

    Prinzeumel | 01:49

  4. Re: Das sagt eine Schlange auch

    teenriot* | 01:38

  5. Re: "nicht besonders scharf"

    Seroy | 00:49


  1. 22:11

  2. 20:17

  3. 19:48

  4. 18:00

  5. 17:15

  6. 16:41

  7. 15:30

  8. 15:00


  1. Themen
  2. A
  3. B
  4. C
  5. D
  6. E
  7. F
  8. G
  9. H
  10. I
  11. J
  12. K
  13. L
  14. M
  15. N
  16. O
  17. P
  18. Q
  19. R
  20. S
  21. T
  22. U
  23. V
  24. W
  25. X
  26. Y
  27. Z
  28. #
 
    •  / 
    Zum Artikel