MQTT client triggering & reporting shutdown on systemd-based systems
Project description
systemctl-mqtt
MQTT client triggering & reporting shutdown on systemd-based systems
Setup
$ pip3 install --user --upgrade systemctl-mqtt
$ systemctl-mqtt --mqtt-host HOSTNAME_OR_IP_ADDRESS
On debian-based systems, dependencies can optionally be installed via:
$ sudo apt-get install --no-install-recommends python3-dbus python3-gi python3-paho-mqtt
Schedule poweroff by sending a MQTT message to topic systemctl/hostname/poweroff
.
$ mosquitto_pub -h MQTT_BROKER -t systemctl/hostname/poweroff -n
Lock screen by sending a MQTT message to topic systemctl/hostname/lock-all-sessions
.
$ mosquitto_pub -h MQTT_BROKER -t systemctl/hostname/lock-all-sessions -n
Shutdown Report
systemctl-mqtt
subscribes to logind's PrepareForShutdown
signal.
systemctl halt|poweroff|reboot
triggers a message with payload true
on topic systemctl/hostname/preparing-for-shutdown
.
Home Assistant 🏡
Sample Setup
Send Poweroff Command
# https://www.home-assistant.io/docs/mqtt/broker/#configuration-variables
mqtt:
broker: BROKER_HOSTNAME_OR_IP_ADDRESS
# credentials, additional options…
script:
poweroff_raspberry_pi:
sequence:
service: mqtt.publish
data:
topic: systemctl/raspberrypi/poweroff
homeassistant:
customize:
script.poweroff_raspberry_pi:
friendly_name: poweroff pi
icon: mdi:power
Trigger Automation on Shutdown
automation:
- trigger:
platform: mqtt
topic: systemctl/raspberrypi/preparing-for-shutdown
payload: 'true'
action:
service: switch.turn_off
entity_id: switch.desk_lamp
Automatic Discovery of Shutdown Sensor (Optional)
After enabling MQTT device discovery
home assistant will automatically detect a new entity
binary_sensor.hostname_preparing_for_shutdown
.
mqtt:
broker: BROKER_HOSTNAME_OR_IP_ADDRESS
discovery: true # default in home assistant >=v0.117.0
# credentials, additional options…
When using a custom discovery_prefix
pass --homeassistant-discovery-prefix custom-prefix
to systemctl-mqtt
.
Docker 🐳
- Clone this repository.
- Edit
docker-compose.yml
. - Load AppArmor profile:
sudo apparmor_parser ./docker-apparmor-profile
sudo docker-compose up --build
Pre-built docker image are available at https://hub.docker.com/r/fphammerle/systemctl-mqtt/tags
Annotation of signed tags docker/*
contains docker image digests: https://github.com/fphammerle/systemctl-mqtt/tags
MQTT via TLS
TLS is enabled by default.
Run systemctl-mqtt --mqtt-disable-tls …
to disable TLS.
MQTT Authentication
systemctl-mqtt --mqtt-username me --mqtt-password secret …
# or
systemctl-mqtt --mqtt-username me --mqtt-password-file /var/lib/secrets/mqtt/password …
Adapt Poweroff Delay
systemctl-mqtt --poweroff-delay-seconds 60 …
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file systemctl-mqtt-0.5.0.tar.gz
.
File metadata
- Download URL: systemctl-mqtt-0.5.0.tar.gz
- Upload date:
- Size: 89.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.4.2 requests/2.22.0 setuptools/45.2.0 requests-toolbelt/0.8.0 tqdm/4.30.0 CPython/3.8.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2c026622a1a19b506033c5c06670739ad8280199b2e326ebc9899f03943f2e34 |
|
MD5 | 8ef1aeed87b98850f346112658c82a82 |
|
BLAKE2b-256 | 5f01ca6b1bc505b20ed8d352060b8d558a80dbc23b4859afa3a4fa2ae3e307e2 |
File details
Details for the file systemctl_mqtt-0.5.0-py3-none-any.whl
.
File metadata
- Download URL: systemctl_mqtt-0.5.0-py3-none-any.whl
- Upload date:
- Size: 24.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.4.2 requests/2.22.0 setuptools/45.2.0 requests-toolbelt/0.8.0 tqdm/4.30.0 CPython/3.8.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c8e827e471bfad670a23dba464815f74fef700e0aa954c4ee08e4ca1097912af |
|
MD5 | cbc64d3d6d7138af54153906db999fc9 |
|
BLAKE2b-256 | b2f57071775405a812380452c7a9bb0f2aecfcf27708d5dafb4522a8c1b8eba6 |