MiharashiPANEL 実機で稼働中

A control panel on your desk

手元の小さな画面から、
モニターを操作する。

Android 化した Echo Show 5(960×480)を、Miharashi 専用の操作盤に。
画面の選択、自動巡回の停止、モニターの消灯。大きなボタンで手元から操作できます。

このページの画面は、Echo Show 5 実機のスクリーンショットです。

01 / Panel

960×480 の画面に、
押しやすいボタンだけ。

画面の切り替えも、巡回の固定も。
メニューから画面を直接選べます。

Echo Show 5 の操作パネル。左にモニターの状態と消灯・点灯・自動・設定、中央に現在の画面と固定中の表示、その下に前の画面・決定・次の画面、右に項目移動とメニューのボタン
Miharashi Panel Echo Show 5 の実機のスクリーンショット(960×480)v0.2.0
LEFT

モニターの消灯・点灯・自動

現在の状態(点灯中・消灯中)と、Home Assistant の切り替え設定(自動 / 常に点灯 / 常に消灯)を表示します。画面操作用のボタンとは離して、左側に縦に並べています。

CENTER

押した結果が、手元に戻る

表示中の画面名、ページ番号、写真が何枚目かを本体から取得します。情報が 5 秒を超えて更新されなければ STALE、15 秒を超えると OFFLINE と表示します。

BUTTONS

ボタンの説明が画面に合わせて変わる

写真の画面なら「前の写真・次の写真」、メニューを開くと「上を選ぶ・移動・閉じる」。今使えないボタンは灰色になり、押しても操作を送信しません。

MENU

一覧から、見たい画面へ

右下の「メニュー」を押すと、中央に画面の一覧を表示します。項目をタップするだけで、その画面に切り替わります。

ROTATION

自動巡回を止めて、今の画面で固定

中央の画面表示部をタップすると、巡回を止めて固定します。固定中は青い枠と「固定」の表示が目印です。もう一度タップすると、次の画面へ進んで巡回を再開します。操作によって一時停止したときは、再開までの残り時間も表示します。

FEEDBACK

音と振動、失敗は赤く

操作が本体に届くと、音と振動で知らせます。送信に失敗したときはボタンが赤く点滅し、自動で再送することはありません。

HEADER

API と Wi-Fi の点灯

本体との通信状態と Wi-Fi の接続状態を表示します。通信が切れても自動で再接続を試みます。

SLEEP

触らなければ消灯

操作盤に 3 分間触れなければ、画面を真っ黒にしてバックライトを最小にします。画面に触れると元の明るさに戻り、最初のタッチではボタンは動作しません。焼き付きや残像を防ぐための仕様です。

BOOT

電源を入れれば操作盤

端末の起動時やアプリの更新時に、自動で前面に表示されます。スワイプのみのロック画面よりも手前に出ます。

巡回の固定・再開には、本体で自動巡回を有効にし、巡回操作に対応したバージョンを使う必要があります。モニターの操作には Home Assistant との連携が必要です。

02 / Transport

BLE キーボードか、
ネットワーク API か。

同じ条件で並べて比べ、
ネットワーク API を選びました。

A

Bluetooth キーボード方式

比較した方式
  • キーボードとして操作を送る方式です。
  • 今回の Echo Show 5 では、OS 側の変更や接続の管理が必要になります。
  • キーボードの操作を送るだけでは、表示中の画面や巡回の状態を手元で確認できません。
B

Wi-Fi 経由の API

採用
  • Android 化した端末に、通常のアプリとして追加できます。
  • 操作を送るだけでなく、本体の状態も受け取れます。
  • 本体と同じ LAN に接続し、URL と認証用トークンを設定して使います。

手元で本体の状態を確認できることと、アプリの導入や更新が簡単なことから、Wi-Fi 経由の API を選びました。詳しい比較は設計書にまとめています。

03 / How it connects

操作は手元から。
画面の切り替えは本体で。

ECHO SHOW 5単体アプリ miharashi-panel操作を送り、現在の画面や巡回の状態を表示
MIHARASHIpanel スレッドBearer トークン、レート制限、LAN のインターフェースだけで待ち受け
RUNTIME実行ループ画面の切り替えや巡回の停止・再開を反映
HOME ASSISTANTモニターの手動切り替えauto / force_on / force_off。キオスクがすぐに読み直して反映
API

操作と状態取得の API

GET /api/v1/status
画面名・一覧、ボタンの説明、巡回とモニターの状態
POST /api/v1/input
prev / next / select / up / down / menu の 6 種類の操作
POST /api/v1/screen
一覧から指定した画面へ移動
POST /api/v1/rotation
自動巡回を停止・再開
POST /api/v1/display
モニターを auto / force_on / force_off に
GET /api/v1/events
状態の変更を本体から通知(SSE)
GET /api/v1/healthz
認証なしの生存確認だけ
SAFETY

キオスクはコマンドを実行しない

API でできるのは、キー操作、画面選択、巡回とモニターの切り替え、状態の取得だけです。設定で有効にしない限り待ち受けは開始せず、0.0.0.0 は指定できません。パネルの通信が途切れても、キオスクには影響しません。

APP

普通のアプリで、別のリポジトリに

priv-app にせず、ROM も変更しません。Kotlin で書いた依存ライブラリのない小さなアプリで、ソースコードは miharashi-panel にあります。

04 / Phases

画面選択と巡回の操作まで、
手元で使えます。

v0.2.0 を実機で使用中。
画面選択と巡回操作に対応しています。

  1. P0
    完了

    設計と LP

    接続方式の比較、API 案、パネル画面案、単体アプリの振る舞い。

  2. P1
    完了

    panel API(既定 OFF)

    キーの注入、/status、SSE、トークン、レート制限。LAN の別の端末から curl で確認。

  3. P2
    完了

    単体アプリ

    画面の切り替え、現在の画面の表示、自動起動。モニターの操作と操作盤の自動消灯にも対応。

  4. ✓
    対応済み

    画面選択と自動巡回

    項目移動、メニューからの画面選択、画面に応じたボタンの説明、巡回の固定・再開。

夜間の時刻に応じた減光は作らず、触らなければ操作盤を暗くする自動消灯で代替します。

05 / FAQ

よくある質問

作っている側が、
聞かれそうだと思った質問です。

なぜ Echo Show 5 なのですか?

960×480 の横長画面が机に置く操作盤にちょうどよく、Android 化すれば普通のアプリが動くからです。Miharashi 専用の単体アプリとして全画面で使い、ほかの用途との併用は想定していません。

BLE キーボードにしなかったのはなぜですか?

Miharashi 側の変更が不要という利点はあります。しかし Echo を BLE 周辺機器にするには、ROM の変更(priv-app、feature 宣言)や署名鍵の管理が必要で、更新後にペアリングをやり直す必要が生じる可能性があります。手元で状態を確認することもできません。設計書の付録に「もし実装するなら何が必要か」をまとめています。

モニターの消灯は、キオスクの中だけで切り替えないのですか?

キオスクの中だけでは切り替えません。キオスクが Home Assistant の設定項目(input_select)を書き換えます。こうすることで Home Assistant の画面とパネルの表示が一致し、再起動しても設定が保たれます。

キオスクに API を追加しても安全ですか?

初期設定では無効で、有効にする場合も Bearer トークンと LAN 内の 1 つのインターフェースだけに制限されます。キー操作、画面選択、巡回とモニターの切り替え、状態の取得だけに用途を限定しており、任意のコマンドは実行しません。

Echo の Wi-Fi が切れたらどうなりますか?

最後の更新から 5 秒を超えると STALE、15 秒を超えると OFFLINE と表示します。最後の状態を薄く残したまま、再接続を試み続けます。キオスク側の動作には影響しません。

Echo が再起動したらどうなりますか?

端末の起動時に自動で前面に出て、/status を再取得します。再接続が完了すると、本体の現在の状態を表示します。

操作盤の画面が焼き付きませんか?

操作盤に 3 分間触れなければ画面を真っ黒にして、バックライトを最小にします。この時間は設定で変更でき、0 に設定すれば消灯しません。

スマホのブラウザーからも操作できますか?

同じ API を利用するため、ブラウザー向けの小さな操作ページを作ることも可能です。現在は Echo 向けのアプリのみを提供しています。

Read more

ソースと設計書は、ここから。

接続方式の比較、API、パネル画面、単体アプリの振る舞い、段階と未検証事項をまとめています。