Description
TLDR:
I have implemented a method to get LGSM alerts to be distributed via the MQTT protocol.
I am looking for feedback on it , review the implementation AND on guidance on how to get it prepped for inclusion into the base LGSM package.
A proof of concept is in 'insensitiveclod/LinuxGSM'
Long version:
I have implemented:
alert_mqtt.sh
And altered:
alert_sh (to know what to do)
core_functions.sh (to know about it)
core_dl.sh (to define mqttpubpath... Is possibly not the right place ?)
Also, an example config has been made for rust:
rustserver/_default.cfg
Since I only started using LGSM about a month ago, and I just checked out the source 4 days ago, I dont know if there's particular requirements/ideas that I am missing in my implementation.
I aim to re-write json-format of the alert_mqtt.sh message somewhat to more correspond to something that'll be easily parseable by something like NodeRed
I am thinking of doing this with a 'mqttjsontemplate' config-param that'll allow formatting things from the config-file, as it would be quite a pain to have to edit alert_mqtt.sh for most users.
The config currently knows about:
mqttalert on/off
mqtthost server-name/ip
mqttport service-port
mqttuser user to login with (anonymous-user support coming)
mqttpassword password for user (see above)
mqtttopic mqtt 'topic' name.
The mqtttopic is currently 'fixed'. That is, '/lgsm/rustserver' for the rust-server example.
I am thinking of changing it to "mqtttopicbase" instead, so the full topic of any alert will be in the form of /lgsm/rustserver/$instancename/
If you know how MQTT works, this will mean you can subscribe to /lgsm/rustserver/# and get messages from ALL instances; of /lgsm/rustserver/rustserver1 for the 'rustserver1' instance , only.
Comments very welcome.
Keen to have this be available for anyone/everyone.