Skip to content

shizuka-na-kazushi/esp32switchbotlock

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ESP32 (M5 Atom S3 Lite) BLEでSwitchBotスマートロックを制御

本Repositoryについて

ESP32のBLE(Bluetooth Low Energy)プロトコルでSwitchBot スマートロックを制御するプログラムです。

PlatformIOでESP32Arduinoを使用しています。

デフォルトでは、スマートロックの開閉をBLE経由で行うためのコードです。 src/Switchbots以下に、スマートロック以外のSwitchBot製品のコードもありますので、少し改造すれば他の機器(例えば、スマート電球や、テープライトなど)もBLEで操作できます。

M5 Atom S3 Liteのボタンを押すとLock(施錠)、ボタンの長押しでUnlock(解錠)します。

動作中動画

詳しくは、筆者のブログ「テック大家さん」にて解説記事も書いています。記事内ではプロトコル詳細も整理していますので本リポジトリのコードを利用する際の参考になるはずです。

SwitchBot BLE API (プロトコル)について

SwitchBot製品のBLE APIについては、以下のサイトに文書化された情報があります。

ただし、上記のAPI仕様ではSwitchBotのいくつかの製品のコマンドは書かれているものの、SwitchBotスマートロックについては、記述がありません。

一方、以下のNodeJSを使うTypeScriptで書かれたライブラリの実装としてスマートロックのBLE操作が実装されています。

そこで、本Repositoryのコードは、node-switchbot (Github)のTypeScriptのコードから必要な部分をESP32 Arduino用に移植したものになっています。

ペイロードの暗号化

SwitchBotスマートロックをBLEで操作するためには、ペイロードの暗号化が必要です。

src/DeviceAddr_example.hに暗号化に必要なKeyIdEncryptionKeyを適切に設定する必要があります。(使用する場合は、src/DeviceAddr.hに名前変更が必要)

この値は、以下のプログラムで取得します。

使用には、SwitchBotのクラウドのログイン情報が必要になります。

(または、Danielhiversen/pySwitchbotも利用可能)

KeyIdEncryptionKeyに関しては、node-switchbotライブラリのsetKey()の説明に情報が少し書かれています。

暗号は、AES 128bit CTRモードを使用します。

依存関係

以下のライブラリに依存しています。

  • m5stack/M5Unified@^0.1.16
  • fastled/FastLED@^3.7.0
  • m5stack/M5AtomS3@^1.0.0
  • h2zero/NimBLE-Arduino@^1.4.0
  • janelia-arduino/Vector@^1.2.2

(BLEは軽量のNimBLEを使用)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published