tiltセンサーをクラウド監視#13

CircuitPython

#12で使ったah407傾斜センサーをAdafruit.IO経由でクラウド監視します。

Adafruit.IOとは

Adafruit.IOとは米国Adafruit Industriesが提供するクラウドサービスです。くわしくはこちら

Welcome to Adafruit IO | Adafruit Learning System

chromeでの翻訳機能が優秀なのでがんばって読んでみてください。

Adafruit.IOのアカウント作成

無料プランでも十分遊べます。一分間で30のデータを扱えます。データは30日間保存。5個のダッシュボード。10個のfeeds。まずはアカウントを作るところから始めましょう。アカウントを作成したらIOを開いて右上の鍵マークをクリックします。

スクリーンショット

setting.tomlの書き換え

そうするとuser nameとactive keyが表示されます。pico Wのフォルダを開いてください。setting.tomlを書き換えます。

# Comments are supported
CIRCUITPY_WIFI_SSID="自宅のwifi SSID"
CIRCUITPY_WIFI_PASSWORD="自宅のwifi password"
CIRCUITPY_WEB_API_PORT=80
CIRCUITPY_WEB_API_PASSWORD="passw0rd"
test_variable="this is a test"
thumbs_up="\U0001f44d"
aio_username = "adafuit.IOのUSERNAME"
aio_key = "adafruit.IOの長いActive Key"

2,3行目を書き換えて、8,9行目を書き足します。

Adafruit.IOでfeedsの作成

+ New Feedsをクリックしてdetectという名前でfeedを作成します。

detectというfeedが作成されました。

コードを書き込みます

# Raspberry Pi Pico Wでtiltセンサーの値をAdafruit Ioに
import os
import time
import ssl
import wifi
import socketpool
import microcontroller
import board
import busio
import adafruit_requests
import digitalio
from adafruit_io.adafruit_io import IO_HTTP, AdafruitIO_RequestError

led = digitalio.DigitalInOut(board.GP15)
led.direction = digitalio.Direction.OUTPUT
button = digitalio.DigitalInOut(board.GP28)
button.switch_to_input(pull=digitalio.Pull.DOWN)

wifi.radio.connect(os.getenv('CIRCUITPY_WIFI_SSID'), os.getenv('CIRCUITPY_WIFI_PASSWORD'))

aio_username = os.getenv('aio_username')
aio_key = os.getenv('aio_key')

pool = socketpool.SocketPool(wifi.radio)
requests = adafruit_requests.Session(pool, ssl.create_default_context())
# Adafruit IO HTTP API objectをリセット
io = IO_HTTP(aio_username, aio_key, requests)
print("connected to io")


#  feedの名前はあらかじめ作っておいたdetectを指定します。
feed_name = "detect"

while True:
    try:
        #  pico wが動きを検知したら
        if button.value:
            led.value = True
            # 1というデータを送ります
            io.send_data(feed_name, 1)
            time.sleep(1)
            #  REPLにも表示させます
            print('なんか動いた')
            time.sleep(1)
            led.value = False
    except Exception as e:
        print("Error:\n", str(e))
        print("Resetting microcontroller in 10 seconds")
        time.sleep(10)
        microcontroller.reset()

このプログラムを書き込んでセンサーをうごかすとAdafruit.IOのサーバにデータが蓄積されていきます。feedsの中のdetectをクリックしてみましょう。センサーが反応した時刻が記録されているはずです。

Adafruit.IOのダッシュボード

今度は監視するためのダッシュボードを作成します。+new dashboard今回はsensorという名前で作ります。そして歯車マークを押してcreate new blockからstreamを選んでデータ元をdetectにするとこんなかんじになります。外からスマホで確認できます。

動いた時間がわかります

IoT監視システムの完成

玄関に取り付ければ防犯になりますし、キッチン洗面所トイレに設置すれば独居老人を見守ることもできますね。活用法は無限に広がります。

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