季節の変わり目は気温の変化も激しい。
着る服を間違えないために、明日の気温を知らせるシステムを作ろうと思ったのである。
#この記事は、過去に作ったお天気お知らせシステムを改良した内容をまとめたものです。
システム構成
ハードウェア
- Raspberry Pi 3 Model B
- スピーカ
- オートパワーオン・オフ機能がついている JVC SP-A230-W ポータブルスピーカー が便利
ソフトウェア
- Open JTalk
- Python 2.7
- シェルスクリプト
- cron
システム概要 - 天気・気温取得部
Weather Hacks - livedoor 天気情報 からお天気情報を取得します。
地域別のID番号を取得する
1次細分区定義表 - livedoor 天気情報 から住んでいる地域を探してIDを特定します。
例えば、東京は「130010」、大阪は「270000」、名古屋は「230010」、福岡は「400010」。
システム概要 - 音声出力部
【ネタ】自動おかえりシステムを作る - もみあげあしめ で使ったスクリプトを再利用する
Open JTalk のインストール
・入っていなければ下記コマンドでインストール
sudo apt-get install open-jtalk open-jtalk-mecab-naist-jdic
システム概要 - 自動お知らせ部
・cron を使って決められた時間にお天気お知らせシステムが動作するように設定する。
crontab -e
・一番下に下記内容を書き込んで、23時40分と50分くらいに音声でお知らせしてもらう
40,50 23 * * * python /home/pi/LWWS.py | sh /home/pi/jtalk.sh
※cron使うときは絶対パスを使うほうがいい。
おわりに
今年はエルニーニョ現象が観測されているので、しばらく暑い日が続くことに気づいた。
Raspberry Pi 3 Model B (Element14)
- 出版社/メーカー: RASPBERRY-PI
- メディア: Personal Computers
- この商品を含むブログを見る
- 出版社/メーカー: JVCケンウッド
- 発売日: 2010/11/18
- メディア: エレクトロニクス
- この商品を含むブログを見る
補足
一応、今日・明日・明後日までの天気は取得できる。
気温は文字列で「XX度」形式で返す。取得できない場合は「不明」が返る。
#明後日の気温や今日の最低気温が取得できないことがある。
・関数の呼び方一覧
#地域別のID番号(CITY_ID)を指定して初期化する lwws = LWWS(CITY_ID) #今日の天気・最高気温・最低気温 lwws.GetWeather(TODAY) lwws.GetMaxTemp(TODAY) lwws.GetMinTemp(TODAY) #明日の天気・最高気温・最低気温 lwws.GetWeather(TOMORROW) lwws.GetMaxTemp(TOMORROW) lwws.GetMinTemp(TOMORROW) #明後日の天気・最高気温・最低気温 lwws.GetWeather(DAY_AFTER_TOMORROW) lwws.GetMaxTemp(DAY_AFTER_TOMORROW) lwws.GetMinTemp(DAY_AFTER_TOMORROW)