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. SKS Unternehmensberatung GmbH & Co. KG, Hochheim am Main
  2. Daimler AG, Ulm
  3. dSPACE GmbH, Paderborn
  4. Schwarz Business IT GmbH & Co. KG, Neckarsulm


Anzeige
Top-Angebote
  1. (mehr als 2.500 reduzierte Titel)
  2. (u. a. The Hateful 8, Der Marsianer, London Has Fallen, Kingsman, Avatar)
  3. (Rabattcode: MB10)

Folgen Sie uns
       


  1. Raumfahrt

    Chang'e 5 fliegt zum Mond und wieder zurück

  2. Android 7.0

    Sony stoppt Nougat-Update für bestimmte Xperia-Geräte

  3. Dark Souls 3 The Ringed City

    Mit gigantischem Drachenschild ans Ende der Welt

  4. HTTPS

    Weiterhin rund 200.000 Systeme für Heartbleed anfällig

  5. Verkehrsexperten

    Smartphone-Nutzung am Steuer soll strenger geahndet werden

  6. Oracle

    Java entzieht MD5 und SHA-1 das Vertrauen

  7. Internetzensur

    China macht VPN genehmigungspflichtig

  8. Hawkeye

    ZTE will bei mediokrem Community-Smartphone nachbessern

  9. Valve

    Steam erhält Funktion, um Spiele zu verschieben

  10. Anet A6 im Test

    Wenn ein 3D-Drucker so viel wie seine Teile kostet



Haben wir etwas übersehen?

E-Mail an news@golem.de


Anzeige
Mi Mix im Test: Xiaomis randlose Innovation mit kleinen Makeln
Mi Mix im Test
Xiaomis randlose Innovation mit kleinen Makeln
  1. Xiaomi Mi Note 2 im Test Ein Smartphone mit Ecken ohne Kanten

Donald Trump: Ein unsicherer Deal für die IT-Branche
Donald Trump
Ein unsicherer Deal für die IT-Branche
  1. USA Amazon will 100.000 neue Vollzeitstellen schaffen
  2. Trump auf Pressekonferenz "Die USA werden von jedem gehackt"
  3. US-Wahl US-Geheimdienste warnten Trump vor Erpressung durch Russland

Begnadigung: Danke, Chelsea Manning!
Begnadigung
Danke, Chelsea Manning!
  1. Die Woche im Video B/ow the Wh:st/e!
  2. Verwirrung Assange will nicht in die USA - oder doch?
  3. Whistleblowerin Obama begnadigt Chelsea Manning

  1. Re: Hyperloop BUSTED!

    Ach | 19:52

  2. Re: Schade, dass es keinen Kommunismus in China gibt

    Moe479 | 19:51

  3. Re: Endlich dem Trend gefolgt...

    letz | 19:47

  4. Re: Zukunft ist die gute alte EISEN-bahn

    Eheran | 19:45

  5. Das' ja der Nackte...

    Der.Dave | 19:41


  1. 18:19

  2. 17:28

  3. 17:07

  4. 16:55

  5. 16:49

  6. 16:15

  7. 15:52

  8. 15:29


  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