お久しぶりです!
2025年もいよいよ終わりが見えてきましたが、皆様いかがお過ごしでしょうか。
最近、Qiitaという技術情報共有サイトで、reTerminal E1002に関する記事を投稿しました。
詳細は以下のリンクからチェックしてみてください。
今回の記事は、その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分に動かせるでしょ」と高を括っていたのですが、実際にはかなりの遅延が発生。仕様をよく読んでみると、負荷が高い時間帯だと実行が後回しにされる可能性があるんだとか……。世の中そんなに甘くないですね。
解決方法
というわけで、この「時間のルーズさ」を直すために以下の2段構えで対策しました。
- 端末側のコードを真面目に書く
- GitHub Actions のビルド実行を外部スケジューラーに丸投げする
端末側のコードを真面目に書く
reTerminal E1002はいろんな環境で開発できますが、今回は原点回帰。5年ほど前にお世話になっていた Arduino IDE を引っ張り出してきました。
書いたコードはリポジトリに公開しています。
仕様については docs フォルダにまとめてあるので、細かい中身が気になる方はこちらをどうぞ!
GitHub Actions のビルド実行を外部のスケジューラーに置き換える
GitHub Actions 自身のスケジュール機能に見切りをつけ、外部から叩くことにしました。
選択肢は色々ありましたが、今回はセルフホストで Dify というサービスを使ってみることに。最近AI界隈でめちゃくちゃ話題になっているやつですね。
仕事で触る機会もありそうなので、「今のうちに仲良くなっておこう」という下心も込みでの採用です。セルフホストの構築手順はまた後日まとめようと思います。
今回は、以下のようにcron形式を使って、毎時0分きっかりに実行されるよう設定しました。
| ワークフロー設定 |
|---|
![]() |
GitHub Actions を外部から実行する方法(備忘録)
外部からワークフローをキックする方法、意外と手順が多かったのでメモしておきます。 ※2025年12月時点の情報です。
-
GitHub Actions に
workflow_dispatchトリガーを追加するYAMLファイルにこれを仕込まないと外部から呼べません。
name: Build and Deploy on: workflow_dispatch: ## これが大事! push: branches: - main -
Personal Access Token (PAT) を作成する
GitHub の
Settings > Developer settings > Personal access tokensから作ります。対象リポジトリに対して、
Read and Write access to actionsの権限を与えればOK。生成されたトークンは忘れずにコピーしておきましょう。PAT 作成画面 
-
curl コマンドでワークフローIDを特定する
まずは対象のIDを調べます。
curl -H "Authorization: Bearer [あなたのトークン]" \ https://api.github.com/repos/${OWNER}/${REPO}/actions/workflows返ってくるJSONの中から、動かしたいワークフローの
idをメモします。 -
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 を使い倒して、面白い遊び方を模索していきたいと思います。
それでは、また次回!

