Pythonには、’ephem’ という日の出や日の入りの時刻を計算する便利なライブラリが存在する。
ephemのインストール
raspberry pi zeroにログインして、ライブラリを探す。
$apt-cache search ephem
この中から、Python3のライブラリを探すと、python3-ephemというのがある。(python3-ephem – Compute positions of the planets and stars with Python 3) これをインストールする。
$sudo apt-get install python3-ephem
pip3 list で、インストール出来たかどうか確認する。3.7.6.0 がインストールされた。
自宅の緯度経度を、googleマップから得る。
lat = xxxxxx, lon=yyyyyyy
日の入り、日没時刻から玄関灯の点灯・消灯時刻を求める
ephemの next_rising関数や next_setting関数で、現在時刻から見た、次の日の出と日の入りを計算し、ローカルタイムに変換する。
さらに、玄関灯の点灯を「日没の30分前」、消灯を「日の出の30分後」とするための補正計算を行う。以下のコードを参照。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#!/usr/bin/python3 import ephem import datetime home = ephem.Observer() home.lat = '35.324773' home.lon = '136.787346' home.date = datetime.datetime.utcnow() sun = ephem.Sun() next_off = ephem.localtime(home.next_rising(sun)) + datetime.timedelta(minutes=30) next_on = ephem.localtime(home.next_setting(sun)) - datetime.timedelta(minutes=30) print("Next light-off time: ", next_off) print("Next light-on time: ", next_on) |
これで、自宅の緯度・経度に於ける、日の出、日没時刻をもとにした、玄関灯の点灯・消灯の時刻が得られる。
照度計を用いた点灯・消灯の制御の方が簡単かもしれないが、興味として別情報からのコントロールを試みるのが目的。