×

我が家のESP32を使った、オーディオステータスモニター。

どんどん禁断の領域へ拡大していきます。

最初は、

  • ROCKの外部温度とファンノイズが見えればいいや

だったのが、今や

  • Roon ROCKの温湿度
  • Roon ROCKのファンノイズ・スペクトラム
  • Roon ROCKの状態ステータス

と手を広げ、今日はとうとう、

  • WiiM Ultraの動作状況

にまで触手を伸ばそうとしています。もっとも、無計画で野放図に領域拡大してきたわけではなく、

オーディオの健康状態が一瞥で分かる

という初期コンセプトはいささかも揺らいでいません。今回のWiiMもその延長線上にあるのです。

ところで、ご存知でしたか? WiiMはWeb-API経由で、WiiMの動作状況を取得できたり、なんだったら操作コマンドだって送れる。こちらです。

WiiMの製品というのは、すべからくネットワークへ繋がっています。ネットワークへ繋がないと動作できないからです。したがって、必然的にIPアドレスを持っています。

我が家のWiiM UltraはIPを 192.168.3.102 へ固定していますから、早速このアドレスでAPIを叩いてみましょうかね?

https://192.168.3.102/httpapi.asp?command=getPlayerStatus

(余談ですが、httpsで叩かないとAPIは動作しなかったです。セキュア警告が出るのに、です。)

このキーはWiiMの状態を返すAPIで、以下のようなJsonが返ってきました。ひとつずつ詳細にみてみましょう。

===== RAW JSON ========================= 
{
    "type":"0”,
    "ch":"0”,
    "mode":"33”,
    "loop":"1”,
    "eq":"0”,
    "vendor":"Roon”,
    "status":"play”,
    "curpos":"16000”,
    "offset_pts":"0”,
    "totlen":"558000”,
    "Title":"54686520506572666563742053796D6D65747279”,
    "Artist":"44656D69616E73”,
    "Album":"4275696C64696E6720616E20456D70697265”,
    "alarmflag":"0”,
    "plicount":"0”,
    "plicurr":"0”,
    "vol":"100”,
    "mute":"0"
} 
========================================

ch : 0

は再生チャネルを表しているみたいです。0は「Stereo」です。ちなみに1はLeft Ch。

mode : 33

はどうやらINPUTソースを表している様子。実際にインプットセレクトして調べてみると、

  • 33:Roon(WiFi),
  • 40:Line-in,
  • 41:Bluetooth,
  • 42:USB-storage,
  • 43:Optical,
  • 45:Phono-in  ….

といった感じでした。

status

は再生状態を表すようで、再生中ならplay、停止中ならstopが返ってくる。

curpos / totlen

はそれぞれ、トラックの現状再生位置と、トラック総長を表してるようだから、
「16秒あたり/合計558秒中の」を再生中・・・という意味になりますね。

Title / Artist / Album

はそれぞれ、トラックタイトル、アーティスト、アルバム名を表しているようです。16進コードで示されているみたいだから、これを読解してみると・・・

"Title":"54686520506572666563742053796D6D65747279”     ...The Perfect Symmetry
"Artist":"44656D69616E73”                                                              ...Demians
"Album":"4275696C64696E6720616E20456D70697265”          ...Building an Empire

となりました。これは日本語トラックの場合でも同様でした。

plicount / plicurr

はそれぞれ、再生キューの総トラック数と / その中の現在トラック番号を示しているようです。

vol

は音量ですが、WiiM Ultraは常時100%に固定していますので私の場合は無意味な情報。

mute

はミュート状態を表している。今は0だから「ミュートはしていない」。

まぁこんな感じでJsonを読解し、変換し、配列や変数へ収納し、そして最終的にはウェブ上へ投影します。
 

最初から一足飛びに実装したわけではありません。例によって相談しながら、牛歩戦術で一歩ずつ実験と実装確認をすすめていきました。1日に1歩しか階段を昇らないという覚悟をきめて。

実はこの進め方が最も問題点を見つけやすく、リバートしづらく、結果として進捗も早いと気づいたのです。この小さく区切った確実な進め方はアジャイルやスクラム開発とも似ています。

  1. 最初はAPIを叩いてJsonをそのまま収納するところまで。
  2. 次段では、Jsonを演算処理してパースして情報をシリアルモニターへ流すまで
  3. その次は、ウェブ投影のためにモジュール化するところまで
  4. 途中、脱線して「INPUTのUI見栄え、見せ方」のテーブルを制作してみるまで
  5. 最後に、CSS等の装飾を定義し、HTML上へ投影するまで

全ソースコードは [こちら]

今回の最大のポイントはこちらです:

  • (私の使う)INPUT選択肢がすべて並んでいる
  • 現在の入力選択がハイライトで表示されている
  • 表示がそのまま「ボタン」となっており、他のINPUTへ切り替え可能

つまり状態表示と選択UIが一体になったもの。
オーディオマニアへ分かりやすく言えば、自照式のINPUTボタンのようなものです。

できあがったウェブ表示がこちら。

とても満足。今回も遠いところへ辿り着いた感じです。

 Roon ROCK、ESP32自身、ROCKの温度、ROCKのノイズ分布・・・

 そして今回はWiiMの動作ステータスです。

しかし「一瞥でオーディオの状態や不都合が判る」というコンセプトはミリも揺らいでいません。

例えば、WiiM UltraのUI。どのUIに切り替わったかが非常に分かりづらいのです。しかも、リモコンボタンを押してから遅延がある。だからオーバーシュート操作してしまう場合もある。スマホアプリは起動が面倒な上に、デバイスを選んで・・・深層のINPUT UIへ行って・・・と操作階層が深すぎる。

このダッシュボードは、一瞥で問題点が分かるんです。

「音が出ないな・・・・」「ああ、入力切り替えが間違っていたのか!」とただちに分かる。これも立派なヘルスモニタリングなのです。
 

シリコンパワー ノートPC用メモリ DDR4-2400(PC4-19200) 8GB×1枚 260Pin 1.2V CL17 SP008GBSFU240B02

Synology NASを拡張した時に入れたメモリーがコレ!永久保証の上、レビューも高評価。もちろん正常に動作しており、速度余裕も生まれて快適です。

フィリップス 電動歯ブラシ ソニッケアー 3100シリーズ (軽量) HX3673/33 ホワイト 【Amazon.co.jp限定・2024年モデル】

歯の健康を考えるのならPhilipsの電動歯ブラシがお勧めです。歯科医の推奨も多いみたいです。高価なモデルも良いですが、最安価なモデルでも十分に良さを体感できる。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

投稿者

KeroYon

関連投稿

オーディオヘルスモニター (7)ウェブ上にファンスペアナ

さて、前回の続き。 前回はマイクロフォンデバイスを繋げ、きちんとA/Dされた音声信号が流れてきている...

オーディオヘルスモニター (6)ついにMEMsマイク導入

本日も、安定の/お約束の大長編〜。 中国発注していたMEMSマイクモジュールがようやく着弾しました。...

YAMAHA AX-10 (1)arrival

今日は(も?)長文です。 我が家に新しい   中古 アンプが到着いたしました。 じゃじゃ〜んん。 Y...

オーディオヘルスモニター (5)温度湿度センサーの接続

ノイズ&温度モニター改め、タイトルを「オーディオヘルスモニター」へ改題しました。 どういうことかとい...

メヒシバ退治 (4)やっと少し光明が?

我が家の芝生は、3年越しで コガネムシ幼虫食害〜それによるメヒシバの大量繁殖 によって壊滅的大ダメー...

ノイズ&温度モニター (4)ウェブのROCK情報をRich化

前回。ESP32を利用した簡易ウェブサーバーが立ち上がったわけですが。今回は、ここを少しリッチにして...