室内のCO2濃度が見たい・続

最終更新時間:2020年07月11日 16時55分50秒

 先日書いた「室内のCO2濃度が見たい」の続き。
 2020/06/20にBanggood.comに発注したCO2濃度センサー「MH-Z19」だが、

 昨日(2020/07/10)届いた。発注から到着まで20日間かかったことになる(納期は10日から30日となっていた)。
 なお、届いたのは「MH-Z19B」だった。

 早速、こちらのページを参考に、もともと近所のアメダスの情報やNature Remoの内蔵センサーの値をLametric Timeへ表示するために使っていたRaspberry Pi 3Bに接続してみた。金属製の台の上に置いてあるため、センサーの下にダンボールを貼り付けてある。

mh_z19b.jpg

 センサーの値も問題なく取得できたので、これをLametric Timeに表示してみた。

#!/usr/local/bin/python3
import requests
import json
import datetime
import subprocess

url = 'https://api.nature.global/1/devices'

headers =  {
    'contentType': 'application/json',
    'Authorization': 'Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
}

res = requests.get(url, headers=headers)
data = res.json()

hum = str(data[0]['newest_events']['hu']['val'])
temp = str(round(data[0]['newest_events']['te']['val'], 1))

mh = subprocess.check_output(['sudo', 'python3', '-m', 'mh_z19']).decode('utf-8')
mh = json.loads(mh)
co2 = str(mh['co2'])

print(f"{datetime.datetime.today().strftime('%Y-%m-%d %H:%M')},{temp},{hum},{co2}")

hum = hum + '%'
temp = temp + '°C'
co2 = co2 + 'ppm'

disp = {
    'frames': [
        {
            'index' : 0,
            'text'  : temp,
            'icon'  : '12464'
        },
        {
            'index' : 1,
            'text'  : hum,
            'icon'  : '12184'
        },
        {
            'index' : 2,
            'text'  : co2,
            'icon'  : '32936'
        }
    ]
}

disp = json.dumps(disp)

headers = {
    'X-Access-Token': 'yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy',
    'Cache-Control': 'no-cache',
    'Accept': 'application/json'
}

url = "https://developer.lametric.com/api/V1/dev/widget/update/com.lametric.zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz/1"

res = requests.post(url, disp, headers=headers)

 上記のスクリプトをcronで5分おきに実行し、表示する情報を更新している。

 表示は順に、時刻 -> 日付 -> 近所のアメダスの気温 -> 天気と降水量 -> 風速 -> 室温 -> 湿度 -> CO2濃度 となっている(アメダスの情報は別のスクリプトで更新している)。

 まあ、自己満足以外の何物でもないが、満足満足。
 

参考