Raspberry Pi Pico WでWIFI接続して、その場所の降水確率を得ます。

Raspberry Pi Pico Wの無線LANモジュールでネットワークに接続してその場所の降水確率を得ます。

Raspberry Pi Pico Wの無線LANモジュールでネットワークに接続してその場所の降水確率を得ます。

Raspberry Pi Pico W

無線LANモジュールは「CYW43439」です。このモジュールは、Wi-FiとBluetoothの機能を統合しており、IoTデバイスや組み込みアプリケーションに広く使用されています。
シルバーのシールドで覆われているチップがCYW43439です。

MicroPythonプログラム

import time
import network
import urequests as requests

#無線LANへの接続
def connect_to_wifi(ssid, password):
    wlan = network.WLAN(network.STA_IF)
    wlan.active(True)
    wlan.connect(ssid, password)

    max_wait = 10
    while max_wait > 0:
        if wlan.status() < 0 or wlan.status() >= 3:
            break
        max_wait -= 1
        print('接続待ち...')
        time.sleep(1)

    if wlan.status() != 3:
        raise RuntimeError('ネットワーク接続失敗')
    else:
        print('接続完了')
        status = wlan.ifconfig()
        print('IPアドレス = ' + status[0])

# 自宅Wi-FiのSSIDとパスワードを入力
ssid = 'YOUR NETWORK SSID'
password = 'YOUR NETWORK PASSWORD'

# Wi-Fiに接続
connect_to_wifi(ssid, password)

# Web APIのURLを作成
city_ID = "130010" # 130010は東京
# 天気予報APIのURL組み立て
url = "https://weather.tsukumijima.net/api/forecast/city/" + city_ID

# 指定したURLから天気情報を取得
response = requests.get(url)
weather_json = response.json()# データをPythonの辞書型に変換
# 今日の降水確率を取得 0:今日 1:明日 2:明後日('T12_18'は12時から18時の時間帯)
rain_probability = weather_json['forecasts'][0]['chanceOfRain']['T12_18']

#降水確率が取れない場合の処理
if rain_probability == "--%":
    print("no value")# 降水確率が取得できない場合のメッセージ
else:    
    print("降水確率 {}".format(rain_probability))# 降水確率を表示

天気予報 API(livedoor 天気互換)を使って気象データーを取得しています。(個人の方が作っているようです。ありがたいです。)
Wi-FiのSSIDとパスワードを入力しcity_ID = “130010” # 130010は東京を設定します。特にアクセスするためのアカウントなどは必要ないようです。
送られてくるデーターは次のようになっています。

{
    "publicTime": "2024-12-03T11:00:00+09:00",
    "publicTimeFormatted": "2024/12/03 11:00:00",
    "publishingOffice": "気象庁",
    "title": "東京都 東京 の天気",
    "link": "https://www.jma.go.jp/bosai/forecast/#area_type=offices&area_code=130000",
    "description": {
        "publicTime": "2024-12-03T10:35:00+09:00",
        "publicTimeFormatted": "2024/12/03 10:35:00",
        "headlineText": "",
        "bodyText": " 大陸の高気圧が本州に張り出しています。\n\n 東京地方は、晴れています。\n\n 3日は、大陸の高気圧が張り出しますが、南下する気圧の谷や湿った空気の影響を受ける見込みです。このため、晴れるでしょう。伊豆諸島では雨や雷雨となる所がある見込みです。\n\n 4日は、引き続き高気圧が張り出しますが、気圧の谷や湿った空気の影響を受けるでしょう。このため、晴れ朝晩曇りとなる見込みです。伊豆諸島では雨や雷雨となる所があるでしょう。\n\n【関東甲信地方】\n 関東甲信地方は、おおむね晴れています。\n\n 3日は、大陸の高気圧が張り出しますが、南下する気圧の谷や湿った空気の影響を受ける見込みです。このため、晴れや曇りで、雨の降る所があるでしょう。また、伊豆諸島では雷を伴う所がある見込みです。\n\n 4日は、引き続き高気圧が張り出しますが、気圧の谷や湿った空気の影響を受けるでしょう。このため、晴れや曇りとなる見込みです。また、伊豆諸島では雨や雷雨となる所があるでしょう。\n\n 関東地方と伊豆諸島の海上では、3日はうねりを伴い波が高く、4日は波が高い見込みです。船舶は高波に注意してください。",
        "text": " 大陸の高気圧が本州に張り出しています。\n\n 東京地方は、晴れています。\n\n 3日は、大陸の高気圧が張り出しますが、南下する気圧の谷や湿った空気の影響を受ける見込みです。このため、晴れるでしょう。伊豆諸島では雨や雷雨となる所がある見込みです。\n\n 4日は、引き続き高気圧が張り出しますが、気圧の谷や湿った空気の影響を受けるでしょう。このため、晴れ朝晩曇りとなる見込みです。伊豆諸島では雨や雷雨となる所があるでしょう。\n\n【関東甲信地方】\n 関東甲信地方は、おおむね晴れています。\n\n 3日は、大陸の高気圧が張り出しますが、南下する気圧の谷や湿った空気の影響を受ける見込みです。このため、晴れや曇りで、雨の降る所があるでしょう。また、伊豆諸島では雷を伴う所がある見込みです。\n\n 4日は、引き続き高気圧が張り出しますが、気圧の谷や湿った空気の影響を受けるでしょう。このため、晴れや曇りとなる見込みです。また、伊豆諸島では雨や雷雨となる所があるでしょう。\n\n 関東地方と伊豆諸島の海上では、3日はうねりを伴い波が高く、4日は波が高い見込みです。船舶は高波に注意してください。"
    },
    "forecasts": [
        {
            "date": "2024-12-03",
            "dateLabel": "今日",
            "telop": "晴れ",
            "detail": {
                "weather": "晴れ",
                "wind": "南の風 後 南西の風 23区西部 では 南西の風 やや強く",
                "wave": "0.5メートル 後 1メートル"
            },
            "temperature": {
                "min": {
                    "celsius": null,
                    "fahrenheit": null
                },
                "max": {
                    "celsius": "17",
                    "fahrenheit": "62.6"
                }
            },
            "chanceOfRain": {
                "T00_06": "--%",
                "T06_12": "--%",
                "T12_18": "0%",
                "T18_24": "0%"
            },
            "image": {
                "title": "晴れ",
                "url": "https://www.jma.go.jp/bosai/forecast/img/100.svg",
                "width": 80,
                "height": 60
            }
        },
        {
            "date": "2024-12-04",
            "dateLabel": "明日",
            "telop": "晴時々曇",
            "detail": {
                "weather": "晴れ 朝晩 くもり",
                "wind": "北の風",
                "wave": "0.5メートル"
            },
            "temperature": {
                "min": {
                    "celsius": "8",
                    "fahrenheit": "46.4"
                },
                "max": {
                    "celsius": "17",
                    "fahrenheit": "62.6"
                }
            },
            "chanceOfRain": {
                "T00_06": "0%",
                "T06_12": "0%",
                "T12_18": "0%",
                "T18_24": "0%"
            },
            "image": {
                "title": "晴時々曇",
                "url": "https://www.jma.go.jp/bosai/forecast/img/101.svg",
                "width": 80,
                "height": 60
            }
        },
        {
            "date": "2024-12-05",
            "dateLabel": "明後日",
            "telop": "晴時々曇",
            "detail": {
                "weather": "晴れ 時々 くもり",
                "wind": "北の風 後 南東の風",
                "wave": "0.5メートル"
            },
            "temperature": {
                "min": {
                    "celsius": "7",
                    "fahrenheit": "44.6"
                },
                "max": {
                    "celsius": "16",
                    "fahrenheit": "60.8"
                }
            },
            "chanceOfRain": {
                "T00_06": "20%",
                "T06_12": "20%",
                "T12_18": "20%",
                "T18_24": "20%"
            },
            "image": {
                "title": "晴時々曇",
                "url": "https://www.jma.go.jp/bosai/forecast/img/101.svg",
                "width": 80,
                "height": 60
            }
        }
    ],
    "location": {
        "area": "関東",
        "prefecture": "東京都",
        "district": "東京地方",
        "city": "東京"
    },
    "copyright": {
        "title": "(C) 天気予報 API(livedoor 天気互換)",
        "link": "https://weather.tsukumijima.net/",
        "image": {
            "title": "天気予報 API(livedoor 天気互換)",
            "link": "https://weather.tsukumijima.net/",
            "url": "https://weather.tsukumijima.net/logo.png",
            "width": 120,
            "height": 120
        },
        "provider": [
            {
                "link": "https://www.jma.go.jp/jma/",
                "name": "気象庁 Japan Meteorological Agency",
                "note": "気象庁 HP にて配信されている天気予報を JSON データへ編集しています。"
            }
        ]
    }
}

 

実行

 

降水確率を取得
rain_probability = weather_json[‘forecasts’][0][‘chanceOfRain’][‘T12_18’]
降水確率を取得する日を設定。
[‘forecasts’][0]
0:今日 1:明日 2:明後日
取得する時間帯を設定。
][‘chanceOfRain’][‘T12_18’]
(’T12_18’は12時から18時の時間帯)

自由研究

テンテン
テンテン

いろいろな場所の都市コードを調べて日時に応じて天気予報を調べてみよう。また、降水確率をいろいろな方法で知らせてみよう。

気象庁のAPIと予報区のコード

そのままでは、データが得られません。
ここに表示されているコード末尾に10、20など付加するとその地域の気象台データ得られます。