{ "info": { "author": "Tobias Gawron-Deutsch", "author_email": "tobias@strix.at", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "Environment :: No Input/Output (Daemon)", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Topic :: Home Automation", "Topic :: Utilities" ], "description": "This microservice is the gui controller for a thermostat. It listens to\ninput events (buttons and rotary encoders) generated e.g. by copreus. As\noutput it generates the desired set-point-values for the pid temperature\ncontrol (like epidaurus) and additional information needed for the\ndisplay server to generate to gui (e.g. nikippe).\n\nThe controller can handle different modes (like day/night) for manual\noperation and schedules (15 minute time slots) for automatic mode.\n\nAs the circuit for the thermostat controller allows to switch between\nobserver and controller operation, this gui mirrors this by toggling\nbetween active and passive. Active operation means that the DAC is\nconnected to the heater; passive that the DAC is disconnected by opening\nthe relais.\n\nInput topics: \\* set-point for temperature - up/down (string command) -\nreset to default (string command) \\* selector for mode - left/right\n(string command) - reset to default (string command) \\* active/passive\noperation toggle (string command)\n\nOutput topics: \\* temperature set-point (float value) \\* schedule chart\nimage (encoded image) - see nikippe.mqttimage \\* mode icon identifier\n(string name) - see nikippe.imagelist \\* relais control (string command)\n\nArgeus [1]_, son of Pelops and Hippodamia, by Hegesandra father of\nAlector and Boethoos. [`wiki `__]\n\n.. figure:: img/Microservice%20Overview.png\n :alt: Pelops Overview\n\n Pelops Overview\n\n``Argaeus`` is part of the collection of mqtt based microservices\n`pelops `__. An overview on the microservice\narchitecture and examples can be found at\n(http://gitlab.com/pelops/pelops).\n\nFor Users\n=========\n\nInstallation Core-Functionality\n-------------------------------\n\nPrerequisites for the core functionality are:\n\n::\n\n sudo apt install python3 python3-pip\n\nInstall via pip:\n\n::\n\n sudo pip3 install pelops argaues\n\nTo update to the latest version add ``--upgrade`` as prefix to the\n``pip3`` line above.\n\nInstall via gitlab (might need additional packages):\n\n::\n\n git clone git@gitlab.com:pelops/argaues.git\n cd argaeus\n sudo python3 setup.py install\n\nThis will install the following shell scripts: \\* ``argaeus``\n\nThe script cli arguments are: \\* '-c'/'--config' - config file\n(mandatory) \\* '--version' - show the version number and exit\n\nYAML-Config\n-----------\n\nA yaml [2]_ file must contain three root blocks: \\* mqtt - mqtt-address,\nmqtt-port, and path to credentials file credentials-file (a file\nconsisting of two entries: mqtt-user, mqtt-password) \\* logger - which\nlog level and which file to be used \\* controller - mode-controller -\nlist of different operation modes like fixed temperature or time\nschedule driven - setpoint-controller - changes the set-point of the\ncurrent program - operation-controller - turns the outgoing relais\non/off\n\n::\n\n mqtt:\n mqtt-address: localhost\n mqtt-port: 1883\n credentials-file: ~/credentials.yaml\n log-level: INFO\n\n logger:\n log-level: DEBUG\n log-file: argeus.log\n\n controller:\n operation-controller: # turns the outgoing relais on/off\n default-is-active: True # Is the controller active or passive initially\n topic-pub: /test/relais/closed # Topic that controls the output behavior relais of the thermostat.\n command-active: ON # set to active command - publish this value to topic-pub, to set the controller to active operation.\n command-passive: OFF # set to passive command - publish this value to topic-pub, to set the controller to passive operation.\n topic-sub-toggle: /test/r1/button/pressed # incoming event to toggle active/passive operation (optional together with command-toggle)\n command-toggle: PRESSED # command for topic-sub-toggle / toggle active/passive operation (optional together with topic-sub-toggle)\n\n mode-controller: # list of different operation modes like fixed temperature or time schedule driven\n default-mode: Schedule # default mode - must be a name from modes list\n topics-sub: # incoming topics\n to-prev: /test/r2/rotate # select previous mode\n command-prev: LEFT # to previous command - if this value is published to to-prev, the previous entry in the mode list is selected\n to-next: /test/r2/rotate # select next mode\n command-next: RIGHT # to next command - if this value is published to to-next, the next entry in the mode list is selected\n to-default: /test/r1/button/pressed # incoming event to reset to default mode (optional together with command-default)\n command-default: PRESSED # command for topic-sub / reset to default mode (optional together with to-default)\n topics-pub: # outgoing topics\n display-server-schedule-image: /test/display/schedule # topic of an nikippe-mqttimage instance\n display-server-mode-icon: /test/display/mode # topic of an nikippe-imagelist instance\n temperature-set-point: /test/temperature/set-point # topic of e.g. epidaurus (=pid temperature control) set-point listener\n modes: # list of modes\n - name: Night # unique name for mode entry\n type: program # program or schedule - a schedule consists of programms\n selectable: True # can be selected using the gui\n set-point: 19.5 # target temperature of this mode\n\n - name: Day # unique name for mode entry\n type: program # program or schedule - a schedule consists of programms\n selectable: True # can be selected using the gui\n set-point: 23.0 # target temperature of this mode\n\n - name: Frost # unique name for mode entry\n type: program # program or schedule - a schedule consists of programms\n selectable: False # can be selected using the gui\n set-point: 5.0 # target temperature of this mode\n\n - name: Schedule # unique name for mode entry\n type: schedule # program or schedule - a schedule consists of programms\n selectable: True # can be selected using the gui\n image: # generate image for nikippe.mqttimage\n width: 192 # width of image\n height: 2 # height of image\n foreground-color: 255 # from 0 to 255.\n background-color: 0 # from 0 to 255.\n patterns: # 0, 1, 2, 3 are valid patterns\n Night: 0 # nothing\n Morning: 1 # lower dot\n Day: 2 # upper and lower dot\n Frost: 3 # upper dot\n schedule: # definition which program is active in each 15 minute slot of a day\n \"00:00\": Night\n \"00:15\": Night\n \"00:30\": Night\n \"00:45\": Night\n ...\n \"12:00\": Day\n \"12:15\": Day\n \"12:30\": Day\n \"12:45\": Day\n ...\n \"23:00\": Night\n \"23:15\": Night\n \"23:30\": Night\n \"23:45\": Night\n\n setpoint-controller: # changes the set-point of the current program\n topic-sub-down: /test/r1/rotate # reduce temperature topic\n command-down: LEFT # down command - if this value is published to topic-sub-down, temp is reduced.\n topic-sub-up: /test/r1/rotate # increase temperature topic\n command-up: RIGHT # up command - if this value is published to topic-sub-up, temp is increased.\n topic-sub-reset: /test/r1/button/pressed # incoming event to reset temperature to default (optional together with command-reset)\n command-reset: PRESSED # command for topic-sub-reset / reset to default (optional together with topic-sub-reset)\n step-size: 0.5 # Temperature is changed by step size for each rotation step.\n max-temp: 30.0 # Maximum value for temperature\n min-temp: 10.0 # Minimum value for temperature\n\nsystemd\n-------\n\n- add systemd example.\n\nFor Developers\n==============\n\nGetting Started\n---------------\n\nThe main class ``ThermostatGUIController`` is a specialication of pelops\n``AbstractMicroservice`` hosts the (currently) three sub-controller\n``ModeController``, ``SetPointController``, and ``OperationController``.\nThey must be specializations of ``AController``.\n\nTodos\n-----\n\n- ...\n\nMisc\n----\n\nThe code is written for ``python3`` (and tested with python 3.5 on an\nRaspberry Pi Zero with Raspbian Stretch).\n\n`Merge requests `__ /\n`bug reports `__ are always\nwelcome.\n\n.. [1]\n Again, not an icon of the \"real\" Argeus. It is a picture used in the\n context of Argeus I of Macedon\n `wiki `__.\n\n.. [2]\n Currently, pyyaml is yaml 1.1 compliant. In pyyaml On/Off and Yes/No\n are automatically converted to True/False. This is an unwanted\n behavior and deprecated in yaml 1.2. In copreus this autoconversion\n is removed. Thus, On/Off and Yes/No are read from the yaml file as\n strings (see module baseclasses.myconfigtools).\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://gitlab.com/pelops/argaeus/", "keywords": "mqtt microservice thermostat controller", "license": "MIT license", "maintainer": "", "maintainer_email": "", "name": "Argaeus", "package_url": "https://pypi.org/project/Argaeus/", "platform": "", "project_url": "https://pypi.org/project/Argaeus/", "project_urls": { "Homepage": "https://gitlab.com/pelops/argaeus/" }, "release_url": "https://pypi.org/project/Argaeus/0.1.6/", "requires_dist": null, "requires_python": "", "summary": "ThermostatGUIController (display and gui-logic) for a thermostat - to be used in combination with pelops/copreus and pelops/alcathous", "version": "0.1.6" }, "last_serial": 5110855, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "c157540c693014ae40ec82da60e95815", "sha256": "572713548ae466f1d46a5fec4ad1965b85141bb31639e2917766a48147ae852a" }, "downloads": -1, "filename": "Argaeus-0.1.tar.gz", "has_sig": false, "md5_digest": "c157540c693014ae40ec82da60e95815", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22183, "upload_time": "2018-07-19T20:33:07", "url": "https://files.pythonhosted.org/packages/11/2d/ca1d6eedf69ac54277c27a6b784622457051cb7af9023c64a9b48b0b112e/Argaeus-0.1.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "4406f70f0d34c55c57678252a27527da", "sha256": "4e31d32972edb4ac82016859314060ef444627f10e0f918573c9b23fd50eaaec" }, "downloads": -1, "filename": "Argaeus-0.1.1.tar.gz", "has_sig": false, "md5_digest": "4406f70f0d34c55c57678252a27527da", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24000, "upload_time": "2018-08-08T21:06:20", "url": "https://files.pythonhosted.org/packages/97/26/5ba8b142874183a52030cfcb8318c2afa3aea3218c174a0dd0f5489781b2/Argaeus-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "1ca2fa228f01ea8e1537f0a03f9de67a", "sha256": "cf1d423ef3e3f6e3dc0a81e7208c2425fb702c59dc553be15b5e1078a13421b1" }, "downloads": -1, "filename": "Argaeus-0.1.2.tar.gz", "has_sig": false, "md5_digest": "1ca2fa228f01ea8e1537f0a03f9de67a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23980, "upload_time": "2018-11-01T23:53:31", "url": "https://files.pythonhosted.org/packages/18/3b/eb149e1347aef186f4f05e5f2c844e204575beb13563e60f98bd23875217/Argaeus-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "1157e43dc0be92ebe83504d2ac59baf5", "sha256": "69004a6fa0ec7b228c3a1214e0532afb7ace88db282afd28e36ab7cac33f0b54" }, "downloads": -1, "filename": "Argaeus-0.1.3.tar.gz", "has_sig": false, "md5_digest": "1157e43dc0be92ebe83504d2ac59baf5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24141, "upload_time": "2018-11-22T20:25:10", "url": "https://files.pythonhosted.org/packages/46/6c/1fac4219b809f42d271aba388d1048d889608fe70fbe304475d2dd57ca49/Argaeus-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "7d52b560ecc67e19ec8fe1b0d8f35f88", "sha256": "b61be13df8c0f6179f16becea306377881572458e3d6787e46e3909d8a8214c1" }, "downloads": -1, "filename": "Argaeus-0.1.4.tar.gz", "has_sig": false, "md5_digest": "7d52b560ecc67e19ec8fe1b0d8f35f88", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24229, "upload_time": "2019-03-09T22:56:50", "url": "https://files.pythonhosted.org/packages/3d/18/59eeb93ea62d0e83e9cd0deebd397006652c3bae1914d3ff3010f18ae1d2/Argaeus-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "2010098d7bd822647a138c05de3c75d9", "sha256": "a030971af5591e6af0eb9f346aa83a142039a5de54d60fb0a01640219a468a48" }, "downloads": -1, "filename": "Argaeus-0.1.5.tar.gz", "has_sig": false, "md5_digest": "2010098d7bd822647a138c05de3c75d9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24328, "upload_time": "2019-04-04T21:28:13", "url": "https://files.pythonhosted.org/packages/a7/71/881602e3c6cd84d0264cef46fe635cf60d0a2574aa6dfb7d57c85f6a3499/Argaeus-0.1.5.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "c1ae43e2efc16989b6a4c66436062577", "sha256": "a8e507d643d5fc6a34c5e186afd53efe39b8b865df88c5cc54c1c26fd523a8c3" }, "downloads": -1, "filename": "Argaeus-0.1.6.tar.gz", "has_sig": false, "md5_digest": "c1ae43e2efc16989b6a4c66436062577", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24337, "upload_time": "2019-04-07T20:15:38", "url": "https://files.pythonhosted.org/packages/58/eb/c6966a024a8896e994c161a0b00e47cedd93498f52d5e3fb7005c0533b36/Argaeus-0.1.6.tar.gz" } ], "0.1a0": [ { "comment_text": "", "digests": { "md5": "d5098fe5501f2e90b7a93a00226ed6cf", "sha256": "365caf3ffe4f46adcd2bf11816d57e8533645d49e735e3a61b7d6f85e67622d3" }, "downloads": -1, "filename": "Argaeus-0.1a0.tar.gz", "has_sig": false, "md5_digest": "d5098fe5501f2e90b7a93a00226ed6cf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17081, "upload_time": "2018-03-09T23:32:55", "url": "https://files.pythonhosted.org/packages/f3/99/80d2a4fedaaf1c37d1a89245bd2215a65ea00649888484c3811e4f527b1c/Argaeus-0.1a0.tar.gz" } ], "0.1a1": [ { "comment_text": "", "digests": { "md5": "afb178e08514c589c7843912da6b9ca3", "sha256": "a55b9d3471faf4ff472fc933ddee9ceb63a6694748a827484dff73920f5df373" }, "downloads": -1, "filename": "Argaeus-0.1a1.tar.gz", "has_sig": false, "md5_digest": "afb178e08514c589c7843912da6b9ca3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17118, "upload_time": "2018-03-10T10:34:16", "url": "https://files.pythonhosted.org/packages/93/1a/ce804ddae54bc9dff78c7125acc4e5a30886b5c520882189a50830d1ebc8/Argaeus-0.1a1.tar.gz" } ], "0.1a2": [ { "comment_text": "", "digests": { "md5": "e627138c19f384ce8ebf9bd8dd9cf923", "sha256": "127da75a8ebae72c625595998d46d17674542f2d30f63021e17f57dc606feba5" }, "downloads": -1, "filename": "Argaeus-0.1a2.tar.gz", "has_sig": false, "md5_digest": "e627138c19f384ce8ebf9bd8dd9cf923", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17032, "upload_time": "2018-03-29T22:17:33", "url": "https://files.pythonhosted.org/packages/07/7f/8e4acd92d5182f980a5caf5c547162dc120470859c60cd6d2e9819fcfc9f/Argaeus-0.1a2.tar.gz" } ], "0.1a3": [ { "comment_text": "", "digests": { "md5": "810ec63d6c9bbe98a62a747a92ca1ee6", "sha256": "65d6bfec29889abb97d8c85bd08112e49c6f23bfc59f20503ebbb5cfabd3aae6" }, "downloads": -1, "filename": "Argaeus-0.1a3.tar.gz", "has_sig": false, "md5_digest": "810ec63d6c9bbe98a62a747a92ca1ee6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17097, "upload_time": "2018-07-18T20:20:29", "url": "https://files.pythonhosted.org/packages/58/89/9196c7b27c27fe6d00acc64141805d6f5cb42e15126d735465b2e125ae2a/Argaeus-0.1a3.tar.gz" } ], "0.1a5": [ { "comment_text": "", "digests": { "md5": "c18a34828951b49a7a59239f2920eb60", "sha256": "5024ef689571b4c525e585ceadcc7780d8ffb3bf75d9b70ff16eb53ad7380870" }, "downloads": -1, "filename": "Argaeus-0.1a5.tar.gz", "has_sig": false, "md5_digest": "c18a34828951b49a7a59239f2920eb60", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15054, "upload_time": "2018-07-18T21:36:58", "url": "https://files.pythonhosted.org/packages/98/e4/8d5d633c8a2983b5da2fc41ca4094015ad99bc92e587ed771036b189d149/Argaeus-0.1a5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "c1ae43e2efc16989b6a4c66436062577", "sha256": "a8e507d643d5fc6a34c5e186afd53efe39b8b865df88c5cc54c1c26fd523a8c3" }, "downloads": -1, "filename": "Argaeus-0.1.6.tar.gz", "has_sig": false, "md5_digest": "c1ae43e2efc16989b6a4c66436062577", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24337, "upload_time": "2019-04-07T20:15:38", "url": "https://files.pythonhosted.org/packages/58/eb/c6966a024a8896e994c161a0b00e47cedd93498f52d5e3fb7005c0533b36/Argaeus-0.1.6.tar.gz" } ] }