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. Stadt Ludwigsburg, Ludwigsburg
  2. Hubert Burda Media, Köln
  3. Robert Bosch GmbH, Abstatt
  4. HANSECOM, Hamburg


Anzeige
Hardware-Angebote
  1. 274,90€ + 3,99€ Versand
  2. 819,00€

Folgen Sie uns
       


  1. Grafikkarte

    AMDs Radeon RX 580 nutzt einen 8-Pol-Stromanschluss

  2. Softwareentwicklung

    Google sammelt seine Open-Source-Aktivität

  3. Youtuber

    Flying Uwe unter Verdacht der Schleichwerbung

  4. Surface Book

    Performance Base kostet mindestens 2.600 Euro

  5. Mobilfunk

    Amazon arbeitet an eigenen Smartphone-Tarifen

  6. Filmkritik Ghost in the Shell

    Wenig Geist in schöner Hülle

  7. App Store

    Apple verbietet Preishinweise in App-Bezeichnungen

  8. Software-Update

    Tesla-Autopilot 2.0 bis 130 km/h aktiv

  9. Terminverwaltung

    Googles Kalender-App fürs iPad erweitert

  10. Arbeitsplätze

    Audi-Belegschaft verlangt E-Autoproduktion in Deutschland



Haben wir etwas übersehen?

E-Mail an news@golem.de


Anzeige
Vikings im Kurztest: Tiefgekühlt kämpfen
Vikings im Kurztest
Tiefgekühlt kämpfen
  1. Nier Automata im Test Stilvolle Action mit Überraschungen
  2. Torment im Test Spiel mit dem Text vom Tod
  3. Nioh im Test Brutal schwierige Samurai-Action

WLAN-Störerhaftung: Wie gefährlich sind die Netzsperrenpläne der Regierung?
WLAN-Störerhaftung
Wie gefährlich sind die Netzsperrenpläne der Regierung?
  1. Telia Schwedischer ISP muss Nutzerdaten herausgeben
  2. Die Woche im Video Dumme Handys, kernige Prozessoren und Zeldaaaaaaaaaa!
  3. Störerhaftung Regierung will Netzsperren statt Abmahnkosten

In eigener Sache: Golem.de sucht Marketing Manager (w/m)
In eigener Sache
Golem.de sucht Marketing Manager (w/m)
  1. In eigener Sache Golem.de geht auf Jobmessen
  2. In eigener Sache Golem.de kommt jetzt sicher ins Haus - per HTTPS
  3. In eigener Sache Unterstützung für die Schlussredaktion gesucht!

  1. Re: Wer?

    mrgenie | 10:54

  2. Re: Schade. Anime Tipps?

    Kakiss | 10:53

  3. Re: Scheint so als würde denen das Geld langsam...

    hw75 | 10:52

  4. Re: Was zu erwarten war...

    theFiend | 10:51

  5. Re: Nett, aber...

    kendon | 10:50


  1. 10:57

  2. 10:42

  3. 10:27

  4. 10:12

  5. 09:58

  6. 09:00

  7. 08:27

  8. 07:40


  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