RedMobileからタブレット内蔵の光センサーを取得してTello EDUを操作するメモ

この記事は、IoTLT GWアドベントカレンダー 5/6 最終日の記事です。

RedMobileからタブレット内蔵の光センサーを取得してTello EDUを操作するメモです。

RedMobile とは

RedMobileとは @okhiroyuki さんが開発されている、Android アプリとして動くNode-REDです。

センサーやデバイスの世界観を伝えるときにとても良く、大学の講義でも使いました。

MQTT連携が、Android タブレットと出来ると、なかなかに感動モノです。

今回やりたいこと

image

今回やりたいことは、RedMobileからタブレット内蔵の光センサーを取得してカバーの開閉を現実世界から取得してTello EDUを操作することです。

RedMobileからTello EDUを動かす

RedMobileからTello EDUを動かしましょう。まず、Androidタブレット上でRedMobileを起動します。

image

トップページでローカルのIPを確認します。192.168.1.XX:1880/red となっているところです。

image

ほかのPCからアクセスして、Tello EDUをNode-REDから station mode にして操作するメモ を試してみると、Tello EDUが操作できました。

RedMobileからTello EDUをタブレット内蔵の光センサーで操作する

離着陸が確認できたので、今度は、RedMobileからタブレット内蔵の光センサーを判定させて、カバーを閉じると光センサーがOFFと判定し、開くと光センサーがONと判定する仕組みを作ります。

image

フローはこちらです。

[{"id":"ba988ea4.ad77","type":"light","z":"2cf135fe.574a2a","name":"","x":270,"y":640,"wires":[["5ac8cb05.70b8d4"]]},{"id":"8bc69155.0aafa","type":"inject","z":"2cf135fe.574a2a","name":"per 1 sec","topic":"","payload":"","payloadType":"date","repeat":"1","crontab":"","once":false,"onceDelay":0.1,"x":130,"y":640,"wires":[["ba988ea4.ad77"]]},{"id":"536bf6c5.187778","type":"comment","z":"2cf135fe.574a2a","name":"light sensor control","info":"","x":130,"y":580,"wires":[]},{"id":"5ac8cb05.70b8d4","type":"rbe","z":"2cf135fe.574a2a","name":"","func":"deadbandEq","gap":"50","start":"","inout":"in","property":"payload.intensity","x":400,"y":640,"wires":[["7c75d0ec.315e"]]},{"id":"7c75d0ec.315e","type":"switch","z":"2cf135fe.574a2a","name":"intensity","property":"payload.intensity","propertyType":"msg","rules":[{"t":"lt","v":"5","vt":"num"},{"t":"gt","v":"100","vt":"num"}],"checkall":"true","repair":false,"outputs":2,"x":540,"y":640,"wires":[["d3b53325.13b0f"],["a99b908f.91adc"]]},{"id":"3db37036.df3dc","type":"udp out","z":"2cf135fe.574a2a","name":"","addr":"192.168.XX.YY","iface":"","port":"8889","ipv":"udp4","outport":"","base64":false,"multicast":"false","x":1090,"y":740,"wires":[]},{"id":"d3b53325.13b0f","type":"change","z":"2cf135fe.574a2a","name":"land","rules":[{"t":"set","p":"payload","pt":"msg","to":"land","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":670,"y":620,"wires":[["e63d329e.f46ac"]]},{"id":"a99b908f.91adc","type":"change","z":"2cf135fe.574a2a","name":"takeoff","rules":[{"t":"set","p":"payload","pt":"msg","to":"takeoff","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":670,"y":660,"wires":[["e63d329e.f46ac"]]},{"id":"b901e62.c65cd18","type":"ui_button","z":"2cf135fe.574a2a","name":"","group":"de1c8cd.f50bd7","order":0,"width":0,"height":0,"passthru":false,"label":"command","tooltip":"","color":"","bgcolor":"","icon":"","payload":"command","payloadType":"str","topic":"","x":660,"y":740,"wires":[["e63d329e.f46ac"]]},{"id":"a2c02b84.ab3338","type":"debug","z":"2cf135fe.574a2a","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":1050,"y":680,"wires":[]},{"id":"e63d329e.f46ac","type":"function","z":"2cf135fe.574a2a","name":"<HUB>","func":"\nreturn msg;","outputs":1,"noerr":0,"x":860,"y":680,"wires":[["a2c02b84.ab3338","3db37036.df3dc"]]},{"id":"de1c8cd.f50bd7","type":"ui_group","z":"","name":"デフォルト","tab":"c333b8c3.a77b28","disp":true,"width":"6","collapse":false},{"id":"c333b8c3.a77b28","type":"ui_tab","z":"","name":"ホーム","icon":"dashboard","disabled":false,"hidden":false}]

インポートできるフローも用意しました。

image

RedMobileには光センサーを取得できるノードがインストールされています。こちらをinhjectノードで1秒ごとに動かして動作させると intensity という値で光センサーの値が帰ってきます。

image

Report by Exception(例外データの報告)ノードというものがあり rbe ノードというのですが、ペイロードの値が変化した場合だけデータを送信するスグレモノです。

image

今回は変化量が大きいときに値が飛ぶようにします。これはカバーを開閉させて、開いたときはだいたい100以上上昇、閉じたときは0になるというのが確認できたのでそうしています。現場に合わせて実装する必要がありそうです。

image

こちらの intensity と書かれている switch ノードは手前の rbe ノードを受けて開閉合わせて値を見ています。

image

開いたときは100以上、閉じたときは0になるが一応5以下という判定です。

image

HUBはわかりやすくフローを集めるための空ノードです。UDPはTello EDUのIPに振り向けましょう。

動作させてみる

こちらで動かしてみると、以下のように動作できました!

今回は光センサーで取得しましたが、RedMobileでは様々なセンサーが取得できます。

image

加速度センサーや、バイブレーション、バッテリー残量などなど色々ありますね!

RedMobileを使うとNode-REDの接続性を活かしつつも、センサーの集合体としてのスマホの様々な現実を捉える能力を軸にして、いろいろな仕組みが作れるので、面白いですね。

Tello EDUは現実世界のキッカケと連携すると、いろいろな可能性が見えてくると思っているので、このような連携ができるのに RedMobile うってつけです。

引き続き、検証を進めていきます!

それでは、よき Node-RED & RedMobile & Tello EDU Lifeを!