今回は、ABLICのPH-Aシリーズで漏水センサーからエラーを受信する際、OpenBlocksのUSBに漏水センサー情報を記録する設定を追加します。
今回のデータ
今回は、ABLICのPH-Aシリーズを使ってエラーが起こった時に、「時刻」「デバイスid」「major」「minor」「RSSI」をそれぞれ記録していきます。

追加するものは、以下の3つになります。

時刻の取得
まずは、エラーが起こった時の現在時刻を取得していきます。
functionノードを下図の場所に追加し、中に以下のプログラムを入れます。


// ペイロードから日付オブジェクトを生成
let date = new Date();
//年・月・日を取得する
let year = date.getFullYear();
let month = date.getMonth() + 1;
let day = date.getDate();
month = ("0" + month).slice(-2);
day = ("0" + day).slice(-2);
//時・分・秒を取得する
let hour = date.getHours();
let minute = date.getMinutes();
let second = date.getSeconds();
hour = ("0" + hour).slice(-2);
minute = ("0" + minute).slice(-2);
second = ("0" + second).slice(-2);
// 日付文字列に変換して再度ペイロードをセット
msg.time = year + "/" + month + "/" + day + "_" + hour + ":" + minute + ":" + second;
return msg;
今回は、functionノードで現在時刻を求めましたが現在時刻を出してくれるノードもありますので、そちらの方が便利だと思います。
これで時刻の取得は完成です。
必要データの書き出し
次に、必要なデータをmsg.payloadとして送ります。
既存のセンサー番号取得ノードを開きます。

これを下記のように編集します。
var data00
//データの読み取り
data00 = msg.payload.data;
//データからminor部分を取り出し数値に変換する
var minor_hex = data00.slice(-6, -2);
var minor = parseInt(minor_hex, 16);
//データからmajor部分を取り出し数値に変換する
var major_hex = data00.slice(-10,-6);
var major = parseInt(major_hex, 16);
//デバイスから直接取れるデータはmsgで直接入れる
var deviceId = msg.payload.deviceId;
var time = msg.time;
var rssi = msg.payload.rssi;
msg.payload = {
"time" : time,
"major_Dec" : major,
"minor_Dec" : minor,
"deviceId": deviceId,
"rssi" : rssi,
};
return msg;
deviceIdとRSSIはデータを見るとデータが入った状態で送られてきていました。

そのため、ここではmajor、minorのみを求めpayloadに追加して値を返しています。
CSV出力の方法
まずはOpenBlocksの設定でシステム→FSTAB編集を開きます。
編集確認の確認をクリックし中身を開きます。

下図のような画面が出てきましたら、下記を1番下に追加してください。
起動時にUSB接続する設定
/dev/sda1 /mnt vfat defaults,auto,rw 0 0

最後に下にある保存を押してください。
ここまで来たら次はNodeREDになります。
NodeREDに「csv」と「write file」を下図の順番で追加してください。





csvノードを開き、オブジェクトからCSVへ変換の出力をヘッダを一度だけ送信するにします。


次にwrite fileノードを開き、パスを「/mnt/usb/好きな名前.csv」名前はローマ字であれば自由に変更してください。


こちらで設定は完了です。最後にデプロイをし、OpenBlocksを再起動してください。
USBをネットワーク上で見る設定
OpenBlocksは、USBを取るのにコマンドが必要になります。
そのため、手間のかからないネットワーク上でUSBの中身を見る設定をしていきます。
こちらはとても簡単です。まずOpenBlocksの設定でメンテナンス→機能拡張→インストール機能からsambaをインストールしてください。(インストール済みのため写真内には出てきませんでした)

インストール後、拡張→sambaを開き使用するを選択、samba用ディレクトリパスを「/mnt/usb」にします。

最後に保存して完了です。
実際に見ることもできました。

OpenBlocksが電源を落とせない場合
今回はこちらが少し大変です。まずは、OpenBlocksにSSH接続をするための設定をします。
OpenBlocksのシステム→フィルター内のSSHを有効にします。

次に、SSH関連のrootログイン許可設定をpassword認証不可から許可に変更してください。

こちらでSSH接続ができるようになったため、コマンドプロンプトンを開きます。(Windows+Rを押してcmdと入力してください)
開いたら、「ssh root@自身のOpenBlocksのIPアドレス」を入力してパスワードは初期パスワード「0BSI0T」でログインしてください。

このようになりましたらログインができてます。
そうしましたら、USBを接続し以下のコマンドを入力していきます。
USBが接続されているかを確認します。
sudo fdisk -l

このように表示されれば大丈夫です。あまりにもギガ数が多かったり、TypeがFAT32出ない場合は正常ではありませんのでUSBフォーマットをかけてください。
次にUSB内に保存先を作ります。
sudo mkdir -p /mnt/usb
次にUSBのマウントを有効にします。
sudo mount /dev/sda1 /mnt/usb
最後に有効になっているかを確認します。
df -h
下記のような出力があれば大丈夫です。

この時一番右が、/mnt/usbになっているかを確認してください。
これでUSBの接続は完了になります。
この後の設定はNode-REDからになりますので、前の文をご確認ください。