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」と、それに含まれる「base64-js」の設定方法を説明します。

まず、npmパッケージをインストールします。
base64-jsはreact-native-ble-managerに含まれているため、後者のインストールだけで十分です。
npm install --save react-native-ble-manager

次に、re-natalでパッケージを呼び出せるように、下記のコマンドを実行します。
re-natal use-component react-native-ble-manager
re-natal use-component base64-js
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-feature android:name="android.hardware.bluetooth_le" android:required="true"/>

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

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


BLEのwrite方法

react-native-ble-managerのwriteは、base64形式で値を渡す必要があります。
clojure scriptの場合、下記のように記述すれば期待通りの値を送信できました。
(let [your-data1 255
      your-data2 0]
  (.write BleManager device-id service-id characteristic-id
          (.fromByteArray Base64 (clj->js [your-data1 your-data2]))))

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

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

参考

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

0 件のコメント :

コメントを投稿