# pydomotic
[![PyPI version](https://badge.fury.io/py/pydomotic.svg)](https://badge.fury.io/py/pydomotic)
A Python library for home automation execution, enabling seamless control and
management of your IoT devices.
_"Domotics": The automatic control of home appliances by electronic systems.
Contraction of domestic robotics, from the Latin domus ("home"), and robotics._
## Getting Started
1. Install `pydomotic` in your environment.
```bash
$ pip install pydomotic
```
1. Create your `pydomotic.yml` configuration file where you will define your
devices and automations.
```yaml
# pydomotic.yml
devices:
fan:
description: fan switch
provider: noop
id: '012'
thermometer:
description: temperature sensor
provider: noop
id: '345'
automations:
fan:
enabled: true
components:
- if:
thermometer:
temp: '>75'
then:
turn-on: fan
else:
turn-off: fan
```
1. Running the following will check each trigger and execute any actions.
```bash
$ python -m pydomotic
```
Note that each configured provider will require separate installation of its specific dependencies. For installing these dependencies and full configuration documentation, see [CONFIGURATION.md](https://github.com/purple4reina/pydomotic/blob/main/docs/CONFIGURATION.md)
For more details on deployment options, see [DEPLOYING.md](https://github.com/purple4reina/pydomotic/blob/main/docs/DEPLOYING.md)
## Glossary
**trigger:** A small piece of code which evaluates to either true or false.
Usually it calls on devices or 3rd party APIs to make this determination.
**action:** A small piece of code which is run when a trigger fires. Usually
this is managing device state like turning a lightbulb on or off. When
configured, it can be designated as a "then" action or an "else" action.
**provider:** The third party which owns the API for a set of devices. The
manufacturer of a device will usually provide this API.
**device:** Any IoT device which can be controled with a 3rd party API managed
by a provider.
**sensor:** A device or 3rd party API which senses information about the
physical world around it. For example, a smart lightbulb or REST based current
weather API.
**component:** A grouping of triggers and actions. When all triggers evaluate
to true, its "then" actions will be run. When any trigger evaluates to false,
its "else" actions will be run.
**handler:** The code used to run a set of components. This is the main
entrypoint to the `pydomotic` system.
**parser:** The code used to read the configuration yaml and transform it into
a list of components.
Raw data
{
"_id": null,
"home_page": "https://github.com/purple4reina/pydomotic",
"name": "pydomotic",
"maintainer": null,
"docs_url": null,
"requires_python": "<4,>=3.8",
"maintainer_email": null,
"keywords": "iot, python, home, automation, smart, domotic",
"author": "Rey Abolofia",
"author_email": "purple4reina@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/15/8a/eaab77a28c6c60145dc59eddd94352ef93849fd11fd16e75c1893f7e4a8c/pydomotic-1.4.1.tar.gz",
"platform": null,
"description": "# pydomotic\n\n[![PyPI version](https://badge.fury.io/py/pydomotic.svg)](https://badge.fury.io/py/pydomotic)\n\nA Python library for home automation execution, enabling seamless control and\nmanagement of your IoT devices.\n\n_\"Domotics\": The automatic control of home appliances by electronic systems.\nContraction of domestic robotics, from the Latin domus (\"home\"), and robotics._\n\n## Getting Started\n\n1. Install `pydomotic` in your environment.\n\n ```bash\n $ pip install pydomotic\n ```\n\n1. Create your `pydomotic.yml` configuration file where you will define your\ndevices and automations.\n\n ```yaml\n # pydomotic.yml\n\n devices:\n fan:\n description: fan switch\n provider: noop\n id: '012'\n thermometer:\n description: temperature sensor\n provider: noop\n id: '345'\n\n automations:\n fan:\n enabled: true\n components:\n - if:\n thermometer:\n temp: '>75'\n then:\n turn-on: fan\n else:\n turn-off: fan\n ```\n\n1. Running the following will check each trigger and execute any actions.\n\n ```bash\n $ python -m pydomotic\n ```\n\nNote that each configured provider will require separate installation of its specific dependencies. For installing these dependencies and full configuration documentation, see [CONFIGURATION.md](https://github.com/purple4reina/pydomotic/blob/main/docs/CONFIGURATION.md)\n\nFor more details on deployment options, see [DEPLOYING.md](https://github.com/purple4reina/pydomotic/blob/main/docs/DEPLOYING.md)\n\n## Glossary\n\n**trigger:** A small piece of code which evaluates to either true or false.\nUsually it calls on devices or 3rd party APIs to make this determination.\n\n**action:** A small piece of code which is run when a trigger fires. Usually\nthis is managing device state like turning a lightbulb on or off. When\nconfigured, it can be designated as a \"then\" action or an \"else\" action.\n\n**provider:** The third party which owns the API for a set of devices. The\nmanufacturer of a device will usually provide this API.\n\n**device:** Any IoT device which can be controled with a 3rd party API managed\nby a provider.\n\n**sensor:** A device or 3rd party API which senses information about the\nphysical world around it. For example, a smart lightbulb or REST based current\nweather API.\n\n**component:** A grouping of triggers and actions. When all triggers evaluate\nto true, its \"then\" actions will be run. When any trigger evaluates to false,\nits \"else\" actions will be run.\n\n**handler:** The code used to run a set of components. This is the main\nentrypoint to the `pydomotic` system.\n\n**parser:** The code used to read the configuration yaml and transform it into\na list of components.\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Python library for home automation execution, enabling seamless control and management of your IoT devices",
"version": "1.4.1",
"project_urls": {
"Bug Tracker": "https://github.com/purple4reina/pydomotic/issues",
"Homepage": "https://github.com/purple4reina/pydomotic",
"Source": "https://github.com/purple4reina/pydomotic"
},
"split_keywords": [
"iot",
" python",
" home",
" automation",
" smart",
" domotic"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "158aeaab77a28c6c60145dc59eddd94352ef93849fd11fd16e75c1893f7e4a8c",
"md5": "cba821745271521c27422ccc2166e7bc",
"sha256": "d0e0e14f3382991ae323cfb4a8e5588feb4b02286ff8dcc694c26cfdae23a979"
},
"downloads": -1,
"filename": "pydomotic-1.4.1.tar.gz",
"has_sig": false,
"md5_digest": "cba821745271521c27422ccc2166e7bc",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4,>=3.8",
"size": 18703,
"upload_time": "2024-09-13T06:21:26",
"upload_time_iso_8601": "2024-09-13T06:21:26.517166Z",
"url": "https://files.pythonhosted.org/packages/15/8a/eaab77a28c6c60145dc59eddd94352ef93849fd11fd16e75c1893f7e4a8c/pydomotic-1.4.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-09-13 06:21:26",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "purple4reina",
"github_project": "pydomotic",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "pydomotic"
}