このプロジェクトについて

DesktopPanelは、公式RPiタッチスクリーンを備えたRaspberry Pi向けに設計されたデスクトップ制御パネルです。著者のSmartBedroomPanelプロジェクトを再構築した後継版であり、Dockerイメージ(mrtux/desktop-panel)として配布されています。 セットアップの注意点ではバックライト制御について説明しています。udevルールにより、バックライトの明るさとbl_powerのsysfsエントリへの非root書き込みアクセスが許可されます。既知のボードが検出されない場合、バックライトのsysfs環境が一時ディレクトリ内で偽装されます。これは開発に役立ちます。 Dockerでの実行には、アプリケーションがいくつかのシステムリソースにアクセスするため、昇格されたアクセス権が必要です。コンテナは、desktop-panel-config.jsonとissuelist.jsonを含む構成ディレクトリを/app/configurationに読み取り専用でマウントし、さらにオプションで書き込み可能なスクリーンショットディレクトリを/app/screenshotsにマウントすることを想定しています。コマンド例では、--privileged、--restart always、TZ環境変数、バインドマウントを使用しています。構成マウントでは、アプリがJSONファイルの変更に反応できるようになっています。 統合は主にメッセージベースです。AMQPでは、アクセスと認証情報をamqp.host、amqp.user、amqp.passwdで設定します。amqp.declareがtrueの場合、リソースはパネルによって宣言され、そうでない場合はセットアップは外部で行われます。パネルはamqp.command_channel(デフォルトはcommand.DesktopPanel)でコマンドを待ち受けます。コマンドはコマンド識別子と引数オブジェクトを持つJSONオブジェクトです。現在の実装はリクエストのみで、汎用的なRPC応答メカニズムはありません。既知のコマンドには、screenshot(スクリーンショットディレクトリに画像を保存)とshow pageがあります。show pageはpage引数で指定されたページに切り替え、go_back_if_currentでナビゲーションスタックをポップし、block_inputでクリックジャッキングを防止できます。 syslogチャネルは、Systemページに重要なsyslogメッセージを表示できます。メッセージはamqp.syslog_channelで指定されたキューから消費されます(デフォルトはなく、省略すると無効になります)。メッセージはsyslog-ngのAMQPデスティネーションから送信される必要があり、すべての情報はAMQPメッセージプロパティヘッダー(DATE、FACILITY、HOST/HOST_FROM、MESSAGE、PRIORITY、PROGRAM)に含まれ、本文は空である必要があります。error重大度以上のみが意味を持ちます。syslog-ngのフィルターまたはRabbitMQのバインディングで、それらの重大度のみをルーティングする必要があります。READMEでは、専用の耐久キュー(例:syslog.DesktopPanel)をsyslog-ngトピック交換にバインドし、キューを外部で管理する場合はamqp.declareをfalseに設定することを推奨しており、構成JSONのスニペットも提供しています。Systemページがアクティブでないときに新しいメッセージが到着すると、Systemタブボタンがcrit/critical/alert/emerg/panicの場合は赤、error/errの場合は黄色に点灯します。通知はページを開くとクリアされます。 MQTTでは、mqtt.presence-topicが設定されている場合、プレゼンスステータスが生のステータステキストとして公開されます。 このプロジェクトはStreamline Icons Packの無料アイコンを使用しており、MITライセンス(© 2021 Stefan Haun and contributors)の下で提供されています。静的解析用のCodeQLワークフローが含まれています。