Node-REDでラズパイのシャットダウンとリブートを快適にしよう!


概要

 ラズパイを持ち歩いていると、撤収や動きがおかしいときにシャットダウンやリブートをしますよね。私の場合、ラズパイにLCDを組み付けてサイネージ化したデモを持ち歩いています。
 そんな時、困るのがシャットダウン。シャットダウンするにはこんな面倒があると思います。

  • ssh接続いてコマンド打つのは面倒
  • 物理的なボタンは断線やスペースの問題でメンテナンスが面倒

 これらの面倒をNode-REDで解決してみました!

実現した事

 「Node-REDで作成したWebページにコマンド実行ボタンを用意し、ボタンを押すと対応したコマンドが実行される

 WebページにはNode-REDのDashBoardを使用し、次のようなフローを作成しました。

 ダッシュボードのWebページを開くと次のようにボタンが2つ並んでおり、ボタンを押すと対応したコマンドが実行されます。

実際の様子

フローのソースコード

[{"id":"8c097990.a47498","type":"tab","label":"フロー 1","disabled":false,"info":""},{"id":"ce69ad84.b4785","type":"ui_button","z":"8c097990.a47498","name":"","group":"ef8cfd1d.26343","order":0,"width":"2","height":"1","passthru":false,"label":"シャットダウン","tooltip":"","color":"","bgcolor":"","icon":"","payload":"","payloadType":"str","topic":"","x":160,"y":80,"wires":[["e8e257d0.a9e248"]]},{"id":"e8e257d0.a9e248","type":"exec","z":"8c097990.a47498","command":"sudo shutdown -h now","addpay":true,"append":"","useSpawn":"false","timer":"","oldrc":false,"name":"","x":420,"y":80,"wires":[[],[],[]]},{"id":"5e5ec1e1.c0b4c","type":"ui_button","z":"8c097990.a47498","name":"","group":"ef8cfd1d.26343","order":0,"width":"2","height":"1","passthru":false,"label":"リブート","tooltip":"","color":"","bgcolor":"","icon":"","payload":"","payloadType":"str","topic":"","x":140,"y":140,"wires":[["3b29b4c0.041d8c"]]},{"id":"3b29b4c0.041d8c","type":"exec","z":"8c097990.a47498","command":"sudo reboot","addpay":true,"append":"","useSpawn":"false","timer":"","oldrc":false,"name":"","x":390,"y":140,"wires":[[],[],[]]},{"id":"ef8cfd1d.26343","type":"ui_group","z":"","name":"コマンド","tab":"b5051da0.fade4","disp":true,"width":"6","collapse":false},{"id":"b5051da0.fade4","type":"ui_tab","z":"","name":"Command","icon":"dashboard","disabled":false,"hidden":false}]

おわりに

 Webページを開ければ誰でもコマンド実行できていまうので、セキュリティ面に問題があります。趣味レベルのものでデモ展示など頻繁に電源ON/OFFする場面ではかなり便利だと思います。