2017年5月19日金曜日

re-natalでBLEのwriteを行う方法


npmパッケージの入れ方と、react-native-ble-managerの扱いに戸惑ったのでメモを残します。

使ったもの

re-natal

re-natalとは、react-nativeclojure-scriptでラップした、ネイティブアプリをclojure scriptで開発できるライブラリです。

leiningen、npm、android studioかxcodeをインストールしたPCがあれば、利用できます。
(同時にエディタもclojure向けの設定にしておくことを強くお勧めします。emacsならclojure-modeなど。)

react-nativeを使えばjavascriptでネイティブアプリを開発できますが、clojureで出来ることを増やしたいので、re-natalを利用しています。

react-native-ble-manager

react-native-ble-managerとは、react-nativeでBLE機能を利用するためのライブラリです。

npmパッケージの設定

re-natalでnpmパッケージを使うには、re-natalとreact-nativeの両方の設定をする必要があります。
今回は「react-native-ble-manager」の設定方法を説明します。

まず、npmパッケージをインストールします。
npm install --save react-native-ble-manager

次に、re-natalでパッケージを呼び出せるように、下記のコマンドを実行します。
re-natal use-component react-native-ble-manager
re-natal use-figwheel

そして、react-native-ble-managerからネイティブアプリの機能を呼び出し可能にするため、下記のコマンドを実行します。
react-native link

Androidでbluetooth機能を使う場合、manifestファイルにbluetoothに関する記述を下記のように追加してください。
[project-dir]/android/app/src/main/AndroidManifest.xml
<manifest
    ..
    xmlns:tools="http://schemas.android.com/tools">

    <uses-permission android:name="android.permission.BLUETOOTH"/>
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>

    <uses-sdk
        ..
        tools:overrideLibrary="it.innove" />
</manifest>

以上の設定によって、プロジェクトで下記のようにreact-native-ble-managerを呼び出せます。
[project-dir]/src/[project-name]/android/core.cljs
(def BleManager (js/require "react-native-ble-manager"))


BLEのwrite方法

react-native-ble-managerのwriteはbyte(0-255)のarrayを送信できます。
下記のように記述すれば期待通りの値を送信できました。
(let [your-data1 255
      your-data2 0]
  (.write BleManager device-id service-id characteristic-id
          (clj->js [your-data1 your-data2])))

なお、BLEデバイスのスキャンや接続方法などは、react-native-ble-managerのreadmeや、自分のアプリのコードが参考になると思います。

共有する情報は以上です。

参考

react-native-ble-manager
re-natal-esp32control-app

変更履歴
2016/06/12
- android.hardware.bluetooth_leの設定が無くてもbleを操作できたので、記述を削除しました。
- react-native-ble-managerはバージョン5からwriteにbase64が要らなくなったので、base64の記述を削除しました。

0 件のコメント :