2021年8月7日土曜日

Raspberry Pi PicoからHTTPSでPOSTしてみた。

 前回Raspberry Pi PicoにLANモジュールを付けてLAN内でWebサーバのテストをしてみたけど、せっかくSSL対応のライブラリを入れたのでインターネット上のサーバーにHTTPSでPOSTしてみることに。

まずはサンプルコードをテストしてみる。
EthernetWebServer_SSLライブラリにはWebClient_SSLっていうサンプルがあって、証明書もヘッダファイルとして入っているっぽい。

とりあえずそのまま動かしてみた。前回同様、変更する場所はdefine.hのUSE_ETHERNET_ENCをtrueにしてほかをfalseにしただけ。

とりあえずSSLで通信はできてそう。

サンプルが動くことがわかったのでこのサンプルをちょっといじってLINE Notify APIを叩いて、LINEを送ってみた。
ESP-WROOM-02で作ったときみたいにinsecureでもいいんだけど今回はかんたんにトラストアンカーを作ってくれるサイトがあるらしいので(ライブラリに書いてあった)それを使用して証明書を作ってもらうことに。

まずはBearSSL Trust Anchors Generatorでnotify-api.line.meのトラストアンカーを作成する。Domains To Includeってところにnotify-api.line.meって入れて生成すると、下の方に出てくるのでそれをコピペしてサンプルのtrust_anchors.hと差し替える。

あとはサンプルのserver_host[]をnotify-api.line.meに変更して、GETしてる部分をLINE Notify用に書き換えただけ。
スケッチ貼り付けるまでじゃないと思うのでこんな感じの雰囲気で編集したということでスクショ。Tokenも直で入れちゃってるし…
これを実行すると{"status":200,"message":"ok"}が帰ってきてLineに通知が届いた。
このライブラリ、結構かんたんにHTTPSが扱えるので便利だなぁ。

サンプルがだいぶ汎用性持たせられてるっぽいのでRaspberry Pi Pico専用にスケッチを作ればもっとシンプルになるかも。
IoT的な何かをやるなら最近HTTPSが多いけどRaspberry Pi Picoのパワーを持ってしてやれば結構余裕かも。TwitterやLineのBotも普通に作れそう。WiFiならESP32やESP8266とかで直接できるようなライブラリあるのでソッチのほうがいいかも。

そういえばENC28J60自体は1MB/sぐらい出せそうらしいけど、Raspberry Pi Picoの性能だとどこまで引き出せるんだろうか?

0 件のコメント:

コメントを投稿