ハピタス登録で1,000円分になるURL
明日の天気予報が雨だったらLチカさせたい
まずは天気予報
このソースまんま写す
東京地方の天気
$ 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}'
これだな。シンプルに日付と天気予報の文字列だけをカンマ区切りにしてファイルに落とす。このほうが後処理の使い回しがいい。
$ 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
ピッカー!