Abo
  • Services:

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.

Stellenmarkt
  1. Bertrandt Services GmbH, Hannover
  2. über duerenhoff GmbH, Hamburg

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.

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 
  1.  
  2. 1
  3. 2
  4. 3
  5. 4
  6. 5
  7. 6
  8. 7
  9. 8
  10. 9
  11. 10
  12. 11
  13. 12
  14.  


Anzeige
Spiele-Angebote
  1. 5€
  2. 59,99€
  3. 4,95€

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...


Folgen Sie uns
       


Frösteln in Frostpunk - Golem.de Live

Frostpunk ist ein düsteres Aufbauspiel, aber mit der Unterstützung unserer Community haben wir frostige Zeiten im Livestream überwunden.

Frösteln in Frostpunk - Golem.de Live Video aufrufen
Thermalright ARO-M14 ausprobiert: Der den Ryzen kühlt
Thermalright ARO-M14 ausprobiert
Der den Ryzen kühlt

Mit dem ARO-M14 bringt Thermalright eine Ryzen-Version des populären HR-02 Macho Rev B. Der in zwei Farben erhältliche CPU-Kühler leistet viel und ist leise, zudem hat Thermalright die Montage etwas verbessert.
Ein Hands on von Marc Sauter


    Ryzen 7 2700X im Test: AMDs Zen+ zieht gleich mit Intel
    Ryzen 7 2700X im Test
    AMDs Zen+ zieht gleich mit Intel

    Der neue Ryzen 7 2700X gehört zu den schnellsten CPUs für 300 Euro. In Anwendungen schlägt er sich sehr gut und ist in Spielen oft überraschend flott. Besonders schön: die Abwärtskompatibilität.
    Ein Test von Marc Sauter und Sebastian Grüner

    1. Ryzen 2400GE/2200GE AMD veröffentlicht sparsame 35-Watt-APUs
    2. AMD-Prozessor Ryzen-Topmodell 7 2700X kostet 320 Euro
    3. Spectre v2 AMD und Microsoft patchen CPUs bis zurück zum Bulldozer

    Patscherkofel: Gondelbahn mit Sicherheitslücken
    Patscherkofel
    Gondelbahn mit Sicherheitslücken

    Die Steuerungsanlage der neuen Gondelbahn am Innsbrucker Patscherkofel ist ohne Sicherheitsmaßnahmen im Netz zu finden gewesen. Ein Angreifer hätte die Bahn aus der Ferne übernehmen können - trotzdem beschwichtigt der Hersteller.
    Von Hauke Gierow

    1. Hamburg Sensoren melden freie Parkplätze
    2. Edge Computing Randerscheinung mit zentraler Bedeutung
    3. Software AG Cumulocity IoT bringt das Internet der Dinge für Einsteiger

      •  /