減ったり増えたり。
前回はM5StickC”もどき”に表示させてました
前回はこちら。
眠っていたM5StickCの火入れを行ったので、UI Flowでちょっぱやで実装して、神奈川県のCovid-19陽性者数をM5StickCでも表示してみようと思います。
今回も裏ではNode-REDが活躍しています
前回、Node-RED上に神奈川県のCovid-19陽性者数の情報を取得しパースする仕組みを作りました。
今回も、これを利用していきます。具体的には、M5StickCでNode-RED経由で情報を取得し、その結果をM5StickCのディスプレイに表示させてみようと思います。
UI Flowで爆速実装
気安く爆速という単語を多用してますが、UI Flowは本当に爆速でした。
とはいえ、最初はBlockyで実装していたものの、簡単な文字列操作ができなかったので結局Pythonで実装しちゃいました。ただ、Blockyのおかげで、フルスクラッチでPythonを書くよりかは簡単に実装できたので、まずはBlockyで大まかに実装してしまって、細かい部分をPythonで実装するのがいいのかもしれないですねぇ。
さっそく実行
いい感じで動いてますね。データが更新されるのが毎日夕方〜夜なので、ポーリングはせずにボタン押下時にデータ更新を行うようにしています。
そして、今日(2020/09/26)は91人でした。早く収まるといいなぁ。
実際のコード
クソコードはこちらです。
from m5stack import * from m5ui import * from uiflow import * import wifiCfg import urequests import time setScreenColor(0x000000) label0 = M5TextBox(79, 10, "connecting", lcd.FONT_DejaVu18,0xFFFFFF, rotate=90) label1 = M5TextBox(49, 10, "to Wi-Fi", lcd.FONT_DejaVu18,0xFFFFFF, rotate=90) label2 = M5TextBox(19, 10, "access point...", lcd.FONT_DejaVu18,0xffffff, rotate=90) def buttonA_wasPressed(): # global params label0.setText('getting') label1.setText('covid-19') label2.setText('data...') try: req = urequests.request(method='GET', url='http://xx.xx.xx.xx:1880/covid', headers={}) label0.setText(str(req.text.split('\n')[0])) label1.setText(str(req.text.split('\n')[1])) label2.setText(str(req.text.split('\n')[2])) except: label0.setText('*****') label1.setText('error') label2.setText('*****') pass btnA.wasPressed(buttonA_wasPressed) wifiCfg.doConnect('MASARU-Wi-Fi_elecom', 'linkinpark123') label0.setText('press') label1.setText('button A') label2.setText('to get data...')