この手順の目次
問題が起きたら、通信から光の信号までを一段ずつ確認する。同じ操作を何度も送る前に、無送信で確認できる情報を集める。
1. 端末とモジュールを確認する
# PHONE_ADBは対象端末のLANアドレスと:5555を設定済みとする
adb -s "$PHONE_ADB" get-state
adb -s "$PHONE_ADB" shell getprop ro.product.model
adb -s "$PHONE_ADB" shell cat /proc/modules
adb -s "$PHONE_ADB" shell cat /dev/sh02e_ir| 症状 | 確認すること |
|---|---|
| ADBがoffline / disconnected | 端末の電源、Wi-Fi、IP変更、tcpipモード。まずUSBで復帰可能か確認。 |
| /dev/sh02e_irがない | 再起動やロード失敗。APKの入れ直しだけではモジュールは復旧しない。 |
| EACCES / error 13 | アプリの実UIDとノードGID・モード。再インストールでUIDが変わる可能性。 |
| EPERM / error 1 | 純正ゲート、有効化シーケンス、TX/shutdown設定、タイマーdivider。 |
| ERANGE / error 34 | 100µsのタイマー進行検査が想定範囲から外れている。 |
| frames / last_error | 直近の送信統計。初期化直後のframes=0は正常で、家電受信の証拠にはならない。 |
2. 画面消灯時だけ切れる場合
adb -s "$PHONE_ADB" shell dumpsys power > power.txt
adb -s "$PHONE_ADB" shell dumpsys wifi > wifi.txt
rg -n -i 'wake.?lock|partial|screen|powerstate' power.txt
rg -n -i 'wifi.?lock|lock|connected' wifi.txtアプリのforeground serviceが動き、必要なCPU / Wi-Fiロックを保持しているか確認する。dumpsysの項目名はOSや実装に依存する。画面を消して2分程度待ち、接続状態を何度か確認する短い試験と、長期安定性の検証は別に行う。
受信のためにサービス全体をforce-stopすると、ロックも解放される。受信モードでは送信だけを拒否し、接続維持を継続する。初期化時は待機が止まる可能性があるためUSBを基本とする。
3. 中継・Home Assistantの順に確認する
# API設定ページの作業ディレクトリで実行
docker compose ps
docker compose logs --tail=80 homeassistant
# 編集した設定を検証してから反映する
docker compose exec -T homeassistant \
python -m homeassistant --script check_config --config /config
# 設定検証が成功した場合のみ
docker compose restart homeassistant中継の/healthでready=true、busy=falseを確認し、UIから1回操作する。API成功・アプリ受理・送信完了・家電反応のどこまで確認できたかを分けて記録する。ログにトークンや家庭内情報を出して公開しない。
4. Alexa側の問題を分離する
# HA_LAN_HOSTには自分のHome Assistantホスト名またはLAN IPを設定
read -rp 'Home Assistant LAN host: ' HA_LAN_HOST
curl --fail-with-body --max-time 5 "http://$HA_LAN_HOST/description.xml"
curl --fail-with-body --max-time 5 "http://$HA_LAN_HOST/api/v2/lights"これらはEmulated Hueを有効にした場合のLAN内診断であり、API / Web UIの設定例には含めていない。機器一覧に名前がない場合はHome Assistantの公開設定、一覧にはあるがAlexaにない場合はデバイス検出を確認する。モバイルアプリの古いオン表示は、実際の家電状態やサーバーの最新状態と一致するとは限らない。
5. 再起動後の復帰
- USBで端末を認識し、ビルド番号が変わっていないか確認。
- 検証済みの専用初期化手順で、一時送信モジュールと権限を復旧。
- 状態読み出しでapi=3とデバイスノードを確認。
- アプリの遠隔操作待機を再開し、必要ならWi-Fi ADBを有効化。
- 中継の準備確認後、照明に向けて1操作だけ実機確認。
この一連の再起動復帰は完全自動化しておらず、実機で再起動を挟んだ全工程も未検証。Wi-Fiの再接続を実装しても、カーネルモジュールの復旧までは代行しない。
6. テスト記録を残す
日時:
端末モデル / build:
操作経路: 本体アプリ / 中継API / Home Assistant / Alexa
対象機器とコマンド:
送信前の照明の状態:
APIのHTTPステータスと本文:
アプリの受理結果:
モジュールのlast_error / frames:
実際の家電の変化:
再送したか / 手動でリモコンを使ったか:「点灯した」ときだけでなく、反応しなかった条件も残す。端末の向き・距離・遮蔽物・別の赤外線源が影響するので、通信ログだけで原因を断定しない。