SwitchBotとCloudflare Workersを使用した、帰宅時間に合わせてエアコンを自動制御するシステム
- 自動温度調整: 帰宅時刻に合わせて最適なタイミングでエアコンを起動
- スケジュール管理: 日常的な帰宅時刻と特別な日の設定
- 温度監視: SwitchBot温湿度計による室温の常時監視
- Discord通知: エアコン稼働時の自動通知
- 室温32℃ → 目標28℃(4℃差)
- 16:00に自動でエアコン起動
- 18:00帰宅時には快適な28℃
- カレンダーで個別設定
- その日だけの特別スケジュール
- フロントエンド: React Router(Cloudflare Pages)
- バックエンド: Cloudflare Workers(15分間隔で定期実行)
- データ保存: Cloudflare KV
- IoTデバイス: SwitchBot(温湿度計・エアコン操作)
- 通知: Discord Webhook
├── docs/ # 設計ドキュメント
├── app/ # React フロントエンド
├── workers/ # Cloudflare Workers(制御ロジック)
└── lib/ # 共有ライブラリ
pnpm run dev # 開発サーバー起動
pnpm run build # 本番ビルド
pnpm run preview # 本番ビルドのプレビュー
pnpm run deploy # Cloudflareへデプロイpnpm run lint # ESLintによるコードチェック
pnpm run format # Prettierによるフォーマットチェック
pnpm run fix # format:fix + lint:fix
pnpm run typecheck # TypeScriptの型チェックプロジェクトの詳細はdocs/フォルダ内の設計ドキュメントを参照してください:
- 要件定義 (
01-requirements.md) - システムの背景・目的・機能要件 - 基本設計 (
02-base.md) - システム全体のアーキテクチャ - 詳細設計 (
03-detail.md) - 実装に必要な詳細仕様
- Node.js v22+
- pnpm
- Cloudflareアカウント
- SwitchBotデバイス(温湿度計・エアコン操作用リモコン)
SWITCHBOT_TOKEN=your_switchbot_token
SWITCHBOT_CLIENT_SECRET=your_client_secret
NOTIFICATION_WEBHOOK_URL=your_discord_webhook_url
"vars": {
"METER_DEVICE_ID": "your_meter_device_id",
"AIR_CONDITIONER_DEVICE_ID": "your_ac_device_id"
}CLOUDFLARE_ACCOUNT_ID=your_cloudflare_account_id
pnpm install
pnpm run dev- スケジュール設定: 帰宅時刻を設定
- 特別日設定: 早帰り・遅帰りの日をカレンダーで個別設定
- 自動実行: 15分間隔で温度をチェックし、必要に応じてエアコンを制御