LoginSignup
5
6

More than 5 years have passed since last update.

時報をGoolge Homeに喋らせる(明るい時だけ)

Last updated at Posted at 2019-05-05

image.png

ラズパイとGoogle Homeを使って30分に一回、時報をGoogle Homeで喋らせるようにしてみました。Macだとこういう機能がありますが、Macなしでできると便利かなと思ってやってみました。寝ているときに鳴ると困るので、照度センサーを使って明るいときだけ発動するようにしました。

使用機材

  • 照度センサー: BH1750 (I2Cインターフェース)
  • Raspberry PI
  • Google Home Mini

照度センサーの使用方法はRaspberry Pi3で照射量を取得する(BH1750FVI)を参考にさせていただきました。

配線図

BH1750_ブレッドボード.png

ADDRをGNDに落とすと、I2Cのアドレスは0x23になります。

現在時刻の取得

現在時刻はシェルコマンドで取得して、Pythonスクリプト経由でGoogle Homeへ投げます。

/home/pi/programs/now.sh
hh=$(date "+%k")
mm=$(date "+%-M")

if [ ${mm} = "0" ]; then
    text=${hh}時です。
else
    text=${hh}${mm}分です。
fi

python3 /home/pi/programs/say.py ${text}

明るいときだけGoogle Homeを喋らせる

照度センサーから明るさ(ルクス)を元に、明るいときだけGoogle Homeを喋らせるます。あらかじめgoogle-home-notifierをセットアップしておきます。セットアップ方法はこちらを参考にしてください。

/home/pi/programs/say.py
import smbus
import sys
import os

def say(text):
    # 明るさが30ルクス以上の場合に発話する
    if lux() > 30:
        os.system('curl -X POST -d "text=' + text + '" http://pi@raspberrypi0.local:8091/google-home-notifier')

def lux():
    bus = smbus.SMBus(1)
    addr = 0x23
    data = bus.read_i2c_block_data(addr, 0x11)
    lux = data[1] * 10
    return lux

if __name__ == '__main__':
    args = sys.argv
    text = args[1]
    say(text)

cronに設定する

毎時0分と、30分にシェルスクリプトを起動します。明るいときだけと言っても、深夜に鳴るとさすがにウザいので、7時〜24時の間だけ動作するようにcronを設定します。

$ crontab -l
0,30 0,7-23 * * * /home/pi/programs/now.sh

これで完成です。

参考

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6