Abo
  • Services:
Anzeige
Raspberry Pi mit Touchscreen-Display und Bluetooth-Dongle
Raspberry Pi mit Touchscreen-Display und Bluetooth-Dongle (Bild: Fabian Hamacher/Golem.de)

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.

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.

Anzeige

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

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. Daimler AG, Leinfelden-Echterdingen
  2. über Ratbacher GmbH, Kirchheim unter Teck
  3. Daimler AG, Stuttgart
  4. Wirecard Technologies GmbH, Aschheim bei München


Anzeige
Top-Angebote
  1. (u. a. 3x B12-PS 120mm für 49,90€, 3x B14-1 140mm für 63,90€)

Folgen Sie uns
       


  1. Nintendo

    Super Mario Run für iOS läuft nur mit Onlineverbindung

  2. USA

    Samsung will Note 7 in Backsteine verwandeln

  3. Hackerangriffe

    Obama will Einfluss Russlands auf US-Wahl untersuchen lassen

  4. Free 2 Play

    US-Amerikaner verzockte 1 Million US-Dollar in Game of War

  5. Die Woche im Video

    Bei den Abmahnanwälten knallen wohl schon die Sektkorken

  6. DNS NET

    Erste Kunden in Sachsen-Anhalt erhalten 500 MBit/s

  7. Netzwerk

    EWE reduziert FTTH auf 40 MBit/s im Upload

  8. Rahmenvertrag

    VG Wort will mit Unis neue Zwischenlösung für 2017 finden

  9. Industriespionage

    Wie Thyssenkrupp seine Angreifer fand

  10. Kein Internet

    Nach Windows-Update weltweit Computer offline



Haben wir etwas übersehen?

E-Mail an news@golem.de


Anzeige
Super Mario Bros. (1985): Fahrt ab auf den Bruder!
Super Mario Bros. (1985)
Fahrt ab auf den Bruder!
  1. Quake (1996) Urknall für Mouselook, Mods und moderne 3D-Grafik
  2. NES Classic Mini im Vergleichstest Technischer K.o.-Sieg für die Original-Hardware

Kosmobits im Test: Tausch den Spielecontroller gegen einen Mikrocontroller!
Kosmobits im Test
Tausch den Spielecontroller gegen einen Mikrocontroller!
  1. HiFive 1 Entwicklerboard mit freiem RISC-Prozessor verfügbar
  2. Simatic IoT2020 Siemens stellt linuxfähigen Arduino-Klon vor
  3. Calliope Mini Mikrocontroller-Board für deutsche Schüler angekündigt

HPE: Was The Machine ist und was nicht
HPE
Was The Machine ist und was nicht
  1. IaaS und PaaS Suse bekommt Cloudtechnik von HPE und wird Lieblings-Linux
  2. Memory-Driven Computing HPE zeigt Prototyp von The Machine

  1. Re: Das Ultimative Update

    DrWatson | 01:19

  2. Re: was soll immer diese schwachsinnige Asymmetrie...

    GodFuture | 00:58

  3. Re: Diese ganzen angeblichen F2P sollte man...

    Lasse Bierstrom | 00:58

  4. Re: Uuund raus

    Bessunger | 00:58

  5. Re: 2-Faktor-Authentifizierung ist die Antithese...

    Bessunger | 00:55


  1. 17:27

  2. 12:53

  3. 12:14

  4. 11:07

  5. 09:01

  6. 18:40

  7. 17:30

  8. 17:13


  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