这是一个小程序,可以订阅一个矿石更多的MQTT主题,并通过D-Bus将其作为桌面通知发布。该程序旨在在桌面会话的背景下运行,并从MQTT消息中生成桌面通知。
唯一的选项不是从源安装。首先,安装去。
接下来,安装GO依赖项:
$ 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加密连接。
要生成通知,需要配置一个或多个订阅。订阅至少必须指定一个topic 。可以使用主题通配符。
订阅还可以指定自定义icon 。如果未指定,将使用默认图标(请参见下文)。
默认情况下,MQTT消息的主体用作通知标题。如果消息由多行组成,则将第一行用作标题,其余行作为身体。
订阅可以具有自定义的title和body 。这些是GO模板。使用{{.}}参考MQTT消息有效负载。
在标题和身体模板中, Topic功能可用于返回MQTT主题的一部分。例如:
...
"topic" : " weather/berlin/temperature "
"title" : " {{.Topic 2}} in {{.Topic 1}} "
...这将显示“柏林温度”作为通知标题。
可以使用标准图标名称来指定图标。查看下面的目录结构/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下列出的命令。