Electron デスクトップクライアントで SwitchBot Cloud API を操作し、デバイスの状態確認・操作・シーン実行を行うアプリです。React (Vite) + MUI + Redux Toolkit を採用し、英語/日本語 UI に対応しています。
本アプリのコードの約 99% は AI によって自動生成されており、人間による完全な動作確認やコードレビューは行われていません。
本アプリの利用により、お使いのコンピュータ、SwitchBot デバイス、アカウント、ネットワーク環境などにいかなる不具合・損害が発生した場合でも、作者は一切の責任を負いません。自己責任でご利用ください。
- デバイス一覧表示と絞り込み、詳細画面でのステータス確認
- デバイスごとの操作パネル(物理デバイスの状態取得、赤外線リモコンのカスタムコマンド実行)
- シーン一覧の取得とワンクリック実行
- API トークン / シークレットの保存・検証、ポーリング間隔やテーマ (light/dark/system)・言語 (en/ja) 設定
- 前回開いていた画面の復元とデバイスステータスの自動ポーリング
公式 SwitchBot API ドキュメント(SwitchBotApiDocuments.md)に記載されているデバイスと、本アプリにおける対応状況(〇 / △ / ? / ×)の一覧は、Device Support Matrix / 対応デバイス一覧 を参照してください。
- SwitchBot 公式モバイルアプリから Cloud API の Open Token と Secret Key を取得します。
(「クラウドサービス」→ 開発者向けメニュー。詳しくは SwitchBot の公式ドキュメントを参照してください。) - アプリを起動します。
- パッケージ済みバイナリをお持ちの場合:インストーラ等から通常のデスクトップアプリとしてインストール・起動します。
- ソースコードから起動する場合は、後述の「開発者向けセットアップ」を参照してください。
- 画面上部のタブから
Settingsを開きます。 - Open Token と Secret Key を入力し、
Validate and Saveボタンを押します。- 検証に成功すると、認証情報がローカルに保存され、アプリから SwitchBot Cloud API にアクセスできるようになります。
Clear Stored Credentialsで保存済みの認証情報を削除できます。
- 必要に応じて以下を設定します。
- Polling Interval:物理デバイスのステータスを定期的に取得する間隔(秒)。
0にするとポーリングを無効化。 - Theme:
Light/Dark/Follow System(OS のテーマに追従)。 - Language:
English/Japanese。
- Polling Interval:物理デバイスのステータスを定期的に取得する間隔(秒)。
Devicesタブを開きます。- デバイス一覧からステータスを確認し、詳細画面を開いてより詳細な情報を確認できます。
- 対応している物理デバイスでは、ON/OFF や位置・モード変更などの操作が可能です。
- 赤外線リモコンについては、登録済みのカスタムコマンドを UI から実行できます。
Scenesタブでは:- SwitchBot Cloud 上のシーン一覧を取得し、
- ワンクリックでシーンを実行できます。
git clone https://github.com/0suu/SwitchBotController.git
cd SwitchBotController
npm installnpm run devVite (renderer) と Electron (main) が並行起動します。
起動後、Settings 画面から API Token / Secret を登録・検証してください。
開発モードではなく、ビルド済みアプリとして起動したい場合は、先にビルドを行ってから npm run start を実行します。
npm run build
npm run startnpm test # 単体テスト
npm run test:coveragenpm run build # renderer と main のビルド
npm run package # 各プラットフォーム向けインストーラを release/ に出力macOS / Linux 向けビルドでは assets/icon.icns と assets/icon.png が必要です(存在しない場合は独自のアイコンに差し替えてください)。
Electron Builder の設定 (package.json の build フィールド) により、アプリ ID や配布ターゲット、アイコンなどが制御されます。
依存ライブラリのライセンス一覧は npm run build:licenses(npm run build 内で自動実行)で build/licenses/THIRD_PARTY_LICENSES.txt に生成され、ルートの LICENSE と共にインストーラへ同梱されます。依存パッケージを更新した際はこのスクリプトを再実行してください。
- Node.js 20 以上推奨(Electron 36 ベース)
- npm
- SwitchBot アカウントの API Token / Secret(アプリ内「Settings」で入力・検証)
src/main/… Electron メインプロセス。SwitchBot API への IPC ハンドラとelectron-storeによる設定・認証情報の保存を行います。src/preload/… コンテキスト分離された bridge (electronStore/switchBotBridge) を公開します。src/renderer/… React + Vite フロントエンド。デバイス一覧 / 詳細 / シーン / 設定画面を実装しています。src/api/… SwitchBot API の型定義とラッパー。
electron-store で API トークンとシークレットを保存しています。
暗号化されずローカルに保存されます。
ISC License

