WADA-DEV(7) $ /ja/blog/japan-scale-unit-switch-measurement-act/

NAME

japan-scale-unit-switch-measurement-act — Home Assistant で体組成計 ESF-551 が切れ続けた原因は計量法だった

SYNOPSIS

日本で買った BLE 体組成計 Etekcity ESF-551 を Home Assistant に繋いだら、単位を設定するコマンドを受けた瞬間に切断された。ライブラリのバグを追っていたら、行き着いたのは計量法の条文だった。

DESCRIPTION

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 kg2–150 kg
目量0.05 lb / 0.02 kg100 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 台から計量法まで行き着くような学びがあるので、やってよかったと思っている。

bookmark: B! はてなブックマークに追加

COMMENTS