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

Das Central-Modul

Anzeige

Die Bibliothek Noble funktioniert ganz ähnlich wie Bleno. Es beginnt mit der Suche nach BluetoothLE-Geräten und dem Aufruf unserer Funktion discover(), wenn das Gerät gefunden wurde.

  1. var noble = require('noble');
  2.  
  3. noble.on('discover', discover);
  4.  
  5. noble.startScanning([], false);

Der startScaning()-Methode kann ein Array mit Service-UUIDs gegeben werden, um gezielt nur jene Peripheral-Module zu finden, die auch mit dem Central-Skript verwendet können. Darauf verzichten wir. Der zweite Parameter bestimmt, ob gefundene Peripherals mehrfach der discover()-Funktion gemeldet werden sollen (false) oder nur einmal (true).

  1. function discover(peripherial) {
  2.  
  3. peripherial.connect(function(error) {
  4. if(error) {
  5. return;
  6. }
  7.  
  8. peripherial.discoverServices([], function(error, services) {
  9. if(error) {
  10. return;
  11. }
  12.  
  13. for(var i = 0, l = services.length; l > i; i++) {
  14.  
  15. var service = services[i];
  16.  
  17. if(SERVICE == service.uuid) {
  18. handleService(service);
  19. }
  20. }
  21. });
  22. });
  23. };

Die discover()-Methode ist recht übersichtlich. Findet Noble ein Peripheral, übergibt es der Methode ein entsprechendes Objekt. Über dieses Objekt verbinden wir uns mit ihm per connect() und fragen die verfügbaren Services ab. Haben wir eine Liste der Services erhalten, suchen wir nach dem Service, dessen UUID unserem oben definierten LedService entspricht. Ist die Suche erfolgreich, wird unsere Funktion handleService() aufgerufen.

Einen Tick schneller und energiesparender

Auch wenn diese Zeilen nicht allzu schwierig sind - es geht noch einfacher: Wenn das Peripheral den Service als Teil der Erkennung ausgibt, kann das Central-Modul bereits an dieser Stelle filtern. Im Peripheral-Skript muss die UUID im Array der Methode bleno.startAdvertising('led', ['Die_UUID']) angegeben werden. Dann kann im Central-Skript noble.startScanning(['Die_UUID'], false) ebenfalls die UUID des Services im Array angegeben werden und wir wissen sofort, ob es unser Peripheral ist. Eine Verbindung zu jedem erkannten Gerät und der nachfolgende Test auf die Services kann dann entfallen, es ist nur eine Verbindung zu unserem Gerät notwendig.

In unserer aktuellen Implementierung verzichten wir darauf, um die API besser vorzustellen.

 LED an- und ausschaltenDie Characteristics abfragen 

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. GK Software AG, Schöneck/Vogtland, Berlin
  2. B&R Industrial Automation GmbH, Essen
  3. Vodafone GmbH, Düsseldorf
  4. eg factory GmbH, Chemnitz


Anzeige
Spiele-Angebote
  1. (-8%) 45,99€
  2. + Prämie (u. a. Far Cry 5, Elex, Assassins Creed Origins) für 62€

Folgen Sie uns
       


  1. LTE

    Taiwan schaltet nach 2G- auch 3G-Netz ab

  2. Two Point Hospital

    Sega stellt Quasi-Nachfolger zu Theme Hospital vor

  3. Callya

    Vodafones Prepaid-Tarife erhalten mehr Datenvolumen

  4. Skygofree

    Kaspersky findet mutmaßlichen Staatstrojaner

  5. World of Warcraft

    Schwierigkeitsgrad skaliert in ganz Azeroth

  6. Open Source

    Microsoft liefert Curl in Windows 10 aus

  7. Boeing und SpaceX

    Experten warnen vor Sicherheitsmängeln bei Raumfähren

  8. Tencent

    Lego will mit Tencent in China digital expandieren

  9. Beta-Update

    Gesichtsentsperrung für Oneplus Three und 3T verfügbar

  10. Matthias Maurer

    Ein Astronaut taucht unter



Haben wir etwas übersehen?

E-Mail an news@golem.de


Anzeige
EU-Netzpolitik: Mit vollen Hosen in die App-ocalypse
EU-Netzpolitik
Mit vollen Hosen in die App-ocalypse

Preiswertes Grafik-Dock ausprobiert: Ein eGPU-Biest für unter 50 Euro
Preiswertes Grafik-Dock ausprobiert
Ein eGPU-Biest für unter 50 Euro
  1. XG Station Pro Asus' zweite eGPU-Box ist schlicht
  2. Zotac Amp Box (Mini) TB3-Gehäuse eignen sich für eGPUs oder SSDs
  3. Snpr External Graphics Enclosure KFA2s Grafikbox samt Geforce GTX 1060 kostet 500 Euro

Kryptowährungen: Von Tulpen, Berg- und Talfahrten
Kryptowährungen
Von Tulpen, Berg- und Talfahrten
  1. Bitcoin Israels Marktaufsicht will Kryptoverbot an Börse durchsetzen
  2. Geldwäsche EU will den Bitcoin weniger anonym machen
  3. Kryptowährung 4.700 Bitcoin von Handelsplattform Nicehash gestohlen

  1. Re: Was sind das für Preise?

    Bruce Wayne | 22:07

  2. Re: Tank

    Nogul | 22:02

  3. Re: Gute Shell

    Tuxgamer12 | 21:57

  4. Liste von Smartphones, für die VOLTE unterstützt wird

    M.P. | 21:53

  5. Re: Warum nicht ein schritt weiter gehen?

    Hotohori | 21:51


  1. 19:16

  2. 17:48

  3. 17:00

  4. 16:25

  5. 15:34

  6. 15:05

  7. 14:03

  8. 12:45


  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