■1号機の設定。仮想環境にもcgsencerの導入が必要。
source ~/vpy/bin/activate
python3 -m pip install -U cgsensor
1.まずは テーブルに情報を書き込む python作成。 room_env_disp.py で保存。
#!/usr/bin/env python3
import cgsensor # インポート
import datetime
import mysql.connector
bme280 = cgsensor.BME280(i2c_addr=0x76) # BME280制御クラスのインスタンス, i2c_addrは0x76/0x77から選択
bme280.forced() # Forcedモードで測定を行い, 結果をtemperature, pressure, humidityに入れる
print('気温 {}°C'.format(bme280.temperature)) # 気温を取得して表示
print('湿度 {}%'.format(bme280.humidity)) # 湿度を取得して表示
print('気圧 {}hPa'.format(bme280.pressure)) # 気圧を取得して表示
tsl2572 = cgsensor.TSL2572() # TSL2572制御クラスのインスタンス
tsl2572.single_auto_measure() # 条件を自動で調整しながら1回測定を行い, luxに結果を入れる
print('明るさ {}lux'.format(tsl2572.illuminance)) # 明るさを取得して表示
temp = '{}°C'.format(bme280.temperature)
humi = '{}%'.format(bme280.humidity)
air_p = '{}hPa'.format(bme280.pressure)
illumi = '{}lux'.format(tsl2572.illuminance)
# db connect
def main():
# mysql connect
cnt = mysql.connector.connect(
host='miyamodb',
port='3306',
db='miyamodb',
user='miyamo',
password='miyamoXXXX',
charset='utf8'
)
db = cnt.cursor(buffered=True)
# query table update run
sql = 'UPDATE room_env SET temperature = %s, humidity = %s, air_pressure = %s, illuminance = %s, upd_datetime = now() where id = 1';
data_env = (temp, humi, air_p, illumi)
db.execute(sql,data_env)
sql = 'commit';
db.execute(sql)
# select
sql = 'SELECT * FROM room_env';
db.execute(sql)
# display
rows = db.fetchall()
print('room_env update:',rows)
# cursol end
db.close()
# close
cnt.close()
if __name__ == "__main__":
main()
2.仮想環境で実行
source ~/vpy/bin/activate
room_env_disp.py 実行で うまくDBのテーブルに書きこめたぞ。
3.cronに登録 5分毎に実行。 いけた。
sudo crontab -e
*/5 * * * * cd /home/pi/ && /home/pi/vpy/bin/python room_env_disp.py >> /tmp/cron.log 2>&1