Sem descrição

Fabian Peter Hammerle 9f346fb87c mqtt publish logind's PreparingForShutdown há 3 anos atrás
.github aee870c751 prepare glib loop to receive dbus signals há 3 anos atrás
systemctl_mqtt 36b80ed4be explicit timestamp type specification to avoid OverflowError há 3 anos atrás
tests 737289de2d refactor mqtt test: remove superfluous mock há 3 anos atrás
.dockerignore 74669520c1 added dockerfile & docker-compose.yml há 3 anos atrás
.gitignore ab72c20968 pipeline / pipenv: explicitly specify python version to workaround pipenv picking highest available há 3 anos atrás
.isort.cfg 04fcb2b7a9 isort: added config to workaround persistent misclassification of paho.mqtt.client há 3 anos atrás
.pylintrc 1574063886 mqtt message on topic systemctl/hostname/poweroff schedules poweroff with delay of 4 seconds há 3 anos atrás
CHANGELOG.md 36b80ed4be explicit timestamp type specification to avoid OverflowError há 3 anos atrás
COPYING 1574063886 mqtt message on topic systemctl/hostname/poweroff schedules poweroff with delay of 4 seconds há 3 anos atrás
Dockerfile 771ac46360 dockerfile: added missing dependencies há 3 anos atrás
Pipfile 522e1c6d7b pylint-import-requirements: upgrade to new stable version incorporating fix for PyGObject's custom loader há 3 anos atrás
Pipfile.lock 522e1c6d7b pylint-import-requirements: upgrade to new stable version incorporating fix for PyGObject's custom loader há 3 anos atrás
README.md aee870c751 prepare glib loop to receive dbus signals há 3 anos atrás
docker-apparmor-profile cd56f43371 rename apparmor-profile -> docker-apparmor-profile há 3 anos atrás
docker-compose.yml e57f5aaeea added link to merge request enabling apparmor for raspberrypi's official kernel há 3 anos atrás
mypy.ini 1574063886 mqtt message on topic systemctl/hostname/poweroff schedules poweroff with delay of 4 seconds há 3 anos atrás
setup.py aee870c751 prepare glib loop to receive dbus signals há 3 anos atrás

README.md

systemctl-mqtt

CI Pipeline Status Coverage Status Last Release Compatible Python Versions

MQTT client triggering 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

Home Assistant 🏡

Sample Setup

# 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

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 Authentication

systemctl-mqtt --mqtt-username me --mqtt-password secret …
# or
systemctl-mqtt --mqtt-username me --mqtt-password-file /var/lib/secrets/mqtt/password …