min117の日記

初期desireもち。趣味Mac,メインFedora,仕事xp。

Python3で天気予報を取得→単語分析して「雨の予報」だったらRaspberryPi2でLチカする

ハピタス登録で1,000円分になるURL

 

明日の天気予報が雨だったらLチカさせたい

まずは天気予報

このソースまんま写す

www.gis-py.com

 

東京地方の天気

$ vim myTENKI.py

実行

$ python3 myTENKI.py

確認

$ cat myTENKIreport.csv

オッケー取れてる。

 

伊豆諸島とか要らないから、東京地方のみに絞る。

$ cat myTENKIreport.csv | egrep '.*都道府県.*|.*東京地方.*'

今日、明日、明後日の3日間の予報が出るらしい。

 

今日が 2027/5/7 だから 明日2027-05-08 の予報に絞りたい

 

今日はこれ。

$ date +"%Y-%m-%d"

 

明日(1 day)はこれ

$ date +"%Y-%m-%d" --date '1 day'

 

明日の日付grep

$ cat myTENKIreport.csv | egrep '.*都道府県.*|.*東京地方.*' | grep $(date +"%Y-%m-%d" --date '1 day')

 

天気部分だけ取り出す。

$ cat myTENKIreport.csv | egrep '.*都道府県.*|.*東京地方.*' | grep $(date +"%Y-%m-%d" --date '1 day') | awk -F, '{print $6,$7,$8}'

 

mecabに食わせる

$ cat myTENKIreport.csv | egrep '.*都道府県.*|.*東京地方.*' | grep $(date +"%Y-%m-%d" --date '1 day') | awk -F, '{print $6,$7,$8}' | mecab -d /usr/lib64/mecab/dic/mecab-ipadic-neologd/ 

 

名詞だけに絞る。

$ cat myTENKIreport.csv | egrep '.*都道府県.*|.*東京地方.*' | grep $(date +"%Y-%m-%d" --date '1 day') | awk -F, '{print $6,$7,$8}' | mecab -d /usr/lib64/mecab/dic/mecab-ipadic-neologd/  | grep 名詞

うーん、なんか見づらいな。

 

mecabやめてみる

$ cat myTENKIreport.csv | egrep '.*都道府県.*|.*東京地方.*' | grep $(date +"%Y-%m-%d" --date '1 day') | awk -F, 'BEGIN{OFS=","}{print $5,$6,$7,$8}'

これだな。シンプルに日付と天気予報の文字列だけカンマ区切りにしてファイルに落とす。このほうが後処理の使い回しがいい。

 

この処理をbashスクリプトにしちゃえ。

$ vim myTENKIreportGREP.sh

確認

よし。名前が長ったらしいけど、まずはこれでいいや。

 

これを冒頭のmyTENKI.pyの処理直後にやるように追記しとく。subprocessでシェル動かしちゃえ

$ vim myTENKI.py

冒頭でsubprocessインポートして…

main()の下で実行しちゃえばよかろう。動くでしょ。

いよいよmyTENKi.py

天気を取得してファイルに落とせるか

$ python3 myTENKI.py

あっさりできた。明日の日付とその天気予報の書かれたmyTENKIreportGREPed.txtができがった。

あとで毎晩0時とかでcronしとけば明日の天気を同.txtに落とすはず。

 

明日の天気が雨だったらラズパイでLチカ

あとはラズパイでmyTENKIreportGREPed.txtを読んで「雨」って文字列があったらLチカさせればよかろう。

 

さっきのmyKINRI.pyは母艦のfedoraでcron定期実行させるから、その結果ファイルmyTENKIreportGREPed.txtラズパイ(今回はpi2を使用)のデスクトップにコピーするcronをpi2に書く

# 20230508 明日の天気予報が雨だったらLチカ
3 0 * * *        pi     cd /home/pi/Desktop/ & cp /volumes/PT3/myTENKIreportGREPed.txt /home/pi/Desktop

 

cronでコピーできたかな?pi2で確認。

$ ls -sharlt

0時3分にバッチリコピーができている。順調すぎてコワイ。

 

こっからはChatGPTフル活用。

test2.txt に「2023-05-08T00:00:00+09:00,雨 昼前 から くもり 所により 朝 まで 雷を伴い 激しく 降る,南の風 後 北の風 やや強く 
23区西部 では 南の風 強く,2メートル 後 1.5メートル」といった文章(つまり天気予報)がこういった文体で書かれています。

このファイルを読み込んで、「雨」ないし「降る」という単語が含まれていたら、warning2.py というスクリプトを実行するためのpython3のコードを示して

うっは。一瞬かよ。どんだけ生産性高いんだChatGPT。

 

実装してみよう。

$ vim myLED02TENKI.py

 

Lチカ実行!

$ python3 myLED02TENKI.py

ピッカー!




 

 

 

その買うを、もっとハッピーに。|ハピタス