GBS-Control ESP-IDF版 メモ

ClaudeやCodexに、GBS-ControlをESP-IDFに移植してもらった https://github.com/ntsklab/gbs-control/tree/esp-idf ターゲット 元プロジェクト:ESP8266 今回:ESP32-C3及びC6 開発環境 元プロジェクト:Arduino ESP8266 今回:ESP-IDF 方針 自分でコードを書かない LLMだけでどこまでできるのか、遊ぶ 移植方針など ターゲットデバイスは、XIAO ESP32-C3とC6。ピンヘッダ用の穴に直接JST-XHコネクタなどを実装することで、基板などを起こさなくても比較的楽にGBS8200ボードへ接続可能。(ピッチが違うため、良い子は真似してはいけません) 元がArduinoコードなので、Arduinoコンパチレイヤでラッピングしてなるべく元のソースをそのまま使用できるようにした。 C3/C6はESP8266と違いBLEがついていたりするので、Nordic UART Serviceベースのshell機能が追加になっている。元々は機能拡張版を作る予定がなく、GBS-Cが動作するまでのデバッグ用にBLE経由ログ出力などの機能を追加し始めてからブランチを分けた結果こうなっている。計画性のなさ。 Debugピンの入力や外部クロック処理など、こちらの環境で使用していない機能については動作未チェック。 追加機能あり版 https://github.com/ntsklab/gbs-control/tree/esp-idf-ext 某所で必要な機能を追加したバージョン。これが作りたくて、ESP-IDFへforkした節がある。 ロータリーエンコーダではなく物理ボタンによるジオメトリ、PreCoast、PostCoastレジスタの調整を可能としている。これにより画面のズレや、上部の歪みなどが発生した場合に、ある程度ソフト的に調整が効くようになっている。1 また、ESP8266用は現在のコードでは古いMVSなどが映らない(スタッタリング、同期取れず画面が流れるなど)する。2これは、SyncWatcherが動的にtv5725の同期系レジスタをいじる仕組みが原因の様子。3 こちらのIssueに記載があるが、古いバージョンではMVSも映っていたとのこと これらの情報から、旧GBS-Control互換モードを実装してもらい、無事古いMVSでも同期が取れるようになった。 他にも、複数台運用に耐え得るように各種無線の識別子を任意の文字列に変更する機能などを実装。 一旦こちらを運用に乗せて試験中です。 Coast系パラメータを正しく調整するには、後述するレガシモードで動作させるか、set syncwatcher offコマンドなどでSyncWatcherを明示的に無効化する対応が必要。 ↩︎ 自宅のMV-1Bでは動いていたのに、本番環境で使うMV-1FZでは動かず、大分悩んだ ↩︎ MVSの同期信号が終わってるのが真因ではあるのですが。。。 ↩︎

2026年3月30日

SwitchbotのPlug miniはBLEを使うと未認証で外部から操作ができる(前回の続き)

こわいね。 関連する↓ SwitchbotのPlug miniはBLEで消費電力などのステータスをBroadcast(Advertise)している 以前に記載したように、消費電力量等をBLEで常にAdvertiseしているSwitchBot Plug miniですが、よくよく調べてみると公式から以下のようなドキュメントの提供があることに気が付きました。 https://github.com/OpenWonderLabs/SwitchBotAPI-BLE Plug miniの欄を見てみると、単にConnectすれば電源ON/OFFの制御ができるようです。 早速(?)AndroidのSwitchBotアプリではなく、BLEデバッグアプリ(LightBlue)から操作を試みてみました。以下の投稿には結果の記載がないのですが、画像の通りにドキュメントに記載のあるCharacteristic UUIDを指定した上でHEX値をValueへWRITEすることでON/OFF操作に成功しました。 尚、WRITE属性があるものが上記のUUIDだけだったので、それを選ぶことで操作が可能でした。らくちん。 ということで、例えばAdvertiseのメーカ(Woan Technology)とデバイスタイプ(0x67)を見て、Characteristic UUID等全て決め打ちでON信号を送り続けるESP32デバイスとか作ると、悪いことできそうだなと思いました。(粉みかん)(やらないけど) ユーザとしてできる対策については、Switchbot公式の注意喚起や 【注意喚起】SwitchBot製品の暖房器具への使用について 電気用品安全法および関連文書、経済産業省が定めるIoTデバイスセキュリティガイドラインなどを参照されたい。 https://k-tai.watch.impress.co.jp/docs/interview/1390416.html https://www.meti.go.jp/press/2021/04/20210401005/20210401005.html ・・・何も考えずに使うのは良くないなあと思いました(こなみかん)

2024年1月15日 · にとすけLAB

SwitchbotのPlug miniはBLEで消費電力などのステータスをBroadcast(Advertise)している

しらんかった こわいね 正しくはAdvertiseというらしい。 SwitchbotのAPI叩いてPlug miniの電力とか取りたいな~と適当にQiitaを参考にcurlでAPI1.1を叩くスクリプトを作っていたのですが、レートリミット(10k per day≒1 request per 8.6 sec)や値の即時性が怪しく感じたのでBLEで直接取得できないかと調べていました。 結果、できそうではあるものの、どうもコード的に認証とか何もないように見受けられたので、おや・・・?と思い確認したところ、表題の通りの動作をしているようです。 読めた図 ※リンク先コードのscannerに渡す引数を.scan(10,passive=True)に変更しています。おそらくGnome側のBluetooth管理に引っ張られていてうまく動かなかった。 これ、例えば部屋の間接照明の制御やパソコン等の消費電力測定目的なんかにつかっていると、悪人が狙えばそこそこの確度で在宅かどうかが判断できちゃったりしそうですね。 在宅がわかりそうなデバイスにはPlug miniを使わないようにしましょう。 追記 ちなみにうちのPlug miniは上記リンク先ブログのものとは異なるEspressifのOUIでBroadcastされていました。ESP系の市場規模から考えるとそりゃそうかと言う感じではある。。 上記コードではMACがわからないとだめだけど、少し書き換えてEspressifのOUI見つけたらとりあえず上記ルールでデコードしてみる、とかやると、街中でもいろいろなスマートプラグなんかを見つけられそうですね。やらないけど。 追記2 このへんで絞ればより探しやすいっぽい。やらないけど。 https://bitbucket.org/bluetooth-SIG/public/src/a02d375ef4a70852f663c2e7d8e18bd863374ed7/assigned_numbers/uuids/member_uuids.yaml#lines-935 https://bitbucket.org/bluetooth-SIG/public/src/a02d375ef4a70852f663c2e7d8e18bd863374ed7/assigned_numbers/company_identifiers/company_identifiers.yaml#lines-2985 Woan Technology (Shenzhen) Co., Ltd. →技適検索で「214-116028」

2024年1月9日 · にとすけLAB