これは、1つのOre More MQTTトピックを購読し、D-Busを介してデスクトップ通知として公開できる小さなプログラムです。このプログラムは、デスクトップセッションのバックグラウンドで実行し、MQTTメッセージからデスクトップ通知を生成することを目的としています。
唯一のオプションは、ソースからインストールすることです。まず、インストールします。
次に、依存関係をインストールします。
$ go get github.com/godbus/dbus
$ go get github.com/eclipse/paho.mqtt.golang
次に、mqtt-dbus-notifyアプリをインストールします。
$ go install github.com/akeil/mqtt-dbus-notify
構成ファイルは$HOME/.config/mqtt-dbus-notify.jsonで予想されます。サンプル構成は次のようになります:
{
"host" : " localhost " ,
"port" : 1883 ,
"username" : " " ,
"password" : " " ,
"secure" : false ,
"timeout" : 5 ,
"icon" : " dialog-information " ,
"subscriptions" : [
{
"topic" : " calendar/alert " ,
"icon" : " appointment-soon " ,
"title" : " Appointment " ,
"body" : " {{.}} "
},
{
"topic" : " test/notify " ,
}
]
} subscriptionsとは別に、これらもデフォルト値です。 MQTTブローカーがデフォルトのポート( 1883 )で同じコンピューターで実行されており、認証なしで実行されている場合、構成は不要です。
secureオプションは、通常ポート8883でTLS暗号化された接続を使用します。
通知を生成するには、1つ以上のサブスクリプションを構成する必要があります。サブスクリプションは、少なくとも1つのtopicを指定する必要があります。トピックワイルドカードを使用できます。
サブスクリプションは、カスタムiconを指定することもできます。ない場合、デフォルトのアイコンが使用されます(以下を参照)。
デフォルトでは、MQTTメッセージの本文は、通知のタイトルとして使用されます。メッセージが複数の行で構成されている場合、最初の行はタイトルとして使用され、残りの行はボディとして使用されます。
サブスクリプションには、カスタマイズされたtitleとbody持つことができます。これらはGOテンプレートです。 {{.}}を使用して、MQTTメッセージペイロードを参照してください。
タイトルとボディテンプレート内で、 Topic関数を使用して、MQTTトピックの一部を返すことができます。例えば:
...
"topic" : " weather/berlin/temperature "
"title" : " {{.Topic 2}} in {{.Topic 1}} "
...これにより、「ベルリンの温度」が通知タイトルとして表示されます。
アイコンは、「Appitiont-Soon」などの標準アイコン名を使用して指定できます。 /usr/share/icons/以下のディレクトリ構造を見て、どのアイコンが使用できるかを確認してください。
または、画像ファイルへの絶対パスはiconとして使用できます。このような:
{
"topic" : " my/topic " ,
"icon" : " /home/yourname/myicon.png "
}プログラムは、デスクトップセッションのコンテキスト内で実行する必要があります。それ以外の場合、通知を公開できません。
これを行う簡単な方法はmqtt-dbus-notify.desktopファイルを作成し、 $HOME/.config/autostartに配置することです。
[Desktop Entry]
Name =MQTT-DBus-Notify
Comment =Desktop notifications from MQTT messages
NoDisplay =false
Exec =$GOHOME/bin/mqtt-dbus-notify
Type =Application
Categories =Accessoires ;ほとんどの(すべて?)デスクトップ環境は、これをサポートし、DEにログインするときにExecにリストされているコマンドを実行する必要があります。