YANO's digital garage

Copyright ©YANO All rights reserved. https://www.bravotouring.com/~yano/

Last-modified: 2024-05-07 (火)


[一語一絵/IT系]

スマートプラグ / 2022-06-30 (木)

大変不自然な折れ線グラフ
冷蔵庫の消費電力

Gosundのスマートプラグに置き換えて、浮いた[External]SwitchBotプラグを4月の中旬からは冷蔵庫に移設し、アプリでモニタしたところリアルタイム値は4~140Wで遷移していたのだが、月単位の消費電力値は5~8Kwhでしかないことに気づいた。

日毎のグラフで見るとゼロの日も少なくなく「テレビだからそんなもんかと思ってたのだが、冷蔵庫なのにゼロな日があるわけないやろ」と突っ込みたくなった。

2020年から贔屓にしているSwitchBotシリーズだが、なかなか難しいなぁ。

【参照】
●SwitchBot https://www.switchbot.jp/
SwitchBot(スイッチボット)ハブミニ
SwitchBot(スイッチボット)プラグ
SwitchBotプラグミニ
●Amazon.co.jp https://www.amazon.co.jp/
SwitchBot スイッチボット プラグミニ スマートプラグ 1,980円
SwitchBot スイッチボット Hub Mini 3,980円
●Wikipedia https://ja.wikipedia.org/wiki/
スマートホーム


[一語一絵/IT系]

tinytuyaとtuyapi / 2022-06-29 (水)

消費電力が確認できるGosundスマートプラグの続報。

Python API for Tuya WiFi smart devices using a direct local area network (LAN) connection or the cloud (TuyaCloud API).
[External]jasonacox/tinytuyaより

デバイスID'18261828c4dd57XXXXXX'とローカルキー'7e5f08badbYYYYYY'が取得できたので、クラウドではなくLAN経由に対応している(らしい)[External]tinytuyaにトライ。

まずはpython3とtinytuyaをインストールし、"tinytuya scan"でスマートプラグのIPアドレスを調査。

yano@haswell:~$ sudo apt install python3 python3-pip
yano@haswell:~$ python3 -m pip install tinytuya
yano@haswell:~$ python3 -m tinytuya scan

TinyTuya (Tuya device scanner) [1.7.2]

Scanning on UDP ports 6666 and 6667 for devices (15 retries)...

Unknown v3.3 Device   Product ID = keyneruwsdethu7u  [Valid payload]:
    Address = 172.16.NN.MM,  Device ID = 1826182870039fXXXXXX, Local Key = ,  Version = 3.3, MAC =
    No Stats for 172.16.NN.MM: DEVICE KEY required to poll for status
Unknown v3.3 Device   Product ID = keyneruwsdethu7u  [Valid payload]:
    Address = 172.16.NN.MM,  Device ID = 18261828c4dd57XXXXXX, Local Key = ,  Version = 3.3, MAC =
    No Stats for 172.16.NN.MM: DEVICE KEY required to poll for status

Scan Complete!  Found 2 devices.

>> Saving device snapshot data to snapshot.json

yano@haswell:~$
"tuyapower"だとこんな感じ。
yano@haswell:~$ python3 -m pip install tuyapower
yano@haswell:~$ python3 -m tuyapower
TuyaPower (Tuya compatible smart plug scanner) [0.2.0] tinytuya [1.7.2]

Scanning on UDP ports 6666 and 6667 for devices (15 retries)...

FOUND Device [Valid payload]: 172.16.NN.MM
    ID = 1826182870039fXXXXXX, product = keyneruwsdethu7u, Version = 3.3
    Device Key required to poll for stats
FOUND Device [Valid payload]: 172.16.NN.MM
    ID = 18261828c4dd57XXXXXX, product = keyneruwsdethu7u, Version = 3.3
    Device Key required to poll for stats

Scan Complete!  Found 2 devices.

yano@haswell:~$
プラグが複数ある場合はデバイスIDで識別可能だ。

IPアドレス、デバイスID、ローカルキーを~/smarthome/tinytuya/tuya_power_tv.pyに書いて

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# tuya_power.py as an example of using TinyTuya

import tinytuya
import datetime
import json
import sys

DPS_Current='18'
DPS_Power='19'
DPS_Voltage='20'

IpAddress="172.16.NN.MM"
DeviceId="18261828c4dd57XXXXXX"
LocalKey="7e5f08badbYYYYYY"

def get_plug_power():
    d = tinytuya.OutletDevice(DeviceId, IpAddress, LocalKey)
    d.set_version(3.3)
    dt_now = datetime.datetime.now()
    data = d.status()
    dps = data['dps']
    val_amp = dps[DPS_Current] / 1000
    val_watt = dps[DPS_Power] / 10
    val_volt = dps[DPS_Voltage] / 10
    print(dt_now, val_amp, val_watt, val_volt)

try:
    get_plug_power()
except KeyboardInterrupt:
    sys.exit(0)
を叩くと、
yano@haswell:~$ ~/smarthome/tinytuya/tuya_power.py
2022-06-29 00:00:44.129984 0.122 7.2 101.8
yano@haswell:~$
と消費電力値が取得できた。

【参照】
●ファームロジックス https://flogics.com/
スマートテーブルタップを Python から制御する 2022年2月2日
●Qiita https://qiita.com/
新版・中華製スマートプラグを node で制御する 2020年5月14日
pythonでsmartlife電源を操作 (脱IFTTT) 2021年8月8日
中華製スマートプラグ をAPIで操作する。(tuya-cli利用の代替案) 2021年1月23日
●Tuya Smart Developer Center https://iot.tuya.com/
●GitHub https://github.com/
codetheweb/tuyapi: 🌧 An easy-to-use API for devices that use Tuya's cloud services.
jasonacox/tinytuya: Python API for Tuya WiFi smart devices using a direct local area network (LAN) connection or the cloud (TuyaCloud API).
●Google Play のアプリ https://play.google.com/store/apps/
Go Smart
Tuya Smart
Smart Life
●Wikipedia https://en.wikipedia.org/wiki/
Tuya Inc.


[一語一絵]

九州北部梅雨明け / 2022-06-28 (火)

昨日の[External]関東甲信 東海 九州南部が梅雨明けに続いて、[External]九州北部~北陸も梅雨明け

近畿など北陸から九州北部が梅雨明け
[External]ウェザーニュースより

平年より21日も早い梅雨明けで、博多祇園山笠が始まる前というのは記憶に無い。

期間もわずか17日間というのは過去最も短い梅雨だった、という事になるそうだ。

期間が短かったので例年の3分の1程度という降水量に大騒ぎする必要はないが、すでに水不足で給水制限を行っている地域もあるので節水を心がけたい。

【参照】
●NHK https://www3.nhk.or.jp/news/
【気象予報士解説】なぜ暑い? 6月に40度超え 今後の見通しは 2022年6月25日
関東甲信 東海 九州南部が梅雨明け 関東甲信は最も早い 気象庁 2022年6月27日
九州北部~北陸 梅雨明け 100地点で猛暑日 熱中症に厳重警戒を 2022年6月28日
●ウェザーニュース https://weathernews.jp/
九州北部(福岡)の梅雨入り・梅雨明け【2022】
近畿地方、北陸地方、四国地方、中国地方、九州北部地方が梅雨明け 2022年梅雨情報 2022年6月28日
●Wikipedia https://ja.wikipedia.org/wiki/
梅雨


[一語一絵/IT系]

Gosundスマートプラグ / 2022-06-27 (月)

子どもたちが夜遅くまでTVを見れないようにするために、リモートON/OFFできる[External]SwitchBotプラグで21時以降は強制的に見れなくしていたのだが、コンセント給電を止めると録画もできない事になって奥さんからクレームが上がっていた。

ゴウサンド(Gosund) スマートプラグ
ゴウサンド(Gosund) スマートプラグ

SwitchBotのアプリからは消費電力が確認できることに気づいたので、消費電力からREGZAの状態(ON/OFF)を推定できれば、コンセント給電を切らずともIRKitで遠隔OFFできる(≒録画はできる)なぁ…と思ったのだが、SwitchBot APIでは[External]SwitchBotプラグのON/OFF状態しか採れないことが判明し、挫折。

[External]スマートプラグ(コンセント)とラズパイで洗濯機や乾燥機の終了をLINEに通知できて稼働状況もわかるシステムを作ったからGosundのスマートプラグだとAPIで採れそうな事がわかったので、さっそく置き換え。[External]Go Smartアプリに登録し消費電力が表示される事を確認。

ワクワクしながら[External]Tuya Smart Developer Centerに登録し、[External]Listing Tuya devices from the Tuya Smart or Smart Life appに倣って

yano@Focal:~/iot/tuya$ tuya-cli wizard
? The API key from tuya.com: acvwuxxknsXXXXXXXXX
? The API secret from tuya.com 3b81eb715f334YYYYYYY
? Provide a 'virtual ID' of a device currently registered in the app: 18261828c4dd5713b47b
[ { name: 'Gosund_Plug1',
    id: '18261828c4ddXXXXXXXX',
    key: '7e5f08baYYYYYYYY' },
  { name: 'Gosund_Plug2',
    id: '182618287003XXXXXXXX',
    key: '294924a4YYYYYYYY' } ]
yano@Focal:~/iot/tuya$
でデバイスID'18261828c4ddXXXXXXXX'とローカルキー'7e5f08baYYYYYYYY'を取得できた。

ちなみに[External]中華製スマートプラグ をAPIで操作する。(tuya-cli利用の代替案)の手順では、なかなか[External]Tuya Smart Developer CenterでDeviceのListが出てこなくて悪戦苦闘。アプリを[External]Go Smart[External]Tuya Smart[External]Smart Lifeと変えてようやくDevice Listが確認できた。

【参照】
●知的好奇心 for IoT https://intellectualcuriosity.hatenablog.com/
スマートプラグ(コンセント)とラズパイで洗濯機や乾燥機の終了をLINEに通知できて稼働状況もわかるシステムを作った 2020年5月10日
●竹のしんのテック日記 https://take6shin-tech-diary.com/
【Tuya API刷新】スマートプラグをTuyAPI(Node.js)からON/OFFする方法 2021年12月12日
●PHILE WEB https://www.phileweb.com/
IoT製品をかんたんに作れる「Tuya Smart」上陸。ソフトバンクの「+Style」からスマート家電が続々登場 2018年10月16日
●Tuya Smart Developer Center https://iot.tuya.com/
●GitHub https://github.com/
codetheweb/tuyapi: 🌧 An easy-to-use API for devices that use Tuya's cloud services.
jasonacox/tinytuya: Python API for Tuya WiFi smart devices using a direct local area network (LAN) connection or the cloud (TuyaCloud API).
●Google Play のアプリ https://play.google.com/store/apps/
Go Smart
Tuya Smart
Smart Life
●Amazon.co.jp https://www.amazon.co.jp/
【Alexa対応】ゴウサンド(Gosund) スマートプラグ Wi-Fi スマートコンセント 電源プラグ タイマー付き コンセント スマートホーム 2.4GHz対応 遠隔操作 Alexa/Google Home/音声コントロール ハブ不要 1個 ‎WP6-1 1,680円
【Alexa対応】ゴウサンド(Gosund) スマートプラグ Wi-Fi スマートコンセント 電源プラグ タイマー付き コンセント スマートホーム 2.4GHz対応 遠隔操作 Alexa/Google Home/音声コントロール ハブ不要 2個 ‎WP6-2 2,980円
●Wikipedia https://ja.wikipedia.org/wiki/
スマートホーム
●Wikipedia https://en.wikipedia.org/wiki/
Tuya Inc.


[一語一絵/IT系]

SwitchBot API / 2022-06-25 (土)

IFTTT不発事故に起因する2021年版AirconShutdownの善後策。

SwitchBotハブミニ
[External]SwitchBotハブミニ

これまではTwitter経由IFTTT家電リモコンSwitchBotを制御していたところ、2022年版IRKitでは直接APIを叩くようにできたので、SwitchBot[External]SwitchBot Open APIを叩くことに。

[External]SwitchBot Open API

https://api.switch-bot.com/v1.0/devices/<deviceId>/commands
というRESTエンドポイントに制御データをPOSTする枠組み。<deviceId>で指定する対象装置は
curl --request GET 'https://api.switch-bot.com/v1.0/devices' \
  --header 'Authorization: 認証トークン' \
  --header 'Content-Type: application/json; charset=utf8'
で一覧を取得できる。なお、認証トークン[External]SwitchBotをHub経由でAPIから操作するに倣い、SwitchBotアプリの「開発者向けオプション」から取得できる。

ちなみに、エアコンの制御データのパラメータは

deviceTypeAir Conditioner
commandTypecommand
CommandsetAll
command parameter{temperature},{mode},{fan speed},{power state}
e.g. 26,1,3,on
Description the unit of temperature is in celsius;
modes include 1 (auto), 2 (cool), 3 (dry), 4 (fan), 5 (heat);
fan speed includes 1 (auto), 2 (low), 3 (medium), 4 (high);
power state includes on and off
…となっているので、、エアコン停止用の
{  "command": "setAll", "parameter": "25,1,1,off", "commandType": "command"}
というデータを"switchbot_aircon_off.json"というファイルにして
#!/bin/bash

BASEPATH=$(dirname $0);

SWITCHBOT_API="https://api.switch-bot.com/v1.0"
SWITCHBOT_TOKEN="90edf....3431"

hdr_auth="Authorization:${SWITCHBOT_TOKEN}"
hdr_type="Content-Type: application/json"
# BODY="@${BASEPATH}/switchbot_aircon_off.json"
BODY='{"commandType": "command", "command": "setAll", "parameter": "25,1,1,off"}'

AIRCON_1F="01-2020XXXXXXXX-32"  # 1F
AIRCON_2F="01-2020YYYYYYYY-52"  # 2F
AIRCON_3F="01-2020ZZZZZZZZ-82"  # 3F

for DEVICE_ID in $AIRCON_1F $AIRCON_2F $AIRCON_3F;
do
    URL="${SWITCHBOT_API}/devices/${DEVICE_ID}/commands"
    curl "${URL}" \
         --silent -O /dev/null \
         -H "${hdr_auth}" -H "${hdr_type}" \
         -X POST -d "${BODY}"
done
というスクリプトを回せばエアコン3台が順次停止になる運びだ。

ローカルAPIな2022年版IRKitとは違って https://api.switch-bot.com/ に繋がらなかったらアウトだが、それは2021年版AirconShutdownと同じ。TwitterIFTTTのサービスを経由しない分だけ障害点に起因するリスクは減った、という理解でOKだ。

【参照】
●しずかなかずし https://shizuka-na-kazushi.style/
SwitchBot APIの使い方。エアコンをコントロールするプログラムをJavaScriptで書いた! 2021年8月9日
●kTech123|note https://note.com/klayer123/
SwitchBotまとめ
【SwitchBot】API を使って Python でエアコンの操作してみた
●Qiita https://qiita.com/
SwitchBot
SwitchBotAPI
curl で SwitchBotAPI を叩いて SwitchBotを動かす 2021年1月9日
SwitchBotをHub経由でAPIから操作する 2021年7月12日
●GitHub https://github.com/
OpenWonderLabs/SwitchBotAPI: SwitchBot Open API Documents
●SwitchBot https://www.switchbot.jp/
SwitchBotハブミニ
SwitchBotプラグミニ
●Wikipedia https://ja.wikipedia.org/wiki/
Representational State Transfer
スマートホーム
ECHONET Lite