これまで、Raspberry Pi を使い、Python3のプログラムから、下記それぞれの制御は出来るようになってきた。
- GPIO制御
- I2Cを使ったBMP280からの温度・湿度・気圧取得
- スマホのBlynkアプリからのGPIO制御
- スマホのBlynkアプリへの温度・湿度・気圧情報送り
- LIRCを使ったIRリモコン信号の入力と出力
- ephemを使った日の出・日の入り時刻の計算
- threadingを使った並列処理
仕様
これらを活用して、以下の仕様の処理をPython3を使ってRaspberry Pi Zero WH上で動作させることを試みる。
- RaspberryPiのOS起動後、自動でプログラムが起動する事
- スマホのBlynkアプリ上の各ボタンステータスと起動時に同期すること
- 自宅の経度・緯度に基づき、日没30分前にGPIO-24をHighにして、日の出の30分後に、そのピンをLowにすること(経度・緯度はプログラムに書き込む)
- 日の出、日の入り情報をBlynkアプリに送り、表示させること
- BMP280の示す温度が設定した温度以下になったら、エアコンの暖房ONのコードを出力すること(リモコンコードや、初期の温度設定は、プログラムに書き込む)
- 設定温度は、Blynkアプリから変更出来ること
- 温度・湿度・気圧データを10秒に一回、Blynkに送ること
- スマホのBlynkアプリに、エアコンの暖房ON・OFFを制御できるボタンを設けて、その指示で対応するエアコンのリモコンコードを出力すること(リモコンコードはプログラムに書き込む)
それなりに複雑になりそうだが、一つ一つ作っていくことにする。Pythonのblynk.run()が、これまで試したようにBlockingなので、別Threadとし、10秒毎の処理は、Timerを使った別Threadで実行する事とする。