First job of the evening (at least, first indoor job of the evening) was to come up with a unit file to start the Perl script that takes power consumption data from my RFXcom unit and publishes it to MQTT. Fortunately that wasn’t too taxing and the following looks to work first time.
[Unit]
Description=rfxcom-to-mqtt
[Service]
Type=simple
Restart=always
ExecStart=/usr/local/bin/rfxcom-to-mqtt.pl
[Install]
WantedBy=multi-user.target
I copied that to /etc/systemd/system/rfxcom.service
at which point
sudo systemctl daemon-reload
sudo systemctl start rfxcom.service
was sufficient to get it running. Then
sudo systemctl enable rfxcom.service
should make sure it starts on a reboot.
There are a few things that would be neat to sort out at some point, such as the direct reference in the code to /dev/ttyUSB0
. I guess the correct thing to do would probably be to arrange for a symlink to something like /dev/rfxcom
to be created in the udev rules when the relevant device is plugged in, and also add
TAG+="systemd"
to the same rule. Then adding
BindsTo=dev-rfxcom.device
After=dev-rfxcom.device
to the unit file in the Unit section might do the trick. Need to research that last bit a little more though, as I’m not certain that’s correct.