Das Central-Modul
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.
var noble = require('noble'); noble.on('discover', discover); 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).
function discover(peripherial) { peripherial.connect(function(error) { if(error) { return; } peripherial.discoverServices([], function(error, services) { if(error) { return; } for(var i = 0, l = services.length; l > i; i++) { var service = services[i]; if(SERVICE == service.uuid) { handleService(service); } } }); }); };
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.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
- ohne Werbung
- mit ausgeschaltetem Javascript
- mit RSS-Volltext-Feed
LED an- und ausschalten | Die Characteristics abfragen |
Und noch heute 4 jahre danach ist das bei Bluez "experimental" das steigert bei mir...
Um eine Verbindung von Android Smartphone zu µC herzustellen (zu testzwecken...
Sehr schön! An den Threadersteller: wer benötigt auch dB als Angabe bei den...
Ja, im Bereich der Kraft-/Leistungsmesser ist ANT+ noch wichtig (momentan; http://www...