Androidのメモとか

ポキオの日記です。今日も遅延してない。

M5Stackに潮汐を表示させてみる

大潮でも釣れないときは釣れないんですけどね。

ポキオ M5Stack 潮汐

前回は潮汐情報のWebサービスを見つけました

全国各地のポイントの潮汐情報を日付を指定して取得できるすごい子でした。

relativelayout.hatenablog.com

今回は、これを使ってM5Stackに潮汐情報(とりあえず、大潮、中潮、・・・など)を表示させてみようと思います。

環境と実装

  • 実装環境:UIFlow(Betaのほう、v1.7.2)
  • バイス:M5Stack Basic

ここで、UIFlowはBetaのほうを使っているのがミソです。Betaの方だとNTPが使えるため、こちらを使用しています。(それに合わせて、M5Stackのファームウェアも更新しています)

ポキオ M5Stack 潮汐

こんな感じでブロックを組み立てていきます。やっていることとしては、

  • Wi-Fi接続
  • ntptimeの初期化
  • 定期的に潮汐情報ページにアクセス(日付指定にntptimeで取得した現在日付を使う)
  • 潮汐情報に応じて予め準備した画像を表示

このような処理です。

画像は予め準備

macKeynoteとかで、大潮用、中潮用、・・・の320x240な画像を予め準備して、M5Stackに流し込んでおきます。

ポキオ M5Stack 潮汐

ローディング画面用も一応作成。流し込んだ画像をコードから参照して表示させています。

早速動作確認

うーん、今日は中潮!ちゃんと動いてそうですね!

ポキオ M5Stack 潮汐

こういうガジェットを作ったからと言って、釣果が良くなるかは別の話なので、あしからず。

MicroPythonのコードはこちら

from m5stack import *
from m5ui import *
from uiflow import *
import wifiCfg
import ntptime
import urequests
import time

setScreenColor(0x222222)


url = None

wifiCfg.doConnect('*****', '*****')
image0 = M5Img(0, 0, "res/loading.jpg", True)




while not (wifiCfg.wlan_sta.isconnected()):
  pass
ntp = ntptime.client(host='jp.pool.ntp.org', timezone=9)
while True:
  image0.changeImg("res/loading.jpg")
  url = 'http://fishing-community.appspot.com/tidexml/index?portid=112&year=YYYY&month=MM&day=DD'
  url = url.replace('YYYY', str((ntp.year())))
  url = url.replace('MM', str((ntp.month())))
  url = url.replace('DD', str((ntp.day())))
  try:
    req = urequests.request(method='GET', url=url)
    if 0 < (req.text).count('大潮'):
      image0.changeImg("res/ooshio.jpg")
    if 0 < (req.text).count('中潮'):
      image0.changeImg("res/nakashio.jpg")
    if 0 < (req.text).count('小潮'):
      image0.changeImg("res/koshio.jpg")
    if 0 < (req.text).count('若潮'):
      image0.changeImg("res/wakashio.jpg")
    if 0 < (req.text).count('長潮'):
      image0.changeImg("res/nagashio.jpg")
  except:
    pass
  wait(3600)
  wait_ms(2)
「Androidのメモとか」は、Amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、Amazonアソシエイト・プログラムの参加者です。

このブログは個人的なメモ書きであったり、考えを書く場所であります。執筆者の所属する団体や企業のコメントや意向とは無関係であります。また、このブログは必ずしも正しいことが書かれているとは限らず、誤字脱字や意図せず誤った情報を載せる場合がありえます。それが原因で読者が不利益を被ったとしても、執筆者はいかなる責任も負いません。ありがとうございます。