【Arduino/ESP8266】コロナデータAPIからJSONデータを取り出してOLEDに表示する

Arduino

JSONをGET⇒パース⇒値取り出し⇒OLED表示

こんにちは、くろべこです。

さて、今回は実際にWebAPIを活用したIoT電子工作的な事をやってみますよ!

内容はタイトルにもある様にクライアントとしてHTTPサーバーにアクセスしてJSONデータをGETします。そして、GETしたJSONデータを逆シリアル化を行いパースさせて値を取り出します。取り出した値はOLEDに表示するってやつですね!!

まあ、でも前回紹介した【HTTPクライアント】【ArduinoJson】の記事を合体させて、OLEDを追加しただけですけどね(笑)

【Arduino/ESP8266】HttpClientを使ってHTTPSをGETする
前回に引き続きHttpClient記事になります。今回はHTTPSのウェブページにアクセスしてデータをGETしていくのですが、基本的な作法はHTTPと変わりません。変わるのがフィンガープリントという認証が必要なってくるんですね。本記事では認証の方法解説と実際のコードを交えて説明していきたいと思います。
【Arduino】Arduino環境下でJSONをパース(逆シリアル化)して値を取り出してみる
本記事ではJsonフォーマットからの逆シリアル変換(Deserialization)方法を取り上げています。ArduinoJsonのバージョンはV6を対象にしていますのでお気を付けください。逆シリアル変換することで特定の文字列を取り出すことが可能になります。

これが出来ると何が出来るかというと、、、ネット上で公開されている多種多様なデータ(WebAPI)を思うがままに操ることが出来ます。ワクワクしてきませんか!?

用意するものはESP8266OLED(SSD1306)だけなので2000円いかないくらいで揃えられると思います。基本的にアマゾンで揃えられるので、持っていない方はポチって見てはいかがでしょうか?

 

 

 

 

 

コードの紹介と解説

(注)本コードではバージョン6のArduinoJsonを使用しています。バージョン違いの場合動かない可能性がありますのでご注意ください。

コード構成

  1. ヘッダファイル/定数/変数定義
  2. シリアル通信設定
  3. WiFi通信設定(ステーションモード)
  4. OLEDイニシャライズ
  5. HttpClientで指定WebAPI(HTTPS)からJSONデータGETリクエスト
  6. JSONの逆シリアル化&文字抽出
  7. OLEDに値表示

いやー、ずらずらと書いていますがJSONデータの値抽出とOLEDへの描画コードでだいぶ容量を食ってしまいました、、、

ESPに接続するOLEDは以下のような配線をしてみてください。

コードの書き込みが終了しましたら、シリアルモニタを開きまして正常にWiFiに接続してHTTPをGET出来ているか確認してみてください。正常にGET出来ている場合は【code: 200】が返ってきます。もしエラーがある場合はエラーコードが返ってくるので、以下のコード表から何のエラーか確認してみてください。エラーの場合は負数が返ってくるようです。

リンク:ESP8266HTTPClient.h

<<シリアルモニタ>>


JSON逆シリアル化&OLED表示

そして、JSONデータをGET出来ましたら、deserializeJson(doc, json)でJSONデータをオブジェクトデータに逆シリアル化します。

そして、逆シリアル化されたJSONオブジェクトから値を取り出すためにはキーを指定して取り出す感じです。たとえば、long date = doc[“date”]こんなかんじ。

このように値抽出をひたすらやって、OLEDに表示させると以下のようになります。

いかがでしょうか、WebAPIをOLEDに表示させることが出来ました。

これが出来たので、あとはお好みのAPIを使っていろんなことが出来ますね!!

では、今回はこんなところで!

 

コメント

タイトルとURLをコピーしました