Skip to main content

MQTT client triggering & reporting shutdown on systemd-based systems

Project description

systemctl-mqtt

Code style: black CI Pipeline Status Coverage Status Last Release Compatible Python Versions DOI

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…

homeassistant discovery binary_sensor.hostname_preparing_for_shutdown

When using a custom discovery_prefix pass --homeassistant-discovery-prefix custom-prefix to systemctl-mqtt.

Docker 🐳

  1. Clone this repository.
  2. Edit docker-compose.yml.
  3. Load AppArmor profile: sudo apparmor_parser ./docker-apparmor-profile
  4. 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

systemctl-mqtt-0.5.0.tar.gz (89.5 kB view details)

Uploaded Source

Built Distribution

systemctl_mqtt-0.5.0-py3-none-any.whl (24.1 kB view details)

Uploaded Python 3

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

Hashes for systemctl-mqtt-0.5.0.tar.gz
Algorithm Hash digest
SHA256 2c026622a1a19b506033c5c06670739ad8280199b2e326ebc9899f03943f2e34
MD5 8ef1aeed87b98850f346112658c82a82
BLAKE2b-256 5f01ca6b1bc505b20ed8d352060b8d558a80dbc23b4859afa3a4fa2ae3e307e2

See more details on using hashes here.

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

Hashes for systemctl_mqtt-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c8e827e471bfad670a23dba464815f74fef700e0aa954c4ee08e4ca1097912af
MD5 cbc64d3d6d7138af54153906db999fc9
BLAKE2b-256 b2f57071775405a812380452c7a9bb0f2aecfcf27708d5dafb4522a8c1b8eba6

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page