Abo
  • Services:

Anzeigen und Senden

Da wir serverseitig JSON als Datenformat für die übertragenen Daten vorgegeben haben, wird der Parameter entsprechend geparst. Dadurch erhalten wir eine Datenstruktur, die unter anderem den Namen des aktuellen Titels und die Lautstärke enthält. Diese Informationen werden direkt in die entsprechenden HTML-Elemente eingetragen.

Stellenmarkt
  1. Dataport, Bremen, Hamburg
  2. Bertrandt Ingenieurbüro GmbH, Gaimersheim

Die Buttons sind mit onclick-Events versehen und rufen damit die send()-Funktion mit dem jeweiligen Kommando als Parameter auf. Diese Funktion ruft ihrerseits die send()-Methode des Websocket-Objekts auf. Gesendet wird dabei auch wieder eine Datenstruktur, die per JSON in Text umgewandelt wurde.

...
<button id="btnPlay" onclick="send(COMMAND_PLAY)">Play</button>
<button id="btnStop" onclick="send(COMMAND_STOP)">Stop</button>
...

  1. function send(val) {
  2.  
  3. if(con == null) {
  4. return;
  5. }
  6.  
  7. if(COMMAND_VOLUP == val) {
  8. con.send(JSON.stringify({vol:volume+1}));
  9. } else if(COMMAND_VOLDOWN == val) {
  10. con.send(JSON.stringify({vol:volume-1}));
  11. } else {
  12. var cmd_data = {cmd:val};
  13. con.send(JSON.stringify(cmd_data));
  14. }
  15. }

Das ist tatsächlich alles, mehr ist für eine bidirektionale Kommunikation nicht notwendig. AJAX und REST-APIs wirken dagegen komplizierter.

Musikplayer ansteuern

Bevor wir zur Serverkomponente für den Websocket kommen, betrachten wir noch das Skript zur Ansteuerung des Musikplayers. Es empfängt über Bluetooth Low Energy die Kommandos und steuert davon abhängig per Kommandozeile den Musikplayer. Wir setzten dazu iTunes ein, das sich im laufenden Betrieb per Applescript steuern lässt. Je nach Kommando ermittelt es auch die aktuell eingestellte Lautstärke und den laufenden Track, ebenfalls per Applescript. Beide Infos werden asynchron über BluetoothLE wieder übermittelt. Applescript und iTunes sind kein Muss, aber unter Mac OS praktisch. Unter anderen Betriebssystemen, insbesondere unter Linux, gibt es vergleichbare Optionen.

Mit dem Skript wird der Laptop zum angesteuerten BluetoothLE-Peripheral. In unserem Vorgängerartikel diente der Laptop dagegen als steuernde BluetoothLE-Central. Die Umsetzung erfolgt auf Basis der Node.js-Bibliothek Bleno.

Beim Peripheral wird ein Service mit drei Characteristics definiert: Die Kommando-Characteristic (CMD) kann beschrieben werden, darüber setzen wir das auszuführende Kommando, codiert als Zahl. Die Lautstärke-Characteristic (VOL) kann gelesen, abonniert und beschrieben werden. Das heißt: Darüber erhalten wir die aktuell eingestellte Lautstärke, oder wir können die Lautstärke in Prozent setzen (0 - 100%). Eine reine Characteristic zum Lesen ist schließlich Track (TRK) für den aktuell abgespielten Titel.

Das Kommando codieren wir aus Gründen der Datensparsamkeit als Zahl. Wer will, kann stattdessen auch Zeichenketten benutzen, was allerdings die Datenübertragung verlängert.

 Websocket öffnenMittler zwischen den Welten 
  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
Blu-ray-Angebote
  1. (nur für Prime-Mitglieder)
  2. 4,25€

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
       


Asus ROG Phone - Hands On auf der Computex 2018

Das ROG ist ein interessantes Konzept, das sich schon beim an Gamer gerichteten Design von anderen Telefonen unterscheidet. Außergewöhnlich sind die vielen Zubehörteile: darunter ein Handheld-Adapter, ein Desktop-Dock, ein Anstecklüfter und ein Controllermodul. Wir haben es uns angeschaut.

Asus ROG Phone - Hands On auf der Computex 2018 Video aufrufen
VR-Rundschau: Retten rockende Jedi-Ritter die virtuelle Realität?
VR-Rundschau
Retten rockende Jedi-Ritter die virtuelle Realität?

Der mediale Hype um VR ist zwar abgeflaut, spannende Inhalte dafür gibt es aber weiterhin - und das nicht nur im Games-Bereich. Mit dabei: das beliebteste Spiel bei Steam, Jedi-Ritter auf Speed und ägyptische Grabkammern.
Ein Test von Achim Fehrenbach

  1. Grafikkarten Virtual Link via USB-C für Next-Gen-Headsets
  2. Oculus Core 2.0 Windows 10 wird Minimalanforderung für Oculus Rift
  3. Virtual Reality BBC überträgt Fußball-WM in der virtuellen VIP-Loge

Razer Blade 15 im Test: Schlanker 15,6-Zöller für Gamer gefällt uns
Razer Blade 15 im Test
Schlanker 15,6-Zöller für Gamer gefällt uns

Das Razer Blade 15 ist ein gutes Spiele-Notebook mit flottem Display und schneller Geforce-Grafikeinheit. Anders als im 14-Zoll-Formfaktor ist bei den 15,6-Zoll-Modellen die Konkurrenz aber deutlich größer.
Ein Test von Marc Sauter

  1. Gaming-Notebook Razer packt Hexacore und Geforce GTX 1070 ins Blade 15
  2. Razer Blade 2017 im Test Das beste Gaming-Ultrabook nun mit 4K

Cruijff Arena: Ed Sheeran singt mit Strom aus Nissan-Leaf-Akkus
Cruijff Arena
Ed Sheeran singt mit Strom aus Nissan-Leaf-Akkus

Die Johann-Cruijff-Arena in Amsterdam ist weltweit das erste Stadion, das seine Energieversorgung mit einem Speichersystem sichert, das aus Akkus von Elektroautos besteht. Der englische Sänger Ed Sheeran hat mit dem darin gespeichertem Solarstrom schon seine Gitarre verstärkt.
Ein Bericht von Dirk Kunde

  1. Energiewende Warum die Bundesregierung ihre Versprechen nicht hält
  2. Max Bögl Wind Das höchste Windrad steht bei Stuttgart

    •  /