2020-02-20版のwebui-plus配信について
長らくご無沙汰でした。
ちょっと手を入れる部分を前回の投稿から増やしたりしていまして
ちょっと時間がかかりましたが配信させて頂きます。
変更点は以下の通り
-
1秒間隔で行っている定時状態通知を縮小
先の投稿通り、
「ボリウム値」,
「シングル+リピート+シャッフル+コンシューム」,
「再生中楽曲の総時間」,
「再生中楽曲のキュー内ID」
以上4項目は1秒単位で状態検知し、変更があった時点でそのステータスを送信する仕様に変更しました。
「データベースの更新情報」も外出しできる可能性はありますが、
それは次回実施いたします。
-
scrobbleの挙動修正
楽曲変更時に条件達成時間を計算し、「経過時間がこれを上回り」かつ「前に再生した楽曲と異なる」場合のみscrobbleを送信します。
また、libcurlを使用し、ympdのプロセス内部でscrobble処理を完結させました(以前は別プロセスを内部的に呼び出し)。
-
当方で修正・拡張したプラグイン類のスマホ向けレイアウトの修正
PCベースで開発を行っている都合上、レイアウトを改めて見て崩れているのがわかったので修正を行いました。
-
DASHBOARDでのスマホ向けARM・COREクロック表示対応
スマホのように小画面ではドーナツグラフが非表示にされているため、これらのクロックは確認出来ませんでしたが、
今回小画面デバイス向けに表の領域で対応するように拡張しました。
-
httpsのサポート(実験的)
昨年試してみて「出来ない」と話していましたが、今回実験したところあっさり動作したため、
実験的ですがサポートを開始します。(詳細は後述)
-
微修正
停止時に毎回「mpdの再生停止」をクライントがサーバに送る仕様を一時的に止めました
(恐らくwebsocketのセッションを維持させるためにあった?)
また、html文で使用していないタグをコメントアウトしています。
HTTPSのサポートについて
本日時点では、以下の条件(不具合?)があります。
①今回提供する状況では自己署名(オレオレ)証明書であるため、通信経路の暗号化はされますが「信頼性の無いサイト」としてエラーが表示されます。
このエラーで「詳細」ボタンを押して強制接続する操作が必要になりますので、「なにそれ、怖い」とか「何言っているかわからない」という方は止めておいたほうが良いと思います。
②safariではwss(websocketのSSL対応)が現状動作しないため使えません(正確にはトップページが開きますが、操作出来ません)。
③Android向けのPWA(Progressive Web Application)はまだ完全ではありません。
インストーラの画面が開かないため、Chromeで自発的に「ホーム画面に追加」して頂くことになります。
また、キャッシュコントロールも「とりあえず実装した」というレベルです。
④wssのセッションエラーにより、スリープ状態などで一旦RaspberryPiのサーバと接続が切れた場合は、
ページリロードが必要になる可能性が高いようです。
HTTPS接続を試したい方は以下の通り実行してみてください。
①/lib/systemd/system/ympd.socketを以下の通り書換
[Socket]
#ListenStream=80
ListenStream=443
KeepAlive=true
PassCredentials=true
[Install]
WantedBy=sockets.target
要は、443ポートで接続させるという意味になります。
②/lib/systemd/system/ympd.serviceを以下の通り書換
[Unit]
Description=ympd server daemon
Requires=network.target local-fs.target
After=mpd.service
[Service]
EnvironmentFile=/etc/environment
Type=simple
ExecStartPre=/usr/bin/ympd-plus.sh
#ExecStart=/usr/bin/ympd -h /run/mpd/socket --webport 80 -i 200 --documentroot /var/lib/mpd/music
ExecStart=/usr/bin/ympd -h /run/mpd/socket --webport "ssl://443:/var/lib/mpd/music/ssl.pem" -i 200 --documentroot /var/lib/mpd/music
User=root
CPUSchedulingPolicy=other
CPUAffinity=3
[Install]
WantedBy=multi-user.target
長々全記述付けていますが、中盤の「ExecStart行」だけ書換すれば良いです。
見たとおり、443ポートを使用し、
証明書は/var/lib/mpd/music/ssl.pemを使用するように書換します。
③ympdデーモンの再起動
systemctl daemon-reload
systemctl stop ympd.socket
systemctl stop ympd.service
sleep 1
systemctl start ympd.socket
systemctl start ympd.service
systemctl の stop と start 間は少しだけ間を開けたほうが良いと思います。
何か不明な点、バグなどございましたらご連絡くださいませ
おまけ:
宿題のプログレスバーは手は動かしていますが、まだこれからです。