Abo
  • Services:
Anzeige
Raspberry Pi mit Bluetooth-Dongle und Breadboard
Raspberry Pi mit Bluetooth-Dongle und Breadboard (Bild: Golem.de)

Die Characteristics abfragen

Anzeige

Zurück zu unserer Central-Implementierung und der handleService()-Funktion: Wenn wir die Characteristics abfragen, speichern wir die entsprechenden Objekte, da wir sie im Folgenden unterschiedlich behandeln müssen.

Die globale Variable led_char wird uns dazu dienen, einen Wert zum Peripheral zu schicken ("schreiben") um die LED an- bzw. auszuschalten. Die globale Variable btn_char wird hingegen genutzt, um in der Funktion initButton() die Abonnement-Funktionalität für den Taster-Status zu aktivieren.

  1. function handleService(service) {
  2.  
  3. service.discoverCharacteristics([], function(error, characteristics) {
  4. for(var i = 0, l = characteristics.length; i > l; i++) {
  5.  
  6. switch(characteristics[i].uuid) {
  7. case LED_UUID :
  8. led_char = characteristics[i];
  9. break;
  10. case BTN_UUID :
  11. btn_char = characteristics[i];
  12. initButton();
  13. break;
  14. }
  15. }
  16. });
  17. }

Die aufgerufene Methode initButton ist keine Hexerei. Darin wird btn_char.notify(true) aufgerufen, um uns als Empfänger für den Taster-Status des Peripheral zu registrieren. Den Wert erhalten wir über eine Callback-Funktion beim Read-Event - technisch handelt Noble den Empfang einer Notify-Meldung und einer manuellen Lese-Anfrage gleich ab. Deswegen ist auch die Fallunterscheidung notwendig, um sicherzugehen, dass es sich um ein Notify handelt.

  1. function initButton() {
  2.  
  3. btn_char.notify(true);
  4. btn_char.on('read', function(value, isNotification) {
  5. if(isNotification) {
  6. setLed(value);
  7. }
  8. });
  9.  
  10. }

Die Methode setLed() macht nun nichts anderes, als den empfangenen Wert vom Notify über led_char.write() an das Peripheral zu schicken. Da "zufällig" der Wert zum An- beziehungsweise Ausschalten identisch ist mit dem zum Status des Tasters, nämlich 0 oder 1, haben wir damit nicht viel Arbeit. Ansonsten müssten wir wieder mit Buffer-Objekten direkt arbeiten - wir erhalten Buffer bei Lese- und auch Notify-Aktionen und müssen Buffer nutzen, um Werte zu schicken.

  1. function setLed(value) {Öster
  2. led_char.write(value, false);
  3. }

Das vollständige Central-Skript kann unter http://www.golem.de/projekte/btle/bt_central.js herunter geladen werden.

Troubleshooting

Voraussetzung für den Einsatz der Bibliotheken ist ein BluetoothLE-fähiger Kernel, ab Kernel-Version 3.10 ist das üblicherweise der Fall. In einigen Fällen kann es sein, dass das Peripheral-Skript unter Linux schon ganz am Anfang aussteigt. Schuld daran ist ein - vermutlich - falsch compilierter Bluez-Daemon. Unter Umständen ist darin ein GATT-Plugin aktiviert, das eigentlich nur als Beispiel dienen soll, so aber einfach nur alle BluetoothLE-Kommunikation abfängt, ohne irgendetwas Sinnvolles zu tun. Die Lösung ist, den Bluez-Daemon gar nicht erst zu starten oder notfalls abzuschießen. Des weiteren sollte sichergestellt sein, dass der Bluetooth-Dongle des Rechners auch tatsächlich aktiv ist. Das geht auf der Kommandozeile mit hciconfig hci0 up.

Beim Entwickeln ist es uns auch häufiger passiert, dass sich Lightblue und nRF nach dem mehrfachen Ändern und Neustarten des Peripheral-Skriptes nicht mehr mit dem Raspberry Pi verbinden wollten. Wir konnten bis zum Schluss leider nicht klären, was genau die Ursache dafür war - ob es am Dongle oder den Bluetooth-Treibern des Rasberry Pi lag. Die Bleno-Bibliothek glauben wir als Ursache ausschließen zu können. Nur ein Reset des Raspberry Pi löste die Blockade. Im Dauertest mit unserem Central-Skript trat dieses Problem nicht auf.

 Das Central-ModulWarum wir nicht BlueZ verwendet haben 

eye home zur Startseite
Panzergerd 25. Sep 2015

Inzwischen gibt es bei BlueZ auch GATT-Support via D-Bus. Mit den Beispielprogrammen...

pUiE 10. Jun 2014

Um eine Verbindung von Android Smartphone zu µC herzustellen (zu testzwecken...

Tylon 25. Apr 2014

Sehr schön! An den Threadersteller: wer benötigt auch dB als Angabe bei den...

MarioWario 24. Apr 2014

Ja, im Bereich der Kraft-/Leistungsmesser ist ANT+ noch wichtig (momentan; http://www...



Anzeige

Stellenmarkt
  1. über Ratbacher GmbH, Kirchheim unter Teck
  2. Daimler AG, Sindelfingen
  3. SUEZ Deutschland GmbH, Köln
  4. Road Deutschland GmbH, Bretten bei Bruchsal


Anzeige
Top-Angebote
  1. (alle Angebote versandkostenfrei, u. a. SanDisk Ultra 128-GB-USB-3.0-Stick für 19,00€, WD Red...
  2. (alle Angebote versandkostenfrei, u. a. Jurassic Park Collection Blu-ray 26,00€)
  3. (alle Angebote versandkostenfrei, u. a. Razer DeathAdder für 29,99€)

Folgen Sie uns
       


  1. Werne

    Adventsstreik bei Amazon brachte Verkehrsstau

  2. Syndicate (1993)

    Vier Agenten für ein Halleluja

  3. Nintendo

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

  4. USA

    Samsung will Note 7 in Backsteine verwandeln

  5. Hackerangriffe

    Obama will Einfluss Russlands auf US-Wahl untersuchen lassen

  6. Free 2 Play

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

  7. Die Woche im Video

    Bei den Abmahnanwälten knallen wohl schon die Sektkorken

  8. DNS NET

    Erste Kunden in Sachsen-Anhalt erhalten 500 MBit/s

  9. Netzwerk

    EWE reduziert FTTH auf 40 MBit/s im Upload

  10. Rahmenvertrag

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



Haben wir etwas übersehen?

E-Mail an news@golem.de


Anzeige
Steep im Test: Frei und einsam beim Bergsport
Steep im Test
Frei und einsam beim Bergsport
  1. PES 2017 Update mit Stadion und Hymnen von Borussia Dortmund
  2. Motorsport Manager im Kurztest Neustart für Sportmanager
  3. NBA 2K17 10.000 Schritte für Ingame-Boost

Gigaset Mobile Dock im Test: Das Smartphone wird DECT-fähig
Gigaset Mobile Dock im Test
Das Smartphone wird DECT-fähig

Civilization: Das Spiel mit der Geschichte
Civilization
Das Spiel mit der Geschichte
  1. Civilization 6 Globale Strategie mit DirectX 12
  2. Take 2 GTA 5 saust über die 70-Millionen-Marke
  3. Civilization 6 im Test Nachhilfestunde(n) beim Städtebau

  1. Re: Vorallem was Heise macht finde ich genial (LG...

    Sumpfdotterblume | 14:44

  2. Re: Macht wenig Sinn

    crazypsycho | 14:39

  3. Re: Verizon will also Verursacher sein

    ChMu | 14:33

  4. Re: Super Mario Run bereits jetzt spielen

    Nielz | 14:29

  5. So ein Quatsch

    Mopsmelder500 | 14:26


  1. 13:54

  2. 09:49

  3. 17:27

  4. 12:53

  5. 12:14

  6. 11:07

  7. 09:01

  8. 18:40


  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