Simple MQTT bridge in the form of a Telegram Bot. And also my first attempt at doing something with Go.
First register a new Bot with the Telegram, as described in the docs, to get your API key.
Then simply run lights-telegram once manually using go run .
.
This will create a config.yaml
file in the same directory.
Your API key goes in there, as well as the MQTT credentials.
With the config prepared, run lights-telegram again.
Now send a message to the bot.
You will see the UserID of your Telegram account in the log output.
Quit lights-telegram again by pressing Ctrl+C, then open config.yaml
again and put your User ID into the admin_id
field.
Now this admin account can add further user authorizations using chat messages to the bot.
As an admin use /register
to add new MQTT topics and their possible values to the menu.
Finally run /commandlist
on the bot to get a nicely formatted command list which you can then give to the /setcommands
command of BotFather.
Run go build
to produce an executable in the project directory.
You now need to decide on an installation location for both the executable as well as the configuration file.
As an example, I'll be using ~/bin/lights-telegram/
as the install directory.
You also need to decide which user will run the server.
It needs write access to the directory / config file.
In this example we'll also be using the current user, thomas
in my case.
Modify the username and paths in lights-telegram.service
and the commands below as required.
CGO_ENABLED=0 go build
mkdir ~/bin/lights-telegram
cp lights-telegram ~/bin/lights-telegram/lights-telegram
cp config.yaml ~/bin/lights-telegram/config.yaml
cp lights-telegram.service /etc/systemd/system/lights-telegram.service
systemctl daemon-reload
systemctl enable --now lights-telegram
You can also look at the log output of the app.
journalctl -u lights-telegram -b -f
----------------------------------------------------------------------------
"THE BEER-WARE LICENSE" (Revision 42):
<xythobuz@xythobuz.de> wrote this file. As long as you retain this notice
you can do whatever you want with this stuff. If we meet some day, and you
think this stuff is worth it, you can buy me a beer in return. Thomas Buck
----------------------------------------------------------------------------