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. macom GmbH, München
  2. Safran Electronics & Defense Germany GmbH, Stuttgart
  3. Daimler AG, Stuttgart
  4. PHOENIX CONTACT GmbH & Co. KG, Blomberg


Anzeige
Spiele-Angebote
  1. ab 129,99€
  2. 1,49€
  3. 19,99€

Folgen Sie uns
       


  1. Datenrate

    Vodafone weitet 500 MBit/s im Kabelnetz aus

  2. IT-Outsourcing

    Schweden kaufte Clouddienste ohne Sicherheitsprüfung

  3. Quantengatter

    Die Bauteile des Quantencomputers

  4. Microsoft gibt Entwarnung

    MS Paint bleibt

  5. BGH-Urteil

    Banken dürfen Geld für SMS-TANs verlangen

  6. Deep Space Gateway

    Lockheed baut eine Raumstation aus Spaceshuttle-Frachtmodul

  7. Auftragsfertiger

    Samsung will Marktanteil verdreifachen

  8. Android O

    Google veröffentlicht letzte Testversion vor Release

  9. Fruit Fly 2

    Mysteriöse Mac-Malware seit Jahren aktiv

  10. Poets One im Test

    Kleiner Preamp, großer Sound



Haben wir etwas übersehen?

E-Mail an news@golem.de


Anzeige
Neuer A8 vorgestellt: Audis Staupilot steckt noch im Zulassungsstau
Neuer A8 vorgestellt
Audis Staupilot steckt noch im Zulassungsstau
  1. Autonomes Fahren Continental will beim Kartendienst Here einsteigen
  2. Verbrenner Porsche denkt über Dieselausstieg nach
  3. Autonomes Fahren Audi lässt Kunden selbstfahrenden A7 testen

Anker Powercore+ 26800 PD im Test: Die Powerbank für (fast) alles
Anker Powercore+ 26800 PD im Test
Die Powerbank für (fast) alles
  1. Toshiba Teures Thunderbolt-3-Dock mit VGA-Anschluss
  2. Asus Das Zenbook Flip S ist 10,9 mm flach
  3. Anker Powercore+ 26800 PD Akkupack liefert Strom per Power Delivery über USB Typ C

Matebook X im Test: Huaweis erstes Ultrabook glänzt
Matebook X im Test
Huaweis erstes Ultrabook glänzt
  1. Huawei Neue Rack- und Bladeserver für Azure Stack vorgestellt
  2. Matebook X Huaweis erstes Notebook im Handel erhältlich
  3. Y6 (2017) und Y7 Huawei bringt zwei neue Einsteiger-Smartphones ab 180 Euro

  1. Re: Mal ehrlich: Würdet ihr da mitmachen?

    GossipGirl | 12:44

  2. Viel Spaß im MRT (kt)

    zwangsregistrie... | 12:43

  3. Re: Verabschiedung aus DTM

    Powerhouse | 12:43

  4. Re: Ziemlich cool wie scheibchenweise alle...

    der_wahre_hannes | 12:43

  5. Re: Das ist doch nur, um den Store zu pushen

    nille02 | 12:42


  1. 12:26

  2. 12:12

  3. 12:05

  4. 11:50

  5. 11:30

  6. 11:15

  7. 11:00

  8. 10: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