Etekcity ESF-551 という BLE の体組成計を Home Assistant に繋いだら、測定値が一つも届かなかった。原因を Claude Code に追わせたら、行き着いた先は計量法 9 条だった。日本で売られている個体は、単位を切り替える機能が法律のせいで削られていた。
私はファームウェアのことも法律のことも分からない。やったのは、体重計に乗ることと、次に何を調べさせるか決めることくらいだ。AI がなかったら、この調査はできなかった。
乗っても何も返ってこない
使ったのは HACS の etekcity_fitness_scale_ble と、その中身の etekcity_esf551_ble==0.8.4。Claude Code にログを読ませると、接続して HW/SW バージョンを読み、単位を kg にするコマンド a5220305002b0163a10000 を書き込み、約 0.4 秒で切断される。そのまま再接続を繰り返す。体重計に乗っても notification は一度も来ず、センサーは全部 unavailable のままだった。
kg から kg への、実質何も変えない設定でも毎回切れる。
コマンドを 1 つ飛ばすと動く
切り分けも任せた。Claude Code は別のマシンから素の bleak で 0000fff1 を subscribe し、単位の write だけを外した。それなら切断されない。私が乗っている間は約 45ms 間隔で 22 バイトの notification が 80 回ほど流れてきた。
そこで Claude Code が、display_unit=None を渡して書き込みを踏まないローカルパッチを書いた。これで 14 個のセンサーが全部埋まった。上流への issue も Claude Code に書かせて出した(etekcity_esf551_ble #15)。
ここまでは、ライブラリのバグを直した話だった。
US 版の説明書にだけ単位の設定がある
なぜ日本版だけなのか、根拠を探させた。VeSync アプリに単位設定がなく、US 版のマニュアルには手順がある。
裏面のラベルを US 版の仕様と並べると、ファームのリビジョン違いではなく、市場別の別物だと分かった。日本の機器は IoT 対応が微妙だなあ、これもかぁ、と思った。
| US の ESF-551 | 日本で買った個体 | |
|---|---|---|
| 秤量 | 400 lb / 180 kg | 2–150 kg |
| 目量 | 0.05 lb / 0.02 kg | 100 g |
| 無線認証 | FCC ID 2AB22-ESF551 | 技適 R 210-252428 |
| 計量法 | なし | 家庭用「正」マークあり |
e-Gov の法令 API から計量法を取ってきて読んだのも Claude Code だ。第 9 条は、非法定計量単位による目盛や表記を付した計量器を、販売することも、販売の目的で陳列することも禁じている。lb や St で表示できる体重計を日本で売れない。だからメーカーは、日本向けのファームから単位を切り替える機能を落とす。自分で体重を量るのは取引でも証明でもないので、使う側は第 8 条にも掛からない。縛られているのは売る側だけだ。
経産省の試買調査報告書(平成 27 年度)には、実際の指導例があった。ポンドとストーンの表示が禁止だという認識がない業者に、切り替えができないよう封印しろと指示している。
切断が意図的かどうかは分からない
分かったのは、日本版に単位切替がない理由まで。切断そのものが意図した動作なのか、単位コマンドを知らないファームが雑に切っているだけなのかは、まだ判断がつかない。機能を消すのはいい。ただ、消し方が雑なんじゃないかという気はしている。1 台しか持っていないので、manufacturer data の model identifier 12 が日本版の印だとも言い切れない。上流への出し方は、identifier 12 を display_unit_settable=False で登録して write を飛ばす形にして、判断はメンテナに預けた。
未知の opcode を投げて切れ方を見る実験は、まだやっていない。
翌日に直った
issue を出した翌日、メンテナから返事が来た。
That’s interesting to know about that Japanese regulation. That would explain it I guess, and since the option doesn’t even show up in the app that pretty much confirms it I think.
その日のうちにライブラリ v0.8.8 と、HA の統合 0.8.3 が出た。統合を 0.8.3 に上げてローカルのパッチを外し、乗ってみたら、測定値がそのまま届いた。めちゃくちゃ早くてびっくりしたし、ありがたかった。
Home Assistant を自前でホストするのは面倒だ。でも、体重計 1 台から計量法まで行き着くような学びがあるので、やってよかったと思っている。