もみあげあしめ

組み込みとかIoTとか、いろいろ

お天気お知らせシステムを作る #2

季節の変わり目は気温の変化も激しい。

f:id:shima_nigoro:20160911211354p:plain:h300

着る服を間違えないために、明日の気温を知らせるシステムを作ろうと思ったのである。
#この記事は、過去に作ったお天気お知らせシステムを改良した内容をまとめたものです。

システム構成

ハードウェア

ソフトウェア

システム概要 - 天気・気温取得部

Weather Hacks - livedoor 天気情報 からお天気情報を取得します。

地域別のID番号を取得する

1次細分区定義表 - livedoor 天気情報 から住んでいる地域を探してIDを特定します。
例えば、東京は「130010」、大阪は「270000」、名古屋は「230010」、福岡は「400010」。

JSON形式のデータを取得して、整形する

とりあえず、前回のスクリプトを修正して気温も取れるようにしてみた。
下記を LWWS.py という名前で保存する。
各自の環境に合わせて変更して使うパラメータは下記とおり。

パラメータ 設定できる値
CITY_ID 地域別のID番号
SAVE_FILE_PATH 一時的に保存するJSONデータのファイル名

・実行すると次のような出力が得られる

pi@raspberrypi:~ $ python LWWS.py
明日の天気は曇のち雨です。最高気温は27度、最低気温は22度です。


システム概要 - 音声出力部

【ネタ】自動おかえりシステムを作る - もみあげあしめ で使ったスクリプトを再利用する

Open JTalk のインストール

・入っていなければ下記コマンドでインストール

sudo apt-get install open-jtalk open-jtalk-mecab-naist-jdic

音声出力用スクリプト

下記を jtalk.sh という名前で保存する。
※ mei_happy.htsvoice はこちらのものを利用させていただいています。

・お天気取得用のスクリプト LWWS.py と連携させると、音声でお天気をお知らせしてくれる。

pi@raspberrypi:~ $ python LWWS.py | sh jtalk.sh


システム概要 - 自動お知らせ部

・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 3 Model B (Element14)

JVC SP-A230-W ポータブルスピーカー ホワイト

JVC SP-A230-W ポータブルスピーカー ホワイト


補足

一応、今日・明日・明後日までの天気は取得できる。
気温は文字列で「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)