M5StickC+UIFlowで会議室の使用状況をモニタリングしよう①-2(マグネットスイッチ 完成版)


概要

前回(準備編)の続きで、ThingSpeakへの送信まで実装しました。


ThingSpeakは回数制限があるので、ステータスが変わった時だけ送るようにしています。

コード


qiita.py
from m5stack import *
from m5ui import *
from uiflow import *
import wifiCfg
import machine
import time
import urequests

setScreenColor(0x111111)


isOpen = None
LastStat = None

wifiCfg.doConnect('●●●●●', '●●●●●●●●●●●●')
wifiCfg.reconnect()
DoorStatus = M5Title(title="DoorStat", x=3, fgcolor=0xFFFFFF, bgcolor=0x0000FF)
L_DS = M5TextBox(3, 26, "DS", lcd.FONT_DejaVu18, 0xFFFFFF, rotate=0)
Logs = M5TextBox(1, 77, "Logs", lcd.FONT_Default, 0xFFFFFF, rotate=0)




pin0 = machine.Pin(26, mode=machine.Pin.IN, pull=machine.Pin.PULL_UP)
isOpen = 0
LastStat = 0
L_DS.setText('Started!')
wait(1)
while True:
  if not (wifiCfg.wlan_sta.isconnected()):
    lcd.print('Wifi NG', 0, 120, 0xff0000)
  lcd.print('Wifi OK', 0, 120, 0x33ff33)
  Logs.setText('Checking...')
  wait(1)
  isOpen = pin0.value()
  Logs.setText('Checked')
  L_DS.setText(str(isOpen))
  if isOpen != LastStat:
    Logs.setText('Sending...')
    wait(1)
    try:
      req = urequests.request(method='GET', url=(str('https://api.thingspeak.com/update?api_key=●●●●●&field1=') + str(isOpen)), headers={})
      Logs.setText('Posted')
    except:
      Logs.setText('NG')
  LastStat = isOpen
  wait(10)
  wait_ms(2)