Este é um pequeno programa que pode se inscrever em um minério de mais tópicos do MQTT e publicá-los como notificações de desktop via D-Bus. O programa pretende ser executado no fundo de uma sessão de desktop e gerar notificações de desktop a partir de mensagens MQTT.
A única opção não é instalar a partir da fonte. Primeiro, instale vá.
Em seguida, instale as dependências Go:
$ go get github.com/godbus/dbus
$ go get github.com/eclipse/paho.mqtt.golang
Em seguida, instale o aplicativo MQTT-DBUS-Notify:
$ go install github.com/akeil/mqtt-dbus-notify
O arquivo de configuração é esperado em $HOME/.config/mqtt-dbus-notify.json . Uma configuração de amostra se parece com o seguinte:
{
"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 " ,
}
]
} Além das subscriptions , esses também são os valores padrão. Se o corretor MQTT estiver em execução no mesmo computador na porta padrão ( 1883 ) e sem autenticação, nenhuma configuração será necessária.
A opção secure usa uma conexão criptografada TLS, geralmente sobre a porta 8883 .
Para gerar notificações, uma ou mais assinaturas precisam ser configuradas. Uma assinatura deve pelo menos especificar um topic . Tópico WildCards pode ser usado.
Uma assinatura também pode especificar um icon personalizado. Se nenhum for especificado, o ícone padrão será usado (veja abaixo).
Por padrão, o corpo da mensagem MQTT é usado como título para a notificação. Se a mensagem consistir em várias linhas, a primeira linha será usada como título e as restantes linhas como corpo.
Uma assinatura pode ter um title e body personalizados. Estes são modelos Go. Use {{.}} Para consultar a carga útil da mensagem MQTT.
Dentro do modelo de título e corpo, a função Topic pode ser usada para retornar uma parte do tópico MQTT. Por exemplo:
...
"topic" : " weather/berlin/temperature "
"title" : " {{.Topic 2}} in {{.Topic 1}} "
...Isso exibirá "temperatura em Berlim" como o título de notificação.
Os ícones podem ser especificados usando nomes de ícones padrão como "compromisso-soon". Veja a estrutura do diretório abaixo /usr/share/icons/ para ver quais ícones estão disponíveis.
Como alternativa, o caminho absoluto para um arquivo de imagem pode ser usado como um icon . assim:
{
"topic" : " my/topic " ,
"icon" : " /home/yourname/myicon.png "
}O programa precisa ser executado no contexto de uma sessão de desktop. Caso contrário, não seria capaz de publicar notificações.
Uma maneira simples de fazer isso é criar um arquivo mqtt-dbus-notify.desktop e colocá-lo em $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 ; A maioria dos ambientes de desktop (todos?) Deve suportar isso e executar o comando listado no Exec quando você faz login no DE.