{"id":15286957,"url":"https://github.com/richibrics/ioturing","last_synced_at":"2025-04-05T01:05:49.081Z","repository":{"id":61986478,"uuid":"422997020","full_name":"richibrics/IoTuring","owner":"richibrics","description":"Your Windows, Linux, macOS computer as MQTT and HomeAssistant integration  ","archived":false,"fork":false,"pushed_at":"2024-10-29T20:37:44.000Z","size":105610,"stargazers_count":79,"open_issues_count":14,"forks_count":6,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-10-29T22:50:15.429Z","etag":null,"topics":["home-assistant","home-automation","homeassistant","mqtt","python","remote-control"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/IoTuring/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/richibrics.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-10-30T21:45:50.000Z","updated_at":"2024-10-29T20:37:48.000Z","dependencies_parsed_at":"2024-01-16T01:22:59.220Z","dependency_job_id":"82490dbe-1296-48ec-9269-277add28c451","html_url":"https://github.com/richibrics/IoTuring","commit_stats":null,"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richibrics%2FIoTuring","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richibrics%2FIoTuring/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richibrics%2FIoTuring/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richibrics%2FIoTuring/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/richibrics","download_url":"https://codeload.github.com/richibrics/IoTuring/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247271528,"owners_count":20911587,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["home-assistant","home-automation","homeassistant","mqtt","python","remote-control"],"created_at":"2024-09-30T15:19:25.309Z","updated_at":"2025-04-05T01:05:49.062Z","avatar_url":"https://github.com/richibrics.png","language":"Python","funding_links":["https://www.buymeacoffee.com/richibrics"],"categories":[],"sub_categories":[],"readme":"# IoTuring\n\n[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)\n[![PyPI version](https://badge.fury.io/py/ioturing.svg)](https://pypi.org/project/IoTuring/)\n[![Build, release and publish](https://github.com/richibrics/IoTuring/actions/workflows/build-release-publish-with-vtag.yml/badge.svg)](https://github.com/richibrics/IoTuring/actions/workflows/build-release-publish-with-vtag.yml)\n\nIf you really like this project and you would like to support it:\n\n[![\"Buy Me A Coffee\"](https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png)](https://www.buymeacoffee.com/richibrics)\n\n## The project\n\nSimple and powerful cross-platform script to control your pc and share statistics using communication protocols like MQTT and home control hubs like **HomeAssistant**.\n\nLike his predecessor - **PyMonitorMQTT** - IoTuring allows you to choose which data are sent and which command are expected to be given. \n\n**Why should you use this ?** You don't have to write your configurations manually, entities are updated asynchronously and multiple warehouses can be used with one single run (and this is not deprecated obviously!). \n\nBut the most important thing: **works on all OSs and all architectures ! Windows, Linux, macOS, openBSD; x86, amd64, ARM and so on...**\n\n**CHANGELOG**: available in [Releases](https://github.com/richibrics/IoTuring/releases) page\n\n### HomeAssistant preview\n\nWhen the HomeAssistant warehouse is active, your computer will automatically show up in HomeAssistant as a single device, so all your entities will be grouped together. \nThe device will also have some properties like connectivity and battery status.\n\n![device](https://github.com/richibrics/IoTuring/blob/main/docs/images/device_info.png?raw=true)\n\nAll sensors and switches will be ready to be added to your dashboard in your favourite cards !\n\nFor detailed instructions about how to add your computer to HomeAssistant, look at the [HomeAssistant setup](#homeassistant-setup) section below.\n\n## Install\n\n### With pipx (recommended)\n\n1. Install [pipx](https://pipx.pypa.io/), follow documentation according to your OS\n2. Install IoTuring with pipx:\n```shell\npipx install IoTuring\n```\n3. Done! You can configure IoTuring now.\n\n### Detailed instructions\n\n\u003cdetails\u003e\n\u003csummary\u003eDebian/Ubuntu with pipx\u003c/summary\u003e\n\n```shell\nsudo apt update\nsudo apt install pipx\npipx ensurepath\npipx install IoTuring\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eArchLinux with pipx\u003c/summary\u003e\n\n```\npacman -Syu python-pipx\npipx ensurepath\npipx install IoTuring\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eWindows with pipx\u003c/summary\u003e\n\n1. Download latest python https://www.python.org/downloads/\n2. Install with default options\n3. In a CommandPrompt or in Powershell window:\n```shell\npy -m pip install --user pipx\npy -m pipx ensurepath\npy -m pipx install IoTuring\n```\n\n4. Close and reopen the window, and you can run `IoTuring` without any prefixes.\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eManual install from git to a virtual environment\u003c/summary\u003e\n\nRequirements:\n- Python 3.8+\n- Pip\n- Git\n\n```shell\ngit clone https://github.com/richibrics/IoTuring\ncd IoTuring\nmkdir .venv\npython -m venv .venv\n. ./.venv/bin/activate\npip install --upgrade pip\npip install .\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eWith system pip (not recommended)\u003c/summary\u003e\n\nRequirements:\n- Python 3.8+\n- Pip\n\n```shell\npip install IoTuring\n```\n\n\u003c/details\u003e\n\n## Configure\n\nThe first time you run IoTuring you need to specify which entities and warehouses you want to enable.\nTo run in configuration mode, you only need to specify the `-c` argument along the script execution command:\n\n```\nIoTuring -c\n```\n\nA simple menu will show and you will be able to configure your entities and warehouses !\nOnce you have selected your preferred settings, you're ready to run IoTuring.\n\nYou will be able to enter the configuration menu whenever you want (with the same command as above) to edit your choises.\n\n## Run \n\nYou can simply run IoTuring using this command:\n\n```\nIoTuring\n```\n\n### Other arguments\n\nTo see all command options run `IoTuring --help`:\n\n```\n\u003e IoTuring --help\nusage: IoTuring [-h] [-v] [-c] [-o]\n\nSimple and powerful cross-platform script to control your pc and share statistics using communication protocols like MQTT and home control hubs like HomeAssistant.\n\noptions:\n  -h, --help          show this help message and exit\n  -v, --version       show program's version number and exit\n  -c, --configurator  enter configuration mode\n  -o, --open-config   open config file\n\nStart without argument for normal use\n```\n\n## Docker\n\nRun the configurator:\n\n```shell\ndocker run -it -v ./.config/IoTuring/:/config richibrics/ioturing:latest IoTuring -c\n```\n\nEnable the `Console Warehouse` to see logs!\n\nRun detached after configuration:\n\n```shell\ndocker run -d -v ./.config/IoTuring/:/config richibrics/ioturing:latest\n```\n\nFor a docker compose example see [docker-compose.yaml](./docker-compose.yaml). Create configuration manually or with the command above!\n\n\n### HomeAssistant setup\n\nSteps to connect IoTuring to your HomeAssistant install:\n\n1. Install an MQTT broker. You can find the full list of brokers here: https://mqtt.org/software/\n    - If you have a HAOS or supervised installation you can use the [Mosquitto broker addon](https://mqtt.org/software/)\n    - For Docker users the official [eclipse-mosquitto container](https://hub.docker.com/_/eclipse-mosquitto/) is recommended\n2.  Enable the [MQTT integration](https://www.home-assistant.io/integrations/mqtt) in HA, and connect to your broker\n3.  Install and configure IoTuring, in the configurator menu add the HomeAssistant Warehouse, connect to the same broker\n4.  When you start IoTuring, your computer will show up as a new MQTT device in HA automagically\n\n\n## Features\n\n### Available entities\n\n| Name               | Description                                                                 | Supported platforms                                                                                                                                                                                                                                                     |\n| ------------------ | --------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| ActiveWindow       | shares the name of the window you're working on                             | ![win](https://github.com/richibrics/IoTuring/blob/main/docs/images/win.png?raw=true) ![mac](https://raw.githubusercontent.com/richibrics/IoTuring/main/docs/images/mac.png) ![linux](https://raw.githubusercontent.com/richibrics/IoTuring/main/docs/images/linux.png) |\n| AppInfo            | shares app informations like the running version                            | ![win](https://github.com/richibrics/IoTuring/blob/main/docs/images/win.png?raw=true) ![mac](https://raw.githubusercontent.com/richibrics/IoTuring/main/docs/images/mac.png) ![linux](https://raw.githubusercontent.com/richibrics/IoTuring/main/docs/images/linux.png) |\n| Battery            | shares the battery level and charging status                                | ![win](https://github.com/richibrics/IoTuring/blob/main/docs/images/win.png?raw=true) ![mac](https://raw.githubusercontent.com/richibrics/IoTuring/main/docs/images/mac.png) ![linux](https://raw.githubusercontent.com/richibrics/IoTuring/main/docs/images/linux.png) |\n| BootTime           | shares the machine boot time                                                | ![win](https://github.com/richibrics/IoTuring/blob/main/docs/images/win.png?raw=true) ![mac](https://raw.githubusercontent.com/richibrics/IoTuring/main/docs/images/mac.png) ![linux](https://raw.githubusercontent.com/richibrics/IoTuring/main/docs/images/linux.png) |\n| Cpu                | shares useful information about cpu usage (times, frequencies, percentages) | ![win](https://github.com/richibrics/IoTuring/blob/main/docs/images/win.png?raw=true) ![mac](https://raw.githubusercontent.com/richibrics/IoTuring/main/docs/images/mac.png) ![linux](https://raw.githubusercontent.com/richibrics/IoTuring/main/docs/images/linux.png) |\n| DesktopEnvironment | shares the running desktop environment (useful only for Linux)              | ![win](https://github.com/richibrics/IoTuring/blob/main/docs/images/win.png?raw=true) ![mac](https://raw.githubusercontent.com/richibrics/IoTuring/main/docs/images/mac.png) ![linux](https://raw.githubusercontent.com/richibrics/IoTuring/main/docs/images/linux.png) |\n| Disk               | shares disk usage data                                                      | ![win](https://github.com/richibrics/IoTuring/blob/main/docs/images/win.png?raw=true) ![mac](https://raw.githubusercontent.com/richibrics/IoTuring/main/docs/images/mac.png) ![linux](https://raw.githubusercontent.com/richibrics/IoTuring/main/docs/images/linux.png) |\n| DisplayMode        | command for changing multimonitor display mode                              | ![win](https://github.com/richibrics/IoTuring/blob/main/docs/images/win.png?raw=true)                                                                                                                                                                                   |\n| Fanspeed           | shares maximum fanspeed of each controller                                  | ![linux](https://raw.githubusercontent.com/richibrics/IoTuring/main/docs/images/linux.png)                                                                                                                                                                              |\n| Hostname           | shares the machine hostname                                                 | ![win](https://github.com/richibrics/IoTuring/blob/main/docs/images/win.png?raw=true) ![mac](https://raw.githubusercontent.com/richibrics/IoTuring/main/docs/images/mac.png) ![linux](https://raw.githubusercontent.com/richibrics/IoTuring/main/docs/images/linux.png) |\n| Lock               | command for locking the machine                                             | ![win](https://github.com/richibrics/IoTuring/blob/main/docs/images/win.png?raw=true) ![mac](https://raw.githubusercontent.com/richibrics/IoTuring/main/docs/images/mac.png) ![linux](https://raw.githubusercontent.com/richibrics/IoTuring/main/docs/images/linux.png) |\n| Monitor            | command for switching monitors on/off                                       | ![win](https://github.com/richibrics/IoTuring/blob/main/docs/images/win.png?raw=true) ![linux](https://raw.githubusercontent.com/richibrics/IoTuring/main/docs/images/linux.png)                                                                                        |\n| Notify             | displays a notification                                                     | ![win](https://github.com/richibrics/IoTuring/blob/main/docs/images/win.png?raw=true) ![mac](https://raw.githubusercontent.com/richibrics/IoTuring/main/docs/images/mac.png) ![linux](https://raw.githubusercontent.com/richibrics/IoTuring/main/docs/images/linux.png) |\n| OperatingSystem    | shares the operating system of your machine                                 | ![win](https://github.com/richibrics/IoTuring/blob/main/docs/images/win.png?raw=true) ![mac](https://raw.githubusercontent.com/richibrics/IoTuring/main/docs/images/mac.png) ![linux](https://raw.githubusercontent.com/richibrics/IoTuring/main/docs/images/linux.png) |\n| Power*             | commands for poweroff, reboot and sleep                                     | ![win](https://github.com/richibrics/IoTuring/blob/main/docs/images/win.png?raw=true) ![mac](https://raw.githubusercontent.com/richibrics/IoTuring/main/docs/images/mac.png) ![linux](https://raw.githubusercontent.com/richibrics/IoTuring/main/docs/images/linux.png) |\n| Ram                | shares useful information about ram usage                                   | ![win](https://github.com/richibrics/IoTuring/blob/main/docs/images/win.png?raw=true) ![mac](https://raw.githubusercontent.com/richibrics/IoTuring/main/docs/images/mac.png) ![linux](https://raw.githubusercontent.com/richibrics/IoTuring/main/docs/images/linux.png) |\n| Temperature        | shares temperature sensor data                                              | ![mac](https://raw.githubusercontent.com/richibrics/IoTuring/main/docs/images/mac.png) ![linux](https://raw.githubusercontent.com/richibrics/IoTuring/main/docs/images/linux.png)                                                                                       |\n| Terminal           | runs custom commands in the shell                                           | ![win](https://github.com/richibrics/IoTuring/blob/main/docs/images/win.png?raw=true) ![mac](https://raw.githubusercontent.com/richibrics/IoTuring/main/docs/images/mac.png) ![linux](https://raw.githubusercontent.com/richibrics/IoTuring/main/docs/images/linux.png) |\n| Time               | shares the machine local time                                               | ![win](https://github.com/richibrics/IoTuring/blob/main/docs/images/win.png?raw=true) ![mac](https://raw.githubusercontent.com/richibrics/IoTuring/main/docs/images/mac.png) ![linux](https://raw.githubusercontent.com/richibrics/IoTuring/main/docs/images/linux.png) |\n| Uptime             | shares the time since the machine is on                                     | ![win](https://github.com/richibrics/IoTuring/blob/main/docs/images/win.png?raw=true) ![mac](https://raw.githubusercontent.com/richibrics/IoTuring/main/docs/images/mac.png) ![linux](https://raw.githubusercontent.com/richibrics/IoTuring/main/docs/images/linux.png) |\n| Username           | shares the name of the user who is working on the machine                   | ![win](https://github.com/richibrics/IoTuring/blob/main/docs/images/win.png?raw=true) ![mac](https://raw.githubusercontent.com/richibrics/IoTuring/main/docs/images/mac.png) ![linux](https://raw.githubusercontent.com/richibrics/IoTuring/main/docs/images/linux.png) |\n| Volume             | control audio volume                                                        | ![mac](https://raw.githubusercontent.com/richibrics/IoTuring/main/docs/images/mac.png) ![linux](https://raw.githubusercontent.com/richibrics/IoTuring/main/docs/images/linux.png)                                                                                       |\n\n\n\\* To use the features from Power entity on macOS and on some Linux distros you need to give permissions to your user to shutdown and reboot without sudo password.\nYou can easily do that by using the following terminal command:\n\n```shell\nsudo sh -c \"echo '$USER ALL=(ALL) NOPASSWD: /sbin/poweroff, /sbin/reboot, /sbin/shutdown' \u003e\u003e /etc/sudoers\"\n```\n\n\n### Available warehouses\n\n- HomeAssistant: shares sensors and switches to HomeAssistant. The machine is shown as a Device and all the entites are grouped together. **recommended**\n- MQTT: sends data to MQTT broker and subscribes to commands topics.\n- Console: prints data to the console\n\n\n## Environment variables\n\n- `IOTURING_CONFIG_DIR`: Change the path to the directory of the config file\n- `IOTURING_LOG_LEVEL`: Set the log level\n\nTo run IoTuring with debug log on Linux or  on Mac run:\n\n```shell\nenv IOTURING_LOG_LEVEL=LOG_DEBUG IoTuring\n```\n\nOn Windows:\n\n```cmd\nset \"IOTURING_LOG_LEVEL=LOG_DEBUG\" \u0026\u0026 IoTuring\n```\n\n## Development\n\nSee [DEVELOPMENT.md](docs/DEVELOPMENT.md)\n\n## Contributors\n\n- [@richibrics](https://github.com/richibrics): Riccardo Briccola - Author\n- [@infeeeee](https://github.com/infeeeee) - Main contributor\n- [@tsunglung](https://github.com/tsunglung)\n\n## Acknowledgement\n\nIcons in this readme are from [Material Design Icons](https://materialdesignicons.com/), License: [Pictogrammers Free License](https://github.com/Templarian/MaterialDesign-SVG/blob/master/LICENSE)\n\nNotification icon is from [Home Assistant](https://github.com/home-assistant/assets/): License: [CC BY-SA 4.0](https://github.com/home-assistant/assets/blob/master/LICENSE.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frichibrics%2Fioturing","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frichibrics%2Fioturing","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frichibrics%2Fioturing/lists"}