ESP8266搭載のESP-12Eと様々な環境センサをI2C接続して運用するお手軽環境ステーションをESP Easyで簡単に構築したことがありました。もう何台も製作したこの構成は、電源としてUSBポートがあれば良いだけなので、Raspberry PiやルータのUSBポートにぶら下げての運用も可能です。そこで今回は、 GL-iNet GL-AR750S OpenWRT ルータにぶら下がったESP-12Eを再起動させる為の USB 電源制御 についてまとめます。
以前、GL-iNet社のGL-AR300Mを使っていた時に調べたところ、同社フォーラムにてその制御方法を知りました。
ただ、このGPIOパスは機種に依ったり、また、ファームウェアが大きく変わるとこっそり変更されてたりすることが、過去の経験から得ています。GL-AR300Mでは、
1 2 3 |
/sys/devices/platform/leds-gpio/leds/gl-ar300m:usbpow/brightness /sys/devices/platform/leds-gpio/leds/gl-ar300m:usb/brightness /sys/devices/platform/leds-gpio/leds/gl-ar300m:green:usb/brightness |
と上記の上から下へとこれまで変わってきました。ここへ「0」を入れてOFF、「1」でON。
今回のGL-AR750Sではこのパスが、
1 |
/sys/devices/platform/leds-gpio/leds/gl-ar750s:white:usbpower/brightness |
となったばかりではなく、ON/OFF関係が逆になっていて導入時に戸惑いました。ともあれ、バッチでUSBポート電力を入切するには、
1 2 3 4 5 6 7 |
# POWER OFF echo 1 > /sys/devices/platform/leds-gpio/leds/gl-ar750s:white:usbpower/brightness sleep 5 # POWER ON echo 0 > /sys/devices/platform/leds-gpio/leds/gl-ar750s:white:usbpower/brightness |
このような制御になります。
実際には、固定IPの割り当てられているESP Easyを定期的にPingで死活監視、応答の無い場合は、上記のようなUSBポート制御を実行させたいと考えています。尚、ESP Easyは計測データをThingSpeakに上げているので、そもそも外向きコネクションが開通していないような異常時は死んでいても構わない、と言う割り切りを織り込んでいます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
#!/bin/sh ## CHECK INTERNET CONN. if ping -c1 -w1 8.8.8.8 > /dev/null 2>&1; then echo "[`date +"%H:%M:%S"`] ESPeasy_INET" > /tmp/ESPeasy_status else echo "[`date +"%H:%M:%S"`] ESPeasy_NO_INET" > /tmp/ESPeasy_status exit 1 fi ## CHECK ESPeasy CONN. if ping -c1 -w1 192.168.51.211 > /dev/null 2>&1; then #NORMAL echo "[`date +"%H:%M:%S"`] ESPeasy_ONLINE" >> /tmp/ESPeasy_status else #ABNORMAL: REBOOT REQUIRED echo "[`date +"%H:%M:%S"`] ESPeasy_OFFLINE" >> /tmp/ESPeasy_status echo 1 > /sys/devices/platform/leds-gpio/leds/gl-ar750s:white:usbpower/brightness echo "[`date +"%H:%M:%S"`] ESPeasy_POWERED_OFF" >> /tmp/ESPeasy_status sleep 5 echo 0 > /sys/devices/platform/leds-gpio/leds/gl-ar750s:white:usbpower/brightness echo "[`date +"%H:%M:%S"`] ESPeasy_POWERED_ON" >> /tmp/ESPeasy_status fi exit 0 |
これをGL-AR750Sへ配置した後、LUCI上のTask Schedulerでcron登録して仕込みは完了です。
実際には自宅にルータと別にもう1台、APとして運用しているGL-AR750Sに繋ぎ、自宅環境監視を昼夜担っています。
実はRaspberry Piにぶら下げた場合にも、同じように制御出来ないか調べたことがあるのですが、残念ながら出来ませんでした。次回はRaspberry Piに於ける対応について書いてみるつもりです。