はじめに
外部からの接点を受けてメールで通知することができないかと考えていたらRaspberrypi Pico Wでできそうな気がしたので、試しにpico Wでメールを送信してみました。
基本的には下記のサイトを参考にしています。
使用するもの
・Raspberry Pi Pico W
・ISP契約時についてきたメールのアカウント
gmailを使用した作例はいくつか出てきますが、ここはあえてgmailを使用せず。ISP契約時についてきたメールアカウントを使ってみたいと思います。
Raspberry Pi Pico Wは大阪、日本橋の部品屋さんで買ってきたものを使用しました。1個1200円くらいで安価です。
Raspberry Pi Pico Wの初期化でつまずく
BOOTSELボタンを押してUSBを接続しUF2ファイルを書き込みますが、Wがつかない方のUF2ファイルを書き込んでしまいました。Lチカもうまくいかずかなり悩みましたが、Pico W用のUF2を書き込みするとあっさり動きました。
W無しのPicoしか使ったことがなかったためこの点は落とし穴でした。
umail.pyの作成
Lチカなどで動作確認ができたら下記のサイトからソースコードをコピーして
Thonnyで新規作成した画面に貼り付けます。
参考にしているサイトでは、
「コピペをしたらCtrl+Fで検索画面を開き「ussl」と検索、すべて「ssl」に置き換えてください。」と記載がありましたが書き換えなくても動作しました。
このファイルは「umail.py」というファイル名でPico Wの本体に保存しておきます。
Thonnyで「名前を付けて保存」を押して写真の画面で「Raspberry Pi Pico」を押すとPico Wの本体に保存されます。
main.pyの作成
ここまできたら実際にメールを送るためのコードを書きます。
テストのためのコードのため、できる限りシンプルにしています。
下記のumailの例を参考に作成していきます。
WiFi接続の部分はこちらのQiitaの記事を参考にしています。
@IoriGunji(Iori Gunji)さんありがとうございます。
各パラメーターは下記の通りです。
main.pyの「***」の部分に実際のパラメーターをいれて使用してください。
wifiSSID : WiFiのSSIDを入力
wifiPW : WiFiのパスワードを入力
SMTPserver : 使用するメールアカウントのSMTPサーバー名を入力
uname : メールアカウントのユーザー名を入力
mailpass : メールアカウントのパスワードを入力
mailto : 送信するメールの宛先を入力
import umail
import network
import time
# WiFi 関係の設定
wifiSSID = '***'
wifiPW = '***'
# メール関係の設定
SMTPserver = '***'
uname='***'
mailpass='***'
mailto = '***'
# WiFi の接続
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(wifiSSID, wifiPW)
while wlan.isconnected() == False:
print('Connecting to Wi-Fi router')
time.sleep(1)
wlan_status = wlan.ifconfig()
print('Connected!')
print(f'IP Address: {wlan_status[0]}')
print(f'Netmask: {wlan_status[1]}')
print(f'Default Gateway: {wlan_status[2]}')
print(f'Name Server: {wlan_status[3]}')
# メールの送信
print('メール送信中...')
smtp = umail.SMTP(SMTPserver, 587, username = uname, password = mailpass)
smtp.to(mailto)
smtp.write("Subject: メールの送信テスト\n\n")
# メール本文
smtp.send("本日は晴天なり、本日は晴天なり\neメールの送信テストです。\n\nRaspberry Pi Pico Wから送信")
smtp.quit()
print('メール送信完了')
main.pyが作成できたら、pico Wの本体に保存します。
Thonnyで「現在のスクリプトを実行」を押すか、pico Wに再度通電するとメールが送信されるはずです。