SwitchBotの温湿度計を購入しました
乾燥し過ぎていると風邪なんかにかかりやすくなりますし、肌もパリパリしていいことがないです。とはいえ肌感覚だけで湿度に気を付けることはできないので、温湿度計を購入することにしました。んで、購入したのが以下の「SwitchBot 温湿度計プラス」と、「SwitchBot ハブミニ」です。
温湿度計プラスはマグネットが付いていて壁に取り付けることが出来ます。
可読性も高く非常に良い感じです。南向きのリビングでは外気温と比べて、思った以上に室内温度が高くなるんだなぁとか思ったりしています。
非常によかったので、先日のAmazonタイムセールで「SwitchBot温湿度計」を購入してみました。プラスととれるデータに違いはなくって700円お安いので、キッチンと寝室用に2つ購入してみました。
大きな問題はないんですが、思った以上に文字が細くて可読性が低いのが残念でした。
SwitchBot製品は「ハブミニ」を介してインターネットにつなげることが出来ます。所謂IOTですね。アプリを使って外出先から各部屋の温度を確認したり、エアコンやテレビを点けることもできます。
更には、アプリに表示されているような情報を取得したり、操作することがAPIから出来ます。例えば以下のコードを実行すると
import time
import hashlib
import hmac
import base64
import uuid
import configparser
import requests
def main():
base_url, token, secret = get_config()
url = "{}/v1.1/devices".format(base_url)
headers = make_headers(token, secret)
res = requests.get(url, headers=headers).json()
devices = res['body']['deviceList']
meters = []
for device in devices:
if device['deviceType'] == 'MeterPlus' or device['deviceType'] == 'Meter':
meters.append(device)
# print(meterplus_ids)
for meter in meters:
url = "{}/v1.1/devices/{}/status".format(base_url, meter['deviceId'])
res = requests.get(url, headers=headers).json()
print('=======================================')
print('名前: {}'.format(meter['deviceName']))
print('気温: {} ℃'.format(res['body']['temperature']))
print('湿度: {} %'.format(res['body']['humidity']))
print('=======================================')
def get_config():
config_ini = configparser.ConfigParser()
config_ini.read('config.ini', encoding='utf-8')
base_url = config_ini['switchbot']['url']
token = config_ini['switchbot']['token']
secret = config_ini['switchbot']['secret']
return base_url, token, secret
def make_auth_data(token: str, secret: str):
# A random UUID generated by developers themselves to blend into the string to sign.
nonce = str(uuid.uuid4())
t = int(round(time.time() * 1000))
string_to_sign = '{}{}{}'.format(token, t, nonce)
string_to_sign = bytes(string_to_sign, 'utf-8')
secret = bytes(secret, 'utf-8')
sign = base64.b64encode(hmac.new(secret, msg=string_to_sign, digestmod=hashlib.sha256).digest())
return sign, str(t), nonce
def make_headers(token: str, secret: str):
sign,t,nonce = make_auth_data(token, secret)
headers={
"Authorization": token,
"sign": sign,
"t": str(t),
"nonce": nonce,
}
return headers
if __name__ == '__main__':
main()
以下のように温湿度計にアプリ上で設定した名前と、温度湿度が表示されます。
これを応用すれば、湿度が下がったらアラートしたり(アプリでもできますが)、湿度や気温をキーにしてエアコン等周辺の機器を稼働させたりできるはずです。夢が広がりますね。
ちなみにSwitchBotシリーズはAmazonのタイムセールでほぼ毎度値引きされているようなので、購入するのであればそのタイミングがお薦めです。
この記事が参加している募集
この記事が気に入ったらサポートをしてみませんか?