家にいなくてもスマホからグラフが見られる。これが IoT (Internet of Things) の基本。M5Stack に WiFi が内蔵されているので、3-5 行のコードでクラウド送信が始められます。
1. ThingSpeak のセットアップ
- 1https://thingspeak.com/ で無料アカウント作成
- 2「Channels → New Channel」で新しいチャンネル作成 (Field 1 = 温度、Field 2 = 湿度 等)
- 3「API Keys」タブから Write API Key をコピー
- 4M5Stack のコードに WiFi の SSID/Password と API Key を書く
2. M5Stack → ThingSpeak のコード
M5Stack: 5 分ごとに ThingSpeak へ送信
Python
import network, urequests, timeimport unit
WIFI_SSID = 'YOUR_SSID'WIFI_PASS = 'YOUR_PASSWORD'API_KEY = 'YOUR_THINGSPEAK_WRITE_KEY'
# WiFi 接続wifi = network.WLAN(network.STA_IF)wifi.active(True)wifi.connect(WIFI_SSID, WIFI_PASS)while not wifi.isconnected(): time.sleep(0.5)print('WiFi connected:', wifi.ifconfig()[0])
env3 = unit.get(unit.ENV3, unit.PORTA)
while True: t = env3.temperature h = env3.humidity p = env3.pressure / 100 # hPa url = f'https://api.thingspeak.com/update?api_key={API_KEY}&field1={t}&field2={h}&field3={p}' try: r = urequests.get(url, timeout=10) print(f'Sent: {t}, {h}, {p} → entry_id {r.text}') r.close() except Exception as e: print(f'Error: {e}') time.sleep(300) # 5 分間隔3. Google Sheets に送る (Apps Script Webhook)
- 1新しい Google Sheets を作成
- 2「拡張機能 → Apps Script」
- 3POST リクエストを受け取る関数を書く (下記コード)
- 4「デプロイ → ウェブアプリ」で公開、URL をコピー
- 5M5Stack のコードに URL を埋め込む
Apps Script (Google Sheets 側)
JavaScript
function doPost(e) { const sheet = SpreadsheetApp.getActiveSheet(); const data = JSON.parse(e.postData.contents); sheet.appendRow([ new Date(), data.temp, data.humidity, data.pressure, ]); return ContentService.createTextOutput('OK');}M5Stack 側: Google Sheets に POST
Python
import urequests, ujson
WEBHOOK_URL = 'https://script.google.com/macros/s/.../exec'
payload = {'temp': t, 'humidity': h, 'pressure': p}try: r = urequests.post( WEBHOOK_URL, data=ujson.dumps(payload), headers={'Content-Type': 'application/json'}, ) r.close()except Exception as e: print(f'Failed: {e}')4. ThingSpeak のグラフ
ThingSpeak は Field ごとにグラフが自動生成 され、URL を共有すれば誰でも見られます。スマホでも開けるので、外出先から「家の植物の土壌水分」をリモート監視できる仕組みが完成です。
5. データ送信の落とし穴
- WiFi が切れた: ローカル SD に必ず保存
- API レート制限: 無料枠は 15 秒間隔まで。守らないとブロックされる
- API キー漏えい: GitHub に commit しない、SNS で公開しない
- サーバ側のメンテナンス: クラウド側のダウンタイムも想定
6. 次の話
EP.11 では しきい値で LED を光らせる・通知する 機能を扱います。「土壌水分が下がったら LED 点灯」「CO2 が高くなったら LINE 通知」など、計測 → 行動の自動化編です。
この記事の感想を教えてください
あなたの 1 クリックで、本当にこの記事は更新されます。「もっと詳しく」「続編希望」が一定数集まった記事は、 ふくふくが 実際に内容を拡充したり続編記事を公開 します。 送信したリアクションはお使いのブラウザに記録され、再カウントされません。