Das Peripheral-Modul
Die Funktion des Peripheral wird ein Raspberry Pi übernehmen, an ihn schließen wir über dessen GPIO-Pins eine LED und einen Taster an. Dann entwickeln wir einen BluetoothLE-Service mit zwei Characterics: einen um die LED an- und auszuschalten und einen zweiten zum Auslesen des Taster-Status.
Dazu müssen wir mit Hilfe von Bleno den Service sowie die Characteristics implementieren und die notwendige Logik, um auf Schreib- beziehungsweise Leseanfragen zu reagieren. Das vollständige Javascript-Skript für Node.js kann von unserem Webserver unter https://www.golem.de/projekte/btle/bt_peripheral.js heruntergeladen werden.
Wir beginnen damit, Bleno in unserem Skript einzubinden und zwei Event-Handler zu registrieren.
var bleno = require('bleno'); bleno.on('stateChange', function(state) { if (state === 'poweredOn') { bleno.startAdvertising('led', []); } else { bleno.stopAdvertising(); } }); bleno.on('advertisingStart', function(error) { if (!error) { bleno.setServices([ new LedService() ]); } });
Der Event 'stateChange' wird aufgerufen, wenn der Bluetooth-Dongle von Bleno angesprochen werden kann - oder auch nicht mehr. Wenn der Dongle bereit ist, versetzt startAdvertising() ihn in einem Modus, in dem er kontinuierlich auf sich aufmerksam macht. Der erste Parameter dieser Methode ist der Name, unter dem das Peripheral für andere Bluetooth-Geräte sichtbar ist.
Der zweite Event wird ausgelöst, wenn das Advertising erfolgreich gestartet werden konnte. Jetzt kann unser eigener Service initialisiert werden. Die Klasse LedService ist abgeleitet von bleno.PrimaryService. Im Konstruktor der Klasse setzen wir die UUID des Service und initialisieren die beiden Characteristics des Services.
function LedService() { LedService.super_.call(this, { uuid: '5dfeb700bb8711e393430002a5d5c51b', characteristics: [ new LedReadCharacteristic() , new LedWriteCharacteristic() ] }); } util.inherits(LedService, bleno.PrimaryService);
Die UUID können wir selbst festlegen, sie sollte laut Bluetooth-Spezifikation 128 Bit lang sein. Eine einfache Generierungsmöglichkeit gibt es auf der Webseite der ITU.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
- ohne Werbung
- mit ausgeschaltetem Javascript
- mit RSS-Volltext-Feed
Noble und Bleno | Tasterwert lesen und senden |
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...