node.js BLE(Bluetooth Low Energy)中央モジュール。
周辺機器を実装したいですか?チェックアウトブレノ
注: MacOS / Mac OS X、Linux、FreeBSD、Windowsの唯一のサポートOSです。他のプラットフォームは後で開発される場合があります。
libbluetooth-dev
sudo apt-get install bluetooth bluez libbluetooth-dev libudev-dev
node
がパス上にあることを確認してください。そうでない場合は、いくつかのオプションがあります。
nodejs
からnode
へ: sudo ln -s /usr/bin/nodejs /usr/bin/node
sudo yum install bluez bluez-libs bluez-libs-devel
Bluetooth Le(Smart)開発のIntel Edisonの構成を参照してください
gnu makeを持っていることを確認してください:
sudo pkg install gmake
no-ubt.confを/usr/local/etc/devd/no-ubt.conf
に入れてdevd( sudo service devd restart
)に挿入して、デフォルトのbluetoothスタックの自動負荷を無効にします。
既にロードされている場合は、 ng_ubt
カーネルモジュールをアンロードします。
sudo kldunload ng_ubt
Bluetoothアダプターに対応する/dev/usb/*
デバイスに許可を読み書きしていることを確認してください。
WindowsのNode-GYP要件
高架式PowerShellまたはCMD.Exe(管理者として実行)からMicrosoftのWindows-Build-Toolsを使用して、必要なツールと構成をインストールします。
npm install --global --production windows-build-tools
node-bluetooth-hci-socketの前提条件
@don'sセットアップガイドを参照してください。
この制限は、Bluetoothアダプターハードウェアとファームウェアによって課されます。
プラットフォーム | |
---|---|
OS X 10.11(エルピタン) | 6 |
Linux/Windows-アダプター依存 | 5(CSRベースのアダプター) |
一部のBLEアダプターは、スキャン中に周辺機器に接続できません(以下の例)。接続しようとすると、次のメッセージが表示されます。
Sena UD-100(ケンブリッジシリコンラジオ、LTD Bluetoothドングル(HCIモード)): Error: Command disallowed
Intel Dual Band Wireless-AC 7260(Intel Corporation Wireless 7260(Rev 73)): Error: Connection Rejected due to Limited Resources (0xd)
この問題を解決するために、接続しようとする前にスキャンを停止する必要があります。
npm install noble
var noble = require ( 'noble' ) ;
noble . startScanning ( ) ; // any service UUID, no duplicates
noble . startScanning ( [ ] , true ) ; // any service UUID, allow duplicates
var serviceUUIDs = [ "<service UUID 1>" , ... ] ; // default: [] => all
var allowDuplicates = < false | true > ; // default: false
noble.startScanning(serviceUUIDs, allowDuplicates[, callback(error)]); // particular UUID's
注: noble.state
、スキャンを開始する前にpoweredOn
なければなりません。 noble.on('stateChange', callback(state));
州の変更イベントに登録することができます。
noble . stopScanning ( ) ;
peripheral . connect ( [ callback ( error ) ] ) ;
peripheral . disconnect ( [ callback ( error ) ] ) ;
peripheral . updateRssi ( [ callback ( error , rssi ) ] ) ;
peripheral . discoverServices ( ) ; // any service UUID
var serviceUUIDs = [ "<service UUID 1>" , ... ] ;
peripheral . discoverServices ( serviceUUIDs [ , callback ( error , services ) ] ) ; // particular UUID's
peripheral . discoverAllServicesAndCharacteristics ( [ callback ( error , services , characteristics ) ] ) ;
var serviceUUIDs = [ "<service UUID 1>" , ... ] ;
var characteristicUUIDs = [ "<characteristic UUID 1>" , ... ] ;
peripheral . discoverSomeServicesAndCharacteristics ( serviceUUIDs , characteristicUUIDs , [ callback ( error , services , characteristics ) ) ;
service . discoverIncludedServices ( ) ; // any service UUID
var serviceUUIDs = [ "<service UUID 1>" , ... ] ;
service . discoverIncludedServices ( serviceUUIDs [ , callback ( error , includedServiceUuids ) ] ) ; // particular UUID's
service . discoverCharacteristics ( ) // any characteristic UUID
var characteristicUUIDs = [ "<characteristic UUID 1>" , ... ] ;
service . discoverCharacteristics ( characteristicUUIDs [ , callback ( error , characteristics ) ] ) ; // particular UUID's
characteristic . read ( [ callback ( error , data ) ] ) ;
characteristic . write ( data , withoutResponse [ , callback ( error ) ] ) ; // data is a buffer, withoutResponse is true|false
withoutResponse
:false
:「書き込み」特性プロパティで使用される書き込みリクエストを送信するtrue
:「Responsed Without Response」で使用されるWriteコマンドを送信します特性プロパティ characteristic . broadcast ( broadcast [ , callback ( error ) ] ) ; // broadcast is true|false
characteristic . subscribe ( [ callback ( error ) ] ) ;
'data'
イベントを購読する characteristic . unsubscribe ( [ callback ( error ) ] ) ;
characteristic . discoverDescriptors ( [ callback ( error , descriptors ) ] ) ;
descriptor . readValue ( [ callback ( error , data ) ] ) ;
descriptor . writeValue ( data [ , callback ( error ) ] ) ; // data is a buffer
peripheral . readHandle ( handle , callback ( error , data ) ) ;
peripheral . writeHandle ( handle , data , withoutResponse , callback ( error ) ) ;
詳細については、node.js eventemitterドキュメントを参照してください。 APIで。
state = < "unknown" | "resetting" | "unsupported" | "unauthorized" | "poweredOff" | "poweredOn" >
noble . on ( 'stateChange' , callback ( state ) ) ;
noble . on ( 'scanStart' , callback ) ;
このイベントは、スキャンが開始されるとき、または別のアプリケーションがスキャンまたはスキャン設定を変更できる場合に放出されます。
noble . on ( 'scanStop' , callback ) ;
スキャンが停止したとき、または別のアプリケーションがスキャンを停止した場合、イベントは放出されます。
peripheral = {
id : "<id>" ,
address : "<BT address" > , // Bluetooth Address of device, or 'unknown' if not known
addressType : "<BT address type>" , // Bluetooth Address type (public, random), or 'unknown' if not known
connectable : < connectable > , // true or false, or undefined if not known
advertisement: {
localName : " < name > ",
txPowerLevel: <int>,
serviceUuids: [" < service UUID > ", ...],
serviceSolicitationUuid: [" < service solicitation UUID > ", ...],
manufacturerData: <Buffer>,
serviceData: [
{
uuid: " < service UUID > "
data: <Buffer>
},
...
]
},
rssi: <rssi>
};
noble.on('discover', callback(peripheral));
注: OS Xでは、デバイスが以前に接続されていない場合、アドレスは「不明」に設定されます。
noble . on ( 'warning' , callback ( message ) ) ;
peripheral . once ( 'connect' , callback ) ;
peripheral . once ( 'disconnect' , callback ) ;
peripheral . once ( 'rssiUpdate' , callback ( rssi ) ) ;
peripheral . once ( 'servicesDiscover' , callback ( services ) ) ;
service . once ( 'includedServicesDiscover' , callback ( includedServiceUuids ) ) ;
characteristic = {
uuid : "<uuid>" ,
// properties: 'broadcast', 'read', 'writeWithoutResponse', 'write', 'notify', 'indicate', 'authenticatedSignedWrites', 'extendedProperties'
properties : [ ... ]
} ;
service . once ( 'characteristicsDiscover' , callback ( characteristics ) ) ;
特徴的な読み取りが完了したときに放出されます。 characteristic.read(...)
または特性値の結果はnotify(true[, callback(error)])
または表示を介して周辺機器によって更新されました。
characteristic . on ( 'data' , callback ( data , isNotification ) ) ;
characteristic . once ( 'read' , callback ( data , isNotification ) ) ; // legacy
注:プラットフォームサポートに応じて、 isNotification
イベントパラメーター値はundefined
です。パラメーターはバージョン1.8.1の後に非推奨され、MacOS High Sierra以降の場合はサポートされていません。
特徴的な書き込みが完了したときに放出されます。 characteristic.write(...)
の結果。
characteristic . once ( 'write' , withoutResponse , callback ( ) ) ;
特徴的な放送状態が変更されたときに放出さcharacteristic.broadcast(...)
ます。
characteristic . once ( 'broadcast' , callback ( state ) ) ;
特徴的な通知状態が変更されたときに放出されます。 characteristic.notify(...)
。
characteristic . once ( 'notify' , callback ( state ) ) ;
descriptor = {
uuid : '<uuid>'
} ;
characteristic . once ( 'descriptorsDiscover' , callback ( descriptors ) ) ;
descriptor . once ( 'valueRead' , data ) ;
descriptor . once ( 'valueWrite' ) ;
次のコマンドを実行します。
sudo setcap cap_net_raw+eip $( eval readlink -f ` which node ` )
これにより、 node
バイナリcap_net_raw
特権が付与されるため、BLE広告を開始/停止できます。
注:上記のコマンドでは、 setcap
をインストールする必要があります。以下を使用してインストールできます。
sudo apt-get install libcap2-bin
su -c 'yum install libcap2-bin'
hci0
は、デフォルトでNOBLE_HCI_DEVICE_ID
環境変数をインターフェイス番号に設定するために使用されます。
たとえば、 hci1
を指定します。
sudo NOBLE_HCI_DEVICE_ID=1 node < your file > .js
デフォルトでは、Nobleは、各Bluetoothアドレスの広告データとスキャン応答データの両方を待ちます。デバイスがスキャン応答を使用しない場合、次の環境変数を使用してバイパスできます。
sudo NOBLE_REPORT_ALL_HCI_EVENTS=1 node < your file > .js
デフォルトでは、NobleはGATTリクエストメッセージが受信されるたびにエラーで応答します。あなたの意図がNobleとタンデムでBlenoを使用することである場合、次の環境変数を使用してこの機能をバイパスできます。注:これには、Bluetooth 4.1アダプターが必要です。
sudo NOBLE_MULTI_ROLE=1 node < your file > .js
デフォルトでは、ノーブルは、プラットフォームに応じてBluetoothデバイスと通信するためにバインディングを選択します。 Bindings Nobleが使用すべきものを指定したい場合:
var noble = require ( 'noble/with-bindings' ) ( require ( './my-custom-bindings' ) ) ;
毎月の寄付で私たちをサポートし、私たちが活動を続けるのを助けてください。 [支援者になる]
スポンサーになって、サイトへのリンクを使用して、GitHubのReadMeでロゴを取得します。 [スポンサーになる]
Copyright(c)2015 Sandeep Mistry [email protected]
このソフトウェアおよび関連するドキュメントファイル(「ソフトウェア」)のコピーを取得している人に、これにより許可が無料で許可され、制限なしにソフトウェアを扱うことができます。 、ソフトウェアのコピーを公開、配布、サブライセンス、および/または販売し、次の条件を条件として、ソフトウェアが提供される人を許可します。
上記の著作権通知とこの許可通知は、ソフトウェアのすべてのコピーまたはかなりの部分に含まれるものとします。
このソフトウェアは、商品性、特定の目的への適合性、および非侵害の保証を含むがこれらに限定されない、明示的または黙示的なものを保証することなく、「現状のまま」提供されます。いかなる場合でも、著者または著作権所有者は、契約、不法行為、またはその他の訴訟、ソフトウェアまたは使用またはその他の取引に関連する、またはその他の契約、またはその他の請求、またはその他の責任について責任を負いません。ソフトウェア。