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. Panasonic Industrial Devices Europe GmbH, Lüneburg
  2. Technische Hochschule Nürnberg Georg Simon Ohm, Nürnberg
  3. beauty alliance Deutschland GmbH & Co. KG, Bielefeld
  4. BRUNATA Wärmemesser GmbH & Co. KG, München


Anzeige
Blu-ray-Angebote
  1. 29,99€ (Vorbesteller-Preisgarantie)
  2. (u. a. John Wick, The Hateful 8, Die Bestimmung, Fifty Shades of Grey, London Has Fallen)
  3. (u. a. Platoon, Erbarmungslos, Training Day, Spaceballs, Einsame Entscheidung)

Folgen Sie uns
       


  1. Samsung

    Galaxy Note 7 wird per Update endgültig lahmgelegt

  2. The Ringed City

    From Software zeigt Abschluss von Dark Souls 3 im Trailer

  3. Dieter Lauinger

    Minister fordert Gesetz gegen Hasskommentare noch vor Wahl

  4. Die Woche im Video

    Cebit wird heiß, Android wird neu, Aliens werden gesprächig

  5. Mobilfunkausrüster

    Welche Frequenzen für 5G in Deutschland diskutiert werden

  6. XMPP

    Bundesnetzagentur will hundert Jabber-Clients regulieren

  7. Synlight

    Wie der Wasserstoff aus dem Sonnenlicht kommen soll

  8. Pietsmiet

    "Alle Twitch-Kanäle sind kostenpflichtiger Rundfunk"

  9. Apache-Lizenz 2.0

    OpenSSL plant Lizenzwechsel an der Community vorbei

  10. 3DMark

    Overhead-Test ersetzt Mantle durch Vulkan



Haben wir etwas übersehen?

E-Mail an news@golem.de


Anzeige
Videostreaming im Zug: Maxdome umwirbt Bahnfahrer bei Tempo 230
Videostreaming im Zug
Maxdome umwirbt Bahnfahrer bei Tempo 230
  1. USA Google will Kabelfernsehen über Youtube streamen
  2. Verband DVD-Verleih in Deutschland geht wegen Netflix zurück
  3. Nintendo Vorerst keine Videostreaming-Apps auf Switch

Buch - Apple intern: "Die behandeln uns wie Sklaven"
Buch - Apple intern
"Die behandeln uns wie Sklaven"
  1. Übernahme Apple kauft iOS-Automatisierungs-Tool Workflow
  2. Instandsetzung Apple macht iPhone-Reparaturen teurer
  3. Earbuds mit Sensor Apple beantragt Patent auf biometrische Kopfhörer

Lithium-Akkus: Durchbruch verzweifelt gesucht
Lithium-Akkus
Durchbruch verzweifelt gesucht
  1. Super MCharge Smartphone-Akku in 20 Minuten voll geladen
  2. Brandgefahr HP ruft über 100.000 Notebook-Akkus zurück
  3. Brandgefahr Akku mit eingebautem Feuerlöscher

  1. Re: Wir haben auch locker

    Youssarian | 14:14

  2. Re: Denkt er er hätte eine Sonderposition?

    thinksimple | 14:13

  3. Re: Digitally Failed State die Dritte.

    bombinho | 14:11

  4. Grundlage dürften folgende Beschlüsse sein...

    padre999 | 14:04

  5. Wozu brauchen wir ein Hasskommentargesetz?

    bombinho | 14:03


  1. 14:13

  2. 12:52

  3. 12:39

  4. 09:03

  5. 17:45

  6. 17:32

  7. 17:11

  8. 16:53


  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