This project is a multi-system and multi-OS adaptation of mac2mqtt. It allows you to execute any command on your system, providing endless possibilities for automation and control.
Project description
Computer2Mqtt
This project is a multi-system and multi-OS adaptation of mac2mqtt. It allows you to execute any command on your system, providing endless possibilities for automation and control.
Requirements
This assumes you have direnv and uv installed
Simply run direnv allow
to setup the environment, you can read the contents of .envrc to see what it does behind the scenes.
Setup
- Clone this repository to your local machine.
- Run
direnv allow
in the project directory. This will set up the Python environment usingpyenv
. - Create a
computer2mqtt.yaml
by copying computer2mqtt-example.yaml configuration file in the project root. There are 2 important sections first the mqtt config, and second the commands you want to run. In the example below these are commands for macs to turn on/off the display. This should be changed to commands for your target system. Possibility is endless.
mqtt:
ip: 192.168.1.100
port: 1883
user: username
password: password
commands:
# Example mac command to wake/sleep display
displaysleep: "pmset displaysleepnow"
displaywake: "caffeinate -u -t 1"
- Run
computer2mqtt
and note down theSanitized hostname: Mac-mini
, Mac-mini in this case. - Set up Home Assistant Scripts to trigger commands. Here is an example from my
scripts.yaml
file in Home Assistant
macmini_displaysleep:
alias: Mac Mini Display Sleep
icon: mdi:laptop
sequence:
- service: mqtt.publish
data:
topic: "mac2mqtt/{device_name}/command/displaysleep"
payload: "displaysleep"
macmini_displaywake:
alias: Mac Mini Display Wake
icon: mdi:laptop
sequence:
- service: mqtt.publish
data:
topic: "mac2mqtt/{device_name}/command/displaywake"
payload: "displaywake"
Replace {device_name} with the name of your device from the previous step!
Running in the background
To run the script in the background, you can use the screen command. screen is a full-screen window manager that multiplexes a physical terminal between several processes.
- Start a new screen session with name of your choice with the command
screen -S {mysession}
. - Run the script with the command
computer2mqtt
. - Detach from the screen session with the command Ctrl-a d.
- You can reattach to the session at any time with the command
screen -r {mysession}
. This will keep the script running in the background, even if you close the terminal.
Project details
Release history Release notifications | RSS feed
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 computer2mqtt-0.1.2.tar.gz
.
File metadata
- Download URL: computer2mqtt-0.1.2.tar.gz
- Upload date:
- Size: 29.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | af1f664761a047564379d28cb62bf4b100718043b79b7f222a1f18acb5257f40 |
|
MD5 | 9b7b557fdd60f5de1678072fdd592066 |
|
BLAKE2b-256 | 5b158ac8f6a89e9a8182858dbb571b1d819522859c96f1762138fa0f0376b003 |
File details
Details for the file computer2mqtt-0.1.2-py3-none-any.whl
.
File metadata
- Download URL: computer2mqtt-0.1.2-py3-none-any.whl
- Upload date:
- Size: 4.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 39f06e1cb3bcad69554284e477fb15154e9e61f045ea0acdb1ee0ac3497a00a0 |
|
MD5 | 6b7a267bd0639f4a65feda227ae0a8c7 |
|
BLAKE2b-256 | 97da980eb610a797965b4977271d02eca96b19687894c7c1e54996e30e4b7999 |