Howto

Armadillo-IoT G3で「Bluetooth ワットチェッカー」から計測データを表示

このHowtoでは、Armadillo-IoT G3 を用いた Bluetooth ワットチェッカー REX-BTWATTCH1の計測データを表示する手順ついて紹介します。

Bluetooth ワットチェッカー REX-BTWATTCH1とは、ラトックシステム株式会社より販売されているコンセントの消費電力を測定するデバイスです。
詳細な仕様につきましては、ワットチェッカー付属のマニュアルを確認してください。

ワットチェッカーとBluetooth接続を行う手順

bluetoothctlを用いてワットチェッカーとBluetooth接続

はじめにbluetoothctlを用いてワットチェッカーとBluetooth接続する手順を記載します。
ワットチェッカーがコンセントに接続されていることを確認し、Armadillo-IoT G3のコンソールからコマンドを入力します。
bluetoothctlで対話的なコマンド入力モードにします。

[armadillo ~]# bluetoothctl 
[NEW] Controller 44:C3:06:30:C3:54 armadillo-iotg [default]

Bluetoothコントローラの電源を入れます。(デフォルトではオフになっています。)

[bluetooth]# power on
Changing power on succeeded

ペアリングコード(PIN code)の管理を行うエージェントを立ち上げます。

[bluetooth]# agent on
Agent registered

デバイス検出モードをオンに変更して、 周辺にあるBluetooth対応デバイスを表示させます。
検出したデバイスの中から末尾に「WATT CHECKER」と名のついたBDアドレスを確認します。

[bluetooth]# scan on
Discovery started
[CHG] Controller 44:C3:06:30:C3:54 Discovering: yes
[NEW] Device 00:0C:BF:16:36:EA WATT CHECKER           <- "WATT CHECKER"のBDアドレスを確認する。
[CHG] Device 00:0C:BF:16:36:EA Class: 0x001f00
[CHG] Device 00:0C:BF:16:36:EA UUIDs:
        00001101-0000-1000-8000-00805f9b34fb
[CHG] Device 00:0C:BF:16:36:EA Icon is nil
[CHG] Device 00:1A:7D:DA:71:11 RSSI: -62

再度検出したデバイス一覧を表示させる場合は、以下のコマンドを入力して下さい。

[bluetooth]# devices
Device 00:0C:BF:16:36:EA WATT CHECKER

確認したBDアドレスを用いて、ワットチェッカーとのペアリングを行います。入力後にPIN codeの入力を求められるので"0000"と入力してください。
「Pairing successful」と表示されればペアリング完了です。このコマンド入力後、ワットチェッカーの「Bluetooth LED」(ワットチェッカー正面にある橙色のLED)の点滅が1回点滅から2回点滅に変わります。

[bluetooth]# pair 00:0C:BF:16:36:EA 
Attempting to pair with 00:0C:BF:16:36:EA
Request PIN code
[agent] Enter PIN code: 0000
[CHG] Device 00:0C:BF:16:36:EA Connected: yes
[CHG] Device 00:0C:BF:16:36:EA Modalias: bluetooth:v0039p5050d0120
[CHG] Device 00:0C:BF:16:36:EA UUIDs:
        00001101-0000-1000-8000-00805f9b34fb
        00001200-0000-1000-8000-00805f9b34fb
[CHG] Device 00:0C:BF:16:36:EA Paired: yes
Pairing successful

ペアリング状況や接続状況を確認したい場合は、ワットチェッカーのBDアドレスを用いて以下のコマンドを入力して下さい。

[bluetooth]# info 00:0C:BF:16:36:EA 
Device 00:0C:BF:16:36:EA
        Name: WATT CHECKER
        Alias: WATT CHECKER
        Class: 0x001f00
        Paired: yes
        Trusted: no
        Blocked: no
        Connected: no
        LegacyPairing: no
        UUID: Serial Port               (00001101-0000-1000-8000-00805f9b34fb)
        UUID: PnP Information           (00001200-0000-1000-8000-00805f9b34fb)
        Modalias: bluetooth:v0039p5050d0120
[CHG] Device 00:0C:BF:16:36:EA RSSI: -42

bluetoothctlを終了します。
以下のコマンドを入力してbluetoothctlを終了してください。

[bluetooth]# exit
Agent unregistered
[DEL] Controller 44:C3:06:30:C3:54 armadillo-iotg [default]
[armadillo ~]# 

sdptoolを用いたサービスとチャネルの確認

sdptoolを使用するために、bluetoothdの設定を行います。
以下の方法でファイルを開き、"ExecStart=/usr/lib/bluetooth/bluetoothd"の最後に" --compat"を追加してください。

[armadillo ~]# vi /etc/systemd/system/dbus-org.bluez.service

修正前:ExecStart=/usr/lib/bluetooth/bluetoothd
修正後:ExecStart=/usr/lib/bluetooth/bluetoothd --compat

ファイルを修正した後は修正内容を反映させるために、Armadillo-IoT G3の再起動を行います。

[armadillo ~]# reboot

Armadillo-IoT G3を再起動した後、sdptoolのパーミッションのアクセスレベルを変更してください。

[armadillo ~]# chmod 777 /var/run/sdp

以下のコマンドを入力して"Serial Port"の設定を追加してください。

[armadillo ~]# sdptool add --channel=22 SP
Serial Port service registered

"Serial Port"が表示されれば設定できている状態です。

[armadillo ~]# sdptool browse local | grep -i serial
Service Name: Serial Port
  "Serial Port" (0x1101)
  "Serial Port" (0x1101)

ワットチェッカーのBDアドレスを用いて、シリアルポートのチャネル番号を確認します。

[armadillo ~]# sdptool browse 00:0C:BF:16:36:EA
Browsing 00:0C:BF:16:36:EA ...
Service RecHandle: 0x10001

    〜省略〜

Service Name: SerialPort    <- "Service Name"が"SerialPort"になっている部分を確認します。
Service RecHandle: 0x10007
Service Class ID List:
  "Serial Port" (0x1101)
Protocol Descriptor List:
  "L2CAP" (0x0100)
  "RFCOMM" (0x0003)
    Channel: 6              <- チャネル番号を確認します。
Language Base Attr List:

RFCOMMのセットアップ

Armadillo-IoT G3とワットチェッカーをBluetoothでのシリアル通信(SPP)可能な状態にするために、RFCOMMを用いた接続(Connect)を行います。
RFCOMMを用いてワットチェッカーと接続(connect)を行います。
ワットチェッカーのBDアドレスとチャネル番号をRFCOMMに設定してバックグラウンド起動します。

[armadillo ~]# rfcomm --raw connect 0 00:0C:BF:16:36:EA 6 &
[1] 1087
[armadillo ~]# Connected /dev/rfcomm0 to 00:0C:BF:16:36:EA on channel 6
Press CTRL-C for hangup

以下のコマンドを入力して接続状況が確認できます。チャネル番号の後に"connected"と表示されている事を確認してください。

[armadillo ~]# rfcomm show 0
rfcomm0: 44:C3:06:31:82:AA -> 00:0C:BF:16:36:EA channel 6 connected [reuse-dlc release-on-hup tty-attached]

これでワットチェッカーとの接続は完了です。

Armadillo-IoT G3で計測データを表示する設定手順

ワットチェッカーから計測データを表示するためには、以下のコマンド入力して送信する必要があります。

  • RTC タイマー設定コマンド
  • 計測開始コマンド
  • リアルタイム計測データ転送要求コマンド

このHowtoでは例として、設定用に用意した以下のC言語のサンプルプログラムを使用します。
下記にサンプルプログラムのURLとファイル構成を記載します。
http://download.atmark-techno.com/misc/howto_armadillo_rex-btwattch1/wattchecker_20170911.tar.gz

  • wattchecker_20170911.tar.gz
    • Makefile
    • crc8.c
    • crc8.h
    • wattchecker.c

ATDE上で上記のファイルをダウンロードし、以下の手順でコンパイルして下さい。

[ATDE ~]$ tar xzvf wattchecker_20170911.tar.gz
[ATDE ~]$ cd wattchecker_20170911
[ATDE ~/wattchecker_20170911]$ ls
Makefile  crc8.c  crc8.h  wattchecker.c
[ATDE ~/wattchecker_20170911]$ make

コンパイルした実行ファイル(wattchecker)をArmadillo-IoT G3に実行権限付きでコピーしてください。

このプログラムは「現在時刻の設定して測定を開始し、2秒間隔で測定を行い、結果を標準出力に表示する設定を行う」という内容になっています。
プログラムの実行時、以下のように出力されます。

[armadillo ~]# ./wattchecker /dev/rfcomm0 
RTC timer set command success
start measure command success
2017/ 9/ 6 14:32:41
voltage = 104.65V , current = 272.93mA , power = 18.13W
2017/ 9/ 6 14:32:43
voltage = 105.19V , current = 271.01mA , power = 18.07W
2017/ 9/ 6 14:32:45
voltage = 105.37V , current = 275.27mA , power = 18.17W

表示された値はそれぞれ、計測日時・電圧(voltage)・電流(current)・電力(power)となっています。 計測はCtrl+Cで終了できます。

詳細なコマンド仕様については、ラトックシステム株式会社にお問い合わせ下さい。