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. Imago Design GmbH, Gilching
  2. über HRM CONSULTING GmbH, Köln
  3. über Ratbacher GmbH, Berlin
  4. noris network AG, Nürnberg


Anzeige
Hardware-Angebote
  1. und Civilization VI gratis erhalten
  2. (täglich neue Deals)
  3. 17,99€ statt 29,99€

Folgen Sie uns
       


  1. Raspberry Pi

    Schutz gegen Übernahme durch Hacker und Botnetze verbessert

  2. UHD-Blu-ray

    PowerDVD spielt 4K-Discs

  3. Raumfahrt

    Europa bleibt im All

  4. Nationale Sicherheit

    Obama verhindert Aixtron-Verkauf nach China

  5. Die Woche im Video

    Telekom fällt aus und HPE erfindet den Computer neu - fast

  6. Hololens

    Microsoft holoportiert Leute aus dem Auto ins Büro

  7. Star Wars

    Todesstern kostet 6,25 Quadrilliarden britische Pfund am Tag

  8. NSA-Ausschuss

    Wikileaks könnte Bundestagsquelle enttarnt haben

  9. Transparenzverordnung

    Angaben-Wirrwarr statt einer ehrlichen Datenratenangabe

  10. Urteil zu Sofortüberweisung

    OLG empfiehlt Verbrauchern Einkauf im Ladengeschäft



Haben wir etwas übersehen?

E-Mail an news@golem.de


Anzeige
Nach Angriff auf Telekom: Mit dem Strafrecht Router ins Terrorcamp schicken oder so
Nach Angriff auf Telekom
Mit dem Strafrecht Router ins Terrorcamp schicken oder so
  1. 0-Day Tor und Firefox patchen ausgenutzten Javascript-Exploit
  2. Pornoseite Xhamster spricht von Fake-Leak
  3. Mitfahrgelegenheit.de 640.000 Ibans von Mitfahrzentrale-Nutzern kopiert

Digitalcharta: Operation am offenen Herzen der europäischen Demokratie
Digitalcharta
Operation am offenen Herzen der europäischen Demokratie
  1. EU-Kommission Mehrwertsteuer für digitale Medien soll sinken
  2. Vernetzte Geräte Verbraucherminister fordern Datenschutz im Haushalt
  3. Neue Richtlinie EU plant Netzsperren und Staatstrojaner

Garamantis: Vorsicht Vitrine, anfassen erwünscht!
Garamantis
Vorsicht Vitrine, anfassen erwünscht!
  1. Gentechnik Mediziner setzen einem Menschen Crispr-veränderte Zellen ein
  2. Zarm Zehn Sekunden schwerelos
  3. Mikroelektronik Wie eine Vakuumröhre - nur klein, stromsparend und schnell

  1. Re: hä? gericht wieder einmal weltfremd?

    lear | 16:31

  2. Re: Notwehr

    Muhaha | 16:28

  3. Re: Transparenz zum Kündigungstermin ist Schwachsinn!

    Cok3.Zer0 | 16:26

  4. Re: Die Einbrinung einer Mindestgarntie

    Cok3.Zer0 | 16:24

  5. SSH-Config

    Wallbreaker | 16:19


  1. 15:33

  2. 14:43

  3. 13:37

  4. 11:12

  5. 09:02

  6. 18:27

  7. 18:01

  8. 17:46


  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