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.

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.

Anzeige

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. HALLHUBER GmbH, München
  2. Fraunhofer-Institut für Bildgestützte Medizin MEVIS | Bremen, Bremen
  3. über JobLeads GmbH, München
  4. BRUNATA Wärmemesser GmbH & Co. KG, München


Anzeige
Blu-ray-Angebote
  1. (u. a. Forrest Gump 9,97€, Gods of Egypt 9,97€, Creed 8,99€, Cloud Atlas 8,94€)
  2. (u. a. The Hateful 8 7,97€, The Revenant 8,97€, Interstellar 7,97€)
  3. (u. a. Supernatural, True Blood, Into the West, Perry Mason, Mord ist ihr Hobby)

Folgen Sie uns
       


  1. Festnetz

    O2 will in Deutschland letzte Meile per Funk überwinden

  2. Robocar

    Roborace präsentiert Roboterboliden

  3. Code.mil

    US-Militär sucht nach Lizenz für externe Code-Beiträge

  4. Project Zero

    Erneut ungepatchter Microsoft-Bug veröffentlicht

  5. Twitch

    Videostreamer verdienen am Spieleverkauf

  6. Neuer Mobilfunk

    Telekom-Chef nennt 5G-Ausbau "sehr teuer"

  7. Luftfahrt

    Nasa testet Überschallpassagierflugzeug im Windkanal

  8. Lenovo

    Moto Mod macht Moto Z zum Spiele-Handheld

  9. Alternatives Betriebssystem

    Jolla will Sailfish OS auf Sony-Smartphones bringen

  10. Gamesbranche

    PC-Plattform ist bei Spielentwicklern am beliebtesten



Haben wir etwas übersehen?

E-Mail an news@golem.de


Anzeige
Limux: Die tragische Geschichte eines Leuchtturm-Projekts
Limux
Die tragische Geschichte eines Leuchtturm-Projekts
  1. Limux München prüft Rückkehr zu Windows
  2. Limux-Projekt Windows könnte München mehr als sechs Millionen Euro kosten
  3. Limux Münchner Stadtrat ignoriert selbst beauftragte Studie

Wacoms Intuos Pro Paper im Test: Weg mit digital, her mit Stift und Papier!
Wacoms Intuos Pro Paper im Test
Weg mit digital, her mit Stift und Papier!
  1. Wacom Brainwave Ein Graph sagt mehr als tausend Worte
  2. Canvas Dells Stift-Tablet bedient sich bei Microsoft und Wacom
  3. Intuos Pro Wacom verbindet Zeichentablet mit echtem Papier

Bundesnetzagentur: Puppenverbot gefährdet das Smart Home und Bastler
Bundesnetzagentur
Puppenverbot gefährdet das Smart Home und Bastler
  1. My Friend Cayla Eltern müssen Puppen ihrer Kinder zerstören
  2. Matoi Imagno Wenn die Holzklötzchen zu dir sprechen
  3. Smart Gurlz Programmieren lernen mit Puppen

  1. Re: Warum ?

    achtundvier | 19:11

  2. Re: Eines ist absolut wichtig!

    Akhelos | 19:10

  3. Re: Leider falsche OS

    Unix_Linux | 19:10

  4. Re: Hardware Tasten Vorteile?

    Unix_Linux | 19:07

  5. Re: Wir fassen zusammen:

    SkyBeam | 19:07


  1. 18:18

  2. 17:56

  3. 17:38

  4. 17:21

  5. 17:06

  6. 16:32

  7. 16:12

  8. 15:33


  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