Không có mô tả

Fabian Peter Hammerle 2c7e6ed0f9 drop compatibility with python3.9 11 tháng trước cách đây
.github 2c7e6ed0f9 drop compatibility with python3.9 11 tháng trước cách đây
docs b66f0cd3ef home assistant auto discovery: add config for button scheduling poweroff & button locking all sessions 1 năm trước cách đây
systemctl_mqtt 2c7e6ed0f9 drop compatibility with python3.9 11 tháng trước cách đây
tests 2c7e6ed0f9 drop compatibility with python3.9 11 tháng trước cách đây
.dockerignore 74669520c1 added dockerfile & docker-compose.yml 6 năm trước cách đây
.gitattributes b66f0cd3ef home assistant auto discovery: add config for button scheduling poweroff & button locking all sessions 1 năm trước cách đây
.gitignore 85d150e3e9 Implement restart for units selected via --control-system-unit parameter (#180) 1 năm trước cách đây
.isort.cfg 04fcb2b7a9 isort: added config to workaround persistent misclassification of paho.mqtt.client 6 năm trước cách đây
.pylintrc c57260b7c0 drop compatibility with pyhon3.5 4 năm trước cách đây
CHANGELOG.md 2c7e6ed0f9 drop compatibility with python3.9 11 tháng trước cách đây
COPYING 1574063886 mqtt message on topic systemctl/hostname/poweroff schedules poweroff with delay of 4 seconds 6 năm trước cách đây
Dockerfile 73513eabb0 migrate from dbus-python to pure-python jeepney 1 năm trước cách đây
Makefile e72910d853 refactor makefile: minor renamings for consistency with switchbot-mqtt's Makefile 5 năm trước cách đây
Pipfile 2c7e6ed0f9 drop compatibility with python3.9 11 tháng trước cách đây
Pipfile.lock 2c7e6ed0f9 drop compatibility with python3.9 11 tháng trước cách đây
README.md 190b263ec7 document release v1.2.0 1 năm trước cách đây
docker-apparmor-profile 85d150e3e9 Implement restart for units selected via --control-system-unit parameter (#180) 1 năm trước cách đây
docker-compose.yml 35821ca095 docker-compose: add example for `--monitor-system-unit` 1 năm trước cách đây
mypy.ini 1574063886 mqtt message on topic systemctl/hostname/poweroff schedules poweroff with delay of 4 seconds 6 năm trước cách đây
pyproject.toml b6a358880b drop compatibility with python3.8; docker image: upgrade alpine base image from 3.13.1 to 3.21.0 including upgrade of python from 3.8 to 3.12 1 năm trước cách đây
setup.py 2c7e6ed0f9 drop compatibility with python3.9 11 tháng trước cách đây
systemd-user.service 33e3a1ca97 add systemd user service config for autostart 1 năm trước cách đây

README.md

systemctl-mqtt

CI Pipeline Status Coverage Status Last Release Compatible Python Versions DOI

MQTT client triggering & reporting shutdown on systemd-based systems

Setup

Via Pip

$ pip3 install --user --upgrade systemctl-mqtt

On debian-based systems, a subset of dependencies can optionally be installed via:

$ sudo apt-get install --no-install-recommends python3-jeepney python3-paho-mqtt

Follow instructions in systemd-user.service to start systemctl-mqtt automatically via systemd.

Via Docker Compose 🐳

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

Usage

$ systemctl-mqtt --mqtt-host HOSTNAME_OR_IP_ADDRESS

systemctl-mqtt --help explains all available command-line options / parameters.

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-file /run/secrets/password …
# or for testing (unsafe):
systemctl-mqtt --mqtt-username me --mqtt-password secret …

Schedule Poweroff

Schedule poweroff by sending a MQTT message to topic systemctl/hostname/poweroff.

$ mosquitto_pub -h MQTT_BROKER -t systemctl/hostname/poweroff -n

Adapt delay via: systemctl-mqtt --poweroff-delay-seconds 60 …

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.

Lock Screen

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

Suspend

$ mosquitto_pub -h MQTT_BROKER -t systemctl/hostname/suspend -n

Monitor ActiveState of System Units

$ systemctl-mqtt --monitor-system-unit foo.service

enables reports on topic systemctl/[hostname]/unit/system/[unit_name]/active-state.

Restarting of System Units

$ systemctl-mqtt  --control-system-unit <unit_name>

enables that a system unit can be started, stopped, and restarted by a message on topic systemctl/[hostname]/unit/system/[unit_name]/start, …/stop, …/restart.

Home Assistant 🏡

When MQTT Discovery is enabled (default in Home Assistant ≥0.117.0), the following entities will be added automatically:

  • binary_sensor.[hostname]_logind_preparing_for_shutdown
  • button.[hostname]_logind_lock_all_sessions
  • button.[hostname]_logind_poweroff
  • button.[hostname]_logind_suspend
  • sensor.[hostname]_unit_system_[unit_name]_active_state for --monitor-system-unit [unit_name]
  • button.[hostname]_unit_system_[unit_name]_restart for --control-system-unit [unit_name]

homeassistant entities_over_auto_discovery

Pass --homeassistant-discovery-prefix custom-prefix to systemctl-mqtt when using a custom discovery topic prefix.