Raspberry Pi/Macを秘書代わりにしたい
毎日天気予報や今日の予定を教えてくれると、Raspberry Piを秘書代わりにできそうですね。というわけで、天気予報情報やGoogleカレンダーの予定をpythonで取得する方法を調べてみました。この後は興味のない人は退屈な宇宙語が続くので、興味ある方のみご覧下さい。
Googleカレンダーの予定通知
Macでの設定方法
私はPyenvを使ってセットアップしました。
python2系を想定していますが、多分python3でも動くでしょう。インストールしたライブラリはgoogle-api-python-client
だけです。以下コマンドでインストールできます。
$ pip install google-api-python-client
Raspberry Piでの設定方法
以下記事を参考に基本的なセットアップを完了させます。
後は、ターミナルで、以下コマンド実行して必要なライブラリをインストールします。
$ sudo apt-get install python-pip $ sudo pip install google-api-python-client
Google API登録
以降は、Mac, Raspberry Pi共通です。pythonでGoogleカレンダーの予定を取得するには、Google API ConsoleでGoogle APIのカレンダーが使えるように登録が必要となります(回数の制限はあるようですが、無料でも使えます)。
Google Calendar APIの登録方法は、以下サイトが非常に参考になりました。
お好きなPC(Raspberry PiでなくてOK)で上記サイトの設定をStep1まで実施下さい。
Step2以降は、本記事参照下さい。
Googleカレンダー予定取得
続けて、以下コマンド実行下さい。
$ wget https://raw.githubusercontent.com/karaage0703/karaage-echo/master/get_gcal_schedule.py $ python get_gcal_schedule.py
実行すると、自動的にブラウザが立ち上がり、以下のような認証画面に遷移しますので、ログインしてOKをクリックしGoogle Calendarへのアクセスの許可を与えます。下記画面はRaspberry Piのものですが、Macでも基本的には同じ要領でOKです。
認証が完了すると、実行した当日のGoogleカレンダーの予定を取得することができます。デフォルトでは、メインのカレンダーの情報のみ取得されますが、マイカレンダーの情報を取得したい場合は、google calendarにアクセスし、カレンダーの情報から、カレンダーIDを確認します(以下表示のIDです)。
あとは、get_gcal_schedule.py
の70行目のcalendarId
の値をIDのアドレスに書き換えてやることで、好きなカレンダーの情報を取得できます。私の場合は、家族で共有しているGoogleカレンダーを設定しています。
家族でGoogleカレンダー共有する方法に関しては、下記記事参照下さい。
あとは、もう一度プログラムを実行すると、予定が取得できます。
$ python get_gcal_schedule.py 07時30分に ゴミ出し
Googleへの認証を解除したくなった場合(他のアカウントで連携したくなったときなど)は、以下にログインして解除しましょう。
天気予報通知
pythonの環境は、Googleカレンダーの予定通知と同じままでOKです。ターミナルで、以下コマンドでファイルダウンロードしてください。
$ wget https://raw.githubusercontent.com/karaage0703/karaage-echo/master/get_weather.py
以下コマンド実行すれば、天気予報が表示されます。Livedoor提供の天気予報WebAPIを使っています。
$ python get_weather.py 今日の天気は晴れだよ。 明日の天気は晴れだよ。 今日の予想最高気温、不明。予想最低気温、不明だよ
基本的には参考サイトの情報のままなのですが、都市を自分の住んでいる都市(名古屋)に変えました。都市のidは以下を参照しました。
livedoor Weather Hacks APIで、お天気データのJSONを取得するための1次細分区(cityタグ)の地域id一覧まとめ | 現役Web屋のアフィリエイト
プログラム的には、LivedoorのAPIの情報、たまにnull
が混じっていて、プログラムが落ちてしまう時があるので少しケアしています。pythonでの2次元配列のチェックの仕方、もっとうまい方法あれば誰かこっそり教えて下さるか、GitHubにPRいただけるとありがたいです。
補足
本記事、2018年9月時点でそのままでは動かないという指摘がありました。まだ私の方で確認はできていませんが、うまくいかない方は、以下のリベル (id:liberston)さんの記事を参考にしてみて下さい。
まとめ
pythonを使って、天気予報情報・Googleカレンダーの予定を取得できました。音声認識や音声合成を組み合わせると、自分だけの秘書ロボットができそうですね。というわけでそのうち作っていこうかなと思います。
今回使用したソフトなどは、以下のGitHubのリポジトリにまとめていますので、よろしければ参考にしてください。
GitHubって何?って人は以下参照下さい。
参考リンク
Raspberry Piに現在時刻と、天気をしゃべらせてみた(Python): Raspberry Piでやってみた
お天気Webサービス仕様 - Weather Hacks - livedoor 天気情報
関連記事
変更履歴
2018/09/30 補足を追記