M5PaperのNTP→RTCで困った話

M5PaperのUIFlowが1.7.4になったので、使ってみました。

きっかけ

C言語で遊んでいたのですが随所にdelayが必要など
目的まで遠そうなので、プロトタイプに使ってみようと思った次第。

M5Paperのセンサーの内容を時刻とともに表示しようとしてハマりました。

関連ブロック

左のブロックリストのハードウェア中のRTCと高度なブロック中のNTPで表示されるブロックを使うのですが・・・

資料1

RTCの赤丸で囲った部分がRTCを時刻をセットするブロックです。
実は、これをデフォルトのままで実行してもエラーになります。
月、日、曜日は 1 以上でした。
ちなみに、年は下2桁です。
過去の2000年問題と違ってあと80年は問題ないので問題なしです。
NTPから取得される”年”は、4桁なので、こちらも対応が必要です。

次に使うのは、NTPから時刻を取得するブロックと時刻のgetterたち。

資料2

一番上の文字列でサーバー名を指定するブロックを使います。
WindowsだとMicrosoftのntpサーバーがデフォルトになってます。
できるだけ近いntpサーバーをということで、"ntp.nict.jp"を指定します。

困ったこと

曜日のgetter。
RTCのsetterでは1~7の数字が必要。
曜日のgetterは、火曜日だと"Tues"が返ってくるんです。
多分他の曜日も、"day"を取り除いた文字列になっている気がする。
3文字とか2文字の略称ではなく"day"を取り除いた文字列って、どこかで使うのだろうか。

対処

資料3

仕方がないので、上のように、文字列判定で数字に。
火曜日が2で0がNGだったので、これであっていると思うのですが、日曜日が最後というので自信なし。(大抵が一番若い番号が日曜日なので・・・)
文字列も、Tues+dayからの推測なので、1週間経ってみないとなんとも言えません。
ただ・・・曜日に中途半端な文字列が返ってくるのってバグだと思うんですよね。なので、(SD関係も未実装ですし)次のバージョンの期待です。

M5Flowを使ってみて

Scratch系の言語ってわかりやすいです。
画面にコントロールを貼り付けてイメージを作れるのは嬉しいです。

ただ、M5Paperくらいになると、画面が結構広いので、
細かなコントロールを多数作る場合は、大雑把に作ったあと、
テキストエディタで修正やコピペができないとすごく大変です。

ブロックのグラフィックにあるテキスト表示に回転か、
全体の向きを指定できる関数が使えると助かるのですが・・・。

テキスト関連のゼロパディングとか、
ハードウェア関連のSDカード関連とか、足りない機能がまだ結構あるようです。

今後に期待です。