Este es un pequeño programa que puede suscribirse a un mineral más temas MQTT y publicarlos como notificaciones de escritorio a través de D-Bus. El programa está destinado a ejecutarse en el fondo de una sesión de escritorio y generar notificaciones de escritorio a partir de mensajes MQTT.
La única opción correcta no es instalar desde la fuente. Primero, instale Go.
A continuación, instale dependencias de Go:
$ go get github.com/godbus/dbus
$ go get github.com/eclipse/paho.mqtt.golang
A continuación, instale la aplicación MQTT-DBUS-Notify:
$ go install github.com/akeil/mqtt-dbus-notify
El archivo de configuración se espera en $HOME/.config/mqtt-dbus-notify.json . Una configuración de muestra se ve así:
{
"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 " ,
}
]
} Además de las subscriptions , estos también son los valores predeterminados. Si el corredor MQTT se ejecuta en la misma computadora en el puerto predeterminado ( 1883 ) y sin autenticación, no se requiere configuración.
La opción secure utiliza una conexión cifrada TLS, generalmente a través del puerto 8883 .
Para generar notificaciones, se deben configurar una o más suscripciones . Una suscripción debe al menos especificar un topic . Se pueden usar comodines de tema.
Una suscripción también puede especificar un icon personalizado. Si no se especifica ninguno, se utilizará el icono predeterminado (ver más abajo).
Por defecto, el cuerpo del mensaje MQTT se usa como título para la notificación. Si el mensaje consta de múltiples líneas, la primera línea se usa como título y las líneas restantes como cuerpo.
Una suscripción puede tener un title y body personalizados. Estas son plantillas GO. Use {{.}} Para referirse a la carga útil del mensaje MQTT.
Dentro de la plantilla de título y cuerpo, la función Topic se puede usar para devolver una parte del tema MQTT. Por ejemplo:
...
"topic" : " weather/berlin/temperature "
"title" : " {{.Topic 2}} in {{.Topic 1}} "
...Esto mostrará "temperatura en Berlín" como título de notificación.
Los iconos se pueden especificar utilizando nombres de iconos estándar como "cita-soon". Mire la estructura del directorio a continuación /usr/share/icons/ para ver qué iconos están disponibles.
Alternativamente, la ruta absoluta a un archivo de imagen se puede usar como un icon . como esto:
{
"topic" : " my/topic " ,
"icon" : " /home/yourname/myicon.png "
}El programa debe ejecutarse dentro del contexto de una sesión de escritorio. De lo contrario, no podría publicar notificaciones.
Una forma simple de hacerlo es crear un archivo mqtt-dbus-notify.desktop y colocarlo en $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 ; La mayoría de los entornos de escritorio (todos?) Deben admitir esto y ejecutar el comando enumerado en Exec cuando inicie sesión en el DE.