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. ING-DiBa AG, Frankfurt
  2. ZELTWANGER Automation GmbH, Dußlingen
  3. Bechtle GmbH IT-Systemhaus, Nürtingen
  4. vwd GmbH, Kaiserslautern


Anzeige
Hardware-Angebote
  1. 89,90€ + 3,99€ Versand (Vergleichspreis ca. 140€)
  2. täglich neue Deals
  3. und Destiny 2 gratis erhalten

Folgen Sie uns
       


  1. Kabelnetz

    Primacom darf Kundendaten nicht weitergeben

  2. SX-10 Aurora Tsubasa

    NECs Beschleuniger nutzt sechs HBM2-Stacks

  3. Virtual Reality

    Huawei und TPCast wollen VR mit 5G streamen

  4. Wayland-Desktop

    Nvidia bittet um Mitarbeit an Linux-Speicher-API

  5. Kabelnetz

    Vodafone liefert Kabelradio-Receiver mit Analogabschaltung

  6. Einigung erzielt

    EU verbietet Geoblocking im Online-Handel

  7. Unitymedia

    Discounter Eazy kommt technisch nicht an das TV-Kabelnetz

  8. Rollenspielklassiker

    Enhanced Edition für Neverwinter Nights angekündigt

  9. Montagewerk in Tilburg

    Wo Tesla seine E-Autos für Europa produziert

  10. AUV

    US-Marine sucht mit Robotern nach verschollenem U-Boot



Haben wir etwas übersehen?

E-Mail an news@golem.de


Anzeige
Erneuerbare Energien: Siemens leitet die neue Steinzeit ein
Erneuerbare Energien
Siemens leitet die neue Steinzeit ein
  1. Siemens und Schunk Akkufahrzeuge werden mit 600 bis 1.000 Kilowatt aufgeladen
  2. Parkplatz-Erkennung Bosch und Siemens scheitern mit Pilotprojekten

Orbital Sciences: Vom Aufstieg und Niedergang eines Raketenbauers
Orbital Sciences
Vom Aufstieg und Niedergang eines Raketenbauers
  1. Arkyd-6 Planetary Resources startet bald ein neues Weltraumteleskop
  2. Astronomie Erster interstellarer Komet entdeckt
  3. Nasa und Roskosmos Gemeinsam stolpern sie zum Mond

Ideenzug: Der Nahverkehr soll cool werden
Ideenzug
Der Nahverkehr soll cool werden
  1. 3D-Printing Neues Druckverfahren sorgt für bruchfesteren Stahl
  2. Autonomes Fahren Bahn startet selbstfahrende Buslinie in Bayern
  3. Mobilitätsprojekt Ioki Bahn macht Sammeltaxi zum autonomen On-Demand-Shuttle

  1. Re: Überlebenschance

    Snowi | 17:59

  2. Re: The machine that builds the machine

    Gamma Ray Burst | 17:59

  3. Re: Ich kann diskriminieren wen ich will...

    bombinho | 17:58

  4. Re: Goldene Apple Watch

    stiGGG | 17:57

  5. Re: Fabriken sind so was von gestern

    DeathMD | 17:57


  1. 17:51

  2. 16:55

  3. 16:06

  4. 15:51

  5. 14:14

  6. 12:57

  7. 12:42

  8. 12:23


  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