JP7FKFの備忘録

ヒトは,忘れる生き物だから.

Wi-Fi接続でHTTP APIで制御できる信号灯を自作してみた話

何かに気づきたいとき

日常生活をしている上で,何かに気づきたいことってありますよね.

たとえば...

  • 自宅のSW/RT/SVなどの機器で障害が発生した
  • 温度/湿度/CO2濃度が一定以上になった
  • 緊急地震速報などの警報がきた
  • etc...

こういったとき,どのような手段で通知をうけているでしょうか? Legacyな方法だとメールで受信したり,最近だとslackなどにpostする,などで通知させているケースもあるでしょう.

これらの手段ではpush通知等で気づくこともできますが,より明確に気づかせたいケースもあるでしょう.

こういったとき,便利なのがパトライト社の積層信号灯*1などではないかと思います. 工作機械などの自動機械の状態を示すためにもよく利用されていますね.

www.patlite.co.jp

これらに代表される信号灯は,表示状態を制御する制御端子や電源が独特だったりします(産業機械などに合わせられているケースが多い). そこで,汎用性をもたせたHTTP APIでフルカラーLED,ブザーを制御でき,USB 5Vで動作する信号表示器を自作してみたので紹介します.

信号灯の自作

材料がこちらです. MCUにはESP8266, ESP-WROOM-02を利用しており,2.4GHz帯の無線LAN接続経由で操作できるようになっています. f:id:jp7fkf:20210826204938j:plain

f:id:jp7fkf:20210826204950j:plain

基盤は自分でESP-WROOM-02用の汎用基盤として作成したものを利用しており,ユニバーサル部にLEDやブザーを駆動する回路を付加しています. f:id:jp7fkf:20210826204954j:plain

筐体は3Dプリンタで作成しました. f:id:jp7fkf:20210826204931p:plain

f:id:jp7fkf:20210826204925p:plain

これらのパーツをもりもり組み合わせていきます. f:id:jp7fkf:20210826205017j:plain

f:id:jp7fkf:20210826205020j:plain

スペーサーをいれてタッピングで固定. f:id:jp7fkf:20210826204958j:plain

半透明な頭の部分と本体はネジ山を切ってあるので,締め込んで固定します. f:id:jp7fkf:20210826205004j:plain

f:id:jp7fkf:20210826205007j:plain

f:id:jp7fkf:20210826205010j:plain

f:id:jp7fkf:20210826205014j:plain

f:id:jp7fkf:20210826205030j:plain

六角形にちょうど汎用のスペーサが合うようになっているので,両端ナットになっているスペーサを差し込んで両側からねじ止めして挟む形で止めます. f:id:jp7fkf:20210826205025j:plain

f:id:jp7fkf:20210826205033j:plain

f:id:jp7fkf:20210826205036j:plain

点灯させるとこんな感じになります. f:id:jp7fkf:20210826205039j:plain

APIはHTTP APIで,json形式でやり取りできるようになっています.LEDとブザーを制御できます.
LEDはフルカラーLEDのPWM制御で1024段階,intervalを指定した点滅ができるようになっています.
異なる色を積層させる積層信号灯とは違い,色は何らか1種類しか表現できませんが,フルカラー表示ができるようになっているので,アラート種別灯に応じて,ある程度違った表現をすることができます.
ブザーも同様,ON/OFFの他にintervalを指定してON/OFFの繰り返しリピートができるようになっています.

% curl -X PUT -d '{"red": 2000, "green": 0, "blue": 0, "interval": 100, "flash": true}' 'http://fast.local/indicator' -s | jq .
{
  "red": 1023,
  "green": 0,
  "blue": 0,
  "interval": 100,
  "isOn": true,
  "flash": true
}

% curl -X PUT -d '{"isOn": true, "repeat": true, "interval": 100}' 'http://fast.local/beep' -s | jq .
{
  "isOn": true,
  "repeat": true,
  "interval": 100
}

色相を変化させるとこんな感じ. f:id:jp7fkf:20210131165644g:plain:w600

f:id:jp7fkf:20210131165715g:plain:w600

これらを組み合わせると,トラフィック量に応じて色彩を変化させる(青=低トラフィック,赤=高トラフィック)ことで回線トラフィック状況を可視化できたりします.

また,zabbixのmediaとしてこのAPIをたたくように登録しておくと,zabbixで検知したtrigger種に応じて色を変えて通知することなどに応用できます.

赤色のボタンを搭載していますが,これは1クリックでブザーが,ダブルクリックでLEDがOFFにになるようになっています.アラートに気づいたらまずうるさいブザーを停止する,などの操作が即座に現地で行えるようになっています.
こういった機能を組み合わせて,我が家ではもっぱらzabbixのアラート通知用として活躍しています.

今回作成した信号灯はFlexible Alerting Signal Tower(FAST)と名付け*2,Opensourceとして3D modelやfirmwareを公開しています.
(まだ完全ではないので,2021/08現在beta扱いです...)

GitHub - jp7fkf/FAST: Opensource signal tower using ESP8266 WiFi-module.

通知ソリューションの自作に興味がある方など,制作してみてはいかがでしょうか.

まとめ

  • 汎用性のあるHTTP APIとUSB電源で動作する信号灯を制作しました.
  • zabbix などの監視システムと組み合わせて"気づく"ソリューションの実現ができました.

謝辞

*1:※ちなみに,パトライト,シグナル・タワーは株式会社パトライト登録商標です.

*2:ネーミングセンスのなさ...