はじめに
スマートホーム化第2弾です!今回は光目覚ましを作ってみたいと思います。
Raspberry Pi zero WHとSwitchBotのテープライトを買ってみました〜!
私はとても寝起きが悪いので、光を徐々に明るくすることで自然にスッキリ起きられるところを目指します!!
必要なもの
- SwitchBotテープライト
- Raspberry Pi
- microSDカード
- microUSBケーブル
準備
テープライトの設置
テープライトの背面にあるシールをはがして、設置したいところに貼り付けます。
5mあるので、必要に応じて切断します。
今回はデスクとベッドにつけてみました!
かっこいい!!!
色のレパートリーが沢山あるので、気分によって変えたりしても楽しそうです。
Raspberry Piの準備
Raspberry Pi Imagerのインストール
公式サイトからRaspberry Pi Imagerをダウンロードします。
microSDカードをPCに接続した状態で、アプリを起動します。
OSは「Raspberry Pi OS(32-bit)」を選択し、右下の設定アイコンをクリックします。
以下の設定で保存します
- SSHを有効(パスワード認証を使う)
- ユーザー名とパスワードを設定
- ※2022年版のRaspberry Pi OSではユーザー、パスワード設定が必須になったみたいです
- ロケール設定
ストレージはmicroSDカードを選択し、「書き込む」ボタンを押します。
10分くらい経つと書き込みが完了します。
SSH有効化
設定に使うファイルはこちらを使用させていただきました。
ダウンロードしたzipファイルを解凍すると、以下のファイルがあります。
wpa_supplicant.confを開き、WifiのSSIDとパスワードを入力します。
sshファイルとwpa_supplicant.confをmicroSDカードに入れて準備は完了です。
Raspberry Piの起動
Raspberry PiにmicroSDカードを差し込み、microUSBケーブルで電源と接続します。
(無線接続できるようになっているので、PCと接続しなくても大丈夫です)
点滅が消えたら、PCでターミナルを立ち上げ、以下のコマンドを入れます。
ssh pi@raspberrypi.local
(yes/no[fingerprint])が出たらyesと入力
passwordを聞かれたら、↑で設定したパスワードを入力
Pythonのプログラムを動かす
vi auto_light.py
で以下のコードを保存します
import requests
import json
import sys
import time
import datetime
def getLightId():
response = requests.get(
"https://api.switch-bot.com/v1.0/devices", headers=header)
devices = json.loads(response.text)
deskLightId = [device["deviceId"] for device in devices['body']
['deviceList'] if "デスクライト(アプリで登録したデバイス名)" == device['deviceName']]
bedLightId = [device["deviceId"] for device in devices['body']
['deviceList'] if "ベッドライト(アプリで登録したデバイス名)" == device['deviceName']]
lightList = deskLightId + bedLightId
return lightList
if __name__ == "__main__":
wakeUptime = sys.argv[1]
print(wakeUptime, "時に起きたいな〜")
header = {"Authorization": "(Switchbotのトークン)"}
try:
while True:
now = datetime.datetime.now()
if now.hour == int(wakeUptime) - 1:
lightList = getLightId()
for light in lightList:
url = "https://api.switch-bot.com/v1.0/devices/" + light + "/commands"
brightness = {
"command": "setBrightness",
"parameter": str(100*now.minute/60),
"commandType": "command"
}
requests.post(url, headers=header,
data=json.dumps(brightness))
print("ライトがついたよ!")
elif now.hour == int(wakeUptime) + 1:
lightList = getLightId()
for light in lightList:
url = "https://api.switch-bot.com/v1.0/devices/" + light + "/commands"
off = {
"command": "turnOff",
"parameter": "default",
"comandType": "command"
}
requests.post(url, headers=header, data=json.dumps(off))
print("ライトが消えたよ!")
else:
print("時間外だよ!")
time.sleep(60)
except KeyboardInterrupt:
sys.exit(0)
python auto_light.py 8
で実行!(8のところは起きたい時間を入力)
起きたい時間の1時間前から徐々に電気が明るくなり、起きたい時間の1時間後に自動で電気が消せるようになりました!
最後に
今回はRaspberry Piでpythonのコードを実行するだけでしたが、
カメラやセンサをつけてAIと組み合わせてみても面白そう!!夢がひろがりますね〜!
(明日はスッキリ起きられるといいな…)
参考資料
【初心者向け】ラズパイの初期設定をするよ【win/mac対応】
2022年版のRaspberry Pi OSではユーザー、パスワード設定が必須に
【SwitchBot】API を使って Python でライトをいじってみた