MicroPythonなM5StackからSORACOM HarvestのPublish APIでデータを入れる最小手順


M5Stack を手に入れました。手っ取り早くデータの可視化を行うサービスとして SORACOM Harvest を使ってみた記録です。

Wi-Fi経由で入れられるので便利でした。

論よりコード

コード上の SORACOM_INVENTORY_DEVICE_IDSORACOM_INVENTORY_SECRET_KEY の入手方法は SORACOM Harvest の Publish API を見てください。

SORACOM_INVENTORY_DEVICE_ID = ''
SORACOM_INVENTORY_SECRET_KEY = ''

import urequests
data = '{"dummy": 10}'
headers = {'x-device-secret': SORACOM_INVENTORY_SECRET_KEY, 'content-type', 'application/json'}
url = 'https://api.soracom.io/v1/devices/%s/publish' % SORACOM_INVENTORY_DEVICE_ID
resp = urequests.post(url, data=data, headers=headers)

from m5stack import lcd
lcd.clear()
lcd.setCursor(0, 0)
lcd.println(str(resp.status_code))
lcd.println(resp.text)
lcd.println("_END_")

解説

  • urequest を使って HTTP(S) POST を SORACOM Harvest の Publish API に向かって行っています
  • 結果が resp に格納されているので M5Stack の LCD に表示しています

手順

  • M5Cloud (M5Stack Web IDE) を利用できるファームウェアを M5Stack に書き込む
  • SORACOM Harvest Publish API を利用できるように SORACOM Inventory で仮想デバイスを作成し、デバイスIDとシークレットキーを払い出す
  • 仮想デバイスで SORACOM Harvest が使えるように設定する
  • コードを書いて実行

M5Cloud を利用できるファームウェアを M5Stack に書き込む

以下が参考になります。
Windows におけるハマりポイントは書込みアドレスとなる 0x1000 を自分でセットする必要があるという事くらいです。

MicroPython で HTTP リクエスト

urequest ライブラリを利用します。M5Stack 上にもありますので import すればOKです。
コーディング例は ESP32 / ESP8266 MicroPython: HTTP GET Requests が参考になりました。

ちなみに; JSON 形式の HTTP REST API のモックサービス

urequest 等をとにかく手軽に試したいときに API サービスがあると便利です。
JSONPlaceholder は、ともかく JSON を返してくれるサービスです。

SORACOM Harvest の Publish API

SORACOM のアカウントを取得した後、 デバイスIDとデバイスシークレットを使用してHarvestにデータを送信する に沿って行えば完了します。

この時にコードに書いてある SORACOM_INVENTORY_DEVICE_IDSORACOM_INVENTORY_SECRET_KEY が手に入ります。

SORACOM Inventory のデバイス登録費用の他、SORACOM Harvest の利用料金がかかりますのでご注意を。無料枠もあります。詳しくは下記のページをご覧ください。

ちなみに; SORACOM Harvest の細かい解説をすこしだけ。

SORACOM Harvest とは IoT 向けデータ通信を提供している SORACOM の「IoT データ向け データ蓄積・可視化サービス」です。
このサービスは harvest.soracom.io というアドレスにデータを送信すれば蓄積&可視化してくれるサービスなのですが、このアドレスは SORACOM が提供するセルラーや LPWA 回線からのみアクセス可能だったのですが、インターネット経由で SORACOM Harvest が利用できるようになったのが Publish API です。

詳しくはソラコムブログ: インターネット経由でSORACOM Harvestにデータが入れられるようになりました。 をご覧ください。

あとがき

SORACOM Harvest が Wi-Fi などの回線でも手軽に使えるようになったので、簡易的な可視化ツールとして使うことができるようになりました。
また SORACOM Harvest に蓄積されたデータをデータソースとしてダッシュボードや通知を作ることができる SORACOM Lagoon も使えるようになります。

ただし、コード上にキーを埋め込む必要があるため、キーの盗難や台数が増えたときの個別設定の手間が増えてしまうところが難点ですので、検証目的くらいにお使いください。
(SORACOM 的になんかできないかなーと思っているので、アイデアがあればぜひ)

EoT