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 https://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. DATAGROUP Köln GmbH, Düsseldorf
  2. ETAS GmbH, Stuttgart
  3. PHOENIX CONTACT GmbH & Co. KG, Blomberg
  4. Stadt Frankfurt am Main, Frankfurt am Main


Anzeige
Top-Angebote
  1. 34,99€ + 5,99€ Versand (Vergleichspreis 77€)
  2. für 44,99€ statt 60,00€
  3. (u. a. Echo Dot für 34,99€ statt 59,99€)

Folgen Sie uns
       


  1. Fraunhofer Fokus

    Metaminer soll datensammelnde Apps aufdecken

  2. Onlinehandel

    Bundesgerichtshof greift Paypal-Käuferschutz an

  3. Verbraucherschutz

    Sportuhr-Hersteller gehen unsportlich mit Daten um

  4. Core-i-Prozessoren

    Intel bestätigt gravierende Sicherheitsprobleme in ME

  5. Augmented Reality

    Apple kauft Vrvana für 30 Millionen US-Dollar

  6. Lootboxen

    "Battlefront 2 ist ein Star-Wars-Onlinecasino für Kids"

  7. Stadtnetzbetreiber

    Von 55 Tiefbauunternehmen hat keines geantwortet

  8. Steuerstreit

    Irland fordert Milliardenzahlung von Apple ein

  9. Zensur

    Skype ist in chinesischen Appstores blockiert

  10. Eizo Flexscan EV2785

    Neuer USB-C-Monitor mit 4K und mehr Watt für Notebooks



Haben wir etwas übersehen?

E-Mail an news@golem.de


Anzeige
Gaming-Smartphone im Test: Man muss kein Gamer sein, um das Razer Phone zu mögen
Gaming-Smartphone im Test
Man muss kein Gamer sein, um das Razer Phone zu mögen
  1. Razer Phone im Hands on Razers 120-Hertz-Smartphone für Gamer kostet 750 Euro
  2. Kiyo und Seiren X Razer bringt Ringlicht-Webcam für Streamer
  3. Razer-CEO Tan Gaming-Gerät für mobile Spiele soll noch dieses Jahr kommen

Firefox 57: Viel mehr als nur ein Quäntchen schneller
Firefox 57
Viel mehr als nur ein Quäntchen schneller
  1. Mozilla Wenn Experimente besser sind als Produkte
  2. Firefox 57 Firebug wird nicht mehr weiterentwickelt
  3. Mozilla Firefox 56 macht Hintergrund-Tabs stumm

Fire TV (2017) im Test: Das Streaminggerät, das kaum einer braucht
Fire TV (2017) im Test
Das Streaminggerät, das kaum einer braucht
  1. Neuer Fire TV Amazons Streaming-Gerät bietet HDR für 80 Euro
  2. Streaming Update für Fire TV bringt Lupenfunktion
  3. Streaming Amazon will Fire TV und Echo Dot vereinen

  1. Re: Ich habe ja neulich Hangouts entdeckt ...

    berritorre | 21:41

  2. Re: Ich weis ja nicht, warum man hier versucht...

    ML82 | 21:41

  3. Re: Kein Mensch arbeitet mehr für öffentliche...

    DerDy | 21:40

  4. Re: Sollen sie halt ihre eigenen Tiefbaufirmen...

    thinksimple | 21:36

  5. Minix WTF?

    Luemmelhh | 21:33


  1. 17:45

  2. 17:20

  3. 17:06

  4. 16:21

  5. 15:51

  6. 15:29

  7. 14:59

  8. 14:11


  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