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. Dataport, Hamburg, Altenholz bei Kiel
  2. Dataport, Hamburg
  3. Medion AG, Essen
  4. Stadtwerke München GmbH, München


Anzeige
Spiele-Angebote
  1. 7,99€
  2. 5,99€
  3. 5,99€

Folgen Sie uns
       


  1. Analysepapier

    Facebook berichtet offiziell von staatlicher Desinformation

  2. Apple

    Qualcomm reduziert Prognose wegen zurückgehaltener Zahlungen

  3. Underground Actually Free

    Amazon beendet Programm mit komplett kostenlosen Apps

  4. Onlinelexikon

    Türkische Behörden sperren Zugang zu Wikipedia

  5. Straßenverkehr

    Elon Musk baut U-Bahn für Autos

  6. Die Woche im Video

    Mr. Robot und Mrs. MINT

  7. Spülbohrverfahren

    Deutsche Telekom "spült" ihre Glasfaserkabel in die Erde

  8. Privacy Phone

    John McAfee stellt fragwürdiges Smartphone vor

  9. Hacon

    Siemens übernimmt Software-Anbieter aus Hannover

  10. Quartalszahlen

    Intel bestätigt Skylake-Xeons für Sommer 2017



Haben wir etwas übersehen?

E-Mail an news@golem.de


Anzeige
DLR-Projekt Eden ISS: Das Paradies ist ein Container
DLR-Projekt Eden ISS
Das Paradies ist ein Container
  1. Weltraumschrott "Der neue Aspekt sind die Megakonstellationen"
  2. Transport Der Güterzug der Zukunft ist ein schneller Roboter
  3. "Die Astronautin" Ich habe heute leider keinen Flug ins All für dich

Radeon RX 580 und RX 570 im Test: AMDs Grafikkarten sind schneller und sparsamer
Radeon RX 580 und RX 570 im Test
AMDs Grafikkarten sind schneller und sparsamer
  1. Grafikkarte Manche Radeon RX 400 lassen sich zu Radeon RX 500 flashen
  2. Radeon Pro Duo AMD bringt Profi-Grafikkarte mit zwei Polaris-Chips
  3. Grafikkarten AMD bringt vier neue alte Radeons für Komplett-PCs

Miniatur Wunderland: Schiffe versenken die schönsten Pläne
Miniatur Wunderland
Schiffe versenken die schönsten Pläne
  1. Transport Üo, der fahrbare Ball
  2. Transport Sea Bubbles testet foilendes Elektroboot
  3. Verkehr Eine Ampel mit Kamera und Gesichtserkennung

  1. Re: Wayne

    plutoniumsulfat | 15:29

  2. Re: Noch 134 kritische Fehler

    goto10 | 15:29

  3. Re: Langsam wird Musk verrückt

    Prinzeumel | 15:26

  4. Re: Top stabile Server Distro

    DeaD_EyE | 15:25

  5. Adolf Ergodan

    WebNeuland | 15:24


  1. 15:07

  2. 14:32

  3. 13:35

  4. 12:56

  5. 12:15

  6. 09:01

  7. 08:00

  8. 18:05


  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