Back to tech

reTerminal E1002 で表示している情報を時間通りに更新する

2 min read
Table of Contents

お久しぶりです!

2025年もいよいよ終わりが見えてきましたが、皆様いかがお過ごしでしょうか。

最近、Qiitaという技術情報共有サイトで、reTerminal E1002に関する記事を投稿しました。

詳細は以下のリンクからチェックしてみてください。

【コスパ最強】7.3インチフルカラー電子ペーパー「reTerminal E1002」で遊んでみた! - Qiita
qiita.com
image

今回の記事は、そのQiitaに寄稿した内容の「後日談」的なお話です。reTerminal E1002で表示している情報を、きっちり時間通りに更新する方法について紹介します。

不満・課題

Qiitaの記事では、SenseCraft HMI を使ってreTerminal E1002に情報を出す方法を解説しました。

毎時、天気情報やニュースが自動で更新されるのはめちゃくちゃ便利です。
特にニュースはローカルなものに絞っているので、地元の最新情報をサクッと把握するのに重宝しています。

ただ、日常的に使っていると、どうしても1点だけ許せない不満が出てきました。

  • 毎時の更新タイミングが、時間によってバラバラ

これが地味にストレスなんです。「最新ニュースかな?」と思って見たら、2時間前の情報のままだったりして、結局手動で更新する羽目になることも。これじゃ自動化の意味が半分くらい死んでしまいます。

原因

調べてみたところ、原因は大きく2点ありました。

1. SenseCraft HMI での更新設定

2025/12/19 現在、SenseCraft HMI上での更新間隔は「1分単位」でしか設定できません。

「毎時0分に更新!」というジャストな指定ができないので、更新処理が走るたびに少しずつ、じわじわと時間がずれていってしまうわけです。

設定画面の様子

2. GitHub Actions のスケジュール設定

Webアプリの更新には GitHub Actions を使って定期実行(Schedule)させていました。

「これなら毎時0分に動かせるでしょ」と高を括っていたのですが、実際にはかなりの遅延が発生。仕様をよく読んでみると、負荷が高い時間帯だと実行が後回しにされる可能性があるんだとか……。世の中そんなに甘くないですね。

ワークフローをトリガーするイベント - GitHub ドキュメント
docs.github.com
image

解決方法

というわけで、この「時間のルーズさ」を直すために以下の2段構えで対策しました。

  • 端末側のコードを真面目に書く
  • GitHub Actions のビルド実行を外部スケジューラーに丸投げする

端末側のコードを真面目に書く

reTerminal E1002はいろんな環境で開発できますが、今回は原点回帰。5年ほど前にお世話になっていた Arduino IDE を引っ張り出してきました。

書いたコードはリポジトリに公開しています。

reterminal_weather_news/arduino at main · Momijinn/reterminal_weather_news
github.com
image

仕様については docs フォルダにまとめてあるので、細かい中身が気になる方はこちらをどうぞ!

reterminal_weather_news/arduino/docs/specification.md at main · Momijinn/reterminal_weather_news
github.com
image

GitHub Actions のビルド実行を外部のスケジューラーに置き換える

GitHub Actions 自身のスケジュール機能に見切りをつけ、外部から叩くことにしました。

選択肢は色々ありましたが、今回はセルフホストで Dify というサービスを使ってみることに。最近AI界隈でめちゃくちゃ話題になっているやつですね。

Dify: 最先端のAgentic AI開発プラットフォーム
dify.ai
image

仕事で触る機会もありそうなので、「今のうちに仲良くなっておこう」という下心も込みでの採用です。セルフホストの構築手順はまた後日まとめようと思います。

今回は、以下のようにcron形式を使って、毎時0分きっかりに実行されるよう設定しました。

ワークフロー設定

GitHub Actions を外部から実行する方法(備忘録)

外部からワークフローをキックする方法、意外と手順が多かったのでメモしておきます。 ※2025年12月時点の情報です。

  1. GitHub Actions に workflow_dispatch トリガーを追加する

    YAMLファイルにこれを仕込まないと外部から呼べません。

    name: Build and Deploy
    
    on:
      workflow_dispatch: ## これが大事!
      push:
        branches:
          - main
  2. Personal Access Token (PAT) を作成する

    GitHub の Settings > Developer settings > Personal access tokens から作ります。

    対象リポジトリに対して、Read and Write access to actions の権限を与えればOK。生成されたトークンは忘れずにコピーしておきましょう。

    PAT 作成画面
  3. curl コマンドでワークフローIDを特定する

    まずは対象のIDを調べます。

    curl -H "Authorization: Bearer [あなたのトークン]" \
    https://api.github.com/repos/${OWNER}/${REPO}/actions/workflows
    

    返ってくるJSONの中から、動かしたいワークフローの id をメモします。

  4. curl コマンドでワークフローを実行!

    特定したIDを使って、いざ実行。

    curl -X POST -H "Authorization: Bearer [あなたのトークン]" \
      -H "Accept: application/vnd.github+json" \
      -H "X-GitHub-Api-Version: 2022-11-28" \
    https://api.github.com/repos/${OWNER}/${REPO}/actions/workflows/${WORKFLOW_ID}/dispatches \
    -d '{"ref":"main"}'

公式ドキュメントには「YAMLファイル名でもいけるよ」と書いてありましたが、
なぜか私の環境ではうまく動かなかったので、大人しくワークフローIDを使うのが安パイそうです。

修正した結果

この対策を行った結果、ようやく「狙い通り」の時間に情報が更新されるようになりました!

項目更新前(before)更新後(after)
Webアプリのビルド毎時、数分のズレ毎時0分ジャスト
端末の更新60分周期(どんどんズレる)毎時5分にバシッと更新

まとめ

今回は reTerminal E1002 の情報を時間通りに更新するハックを紹介しました。

力技な部分もありますが、やっぱり「決まった時間に情報が届く」というのは、スマートデバイスを使っている実感が湧いて気持ちいいですね。

これからも reTerminal E1002 を使い倒して、面白い遊び方を模索していきたいと思います。

それでは、また次回!