ホーム » T-Saitoh (ページ 2)

T-Saitoh」カテゴリーアーカイブ

システム

最近の投稿

アーカイブ

カテゴリー

Switchbot 温湿度計のファームウェアが更新できない

Switchbot API を使って温湿度計のデータを取得できるようにはなったけど、バッテリー状態は常に 100% 表示。

Switchbot の OpenWonderLabs / SwitchBotAPI の README だと、Swichbot 温湿度計の最新は V4.2 と書いてあるけど、アプリで確認するけど、V0.8 の表示。これが原因かと温湿度計のファームウェアの更新をかける(裏ボタンを押しながら乾電池ONでアプリから更新を行う)けど、ファームウェア更新の表示はでるけど、バージョンは相変わらず V0.8 のまま。

原因不明だなぁ…

日立洗濯機API

日立の洗濯機は WiFi で接続できるので、nmap をかけてみたが、反応なし。

でも何気なく「日立 洗濯機 API」でググると、下記の解析した人の情報を見つける。洗濯機の状況を把握できると面白いので色々試してみよう。

ひとまず記事の確認で、UDP ポートの全スキャンすると 50000 からの反応が確認できた。

$ sudo nmap -sU -p- washer-dryer
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-10-29 16:03 JST
Nmap scan report for washer-dryer (192.168.11.37)
Host is up (0.018s latency).
rDNS record for 192.168.xx.xx: washer-dryer
Not shown: 65534 closed udp ports (port-unreach)
PORT      STATE         SERVICE
50000/udp open|filtered unknown
MAC Address: 9C:2F:9D:xx:xx:xx (Liteon Technology)

Nmap done: 1 IP address (1 host up) scanned in 88.22 seconds

PyCryptodomeのインストール

$ sudo apt install python3-pycryptodome
       or pip3 install pycryptodome
$ sudo apt install build-essential python-dev-is-python3
$ pip install pycryptodomex
$ pip install pycryptodome-test-vectors
$ python3 -m Cryptodome.SelfTest

iPhoneバッテリー交換サービス

AppleCare 入ってたっけ?

AppleCare入ってたっけ? 無償って出てるし、予約してみた。
「調べると 80% を切ってたら」って書いてあるけど、81% なんだよな。
{CAPTION}

交換後

無事にバッテリー交換はタダで終了。といっても、表示が100%になっただけで、バッテリー復活を感じてない。交換に出す際の動作確認で、スピーカーの音が少し変とのことで確認すると、スピーカー穴・Lightning穴にゴミが詰まってるとのことで、クリーニング(1000円)もお願いした。

{CAPTION}

{CAPTION}

curl で switchbot API v1.1 を呼出す

Amazon タイムセールで、SwitchBot CO2 センサー付き温湿度計の割引がでていたので、Hub mini セットで発注。CO2センサーは以前 CCS811 でモニタリングしていたけど、もともと精度が悪かったし異常値がでるようになってモニタリングをやめてるので、SwitchBot で復活させたくて、買ってしまった。だけど、CO2センサーは発送が始まらず、Hub mini だけが届く。ということで、ひとまず Hub mini で遊ぶ。

curl で switchbot API の情報を取得する

Python などで API をたたく記事が多いけど、もう少しシンプルにできないかということで、手抜き curl で試してみる。

まずは、最もシンプルな、v1.0 で取得する方法。

最初の token, secret には、SwitchBot スマホアプリで入手したものを書き込む。(v1.0では secret 使ってないけど)

#!/bin/bash

token="xxxxxx....xxxxxxx"
secret="yyyy...yyy"

url_list_v10="https://api.switch-bot.com/v1.0/devices"

curl -s -H "Authorization:${token}" "${url_list_v10}"

switchbot API v1.1 で取得する

ちょっと面倒だけど、セキュリティ的には v1.1 で取得するのが定番。最初は Unauthorized で失敗して色々と試行錯誤したけど、openssl … -binary がキモだった。(こちらの記事を見て、sha256 のハッシュの形式が違うのに気づけた。)

#!/bin/bash

token="xxxxxx....xxxxxxx"
secret="yyyy...yyy"

t="$(/usr/bin/date +%s%3N)"     # time = Epoch time 13桁
nonce="$(/usr/bin/uuidgen)"     # uuid
sign=$(echo -n "$token$t$nonce" \
       | /usr/bin/openssl dgst -sha256 -hmac "$secret" -binary \
       | /usr/bin/base64 -w 0)
url_list_v11="https://api.switch-bot.com/v1.1/devices"

curl -s --request GET \
    -H "Content-Type: application/json" \
    -H "Authorization: ${token}" \
    -H "sign: ${sign}" -H "nonce: ${nonce}" -H "t: ${t}" \
    "${url_list_v11}"

取得した json コンテンツから特定のデバイスの情報を抜粋する

結果は、JSON 形式なので、jq を使って必要な場所だけ抜粋する。

$ bash swbot.sh \
  | jq '.body.deviceList[] | select( .deviceId == "ZZZZZZZZZZZZZZZZ")'

Switchbot meter plus から温度,湿度を表示

Switchbot Hub mini が無い時は、温湿度計(meter plus)からのデータ取得は Bluetooth 経由で動かしていたので、Raspberry Pi で温度を取得していたが、この方法であれば LAN 接続であればどこからでも取得可能なので便利。

(略)
swbot_meter="ZZZZZZZZZZZZZZZZ"
url_list_v11_meter="${url_list_v11}/${swbot_meter}/status"

curl -s --request GET \
     -H "Content-Type: application/json" \
     -H "Authorization: ${token}" \
     -H "sign: ${sign}" -H "nonce: ${nonce}" -H "t: ${t}" \
     "${url_list_v11_meter}" \
  | jq -r '.body | "Temperature: " + (.temperature|tostring) + "C\n" \
                   + "Humidity: "  + (.humidity|tostring) + "%"'

これで、温度、湿度がとれる。これなら munin 用のスクリプトも shell で簡単に書けそう。だけど、バッテリー残量(.battery)は 60% 台まで落ちているはずだけど、100% なんだよな。他の SwitchBot Plug でも、電力値が取れなかったりと SwitchBotAPI は、全機能を網羅していない様子。

Windows 11 Upgrade できるようになった!?

とっくの昔に、Win11 Upgrade不可能と診断されてたんだけど、なんで今頃 Upgrade の画面出てくるんだ?
Windows 10 アップグレード 22H2 の更新の追加に合わせて基準が変わったのかと、思わず期待したけど、やっぱりダメなんじゃん。

文殊山

最近、運動不足のなか、熊ニュースも多くて山ハイキングができてなかったけど、今シーズン最初の文殊山。
登っている人が多くて、熊の心配はしなくていいかな。
{CAPTION}{CAPTION}{CAPTION}{CAPTION}

Apple Watch の充電のタイミング

Apple Watch Ser.10 に更新して、睡眠時にも時計をつけるようになって充電のタイミングに悩む。

朝充電+夜充電

Ser.5 を使って今までは、バッテリーも劣化していたから、家に帰ったら早々に充電していたし、WiFi環境から外れる時間が長い場合は、昼休みにも充電していた。
Ser.10 になって睡眠時もつけるようになった最初は、夜中使用で減った分を朝満充電、帰って風呂に入っている間の充電と2回充電にしていたけど、充電の最適化のおかげで充電機能が動かなかったり。

朝充電だけに変更

ということで風呂に入る間の充電はしないようにしてみた。その際のバッテリーの減り具合は、下記のように、1日つけていても50%ほどにしか落ちていない。ということで、朝起きた後に充電(30分もあればほぼ満充電)し、帰宅しても充電せずにそのまま就寝して朝まで…のルーチンに落ち着きそう。
{CAPTION}この雰囲気なら、最悪2日間の連続使用もできそうだな。

ゾルトラーク

スマホの充電台に、ゾルトラークのシールを作って貼ってみた。{CAPTION}

sshd のエラーメッセージ

sshd の設定をあまり見直していないが、下記のメッセージが出るようになっている。

2024-10-05T20:03:58.314494+09:00 xxxx sshd[176045]: rexec line 15: Deprecated option UsePrivilegeSeparation
2024-10-05T20:03:58.314710+09:00 xxxx sshd[176045]: rexec line 18: Deprecated option KeyRegenerationInterval
2024-10-05T20:03:58.314778+09:00 xxxx sshd[176045]: rexec line 19: Deprecated option ServerKeyBits
2024-10-05T20:03:58.314840+09:00 xxxx sshd[176045]: rexec line 31: Deprecated option RSAAuthentication
2024-10-05T20:03:58.314896+09:00 xxxx sshd[176045]: rexec line 38: Deprecated option RhostsRSAAuthentication
2024-10-05T20:20:31.361176+09:00 xxxx sshd[177351]: Unable to load host key: /etc/ssh/ssh_host_dsa_key

どれも、関連する行をコメントアウトで対応。

mariadb のエラー対策

別件で /var/log/syslog を確認したら、下記のエラーが大量に出力されている。

2024-10-05T19:53:54.546148+09:00 xxxx mariadbd[1076]: 2024-10-05 19:53:54 3785 [ERROR] Incorrect definition of table mysql.column_stats: expected column 'hist_type' at position 9 to have type enum('SINGLE_PREC_HB','DOUBLE_PREC_HB','JSON_HB'), found type enum('SINGLE_PREC_HB','DOUBLE_PREC_HB').
2024-10-05T19:53:54.546217+09:00 xxxx mariadbd[1076]: 2024-10-05 19:53:54 3785 [ERROR] Incorrect definition of table mysql.column_stats: expected column 'histogram' at position 10 to have type longblob, found type varbinary(255).

エラーメッセージでググると、下記のコマンドで直るとのこと。

ALTER TABLE mysql.column_stats MODIFY histogram longblob;
ALTER TABLE mysql.column_stats MODIFY hist_type enum('SINGLE_PREC_HB','DOUBLE_PREC_HB','JSON_HB');

ということで、実行してみる。

# mariadb -u root
:
MariaDB [(none)]> ALTER TABLE mysql.column_stats MODIFY histogram longblob;
Query OK, 0 rows affected (0.496 sec)
Records: 0  Duplicates: 0  Warnings: 0
MariaDB [(none)]> ALTER TABLE mysql.column_stats MODIFY hist_type enum('SINGLE_PREC_HB','DOUBLE_PREC_HB','JSON_HB');
Query OK, 0 rows affected (0.176 sec)
Records: 0  Duplicates: 0  Warnings: 0

エラーメッセージは出なくなったようだ。

Google 検索

My Google   Yahoo

Microsoft

ファンサイト