⬆️ For table of contents, click the above icon
Pushes RSS feeds into Home Assistant as Markdown, so they can be displayed natively.
For more background, see my blog post.
- Home Assistant
- Home Assistant needs to be connected to a MQTT server
- This software
You need to create config.json
:
{
"mqtt": {
"address": "127.0.0.1:1883",
"credentials": {
"username": "AzureDiamond",
"password": "hunter2"
}
},
"rss_feeds": [
{
"id": "skrolli",
"url": "https://skrolli.fi/feed/"
}
]
}
If you don't use MQTT username/password, you can remove the whole "credentials": {...}
section.
You can run this on any computer as long as it can connect to the same MQTT server that Home Assistant uses.
For example, make a directory /home/<username>/rss-to-homeassistant
.
Download a suitable binary there (for Raspberry Pi, use the ARM build, for PCs use the amd64 build).
You can rename the downloaded binary to rss-to-homeassistant
.
You've created the configuration file. The directory has these contents:
/home/pi/rss-to-homeassistant
├── config.json
└── rss-to-homeassistant
Test starting it manually. If everything goes well, you should see this message:
$ ./rss-to-homeassistant
2021/03/22 07:45:30 [INFO] skrolli changed
You can stop it with Ctrl + c
.
The RSS feed should've just popped into Home Assistant (because we use its autodiscovery mechanism to advertise the feeds):
This means that Home Assistant has the Markdown content of the RSS feed. We're close to the finish line.
You need to add a Markdown card, with content that has a dynamic placeholder to display the feed entity's Markdown content:
You're done!
If you're on Linux, we have a helper to integrate with systemd:
./rss-to-homeassistant install-as-service
Wrote unit file to /etc/systemd/system/rss-to-homeassistant.service
Run to enable on boot & to start (--)now:
$ systemctl enable --now rss-to-homeassistant
Verify successful start:
$ systemctl status rss-to-homeassistant
If you followed the tips the installer gave, this program should automatically start after reboots. Have fun! Enjoy life.
- Consider polling interval, 1 minute might be too often
- Implement HTTP caching to be nice to RSS publishers