Open3
micropythonでhttpsリクエストは送れない?
やりたいこと
ESP32で家のスマートスイッチをオンオフするような機構を作っています。
firebase functionsでスマートスイッチをオンオフするAPIを作成しました。
以下のURLにアクセスすると、スイッチがオン/オフ切り替えられます。
https://*******.cloudfunctions.net/turnLivingLight?button=change
さて、ESP32からこのURLを叩こうと以下のようなコードを作成しました。
import urequests as requests
# wifi接続の内容は割愛
wifi_connect(ESSID,PASSWORD)
url = 'https://***********************/turnLivingLight?button=change'
res =requests.get(url)
しかしながら、urequestではこのURLを叩けないようです。
Traceback (most recent call last):
File "<stdin>", line 29, in <module>
File "urequests.py", line 116, in get
File "urequests.py", line 62, in request
OSError: 16
ちなみにurequest自体が動いていることは、micropythonのサンプルコードにある以下のurlで確認済みです。
url='http://www.baidu.com/'
原因を調べたところ、どうやらurequestはsslウェブサイトに対応していないっぽいです。
urequestでfirebase functionsの関数を叩ける方法はあるのでしょうか
補足
httpsだからといって必ずしも動かないわけではなさそうです。
sslの種類の問題なのか。。。
動く
url='http://www.baidu.com/'
url = "https://www.example.com/"
url = "https://www.google.com"
動かない
url = 'https://rss-weather.yahoo.co.jp/rss/days/4410.xml'
url = 'https://**********cloudfunctions.net/turnLivingLight?button=change'
MicroPythonでは(u)socketと(u)sslを使うのかなと思いました。
あと、この場合のHTTPSでも動くURLってHTTPSが動かなかったらHTTPにリダイレクトしてくれるのではないかと。