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. CERATIZIT Deutschland GmbH, Empfingen
  2. Landeshauptstadt München, München
  3. Hermes Germany GmbH, Hamburg
  4. über Ratbacher GmbH, München


Anzeige
Hardware-Angebote
  1. (Core i7-6700HQ + GeForce GTX 1070)
  2. und 15€ Cashback erhalten

Folgen Sie uns
       


  1. Raspberry Pi

    Schutz gegen Übernahme durch Hacker und Botnetze verbessert

  2. UHD-Blu-ray

    PowerDVD spielt 4K-Discs

  3. Raumfahrt

    Europa bleibt im All

  4. Nationale Sicherheit

    Obama verhindert Aixtron-Verkauf nach China

  5. Die Woche im Video

    Telekom fällt aus und HPE erfindet den Computer neu - fast

  6. Hololens

    Microsoft holoportiert Leute aus dem Auto ins Büro

  7. Star Wars

    Todesstern kostet 6,25 Quadrilliarden britische Pfund am Tag

  8. NSA-Ausschuss

    Wikileaks könnte Bundestagsquelle enttarnt haben

  9. Transparenzverordnung

    Angaben-Wirrwarr statt einer ehrlichen Datenratenangabe

  10. Urteil zu Sofortüberweisung

    OLG empfiehlt Verbrauchern Einkauf im Ladengeschäft



Haben wir etwas übersehen?

E-Mail an news@golem.de


Anzeige
Final Fantasy 15 im Test: Weltenrettung mit der Boyband des Wahnsinns
Final Fantasy 15 im Test
Weltenrettung mit der Boyband des Wahnsinns
  1. Square Enix Koop-Modus von Final Fantasy 15 folgt kostenpflichtig

Udacity: Selbstfahrendes Auto selbst programmieren
Udacity
Selbstfahrendes Auto selbst programmieren
  1. Strategiepapier EU fordert europaweite Standards für vernetzte Autos
  2. Autonomes Fahren Comma One veröffentlicht Baupläne für Geohot-Nachrüstsatz
  3. Autonomes Fahren Intel baut Prozessoren für Delphi und Mobileye

Quake (1996): Urknall für Mouselook, Mods und moderne 3D-Grafik
Quake (1996)
Urknall für Mouselook, Mods und moderne 3D-Grafik
  1. Künstliche Intelligenz Doom geht in Deckung

  1. Re: hä? gericht wieder einmal weltfremd?

    lear | 16:31

  2. Re: Notwehr

    Muhaha | 16:28

  3. Re: Transparenz zum Kündigungstermin ist Schwachsinn!

    Cok3.Zer0 | 16:26

  4. Re: Die Einbrinung einer Mindestgarntie

    Cok3.Zer0 | 16:24

  5. SSH-Config

    Wallbreaker | 16:19


  1. 15:33

  2. 14:43

  3. 13:37

  4. 11:12

  5. 09:02

  6. 18:27

  7. 18:01

  8. 17:46


  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