documentation changes

This commit is contained in:
manuel83 2018-12-09 22:20:33 +01:00
parent 3b7befe54c
commit 18a7d885a4
66 changed files with 6127 additions and 1679 deletions

File diff suppressed because it is too large Load diff

View file

@ -6,6 +6,10 @@ class PropertyType(object):
class Property(object): class Property(object):
class Select(PropertyType): class Select(PropertyType):
'''
Select Property. The user can select value from list set as options parameter
'''
def __init__(self, label, options, description=""): def __init__(self, label, options, description=""):
''' '''
@ -19,6 +23,10 @@ class Property(object):
self.description = description self.description = description
class Number(PropertyType): class Number(PropertyType):
'''
The user can set a number value
'''
def __init__(self, label, configurable=False, default_value=None, unit="", description=""): def __init__(self, label, configurable=False, default_value=None, unit="", description=""):
''' '''
Test Test
@ -37,6 +45,10 @@ class Property(object):
self.description = description self.description = description
class Text(PropertyType): class Text(PropertyType):
'''
The user can set a text value
'''
def __init__(self, label, configurable=False, default_value="", description=""): def __init__(self, label, configurable=False, default_value="", description=""):
''' '''
@ -52,6 +64,10 @@ class Property(object):
self.description = description self.description = description
class Actor(PropertyType): class Actor(PropertyType):
'''
The user select an actor which is available in the system. The value of this variable will be the actor id
'''
def __init__(self, label, description=""): def __init__(self, label, description=""):
''' '''
@ -64,6 +80,10 @@ class Property(object):
self.description = description self.description = description
class Sensor(PropertyType): class Sensor(PropertyType):
'''
The user select a sensor which is available in the system. The value of this variable will be the sensor id
'''
def __init__(self, label, description=""): def __init__(self, label, description=""):
''' '''
@ -76,6 +96,10 @@ class Property(object):
self.description = description self.description = description
class Kettle(PropertyType): class Kettle(PropertyType):
'''
The user select a kettle which is available in the system. The value of this variable will be the kettle id
'''
def __init__(self, label, description=""): def __init__(self, label, description=""):
''' '''

View file

@ -3,6 +3,7 @@ import time
import asyncio import asyncio
import logging import logging
from abc import abstractmethod
class SimpleStep(object): class SimpleStep(object):
@ -23,6 +24,12 @@ class SimpleStep(object):
self.start = time.time() self.start = time.time()
def running(self): def running(self):
'''
Method checks if the step should continue running.
The method will return False if the step is requested to stop or the next step should start
:return: True if the step is running. Otherwise False.
'''
if self.is_next is True: if self.is_next is True:
return False return False
@ -33,6 +40,14 @@ class SimpleStep(object):
async def run(self): async def run(self):
'''
This method in running in the background. It invokes the run_cycle method in the configured interval
It checks if a managed variable was modified in the last exection cycle. If yes, the method will persisit the new value of the
managed property
:return: None
'''
while self.running(): while self.running():
try: try:
await self.run_cycle() await self.run_cycle()
@ -51,23 +66,61 @@ class SimpleStep(object):
self.reset_dirty() self.reset_dirty()
@abstractmethod
async def run_cycle(self): async def run_cycle(self):
'''
This method is executed in the defined interval.
That the place to put your step logic.
The method need to be overwritten in the Ccstom step implementaion
:return: None
'''
print("NOTING IMPLEMENTED") print("NOTING IMPLEMENTED")
pass pass
def next(self): def next(self):
'''
Request to stop the the step
:return: None
'''
self.is_next = True self.is_next = True
def stop(self): def stop(self):
'''
Request to stop the step
:return: None
'''
self.is_stopped = True self.is_stopped = True
def reset(self): def reset(self):
'''
Reset the step. This method needs to be overwritten by the custom step implementation
:return: None
'''
pass pass
def is_dirty(self): def is_dirty(self):
'''
Check if a managed variable has a new value
:return: True if at least one managed variable has a new value assigend. Otherwise False
'''
return self.__dirty return self.__dirty
def reset_dirty(self): def reset_dirty(self):
'''
Reset the dirty flag
:return:
'''
self.__dirty = False self.__dirty = False
def __setattr__(self, name, value): def __setattr__(self, name, value):

View file

@ -7,6 +7,11 @@ from core.http_endpoints.http_api import HttpAPI
class StepController(HttpAPI, CRUDController): class StepController(HttpAPI, CRUDController):
'''
The Step Controller. This controller is responsible to start and stop the brewing steps.
'''
model = StepModel model = StepModel
@ -21,42 +26,87 @@ class StepController(HttpAPI, CRUDController):
self.cbpi.register(self, "/step") self.cbpi.register(self, "/step")
async def init(self): async def init(self):
#self.start() '''
Initializer of the the Step Controller.
:return:
'''
await super(StepController, self).init() await super(StepController, self).init()
pass pass
@request_mapping(path="/action", auth_required=False) @request_mapping(path="/action", auth_required=False)
async def http_action(self, request): async def http_action(self, request):
'''
HTTP Endpoint to call an action on the current step.
:param request: web requset
:return: web.Response(text="OK"
'''
self.cbpi.bus.fire("step/action", action="test") self.cbpi.bus.fire("step/action", action="test")
return web.Response(text="OK") return web.Response(text="OK")
@request_mapping(path="/start", auth_required=False) @request_mapping(path="/start", auth_required=False)
async def http_start(self, request): async def http_start(self, request):
'''
HTTP Endpoint to start the brewing process.
:param request:
:return:
'''
self.cbpi.bus.fire("step/start") self.cbpi.bus.fire("step/start")
return web.Response(text="OK") return web.Response(text="OK")
@request_mapping(path="/reset", auth_required=False) @request_mapping(path="/reset", auth_required=False)
async def http_reset(self, request): async def http_reset(self, request):
'''
HTTP Endpoint to call reset on the current step.
:param request:
:return:
'''
self.cbpi.bus.fire("step/reset") self.cbpi.bus.fire("step/reset")
return web.Response(text="OK") return web.Response(text="OK")
@request_mapping(path="/next", auth_required=False) @request_mapping(path="/next", auth_required=False)
async def http_reset(self, request): async def http_next(self, request):
'''
HTTP Endpoint to start the next step. The current step will be stopped
:param request:
:return:
'''
self.cbpi.bus.fire("step/next") self.cbpi.bus.fire("step/next")
return web.Response(text="OK") return web.Response(text="OK")
@on_event("step/action") @on_event("step/action")
def handle_action(self, topic, action, **kwargs): def handle_action(self, action, **kwargs):
print("process action")
'''
Event Handler for "step/action".
It invokes the provided method name on the current step
:param action: the method name which will be invoked
:param kwargs:
:return: None
'''
if self.current_step is not None: if self.current_step is not None:
self.current_step.__getattribute__(action)() self.current_step.__getattribute__(action)()
pass
@on_event("step/next") @on_event("step/next")
def handle_next(self, **kwargs): def handle_next(self, **kwargs):
print("process action") '''
Event Handler for "step/next".
It start the next step
:param kwargs:
:return: None
'''
if self.current_step is not None: if self.current_step is not None:
self.current_step.next() self.current_step.next()
pass pass
@ -64,11 +114,27 @@ class StepController(HttpAPI, CRUDController):
@on_event("step/start") @on_event("step/start")
def handle_start(self, topic, **kwargs): def handle_start(self, **kwargs):
'''
Event Handler for "step/start".
It starts the brewing process
:param kwargs:
:return: None
'''
self.start() self.start()
@on_event("step/reset") @on_event("step/reset")
def handle_reset(self, topic, **kwargs): def handle_reset(self, **kwargs):
'''
Event Handler for "step/reset".
Resets the current step
:param kwargs:
:return: None
'''
if self.current_step is not None: if self.current_step is not None:
self.current_task.cancel() self.current_task.cancel()
self.current_step.reset() self.current_step.reset()
@ -79,7 +145,15 @@ class StepController(HttpAPI, CRUDController):
self.start() self.start()
@on_event("step/stop") @on_event("step/stop")
def handle_stop(self, topic, **kwargs): def handle_stop(self, **kwargs):
'''
Event Handler for "step/stop".
Stops the current step
:param kwargs:
:return: None
'''
if self.current_step is not None: if self.current_step is not None:
self.current_step.stop() self.current_step.stop()
@ -89,7 +163,16 @@ class StepController(HttpAPI, CRUDController):
self.current_step = None self.current_step = None
@on_event("step/+/done") @on_event("step/+/done")
def handle(self, topic, **kwargs): def handle_done(self, topic, **kwargs):
'''
Event Handler for "step/+/done".
Starts the next step
:param topic:
:param kwargs:
:return:
'''
self.start() self.start()
def _step_done(self, task): def _step_done(self, task):
@ -100,7 +183,7 @@ class StepController(HttpAPI, CRUDController):
self.current_step = None self.current_step = None
self.cbpi.bus.fire("step/%s/done" % step_id) self.cbpi.bus.fire("step/%s/done" % step_id)
def get_manged_fields_as_array(self, type_cfg): def _get_manged_fields_as_array(self, type_cfg):
print("tYPE", type_cfg) print("tYPE", type_cfg)
result = [] result = []
for f in type_cfg.get("properties"): for f in type_cfg.get("properties"):
@ -110,6 +193,12 @@ class StepController(HttpAPI, CRUDController):
def start(self): def start(self):
'''
Start the first step
:return:None
'''
if self.current_step is None: if self.current_step is None:
loop = asyncio.get_event_loop() loop = asyncio.get_event_loop()
open_step = False open_step = False
@ -119,7 +208,7 @@ class StepController(HttpAPI, CRUDController):
print("----------") print("----------")
print(step_type) print(step_type)
print("----------") print("----------")
config = dict(cbpi = self.cbpi, id=key, name=step.name, managed_fields=self.get_manged_fields_as_array(step_type)) config = dict(cbpi = self.cbpi, id=key, name=step.name, managed_fields=self._get_manged_fields_as_array(step_type))
self.current_step = step_type["class"](**config) self.current_step = step_type["class"](**config)
self.current_task = loop.create_task(self.current_step.run()) self.current_task = loop.create_task(self.current_step.run())
self.current_task.add_done_callback(self._step_done) self.current_task.add_done_callback(self._step_done)
@ -127,5 +216,6 @@ class StepController(HttpAPI, CRUDController):
break break
if open_step == False: if open_step == False:
self.cbpi.bus.fire("step/berwing/finished") self.cbpi.bus.fire("step/berwing/finished")
async def stop(self): async def stop(self):
pass pass

View file

@ -1,4 +1,4 @@
# Sphinx build info version 1 # Sphinx build info version 1
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
config: 68b21bdf85f832d5bb6e445088bd68e4 config: a7fdf21acdd201956ed9899e36546207
tags: 645f666f9bcd5a90fca523b33c5a78b7 tags: 645f666f9bcd5a90fca523b33c5a78b7

View file

@ -1,10 +1,31 @@
Properties Properties
=========== ===========
Properties can be use in all extensions.
During the startup the server scans all extension for variables of type Property.
Theses properties are exposed to the user for configuration during run time.
For example the user can set the GPIO number or the 1Wire Id.
Typical example how to use properties in an actor module.
Custom Actor
^^^^^^^^^^^^^
.. literalinclude:: ../../core/extension/dummyactor/__init__.py
:caption: __init__.py
:name: __init__-py
:language: python
:linenos:
.. autoclass:: core.api.property.Property .. autoclass:: core.api.property.Property
:members: :members:
:private-members: :private-members:
:undoc-members: :undoc-members:
:show-inheritance:

View file

@ -1,16 +1,39 @@
Sensor Sensor
========== =========
Architecture
^^^^
Sensor Controller
^^^^^^^^^^^^^^^^^
SensorController .. autoclass:: core.controller.sensor_controller.SensorController
^^^^^^^^^^^^^^^^
.. automodule:: core.controller.sensor_controller
:members: :members:
:private-members:
:undoc-members:
:show-inheritance:
CBPiSensor
^^^^^^^^^^
.. autoclass:: core.api.sensor.CBPiSensor
:members:
:private-members:
:undoc-members:
:show-inheritance:
Custom Sensor Custom Sensor
^^^^^^^^^^^^^ ^^^^^^^^^^^^^
.. literalinclude:: ../../core/extension/dummysensor/__init__.py
:caption: __init__.py
:name: __init__-py
:language: python
:linenos:
config.yaml
.. literalinclude:: ../../core/extension/dummysensor/config.yaml
:language: yaml
:linenos:

View file

@ -8,7 +8,7 @@ StepController
.. autoclass:: core.controller.step_controller.StepController .. autoclass:: core.controller.step_controller.StepController
:members: :members:
:private-members:
:undoc-members: :undoc-members:
:show-inheritance: :show-inheritance:
@ -18,7 +18,6 @@ SimpleStep
.. autoclass:: core.api.step.SimpleStep .. autoclass:: core.api.step.SimpleStep
:members: :members:
:private-members:
:undoc-members: :undoc-members:
:show-inheritance: :show-inheritance:
@ -26,6 +25,9 @@ SimpleStep
Custom Step Custom Step
^^^^^^^^^^^^^ ^^^^^^^^^^^^^
This is an example of a custom step. The Step class need to extend Simple step. In addtion at least the run_cycle method needs to be overwritten
.. literalinclude:: ../../core/extension/dummystep/__init__.py .. literalinclude:: ../../core/extension/dummystep/__init__.py
:caption: __init__.py :caption: __init__.py
:name: __init__-py :name: __init__-py

1
docs/_static/css/badge_only.css vendored Normal file
View file

@ -0,0 +1 @@
.fa:before{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-weight:normal;font-style:normal;src:url("../fonts/fontawesome-webfont.eot");src:url("../fonts/fontawesome-webfont.eot?#iefix") format("embedded-opentype"),url("../fonts/fontawesome-webfont.woff") format("woff"),url("../fonts/fontawesome-webfont.ttf") format("truetype"),url("../fonts/fontawesome-webfont.svg#FontAwesome") format("svg")}.fa:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;text-decoration:inherit}a .fa{display:inline-block;text-decoration:inherit}li .fa{display:inline-block}li .fa-large:before,li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-0.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before,ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before{content:""}.icon-book:before{content:""}.fa-caret-down:before{content:""}.icon-caret-down:before{content:""}.fa-caret-up:before{content:""}.icon-caret-up:before{content:""}.fa-caret-left:before{content:""}.icon-caret-left:before{content:""}.fa-caret-right:before{content:""}.icon-caret-right:before{content:""}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;z-index:400}.rst-versions a{color:#2980B9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27AE60;*zoom:1}.rst-versions .rst-current-version:before,.rst-versions .rst-current-version:after{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book{float:left}.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#E74C3C;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#F1C40F;color:#000}.rst-versions.shift-up{height:auto;max-height:100%}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:gray;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:solid 1px #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px}.rst-versions.rst-badge .icon-book{float:none}.rst-versions.rst-badge .fa-book{float:none}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book{float:left}.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge .rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width: 768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}

6
docs/_static/css/theme.css vendored Normal file

File diff suppressed because one or more lines are too long

BIN
docs/_static/fonts/Inconsolata-Bold.ttf vendored Normal file

Binary file not shown.

Binary file not shown.

BIN
docs/_static/fonts/Inconsolata.ttf vendored Normal file

Binary file not shown.

BIN
docs/_static/fonts/Lato-Bold.ttf vendored Normal file

Binary file not shown.

BIN
docs/_static/fonts/Lato-Regular.ttf vendored Normal file

Binary file not shown.

BIN
docs/_static/fonts/Lato/lato-bold.eot vendored Normal file

Binary file not shown.

BIN
docs/_static/fonts/Lato/lato-bold.ttf vendored Normal file

Binary file not shown.

BIN
docs/_static/fonts/Lato/lato-bold.woff vendored Normal file

Binary file not shown.

BIN
docs/_static/fonts/Lato/lato-bold.woff2 vendored Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
docs/_static/fonts/Lato/lato-italic.eot vendored Normal file

Binary file not shown.

BIN
docs/_static/fonts/Lato/lato-italic.ttf vendored Normal file

Binary file not shown.

BIN
docs/_static/fonts/Lato/lato-italic.woff vendored Normal file

Binary file not shown.

Binary file not shown.

BIN
docs/_static/fonts/Lato/lato-regular.eot vendored Normal file

Binary file not shown.

BIN
docs/_static/fonts/Lato/lato-regular.ttf vendored Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
docs/_static/fonts/RobotoSlab-Bold.ttf vendored Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

2671
docs/_static/fonts/fontawesome-webfont.svg vendored Normal file

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 434 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

4
docs/_static/js/modernizr.min.js vendored Normal file

File diff suppressed because one or more lines are too long

3
docs/_static/js/theme.js vendored Normal file
View file

@ -0,0 +1,3 @@
/* sphinx_rtd_theme version 0.4.2 | MIT license */
/* Built 20181005 13:10 */
require=function r(s,a,l){function c(e,n){if(!a[e]){if(!s[e]){var i="function"==typeof require&&require;if(!n&&i)return i(e,!0);if(u)return u(e,!0);var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}var o=a[e]={exports:{}};s[e][0].call(o.exports,function(n){return c(s[e][1][n]||n)},o,o.exports,r,s,a,l)}return a[e].exports}for(var u="function"==typeof require&&require,n=0;n<l.length;n++)c(l[n]);return c}({"sphinx-rtd-theme":[function(n,e,i){var jQuery="undefined"!=typeof window?window.jQuery:n("jquery");e.exports.ThemeNav={navBar:null,win:null,winScroll:!1,winResize:!1,linkScroll:!1,winPosition:0,winHeight:null,docHeight:null,isRunning:!1,enable:function(e){var i=this;void 0===e&&(e=!0),i.isRunning||(i.isRunning=!0,jQuery(function(n){i.init(n),i.reset(),i.win.on("hashchange",i.reset),e&&i.win.on("scroll",function(){i.linkScroll||i.winScroll||(i.winScroll=!0,requestAnimationFrame(function(){i.onScroll()}))}),i.win.on("resize",function(){i.winResize||(i.winResize=!0,requestAnimationFrame(function(){i.onResize()}))}),i.onResize()}))},enableSticky:function(){this.enable(!0)},init:function(i){i(document);var t=this;this.navBar=i("div.wy-side-scroll:first"),this.win=i(window),i(document).on("click","[data-toggle='wy-nav-top']",function(){i("[data-toggle='wy-nav-shift']").toggleClass("shift"),i("[data-toggle='rst-versions']").toggleClass("shift")}).on("click",".wy-menu-vertical .current ul li a",function(){var n=i(this);i("[data-toggle='wy-nav-shift']").removeClass("shift"),i("[data-toggle='rst-versions']").toggleClass("shift"),t.toggleCurrent(n),t.hashChange()}).on("click","[data-toggle='rst-current-version']",function(){i("[data-toggle='rst-versions']").toggleClass("shift-up")}),i("table.docutils:not(.field-list,.footnote,.citation)").wrap("<div class='wy-table-responsive'></div>"),i("table.docutils.footnote").wrap("<div class='wy-table-responsive footnote'></div>"),i("table.docutils.citation").wrap("<div class='wy-table-responsive citation'></div>"),i(".wy-menu-vertical ul").not(".simple").siblings("a").each(function(){var e=i(this);expand=i('<span class="toctree-expand"></span>'),expand.on("click",function(n){return t.toggleCurrent(e),n.stopPropagation(),!1}),e.prepend(expand)})},reset:function(){var n=encodeURI(window.location.hash)||"#";try{var e=$(".wy-menu-vertical"),i=e.find('[href="'+n+'"]');if(0===i.length){var t=$('.document [id="'+n.substring(1)+'"]').closest("div.section");0===(i=e.find('[href="#'+t.attr("id")+'"]')).length&&(i=e.find('[href="#"]'))}0<i.length&&($(".wy-menu-vertical .current").removeClass("current"),i.addClass("current"),i.closest("li.toctree-l1").addClass("current"),i.closest("li.toctree-l1").parent().addClass("current"),i.closest("li.toctree-l1").addClass("current"),i.closest("li.toctree-l2").addClass("current"),i.closest("li.toctree-l3").addClass("current"),i.closest("li.toctree-l4").addClass("current"))}catch(o){console.log("Error expanding nav for anchor",o)}},onScroll:function(){this.winScroll=!1;var n=this.win.scrollTop(),e=n+this.winHeight,i=this.navBar.scrollTop()+(n-this.winPosition);n<0||e>this.docHeight||(this.navBar.scrollTop(i),this.winPosition=n)},onResize:function(){this.winResize=!1,this.winHeight=this.win.height(),this.docHeight=$(document).height()},hashChange:function(){this.linkScroll=!0,this.win.one("hashchange",function(){this.linkScroll=!1})},toggleCurrent:function(n){var e=n.closest("li");e.siblings("li.current").removeClass("current"),e.siblings().find("li.current").removeClass("current"),e.find("> ul li.current").removeClass("current"),e.toggleClass("current")}},"undefined"!=typeof window&&(window.SphinxRtdTheme={Navigation:e.exports.ThemeNav,StickyNav:e.exports.ThemeNav}),function(){for(var r=0,n=["ms","moz","webkit","o"],e=0;e<n.length&&!window.requestAnimationFrame;++e)window.requestAnimationFrame=window[n[e]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[n[e]+"CancelAnimationFrame"]||window[n[e]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(n,e){var i=(new Date).getTime(),t=Math.max(0,16-(i-r)),o=window.setTimeout(function(){n(i+t)},t);return r=i+t,o}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(n){clearTimeout(n)})}()},{jquery:"jquery"}]},{},["sphinx-rtd-theme"]);

View file

@ -1,77 +1,69 @@
.highlight .hll { background-color: #ffffcc } .highlight .hll { background-color: #ffffcc }
.highlight { background: #f8f8f8; } .highlight { background: #f8f8f8; }
.highlight .c { color: #8f5902; font-style: italic } /* Comment */ .highlight .c { color: #408080; font-style: italic } /* Comment */
.highlight .err { color: #a40000; border: 1px solid #ef2929 } /* Error */ .highlight .err { border: 1px solid #FF0000 } /* Error */
.highlight .g { color: #000000 } /* Generic */ .highlight .k { color: #008000; font-weight: bold } /* Keyword */
.highlight .k { color: #004461; font-weight: bold } /* Keyword */ .highlight .o { color: #666666 } /* Operator */
.highlight .l { color: #000000 } /* Literal */ .highlight .ch { color: #408080; font-style: italic } /* Comment.Hashbang */
.highlight .n { color: #000000 } /* Name */ .highlight .cm { color: #408080; font-style: italic } /* Comment.Multiline */
.highlight .o { color: #582800 } /* Operator */ .highlight .cp { color: #BC7A00 } /* Comment.Preproc */
.highlight .x { color: #000000 } /* Other */ .highlight .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */
.highlight .p { color: #000000; font-weight: bold } /* Punctuation */ .highlight .c1 { color: #408080; font-style: italic } /* Comment.Single */
.highlight .ch { color: #8f5902; font-style: italic } /* Comment.Hashbang */ .highlight .cs { color: #408080; font-style: italic } /* Comment.Special */
.highlight .cm { color: #8f5902; font-style: italic } /* Comment.Multiline */ .highlight .gd { color: #A00000 } /* Generic.Deleted */
.highlight .cp { color: #8f5902 } /* Comment.Preproc */ .highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .cpf { color: #8f5902; font-style: italic } /* Comment.PreprocFile */ .highlight .gr { color: #FF0000 } /* Generic.Error */
.highlight .c1 { color: #8f5902; font-style: italic } /* Comment.Single */
.highlight .cs { color: #8f5902; font-style: italic } /* Comment.Special */
.highlight .gd { color: #a40000 } /* Generic.Deleted */
.highlight .ge { color: #000000; font-style: italic } /* Generic.Emph */
.highlight .gr { color: #ef2929 } /* Generic.Error */
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ .highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.highlight .gi { color: #00A000 } /* Generic.Inserted */ .highlight .gi { color: #00A000 } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */ .highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #745334 } /* Generic.Prompt */ .highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
.highlight .gs { color: #000000; font-weight: bold } /* Generic.Strong */ .highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ .highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.highlight .gt { color: #a40000; font-weight: bold } /* Generic.Traceback */ .highlight .gt { color: #0044DD } /* Generic.Traceback */
.highlight .kc { color: #004461; font-weight: bold } /* Keyword.Constant */ .highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #004461; font-weight: bold } /* Keyword.Declaration */ .highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #004461; font-weight: bold } /* Keyword.Namespace */ .highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #004461; font-weight: bold } /* Keyword.Pseudo */ .highlight .kp { color: #008000 } /* Keyword.Pseudo */
.highlight .kr { color: #004461; font-weight: bold } /* Keyword.Reserved */ .highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #004461; font-weight: bold } /* Keyword.Type */ .highlight .kt { color: #B00040 } /* Keyword.Type */
.highlight .ld { color: #000000 } /* Literal.Date */ .highlight .m { color: #666666 } /* Literal.Number */
.highlight .m { color: #990000 } /* Literal.Number */ .highlight .s { color: #BA2121 } /* Literal.String */
.highlight .s { color: #4e9a06 } /* Literal.String */ .highlight .na { color: #7D9029 } /* Name.Attribute */
.highlight .na { color: #c4a000 } /* Name.Attribute */ .highlight .nb { color: #008000 } /* Name.Builtin */
.highlight .nb { color: #004461 } /* Name.Builtin */ .highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */
.highlight .nc { color: #000000 } /* Name.Class */ .highlight .no { color: #880000 } /* Name.Constant */
.highlight .no { color: #000000 } /* Name.Constant */ .highlight .nd { color: #AA22FF } /* Name.Decorator */
.highlight .nd { color: #888888 } /* Name.Decorator */ .highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */
.highlight .ni { color: #ce5c00 } /* Name.Entity */ .highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
.highlight .ne { color: #cc0000; font-weight: bold } /* Name.Exception */ .highlight .nf { color: #0000FF } /* Name.Function */
.highlight .nf { color: #000000 } /* Name.Function */ .highlight .nl { color: #A0A000 } /* Name.Label */
.highlight .nl { color: #f57900 } /* Name.Label */ .highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
.highlight .nn { color: #000000 } /* Name.Namespace */ .highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */
.highlight .nx { color: #000000 } /* Name.Other */ .highlight .nv { color: #19177C } /* Name.Variable */
.highlight .py { color: #000000 } /* Name.Property */ .highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
.highlight .nt { color: #004461; font-weight: bold } /* Name.Tag */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .nv { color: #000000 } /* Name.Variable */ .highlight .mb { color: #666666 } /* Literal.Number.Bin */
.highlight .ow { color: #004461; font-weight: bold } /* Operator.Word */ .highlight .mf { color: #666666 } /* Literal.Number.Float */
.highlight .w { color: #f8f8f8; text-decoration: underline } /* Text.Whitespace */ .highlight .mh { color: #666666 } /* Literal.Number.Hex */
.highlight .mb { color: #990000 } /* Literal.Number.Bin */ .highlight .mi { color: #666666 } /* Literal.Number.Integer */
.highlight .mf { color: #990000 } /* Literal.Number.Float */ .highlight .mo { color: #666666 } /* Literal.Number.Oct */
.highlight .mh { color: #990000 } /* Literal.Number.Hex */ .highlight .sa { color: #BA2121 } /* Literal.String.Affix */
.highlight .mi { color: #990000 } /* Literal.Number.Integer */ .highlight .sb { color: #BA2121 } /* Literal.String.Backtick */
.highlight .mo { color: #990000 } /* Literal.Number.Oct */ .highlight .sc { color: #BA2121 } /* Literal.String.Char */
.highlight .sa { color: #4e9a06 } /* Literal.String.Affix */ .highlight .dl { color: #BA2121 } /* Literal.String.Delimiter */
.highlight .sb { color: #4e9a06 } /* Literal.String.Backtick */ .highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
.highlight .sc { color: #4e9a06 } /* Literal.String.Char */ .highlight .s2 { color: #BA2121 } /* Literal.String.Double */
.highlight .dl { color: #4e9a06 } /* Literal.String.Delimiter */ .highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
.highlight .sd { color: #8f5902; font-style: italic } /* Literal.String.Doc */ .highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */
.highlight .s2 { color: #4e9a06 } /* Literal.String.Double */ .highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
.highlight .se { color: #4e9a06 } /* Literal.String.Escape */ .highlight .sx { color: #008000 } /* Literal.String.Other */
.highlight .sh { color: #4e9a06 } /* Literal.String.Heredoc */ .highlight .sr { color: #BB6688 } /* Literal.String.Regex */
.highlight .si { color: #4e9a06 } /* Literal.String.Interpol */ .highlight .s1 { color: #BA2121 } /* Literal.String.Single */
.highlight .sx { color: #4e9a06 } /* Literal.String.Other */ .highlight .ss { color: #19177C } /* Literal.String.Symbol */
.highlight .sr { color: #4e9a06 } /* Literal.String.Regex */ .highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */
.highlight .s1 { color: #4e9a06 } /* Literal.String.Single */ .highlight .fm { color: #0000FF } /* Name.Function.Magic */
.highlight .ss { color: #4e9a06 } /* Literal.String.Symbol */ .highlight .vc { color: #19177C } /* Name.Variable.Class */
.highlight .bp { color: #3465a4 } /* Name.Builtin.Pseudo */ .highlight .vg { color: #19177C } /* Name.Variable.Global */
.highlight .fm { color: #000000 } /* Name.Function.Magic */ .highlight .vi { color: #19177C } /* Name.Variable.Instance */
.highlight .vc { color: #000000 } /* Name.Variable.Class */ .highlight .vm { color: #19177C } /* Name.Variable.Magic */
.highlight .vg { color: #000000 } /* Name.Variable.Global */ .highlight .il { color: #666666 } /* Literal.Number.Integer.Long */
.highlight .vi { color: #000000 } /* Name.Variable.Instance */
.highlight .vm { color: #000000 } /* Name.Variable.Magic */
.highlight .il { color: #990000 } /* Literal.Number.Integer.Long */

View file

@ -1,37 +1,160 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <!DOCTYPE html>
<head> <!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<meta http-equiv="X-UA-Compatible" content="IE=Edge" /> <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <head>
<title>Actor &#8212; CraftBeerPi 4.0 documentation</title> <meta charset="utf-8">
<link rel="stylesheet" href="_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" /> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
<script type="text/javascript" src="_static/jquery.js"></script> <title>Actor &mdash; CraftBeerPi 4.0 documentation</title>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="genindex.html" /> <link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" /> <link rel="search" title="Search" href="search.html" />
<link rel="next" title="Sensor" href="sensor.html" /> <link rel="next" title="Sensor" href="sensor.html" />
<link rel="prev" title="Core" href="core.html" /> <link rel="prev" title="Core" href="core.html" />
<link rel="stylesheet" href="_static/custom.css" type="text/css" />
<script src="_static/js/modernizr.min.js"></script>
</head>
<body class="wy-body-for-nav">
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" /> <div class="wy-grid-for-nav">
</head><body>
<div class="document"> <nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="documentwrapper"> <div class="wy-side-scroll">
<div class="bodywrapper"> <div class="wy-side-nav-search">
<div class="body" role="main">
<a href="index.html" class="icon icon-home"> CraftBeerPi
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="install.html">Installation</a></li>
<li class="toctree-l1"><a class="reference internal" href="core.html">Core</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Actor</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#architecture">Architecture</a></li>
<li class="toctree-l2"><a class="reference internal" href="#actorcontroller">ActorController</a></li>
<li class="toctree-l2"><a class="reference internal" href="#cbpiactor">CBPiActor</a></li>
<li class="toctree-l2"><a class="reference internal" href="#custom-actor">Custom Actor</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="sensor.html">Sensor</a></li>
<li class="toctree-l1"><a class="reference internal" href="step.html">Brewing Step</a></li>
<li class="toctree-l1"><a class="reference internal" href="kettle_controller.html">Kettle</a></li>
<li class="toctree-l1"><a class="reference internal" href="properties.html">Properties</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">CraftBeerPi</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html">Docs</a> &raquo;</li>
<li>Actor</li>
<li class="wy-breadcrumbs-aside">
<a href="_sources/actor.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="actor"> <div class="section" id="actor">
<h1>Actor<a class="headerlink" href="#actor" title="Permalink to this headline"></a></h1> <h1>Actor<a class="headerlink" href="#actor" title="Permalink to this headline"></a></h1>
@ -297,13 +420,39 @@ Supporting Event Topic “actor/+/toggle”</p>
</div> </div>
</div>
</div> </div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="sensor.html" class="btn btn-neutral float-right" title="Sensor" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
<a href="core.html" class="btn btn-neutral" title="Core" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2018, Manuel Fritsch
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div> </div>
</div> </div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper"> </section>
<h1 class="logo"><a href="index.html">CraftBeerPi</a></h1>
</div>
@ -311,71 +460,21 @@ Supporting Event Topic “actor/+/toggle”</p>
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
<h3>Navigation</h3> <script type="text/javascript" src="_static/jquery.js"></script>
<ul class="current"> <script type="text/javascript" src="_static/underscore.js"></script>
<li class="toctree-l1"><a class="reference internal" href="install.html">Installation</a></li> <script type="text/javascript" src="_static/doctools.js"></script>
<li class="toctree-l1"><a class="reference internal" href="core.html">Core</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Actor</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#architecture">Architecture</a></li>
<li class="toctree-l2"><a class="reference internal" href="#actorcontroller">ActorController</a></li>
<li class="toctree-l2"><a class="reference internal" href="#cbpiactor">CBPiActor</a></li>
<li class="toctree-l2"><a class="reference internal" href="#custom-actor">Custom Actor</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="sensor.html">Sensor</a></li>
<li class="toctree-l1"><a class="reference internal" href="step.html">Brewing Step</a></li>
<li class="toctree-l1"><a class="reference internal" href="kettle_controller.html">Kettle</a></li>
<li class="toctree-l1"><a class="reference internal" href="properties.html">Properties</a></li>
</ul>
<div class="relations">
<h3>Related Topics</h3>
<ul>
<li><a href="index.html">Documentation overview</a><ul>
<li>Previous: <a href="core.html" title="previous chapter">Core</a></li>
<li>Next: <a href="sensor.html" title="next chapter">Sensor</a></li>
</ul></li>
</ul>
</div>
<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="footer">
&copy;2018, Manuel Fritsch.
|
Powered by <a href="http://sphinx-doc.org/">Sphinx 1.8.2</a>
&amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
<a href="_sources/actor.rst.txt"
rel="nofollow">Page source</a>
</div>
</body>
</html> </html>

View file

@ -1,50 +1,193 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <!DOCTYPE html>
<head> <!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<meta http-equiv="X-UA-Compatible" content="IE=Edge" /> <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <head>
<title>Core &#8212; CraftBeerPi 4.0 documentation</title> <meta charset="utf-8">
<link rel="stylesheet" href="_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" /> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
<script type="text/javascript" src="_static/jquery.js"></script> <title>Core &mdash; CraftBeerPi 4.0 documentation</title>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="genindex.html" /> <link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" /> <link rel="search" title="Search" href="search.html" />
<link rel="next" title="Actor" href="actor.html" /> <link rel="next" title="Actor" href="actor.html" />
<link rel="prev" title="Installation" href="install.html" /> <link rel="prev" title="Installation" href="install.html" />
<link rel="stylesheet" href="_static/custom.css" type="text/css" />
<script src="_static/js/modernizr.min.js"></script>
</head>
<body class="wy-body-for-nav">
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" /> <div class="wy-grid-for-nav">
</head><body>
<div class="document"> <nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="documentwrapper"> <div class="wy-side-scroll">
<div class="bodywrapper"> <div class="wy-side-nav-search">
<div class="body" role="main">
<a href="index.html" class="icon icon-home"> CraftBeerPi
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="install.html">Installation</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Core</a></li>
<li class="toctree-l1"><a class="reference internal" href="actor.html">Actor</a></li>
<li class="toctree-l1"><a class="reference internal" href="sensor.html">Sensor</a></li>
<li class="toctree-l1"><a class="reference internal" href="step.html">Brewing Step</a></li>
<li class="toctree-l1"><a class="reference internal" href="kettle_controller.html">Kettle</a></li>
<li class="toctree-l1"><a class="reference internal" href="properties.html">Properties</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">CraftBeerPi</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html">Docs</a> &raquo;</li>
<li>Core</li>
<li class="wy-breadcrumbs-aside">
<a href="_sources/core.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="core"> <div class="section" id="core">
<h1>Core<a class="headerlink" href="#core" title="Permalink to this headline"></a></h1> <h1>Core<a class="headerlink" href="#core" title="Permalink to this headline"></a></h1>
</div> </div>
</div>
</div> </div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="actor.html" class="btn btn-neutral float-right" title="Actor" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
<a href="install.html" class="btn btn-neutral" title="Installation" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2018, Manuel Fritsch
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div> </div>
</div> </div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper"> </section>
<h1 class="logo"><a href="index.html">CraftBeerPi</a></h1>
</div>
@ -52,64 +195,21 @@
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
<h3>Navigation</h3> <script type="text/javascript" src="_static/jquery.js"></script>
<ul class="current"> <script type="text/javascript" src="_static/underscore.js"></script>
<li class="toctree-l1"><a class="reference internal" href="install.html">Installation</a></li> <script type="text/javascript" src="_static/doctools.js"></script>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Core</a></li>
<li class="toctree-l1"><a class="reference internal" href="actor.html">Actor</a></li>
<li class="toctree-l1"><a class="reference internal" href="sensor.html">Sensor</a></li>
<li class="toctree-l1"><a class="reference internal" href="kettle_controller.html">Kettle</a></li>
<li class="toctree-l1"><a class="reference internal" href="properties.html">Properties</a></li>
</ul>
<div class="relations">
<h3>Related Topics</h3>
<ul>
<li><a href="index.html">Documentation overview</a><ul>
<li>Previous: <a href="install.html" title="previous chapter">Installation</a></li>
<li>Next: <a href="actor.html" title="next chapter">Actor</a></li>
</ul></li>
</ul>
</div>
<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="footer">
&copy;2018, Manuel Fritsch.
|
Powered by <a href="http://sphinx-doc.org/">Sphinx 1.8.2</a>
&amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
<a href="_sources/core.rst.txt"
rel="nofollow">Page source</a>
</div>
</body>
</html> </html>

View file

@ -1,36 +1,151 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <!DOCTYPE html>
<head> <!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<meta http-equiv="X-UA-Compatible" content="IE=Edge" /> <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <head>
<title>Index &#8212; CraftBeerPi 4.0 documentation</title> <meta charset="utf-8">
<link rel="stylesheet" href="_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" /> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
<script type="text/javascript" src="_static/jquery.js"></script> <title>Index &mdash; CraftBeerPi 4.0 documentation</title>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="#" /> <link rel="index" title="Index" href="#" />
<link rel="search" title="Search" href="search.html" /> <link rel="search" title="Search" href="search.html" />
<link rel="stylesheet" href="_static/custom.css" type="text/css" />
<script src="_static/js/modernizr.min.js"></script>
</head>
<body class="wy-body-for-nav">
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" /> <div class="wy-grid-for-nav">
</head><body>
<div class="document"> <nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="documentwrapper"> <div class="wy-side-scroll">
<div class="bodywrapper"> <div class="wy-side-nav-search">
<div class="body" role="main">
<a href="index.html" class="icon icon-home"> CraftBeerPi
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul>
<li class="toctree-l1"><a class="reference internal" href="install.html">Installation</a></li>
<li class="toctree-l1"><a class="reference internal" href="core.html">Core</a></li>
<li class="toctree-l1"><a class="reference internal" href="actor.html">Actor</a></li>
<li class="toctree-l1"><a class="reference internal" href="sensor.html">Sensor</a></li>
<li class="toctree-l1"><a class="reference internal" href="step.html">Brewing Step</a></li>
<li class="toctree-l1"><a class="reference internal" href="kettle_controller.html">Kettle</a></li>
<li class="toctree-l1"><a class="reference internal" href="properties.html">Properties</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">CraftBeerPi</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html">Docs</a> &raquo;</li>
<li>Index</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<h1 id="index">Index</h1> <h1 id="index">Index</h1>
@ -56,19 +171,7 @@
<h2 id="_">_</h2> <h2 id="_">_</h2>
<table style="width: 100%" class="indextable genindextable"><tr> <table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="step.html#core.api.step.SimpleStep._exception_count">_exception_count (core.api.step.SimpleStep attribute)</a>
</li>
<li><a href="step.html#core.api.step.SimpleStep._interval">_interval (core.api.step.SimpleStep attribute)</a>
</li>
<li><a href="kettle_controller.html#core.controller.kettle_controller.KettleController._is_logic_running">_is_logic_running() (core.controller.kettle_controller.KettleController method)</a> <li><a href="kettle_controller.html#core.controller.kettle_controller.KettleController._is_logic_running">_is_logic_running() (core.controller.kettle_controller.KettleController method)</a>
</li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="step.html#core.api.step.SimpleStep._max_exceptions">_max_exceptions (core.api.step.SimpleStep attribute)</a>
</li>
<li><a href="step.html#core.api.step.SimpleStep._SimpleStep__dirty">_SimpleStep__dirty (core.api.step.SimpleStep attribute)</a>
</li>
<li><a href="step.html#core.controller.step_controller.StepController._step_done">_step_done() (core.controller.step_controller.StepController method)</a>
</li> </li>
</ul></td> </ul></td>
</tr></table> </tr></table>
@ -96,7 +199,7 @@
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="kettle_controller.html#core.api.kettle_logic.CBPiKettleLogic">CBPiKettleLogic (class in core.api.kettle_logic)</a> <li><a href="kettle_controller.html#core.api.kettle_logic.CBPiKettleLogic">CBPiKettleLogic (class in core.api.kettle_logic)</a>
</li> </li>
<li><a href="sensor.html#module-core.controller.sensor_controller">core.controller.sensor_controller (module)</a> <li><a href="sensor.html#core.api.sensor.CBPiSensor">CBPiSensor (class in core.api.sensor)</a>
</li> </li>
</ul></td> </ul></td>
</tr></table> </tr></table>
@ -104,13 +207,13 @@
<h2 id="G">G</h2> <h2 id="G">G</h2>
<table style="width: 100%" class="indextable genindextable"><tr> <table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="step.html#core.controller.step_controller.StepController.get_manged_fields_as_array">get_manged_fields_as_array() (core.controller.step_controller.StepController method)</a> <li><a href="kettle_controller.html#core.controller.kettle_controller.KettleController.get_temp">get_temp() (core.controller.kettle_controller.KettleController method)</a>
</li> </li>
</ul></td> </ul></td>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="kettle_controller.html#core.controller.kettle_controller.KettleController.get_temp">get_temp() (core.controller.kettle_controller.KettleController method)</a>
</li>
<li><a href="kettle_controller.html#core.controller.kettle_controller.KettleController.get_traget_temp">get_traget_temp() (core.controller.kettle_controller.KettleController method)</a> <li><a href="kettle_controller.html#core.controller.kettle_controller.KettleController.get_traget_temp">get_traget_temp() (core.controller.kettle_controller.KettleController method)</a>
</li>
<li><a href="sensor.html#core.controller.sensor_controller.SensorController.get_value">get_value() (core.controller.sensor_controller.SensorController method)</a>
</li> </li>
</ul></td> </ul></td>
</tr></table> </tr></table>
@ -118,11 +221,11 @@
<h2 id="H">H</h2> <h2 id="H">H</h2>
<table style="width: 100%" class="indextable genindextable"><tr> <table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="step.html#core.controller.step_controller.StepController.handle">handle() (core.controller.step_controller.StepController method)</a>
</li>
<li><a href="step.html#core.controller.step_controller.StepController.handle_action">handle_action() (core.controller.step_controller.StepController method)</a> <li><a href="step.html#core.controller.step_controller.StepController.handle_action">handle_action() (core.controller.step_controller.StepController method)</a>
</li> </li>
<li><a href="kettle_controller.html#core.controller.kettle_controller.KettleController.handle_automtic_event">handle_automtic_event() (core.controller.kettle_controller.KettleController method)</a> <li><a href="kettle_controller.html#core.controller.kettle_controller.KettleController.handle_automtic_event">handle_automtic_event() (core.controller.kettle_controller.KettleController method)</a>
</li>
<li><a href="step.html#core.controller.step_controller.StepController.handle_done">handle_done() (core.controller.step_controller.StepController method)</a>
</li> </li>
<li><a href="step.html#core.controller.step_controller.StepController.handle_next">handle_next() (core.controller.step_controller.StepController method)</a> <li><a href="step.html#core.controller.step_controller.StepController.handle_next">handle_next() (core.controller.step_controller.StepController method)</a>
</li> </li>
@ -139,6 +242,8 @@
<li><a href="kettle_controller.html#core.controller.kettle_controller.KettleController.heater_on">heater_on() (core.controller.kettle_controller.KettleController method)</a> <li><a href="kettle_controller.html#core.controller.kettle_controller.KettleController.heater_on">heater_on() (core.controller.kettle_controller.KettleController method)</a>
</li> </li>
<li><a href="step.html#core.controller.step_controller.StepController.http_action">http_action() (core.controller.step_controller.StepController method)</a> <li><a href="step.html#core.controller.step_controller.StepController.http_action">http_action() (core.controller.step_controller.StepController method)</a>
</li>
<li><a href="step.html#core.controller.step_controller.StepController.http_next">http_next() (core.controller.step_controller.StepController method)</a>
</li> </li>
<li><a href="step.html#core.controller.step_controller.StepController.http_reset">http_reset() (core.controller.step_controller.StepController method)</a> <li><a href="step.html#core.controller.step_controller.StepController.http_reset">http_reset() (core.controller.step_controller.StepController method)</a>
</li> </li>
@ -156,6 +261,8 @@
<li><a href="actor.html#core.controller.actor_controller.ActorController.init">(core.controller.actor_controller.ActorController method)</a> <li><a href="actor.html#core.controller.actor_controller.ActorController.init">(core.controller.actor_controller.ActorController method)</a>
</li> </li>
<li><a href="kettle_controller.html#core.controller.kettle_controller.KettleController.init">(core.controller.kettle_controller.KettleController method)</a> <li><a href="kettle_controller.html#core.controller.kettle_controller.KettleController.init">(core.controller.kettle_controller.KettleController method)</a>
</li>
<li><a href="sensor.html#core.controller.sensor_controller.SensorController.init">(core.controller.sensor_controller.SensorController method)</a>
</li> </li>
<li><a href="step.html#core.controller.step_controller.StepController.init">(core.controller.step_controller.StepController method)</a> <li><a href="step.html#core.controller.step_controller.StepController.init">(core.controller.step_controller.StepController method)</a>
</li> </li>
@ -193,7 +300,7 @@
<ul> <ul>
<li><a href="kettle_controller.html#core.controller.kettle_controller.KettleController.model">(core.controller.kettle_controller.KettleController attribute)</a> <li><a href="kettle_controller.html#core.controller.kettle_controller.KettleController.model">(core.controller.kettle_controller.KettleController attribute)</a>
</li> </li>
<li><a href="step.html#core.controller.step_controller.StepController.model">(core.controller.step_controller.StepController attribute)</a> <li><a href="sensor.html#core.controller.sensor_controller.SensorController.model">(core.controller.sensor_controller.SensorController attribute)</a>
</li> </li>
</ul></li> </ul></li>
</ul></td> </ul></td>
@ -258,14 +365,16 @@
</li> </li>
<li><a href="step.html#core.api.step.SimpleStep.reset_dirty">reset_dirty() (core.api.step.SimpleStep method)</a> <li><a href="step.html#core.api.step.SimpleStep.reset_dirty">reset_dirty() (core.api.step.SimpleStep method)</a>
</li> </li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="kettle_controller.html#core.api.kettle_logic.CBPiKettleLogic.run">run() (core.api.kettle_logic.CBPiKettleLogic method)</a> <li><a href="kettle_controller.html#core.api.kettle_logic.CBPiKettleLogic.run">run() (core.api.kettle_logic.CBPiKettleLogic method)</a>
<ul> <ul>
<li><a href="sensor.html#core.api.sensor.CBPiSensor.run">(core.api.sensor.CBPiSensor method)</a>
</li>
<li><a href="step.html#core.api.step.SimpleStep.run">(core.api.step.SimpleStep method)</a> <li><a href="step.html#core.api.step.SimpleStep.run">(core.api.step.SimpleStep method)</a>
</li> </li>
</ul></li> </ul></li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="step.html#core.api.step.SimpleStep.run_cycle">run_cycle() (core.api.step.SimpleStep method)</a> <li><a href="step.html#core.api.step.SimpleStep.run_cycle">run_cycle() (core.api.step.SimpleStep method)</a>
</li> </li>
<li><a href="step.html#core.api.step.SimpleStep.running">running() (core.api.step.SimpleStep method)</a> <li><a href="step.html#core.api.step.SimpleStep.running">running() (core.api.step.SimpleStep method)</a>
@ -276,12 +385,18 @@
<h2 id="S">S</h2> <h2 id="S">S</h2>
<table style="width: 100%" class="indextable genindextable"><tr> <table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="sensor.html#core.controller.sensor_controller.SensorController">SensorController (class in core.controller.sensor_controller)</a>
</li>
<li><a href="step.html#core.api.step.SimpleStep">SimpleStep (class in core.api.step)</a> <li><a href="step.html#core.api.step.SimpleStep">SimpleStep (class in core.api.step)</a>
</li> </li>
<li><a href="step.html#core.controller.step_controller.StepController.start">start() (core.controller.step_controller.StepController method)</a> <li><a href="step.html#core.controller.step_controller.StepController.start">start() (core.controller.step_controller.StepController method)</a>
</li> </li>
<li><a href="actor.html#core.api.actor.CBPiActor.state">state() (core.api.actor.CBPiActor method)</a> <li><a href="actor.html#core.api.actor.CBPiActor.state">state() (core.api.actor.CBPiActor method)</a>
<ul>
<li><a href="sensor.html#core.api.sensor.CBPiSensor.state">(core.api.sensor.CBPiSensor method)</a>
</li> </li>
</ul></li>
</ul></td> </ul></td>
<td style="width: 33%; vertical-align: top;"><ul> <td style="width: 33%; vertical-align: top;"><ul>
<li><a href="step.html#core.controller.step_controller.StepController">StepController (class in core.controller.step_controller)</a> <li><a href="step.html#core.controller.step_controller.StepController">StepController (class in core.controller.step_controller)</a>
@ -290,8 +405,6 @@
<ul> <ul>
<li><a href="step.html#core.api.step.SimpleStep.stop">(core.api.step.SimpleStep method)</a> <li><a href="step.html#core.api.step.SimpleStep.stop">(core.api.step.SimpleStep method)</a>
</li>
<li><a href="step.html#core.controller.step_controller.StepController.stop">(core.controller.step_controller.StepController method)</a>
</li> </li>
</ul></li> </ul></li>
</ul></td> </ul></td>
@ -311,13 +424,30 @@
</div>
</div> </div>
<footer>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2018, Manuel Fritsch
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div> </div>
</div> </div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper"> </section>
<h1 class="logo"><a href="index.html">CraftBeerPi</a></h1>
</div>
@ -325,60 +455,21 @@
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
<h3>Navigation</h3> <script type="text/javascript" src="_static/jquery.js"></script>
<ul> <script type="text/javascript" src="_static/underscore.js"></script>
<li class="toctree-l1"><a class="reference internal" href="install.html">Installation</a></li> <script type="text/javascript" src="_static/doctools.js"></script>
<li class="toctree-l1"><a class="reference internal" href="core.html">Core</a></li>
<li class="toctree-l1"><a class="reference internal" href="actor.html">Actor</a></li>
<li class="toctree-l1"><a class="reference internal" href="sensor.html">Sensor</a></li>
<li class="toctree-l1"><a class="reference internal" href="step.html">Brewing Step</a></li>
<li class="toctree-l1"><a class="reference internal" href="kettle_controller.html">Kettle</a></li>
<li class="toctree-l1"><a class="reference internal" href="properties.html">Properties</a></li>
</ul>
<div class="relations">
<h3>Related Topics</h3>
<ul>
<li><a href="index.html">Documentation overview</a><ul>
</ul></li>
</ul>
</div>
<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="footer">
&copy;2018, Manuel Fritsch.
|
Powered by <a href="http://sphinx-doc.org/">Sphinx 1.8.2</a>
&amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
</div>
</body>
</html> </html>

View file

@ -1,36 +1,153 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <!DOCTYPE html>
<head> <!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<meta http-equiv="X-UA-Compatible" content="IE=Edge" /> <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <head>
<title>Welcome to CraftBeerPis documentation! &#8212; CraftBeerPi 4.0 documentation</title> <meta charset="utf-8">
<link rel="stylesheet" href="_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" /> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
<script type="text/javascript" src="_static/jquery.js"></script> <title>Welcome to CraftBeerPis documentation! &mdash; CraftBeerPi 4.0 documentation</title>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="genindex.html" /> <link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" /> <link rel="search" title="Search" href="search.html" />
<link rel="next" title="Installation" href="install.html" /> <link rel="next" title="Installation" href="install.html" />
<link rel="stylesheet" href="_static/custom.css" type="text/css" />
<script src="_static/js/modernizr.min.js"></script>
</head>
<body class="wy-body-for-nav">
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" /> <div class="wy-grid-for-nav">
</head><body>
<div class="document"> <nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="documentwrapper"> <div class="wy-side-scroll">
<div class="bodywrapper"> <div class="wy-side-nav-search">
<div class="body" role="main">
<a href="#" class="icon icon-home"> CraftBeerPi
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul>
<li class="toctree-l1"><a class="reference internal" href="install.html">Installation</a></li>
<li class="toctree-l1"><a class="reference internal" href="core.html">Core</a></li>
<li class="toctree-l1"><a class="reference internal" href="actor.html">Actor</a></li>
<li class="toctree-l1"><a class="reference internal" href="sensor.html">Sensor</a></li>
<li class="toctree-l1"><a class="reference internal" href="step.html">Brewing Step</a></li>
<li class="toctree-l1"><a class="reference internal" href="kettle_controller.html">Kettle</a></li>
<li class="toctree-l1"><a class="reference internal" href="properties.html">Properties</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="#">CraftBeerPi</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="#">Docs</a> &raquo;</li>
<li>Welcome to CraftBeerPis documentation!</li>
<li class="wy-breadcrumbs-aside">
<a href="_sources/index.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="welcome-to-craftbeerpi-s-documentation"> <div class="section" id="welcome-to-craftbeerpi-s-documentation">
<h1>Welcome to CraftBeerPis documentation!<a class="headerlink" href="#welcome-to-craftbeerpi-s-documentation" title="Permalink to this headline"></a></h1> <h1>Welcome to CraftBeerPis documentation!<a class="headerlink" href="#welcome-to-craftbeerpi-s-documentation" title="Permalink to this headline"></a></h1>
@ -46,8 +163,8 @@
</ul> </ul>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="sensor.html">Sensor</a><ul> <li class="toctree-l1"><a class="reference internal" href="sensor.html">Sensor</a><ul>
<li class="toctree-l2"><a class="reference internal" href="sensor.html#architecture">Architecture</a></li> <li class="toctree-l2"><a class="reference internal" href="sensor.html#sensor-controller">Sensor Controller</a></li>
<li class="toctree-l2"><a class="reference internal" href="sensor.html#module-core.controller.sensor_controller">SensorController</a></li> <li class="toctree-l2"><a class="reference internal" href="sensor.html#cbpisensor">CBPiSensor</a></li>
<li class="toctree-l2"><a class="reference internal" href="sensor.html#custom-sensor">Custom Sensor</a></li> <li class="toctree-l2"><a class="reference internal" href="sensor.html#custom-sensor">Custom Sensor</a></li>
</ul> </ul>
</li> </li>
@ -63,19 +180,46 @@
<li class="toctree-l2"><a class="reference internal" href="kettle_controller.html#custom-logic">Custom Logic</a></li> <li class="toctree-l2"><a class="reference internal" href="kettle_controller.html#custom-logic">Custom Logic</a></li>
</ul> </ul>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="properties.html">Properties</a></li> <li class="toctree-l1"><a class="reference internal" href="properties.html">Properties</a><ul>
<li class="toctree-l2"><a class="reference internal" href="properties.html#custom-actor">Custom Actor</a></li>
</ul>
</li>
</ul> </ul>
</div> </div>
</div> </div>
</div>
</div> </div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="install.html" class="btn btn-neutral float-right" title="Installation" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2018, Manuel Fritsch
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div> </div>
</div> </div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper"> </section>
<h1 class="logo"><a href="#">CraftBeerPi</a></h1>
</div>
@ -83,64 +227,21 @@
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
<h3>Navigation</h3> <script type="text/javascript" src="_static/jquery.js"></script>
<ul> <script type="text/javascript" src="_static/underscore.js"></script>
<li class="toctree-l1"><a class="reference internal" href="install.html">Installation</a></li> <script type="text/javascript" src="_static/doctools.js"></script>
<li class="toctree-l1"><a class="reference internal" href="core.html">Core</a></li>
<li class="toctree-l1"><a class="reference internal" href="actor.html">Actor</a></li>
<li class="toctree-l1"><a class="reference internal" href="sensor.html">Sensor</a></li>
<li class="toctree-l1"><a class="reference internal" href="step.html">Brewing Step</a></li>
<li class="toctree-l1"><a class="reference internal" href="kettle_controller.html">Kettle</a></li>
<li class="toctree-l1"><a class="reference internal" href="properties.html">Properties</a></li>
</ul>
<div class="relations">
<h3>Related Topics</h3>
<ul>
<li><a href="#">Documentation overview</a><ul>
<li>Next: <a href="install.html" title="next chapter">Installation</a></li>
</ul></li>
</ul>
</div>
<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="footer">
&copy;2018, Manuel Fritsch.
|
Powered by <a href="http://sphinx-doc.org/">Sphinx 1.8.2</a>
&amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
<a href="_sources/index.rst.txt"
rel="nofollow">Page source</a>
</div>
</body>
</html> </html>

View file

@ -1,37 +1,154 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <!DOCTYPE html>
<head> <!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<meta http-equiv="X-UA-Compatible" content="IE=Edge" /> <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <head>
<title>Installation &#8212; CraftBeerPi 4.0 documentation</title> <meta charset="utf-8">
<link rel="stylesheet" href="_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" /> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
<script type="text/javascript" src="_static/jquery.js"></script> <title>Installation &mdash; CraftBeerPi 4.0 documentation</title>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="genindex.html" /> <link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" /> <link rel="search" title="Search" href="search.html" />
<link rel="next" title="Core" href="core.html" /> <link rel="next" title="Core" href="core.html" />
<link rel="prev" title="Welcome to CraftBeerPis documentation!" href="index.html" /> <link rel="prev" title="Welcome to CraftBeerPis documentation!" href="index.html" />
<link rel="stylesheet" href="_static/custom.css" type="text/css" />
<script src="_static/js/modernizr.min.js"></script>
</head>
<body class="wy-body-for-nav">
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" /> <div class="wy-grid-for-nav">
</head><body>
<div class="document"> <nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="documentwrapper"> <div class="wy-side-scroll">
<div class="bodywrapper"> <div class="wy-side-nav-search">
<div class="body" role="main">
<a href="index.html" class="icon icon-home"> CraftBeerPi
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul class="current">
<li class="toctree-l1 current"><a class="current reference internal" href="#">Installation</a></li>
<li class="toctree-l1"><a class="reference internal" href="core.html">Core</a></li>
<li class="toctree-l1"><a class="reference internal" href="actor.html">Actor</a></li>
<li class="toctree-l1"><a class="reference internal" href="sensor.html">Sensor</a></li>
<li class="toctree-l1"><a class="reference internal" href="step.html">Brewing Step</a></li>
<li class="toctree-l1"><a class="reference internal" href="kettle_controller.html">Kettle</a></li>
<li class="toctree-l1"><a class="reference internal" href="properties.html">Properties</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">CraftBeerPi</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html">Docs</a> &raquo;</li>
<li>Installation</li>
<li class="wy-breadcrumbs-aside">
<a href="_sources/install.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="installation"> <div class="section" id="installation">
<h1>Installation<a class="headerlink" href="#installation" title="Permalink to this headline"></a></h1> <h1>Installation<a class="headerlink" href="#installation" title="Permalink to this headline"></a></h1>
@ -46,13 +163,39 @@
</div> </div>
</div>
</div> </div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="core.html" class="btn btn-neutral float-right" title="Core" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
<a href="index.html" class="btn btn-neutral" title="Welcome to CraftBeerPis documentation!" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2018, Manuel Fritsch
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div> </div>
</div> </div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper"> </section>
<h1 class="logo"><a href="index.html">CraftBeerPi</a></h1>
</div>
@ -60,64 +203,21 @@
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
<h3>Navigation</h3> <script type="text/javascript" src="_static/jquery.js"></script>
<ul class="current"> <script type="text/javascript" src="_static/underscore.js"></script>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Installation</a></li> <script type="text/javascript" src="_static/doctools.js"></script>
<li class="toctree-l1"><a class="reference internal" href="core.html">Core</a></li>
<li class="toctree-l1"><a class="reference internal" href="actor.html">Actor</a></li>
<li class="toctree-l1"><a class="reference internal" href="sensor.html">Sensor</a></li>
<li class="toctree-l1"><a class="reference internal" href="kettle_controller.html">Kettle</a></li>
<li class="toctree-l1"><a class="reference internal" href="properties.html">Properties</a></li>
</ul>
<div class="relations">
<h3>Related Topics</h3>
<ul>
<li><a href="index.html">Documentation overview</a><ul>
<li>Previous: <a href="index.html" title="previous chapter">Welcome to CraftBeerPis documentation!</a></li>
<li>Next: <a href="core.html" title="next chapter">Core</a></li>
</ul></li>
</ul>
</div>
<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="footer">
&copy;2018, Manuel Fritsch.
|
Powered by <a href="http://sphinx-doc.org/">Sphinx 1.8.2</a>
&amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
<a href="_sources/install.rst.txt"
rel="nofollow">Page source</a>
</div>
</body>
</html> </html>

View file

@ -1,37 +1,159 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <!DOCTYPE html>
<head> <!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<meta http-equiv="X-UA-Compatible" content="IE=Edge" /> <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <head>
<title>Kettle &#8212; CraftBeerPi 4.0 documentation</title> <meta charset="utf-8">
<link rel="stylesheet" href="_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" /> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
<script type="text/javascript" src="_static/jquery.js"></script> <title>Kettle &mdash; CraftBeerPi 4.0 documentation</title>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="genindex.html" /> <link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" /> <link rel="search" title="Search" href="search.html" />
<link rel="next" title="Properties" href="properties.html" /> <link rel="next" title="Properties" href="properties.html" />
<link rel="prev" title="Brewing Step" href="step.html" /> <link rel="prev" title="Brewing Step" href="step.html" />
<link rel="stylesheet" href="_static/custom.css" type="text/css" />
<script src="_static/js/modernizr.min.js"></script>
</head>
<body class="wy-body-for-nav">
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" /> <div class="wy-grid-for-nav">
</head><body>
<div class="document"> <nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="documentwrapper"> <div class="wy-side-scroll">
<div class="bodywrapper"> <div class="wy-side-nav-search">
<div class="body" role="main">
<a href="index.html" class="icon icon-home"> CraftBeerPi
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="install.html">Installation</a></li>
<li class="toctree-l1"><a class="reference internal" href="core.html">Core</a></li>
<li class="toctree-l1"><a class="reference internal" href="actor.html">Actor</a></li>
<li class="toctree-l1"><a class="reference internal" href="sensor.html">Sensor</a></li>
<li class="toctree-l1"><a class="reference internal" href="step.html">Brewing Step</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Kettle</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#kettlecontroller">KettleController</a></li>
<li class="toctree-l2"><a class="reference internal" href="#cbpikettlelogic">CBPiKettleLogic</a></li>
<li class="toctree-l2"><a class="reference internal" href="#custom-logic">Custom Logic</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="properties.html">Properties</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">CraftBeerPi</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html">Docs</a> &raquo;</li>
<li>Kettle</li>
<li class="wy-breadcrumbs-aside">
<a href="_sources/kettle_controller.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="kettle"> <div class="section" id="kettle">
<h1>Kettle<a class="headerlink" href="#kettle" title="Permalink to this headline"></a></h1> <h1>Kettle<a class="headerlink" href="#kettle" title="Permalink to this headline"></a></h1>
@ -405,13 +527,39 @@ Typically a while loop responsible that the method keeps running</p>
</div> </div>
</div>
</div> </div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="properties.html" class="btn btn-neutral float-right" title="Properties" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
<a href="step.html" class="btn btn-neutral" title="Brewing Step" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2018, Manuel Fritsch
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div> </div>
</div> </div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper"> </section>
<h1 class="logo"><a href="index.html">CraftBeerPi</a></h1>
</div>
@ -419,70 +567,21 @@ Typically a while loop responsible that the method keeps running</p>
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
<h3>Navigation</h3> <script type="text/javascript" src="_static/jquery.js"></script>
<ul class="current"> <script type="text/javascript" src="_static/underscore.js"></script>
<li class="toctree-l1"><a class="reference internal" href="install.html">Installation</a></li> <script type="text/javascript" src="_static/doctools.js"></script>
<li class="toctree-l1"><a class="reference internal" href="core.html">Core</a></li>
<li class="toctree-l1"><a class="reference internal" href="actor.html">Actor</a></li>
<li class="toctree-l1"><a class="reference internal" href="sensor.html">Sensor</a></li>
<li class="toctree-l1"><a class="reference internal" href="step.html">Brewing Step</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Kettle</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#kettlecontroller">KettleController</a></li>
<li class="toctree-l2"><a class="reference internal" href="#cbpikettlelogic">CBPiKettleLogic</a></li>
<li class="toctree-l2"><a class="reference internal" href="#custom-logic">Custom Logic</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="properties.html">Properties</a></li>
</ul>
<div class="relations">
<h3>Related Topics</h3>
<ul>
<li><a href="index.html">Documentation overview</a><ul>
<li>Previous: <a href="step.html" title="previous chapter">Brewing Step</a></li>
<li>Next: <a href="properties.html" title="next chapter">Properties</a></li>
</ul></li>
</ul>
</div>
<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="footer">
&copy;2018, Manuel Fritsch.
|
Powered by <a href="http://sphinx-doc.org/">Sphinx 1.8.2</a>
&amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
<a href="_sources/kettle_controller.rst.txt"
rel="nofollow">Page source</a>
</div>
</body>
</html> </html>

Binary file not shown.

View file

@ -1,91 +1,336 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <!DOCTYPE html>
<head> <!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<meta http-equiv="X-UA-Compatible" content="IE=Edge" /> <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <head>
<title>Properties &#8212; CraftBeerPi 4.0 documentation</title> <meta charset="utf-8">
<link rel="stylesheet" href="_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" /> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
<script type="text/javascript" src="_static/jquery.js"></script> <title>Properties &mdash; CraftBeerPi 4.0 documentation</title>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="genindex.html" /> <link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" /> <link rel="search" title="Search" href="search.html" />
<link rel="prev" title="Kettle" href="kettle_controller.html" /> <link rel="prev" title="Kettle" href="kettle_controller.html" />
<link rel="stylesheet" href="_static/custom.css" type="text/css" />
<script src="_static/js/modernizr.min.js"></script>
</head>
<body class="wy-body-for-nav">
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" /> <div class="wy-grid-for-nav">
</head><body>
<div class="document"> <nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="documentwrapper"> <div class="wy-side-scroll">
<div class="bodywrapper"> <div class="wy-side-nav-search">
<div class="body" role="main">
<a href="index.html" class="icon icon-home"> CraftBeerPi
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="install.html">Installation</a></li>
<li class="toctree-l1"><a class="reference internal" href="core.html">Core</a></li>
<li class="toctree-l1"><a class="reference internal" href="actor.html">Actor</a></li>
<li class="toctree-l1"><a class="reference internal" href="sensor.html">Sensor</a></li>
<li class="toctree-l1"><a class="reference internal" href="step.html">Brewing Step</a></li>
<li class="toctree-l1"><a class="reference internal" href="kettle_controller.html">Kettle</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Properties</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#custom-actor">Custom Actor</a></li>
</ul>
</li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">CraftBeerPi</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html">Docs</a> &raquo;</li>
<li>Properties</li>
<li class="wy-breadcrumbs-aside">
<a href="_sources/properties.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="properties"> <div class="section" id="properties">
<h1>Properties<a class="headerlink" href="#properties" title="Permalink to this headline"></a></h1> <h1>Properties<a class="headerlink" href="#properties" title="Permalink to this headline"></a></h1>
<p>Properties can be use in all extensions.
During the startup the server scans all extension for variables of type Property.
Theses properties are exposed to the user for configuration during run time.
For example the user can set the GPIO number or the 1Wire Id.</p>
<p>Typical example how to use properties in an actor module.</p>
<div class="section" id="custom-actor">
<h2>Custom Actor<a class="headerlink" href="#custom-actor" title="Permalink to this headline"></a></h2>
<div class="literal-block-wrapper docutils container" id="init-py">
<div class="code-block-caption"><span class="caption-text">__init__.py</span><a class="headerlink" href="#init-py" title="Permalink to this code"></a></div>
<div class="highlight-python notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">logging</span>
<span class="kn">from</span> <span class="nn">core.api</span> <span class="kn">import</span> <span class="n">CBPiActor</span><span class="p">,</span> <span class="n">Property</span><span class="p">,</span> <span class="n">action</span>
<span class="k">class</span> <span class="nc">CustomActor</span><span class="p">(</span><span class="n">CBPiActor</span><span class="p">):</span>
<span class="c1"># Custom property which can be configured by the user</span>
<span class="n">gpio</span> <span class="o">=</span> <span class="n">Property</span><span class="o">.</span><span class="n">Number</span><span class="p">(</span><span class="n">label</span><span class="o">=</span><span class="s2">&quot;Test&quot;</span><span class="p">)</span>
<span class="nd">@action</span><span class="p">(</span><span class="n">key</span><span class="o">=</span><span class="s2">&quot;name&quot;</span><span class="p">,</span> <span class="n">parameters</span><span class="o">=</span><span class="p">{})</span>
<span class="k">def</span> <span class="nf">myAction</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">pass</span>
<span class="k">def</span> <span class="nf">state</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">state</span><span class="p">()</span>
<span class="k">def</span> <span class="nf">off</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">print</span><span class="p">(</span><span class="s2">&quot;OFF&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">gpio</span><span class="p">)</span>
<span class="c1"># Code to swtich the actor off goes here</span>
<span class="bp">self</span><span class="o">.</span><span class="n">state</span> <span class="o">=</span> <span class="bp">False</span>
<span class="k">def</span> <span class="nf">on</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">power</span><span class="o">=</span><span class="mi">100</span><span class="p">):</span>
<span class="k">print</span><span class="p">(</span><span class="s2">&quot;ON&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">gpio</span><span class="p">)</span>
<span class="c1"># Code to swtich the actor on goes here</span>
<span class="bp">self</span><span class="o">.</span><span class="n">state</span> <span class="o">=</span> <span class="bp">True</span>
<span class="k">def</span> <span class="nf">setup</span><span class="p">(</span><span class="n">cbpi</span><span class="p">):</span>
<span class="sd">&#39;&#39;&#39;</span>
<span class="sd"> This method is called by the server during startup </span>
<span class="sd"> Here you need to register your plugins at the server</span>
<span class="sd"> </span>
<span class="sd"> :param cbpi: the cbpi core </span>
<span class="sd"> :return: </span>
<span class="sd"> &#39;&#39;&#39;</span>
<span class="n">cbpi</span><span class="o">.</span><span class="n">plugin</span><span class="o">.</span><span class="n">register</span><span class="p">(</span><span class="s2">&quot;CustomActor&quot;</span><span class="p">,</span> <span class="n">CustomActor</span><span class="p">)</span>
</pre></div>
</td></tr></table></div>
</div>
<dl class="class"> <dl class="class">
<dt id="core.api.property.Property"> <dt id="core.api.property.Property">
<em class="property">class </em><code class="descclassname">core.api.property.</code><code class="descname">Property</code><a class="headerlink" href="#core.api.property.Property" title="Permalink to this definition"></a></dt> <em class="property">class </em><code class="descclassname">core.api.property.</code><code class="descname">Property</code><a class="headerlink" href="#core.api.property.Property" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p> <dd><dl class="class">
<dl class="class">
<dt id="core.api.property.Property.Actor"> <dt id="core.api.property.Property.Actor">
<em class="property">class </em><code class="descname">Actor</code><span class="sig-paren">(</span><em>label</em>, <em>description=''</em><span class="sig-paren">)</span><a class="headerlink" href="#core.api.property.Property.Actor" title="Permalink to this definition"></a></dt> <em class="property">class </em><code class="descname">Actor</code><span class="sig-paren">(</span><em>label</em>, <em>description=''</em><span class="sig-paren">)</span><a class="headerlink" href="#core.api.property.Property.Actor" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">core.api.property.PropertyType</span></code></p> <dd><p>The user select an actor which is available in the system. The value of this variable will be the actor id</p>
</dd></dl> </dd></dl>
<dl class="class"> <dl class="class">
<dt id="core.api.property.Property.Kettle"> <dt id="core.api.property.Property.Kettle">
<em class="property">class </em><code class="descname">Kettle</code><span class="sig-paren">(</span><em>label</em>, <em>description=''</em><span class="sig-paren">)</span><a class="headerlink" href="#core.api.property.Property.Kettle" title="Permalink to this definition"></a></dt> <em class="property">class </em><code class="descname">Kettle</code><span class="sig-paren">(</span><em>label</em>, <em>description=''</em><span class="sig-paren">)</span><a class="headerlink" href="#core.api.property.Property.Kettle" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">core.api.property.PropertyType</span></code></p> <dd><p>The user select a kettle which is available in the system. The value of this variable will be the kettle id</p>
</dd></dl> </dd></dl>
<dl class="class"> <dl class="class">
<dt id="core.api.property.Property.Number"> <dt id="core.api.property.Property.Number">
<em class="property">class </em><code class="descname">Number</code><span class="sig-paren">(</span><em>label</em>, <em>configurable=False</em>, <em>default_value=None</em>, <em>unit=''</em>, <em>description=''</em><span class="sig-paren">)</span><a class="headerlink" href="#core.api.property.Property.Number" title="Permalink to this definition"></a></dt> <em class="property">class </em><code class="descname">Number</code><span class="sig-paren">(</span><em>label</em>, <em>configurable=False</em>, <em>default_value=None</em>, <em>unit=''</em>, <em>description=''</em><span class="sig-paren">)</span><a class="headerlink" href="#core.api.property.Property.Number" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">core.api.property.PropertyType</span></code></p> <dd><p>The user can set a number value</p>
</dd></dl> </dd></dl>
<dl class="class"> <dl class="class">
<dt id="core.api.property.Property.Select"> <dt id="core.api.property.Property.Select">
<em class="property">class </em><code class="descname">Select</code><span class="sig-paren">(</span><em>label</em>, <em>options</em>, <em>description=''</em><span class="sig-paren">)</span><a class="headerlink" href="#core.api.property.Property.Select" title="Permalink to this definition"></a></dt> <em class="property">class </em><code class="descname">Select</code><span class="sig-paren">(</span><em>label</em>, <em>options</em>, <em>description=''</em><span class="sig-paren">)</span><a class="headerlink" href="#core.api.property.Property.Select" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">core.api.property.PropertyType</span></code></p> <dd><p>Select Property. The user can select value from list set as options parameter</p>
</dd></dl> </dd></dl>
<dl class="class"> <dl class="class">
<dt id="core.api.property.Property.Sensor"> <dt id="core.api.property.Property.Sensor">
<em class="property">class </em><code class="descname">Sensor</code><span class="sig-paren">(</span><em>label</em>, <em>description=''</em><span class="sig-paren">)</span><a class="headerlink" href="#core.api.property.Property.Sensor" title="Permalink to this definition"></a></dt> <em class="property">class </em><code class="descname">Sensor</code><span class="sig-paren">(</span><em>label</em>, <em>description=''</em><span class="sig-paren">)</span><a class="headerlink" href="#core.api.property.Property.Sensor" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">core.api.property.PropertyType</span></code></p> <dd><p>The user select a sensor which is available in the system. The value of this variable will be the sensor id</p>
</dd></dl> </dd></dl>
<dl class="class"> <dl class="class">
<dt id="core.api.property.Property.Text"> <dt id="core.api.property.Property.Text">
<em class="property">class </em><code class="descname">Text</code><span class="sig-paren">(</span><em>label</em>, <em>configurable=False</em>, <em>default_value=''</em>, <em>description=''</em><span class="sig-paren">)</span><a class="headerlink" href="#core.api.property.Property.Text" title="Permalink to this definition"></a></dt> <em class="property">class </em><code class="descname">Text</code><span class="sig-paren">(</span><em>label</em>, <em>configurable=False</em>, <em>default_value=''</em>, <em>description=''</em><span class="sig-paren">)</span><a class="headerlink" href="#core.api.property.Property.Text" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">core.api.property.PropertyType</span></code></p> <dd><p>The user can set a text value</p>
</dd></dl> </dd></dl>
</dd></dl> </dd></dl>
</div>
</div> </div>
</div>
</div> </div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="kettle_controller.html" class="btn btn-neutral" title="Kettle" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2018, Manuel Fritsch
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div> </div>
</div> </div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper"> </section>
<h1 class="logo"><a href="index.html">CraftBeerPi</a></h1>
</div>
@ -93,63 +338,21 @@
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
<h3>Navigation</h3> <script type="text/javascript" src="_static/jquery.js"></script>
<ul class="current"> <script type="text/javascript" src="_static/underscore.js"></script>
<li class="toctree-l1"><a class="reference internal" href="install.html">Installation</a></li> <script type="text/javascript" src="_static/doctools.js"></script>
<li class="toctree-l1"><a class="reference internal" href="core.html">Core</a></li>
<li class="toctree-l1"><a class="reference internal" href="actor.html">Actor</a></li>
<li class="toctree-l1"><a class="reference internal" href="sensor.html">Sensor</a></li>
<li class="toctree-l1"><a class="reference internal" href="kettle_controller.html">Kettle</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Properties</a></li>
</ul>
<div class="relations">
<h3>Related Topics</h3>
<ul>
<li><a href="index.html">Documentation overview</a><ul>
<li>Previous: <a href="kettle_controller.html" title="previous chapter">Kettle</a></li>
</ul></li>
</ul>
</div>
<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="footer">
&copy;2018, Manuel Fritsch.
|
Powered by <a href="http://sphinx-doc.org/">Sphinx 1.8.2</a>
&amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
<a href="_sources/properties.rst.txt"
rel="nofollow">Page source</a>
</div>
</body>
</html> </html>

View file

@ -1,38 +1,151 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <!DOCTYPE html>
<head> <!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<meta http-equiv="X-UA-Compatible" content="IE=Edge" /> <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <head>
<title>Python Module Index &#8212; CraftBeerPi 4.0 documentation</title> <meta charset="utf-8">
<link rel="stylesheet" href="_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" /> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
<script type="text/javascript" src="_static/jquery.js"></script> <title>Python Module Index &mdash; CraftBeerPi 4.0 documentation</title>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="genindex.html" /> <link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" /> <link rel="search" title="Search" href="search.html" />
<link rel="stylesheet" href="_static/custom.css" type="text/css" />
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
</head><body> <script src="_static/js/modernizr.min.js"></script>
</head>
<body class="wy-body-for-nav">
<div class="document"> <div class="wy-grid-for-nav">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main"> <nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search">
<a href="index.html" class="icon icon-home"> CraftBeerPi
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul>
<li class="toctree-l1"><a class="reference internal" href="install.html">Installation</a></li>
<li class="toctree-l1"><a class="reference internal" href="core.html">Core</a></li>
<li class="toctree-l1"><a class="reference internal" href="actor.html">Actor</a></li>
<li class="toctree-l1"><a class="reference internal" href="sensor.html">Sensor</a></li>
<li class="toctree-l1"><a class="reference internal" href="step.html">Brewing Step</a></li>
<li class="toctree-l1"><a class="reference internal" href="kettle_controller.html">Kettle</a></li>
<li class="toctree-l1"><a class="reference internal" href="properties.html">Properties</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">CraftBeerPi</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html">Docs</a> &raquo;</li>
<li>Python Module Index</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<h1>Python Module Index</h1> <h1>Python Module Index</h1>
@ -59,13 +172,30 @@
</table> </table>
</div>
</div> </div>
<footer>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2018, Manuel Fritsch
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div> </div>
</div> </div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper"> </section>
<h1 class="logo"><a href="index.html">CraftBeerPi</a></h1>
</div>
@ -73,60 +203,21 @@
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
<h3>Navigation</h3> <script type="text/javascript" src="_static/jquery.js"></script>
<ul> <script type="text/javascript" src="_static/underscore.js"></script>
<li class="toctree-l1"><a class="reference internal" href="install.html">Installation</a></li> <script type="text/javascript" src="_static/doctools.js"></script>
<li class="toctree-l1"><a class="reference internal" href="core.html">Core</a></li>
<li class="toctree-l1"><a class="reference internal" href="actor.html">Actor</a></li>
<li class="toctree-l1"><a class="reference internal" href="sensor.html">Sensor</a></li>
<li class="toctree-l1"><a class="reference internal" href="step.html">Brewing Step</a></li>
<li class="toctree-l1"><a class="reference internal" href="kettle_controller.html">Kettle</a></li>
<li class="toctree-l1"><a class="reference internal" href="properties.html">Properties</a></li>
</ul>
<div class="relations">
<h3>Related Topics</h3>
<ul>
<li><a href="index.html">Documentation overview</a><ul>
</ul></li>
</ul>
</div>
<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="footer">
&copy;2018, Manuel Fritsch.
|
Powered by <a href="http://sphinx-doc.org/">Sphinx 1.8.2</a>
&amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
</div>
</body>
</html> </html>

View file

@ -1,86 +1,82 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <!DOCTYPE html>
<head> <!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<meta http-equiv="X-UA-Compatible" content="IE=Edge" /> <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <head>
<title>Search &#8212; CraftBeerPi 4.0 documentation</title> <meta charset="utf-8">
<link rel="stylesheet" href="_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script> <title>Search &mdash; CraftBeerPi 4.0 documentation</title>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/searchtools.js"></script>
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="genindex.html" /> <link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="#" /> <link rel="search" title="Search" href="#" />
<script type="text/javascript">
jQuery(function() { Search.loadIndex("searchindex.js"); });
</script>
<script type="text/javascript" id="searchindexloader"></script>
<link rel="stylesheet" href="_static/custom.css" type="text/css" /> <script src="_static/js/modernizr.min.js"></script>
</head>
<body class="wy-body-for-nav">
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" /> <div class="wy-grid-for-nav">
</head><body> <nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search">
<div class="document">
<div class="documentwrapper"> <a href="index.html" class="icon icon-home"> CraftBeerPi
<div class="bodywrapper">
<div class="body" role="main">
<h1 id="search-documentation">Search</h1> </a>
<div id="fallback" class="admonition warning">
<script type="text/javascript">$('#fallback').hide();</script>
<p>
Please activate JavaScript to enable the search
functionality.
</p>
</div>
<p> <div role="search">
From here you can search these documents. Enter your search <form id="rtd-search-form" class="wy-form" action="#" method="get">
words into the box below and click "search". Note that the search <input type="text" name="q" placeholder="Search docs" />
function will automatically search for all of the words. Pages <input type="hidden" name="check_keywords" value="yes" />
containing fewer words won't appear in the result list. <input type="hidden" name="area" value="default" />
</p>
<form action="" method="get">
<input type="text" name="q" value="" />
<input type="submit" value="search" />
<span id="search-progress" style="padding-left: 10px"></span>
</form> </form>
</div>
<div id="search-results">
</div>
</div>
</div> </div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation"> <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<h1 class="logo"><a href="index.html">CraftBeerPi</a></h1>
<ul>
<h3>Navigation</h3>
<ul>
<li class="toctree-l1"><a class="reference internal" href="install.html">Installation</a></li> <li class="toctree-l1"><a class="reference internal" href="install.html">Installation</a></li>
<li class="toctree-l1"><a class="reference internal" href="core.html">Core</a></li> <li class="toctree-l1"><a class="reference internal" href="core.html">Core</a></li>
<li class="toctree-l1"><a class="reference internal" href="actor.html">Actor</a></li> <li class="toctree-l1"><a class="reference internal" href="actor.html">Actor</a></li>
@ -90,36 +86,134 @@
<li class="toctree-l1"><a class="reference internal" href="properties.html">Properties</a></li> <li class="toctree-l1"><a class="reference internal" href="properties.html">Properties</a></li>
</ul> </ul>
<div class="relations">
<h3>Related Topics</h3>
<ul>
<li><a href="index.html">Documentation overview</a><ul>
</ul></li>
</ul>
</div>
</div> </div>
</div> </div>
<div class="clearer"></div> </nav>
</div>
<div class="footer">
&copy;2018, Manuel Fritsch.
| <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
Powered by <a href="http://sphinx-doc.org/">Sphinx 1.8.2</a>
&amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
</div>
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">CraftBeerPi</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
</body>
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html">Docs</a> &raquo;</li>
<li>Search</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<noscript>
<div id="fallback" class="admonition warning">
<p class="last">
Please activate JavaScript to enable the search
functionality.
</p>
</div>
</noscript>
<div id="search-results">
</div>
</div>
</div>
<footer>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2018, Manuel Fritsch
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/searchtools.js"></script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
<script type="text/javascript">
jQuery(function() { Search.loadIndex("searchindex.js"); });
</script>
<script type="text/javascript" id="searchindexloader"></script>
</body>
</html> </html>

File diff suppressed because one or more lines are too long

View file

@ -1,129 +1,398 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <!DOCTYPE html>
<head> <!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<meta http-equiv="X-UA-Compatible" content="IE=Edge" /> <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <head>
<title>Sensor &#8212; CraftBeerPi 4.0 documentation</title> <meta charset="utf-8">
<link rel="stylesheet" href="_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" /> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
<script type="text/javascript" src="_static/jquery.js"></script> <title>Sensor &mdash; CraftBeerPi 4.0 documentation</title>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="genindex.html" /> <link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" /> <link rel="search" title="Search" href="search.html" />
<link rel="next" title="Kettle" href="kettle_controller.html" /> <link rel="next" title="Brewing Step" href="step.html" />
<link rel="prev" title="Actor" href="actor.html" /> <link rel="prev" title="Actor" href="actor.html" />
<link rel="stylesheet" href="_static/custom.css" type="text/css" />
<script src="_static/js/modernizr.min.js"></script>
</head>
<body class="wy-body-for-nav">
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" /> <div class="wy-grid-for-nav">
</head><body>
<div class="document"> <nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="documentwrapper"> <div class="wy-side-scroll">
<div class="bodywrapper"> <div class="wy-side-nav-search">
<div class="body" role="main">
<div class="section" id="sensor"> <a href="index.html" class="icon icon-home"> CraftBeerPi
<h1>Sensor<a class="headerlink" href="#sensor" title="Permalink to this headline"></a></h1>
<div class="section" id="architecture">
<h2>Architecture<a class="headerlink" href="#architecture" title="Permalink to this headline"></a></h2>
</div> </a>
<div class="section" id="module-core.controller.sensor_controller">
<span id="sensorcontroller"></span><h2>SensorController<a class="headerlink" href="#module-core.controller.sensor_controller" title="Permalink to this headline"></a></h2>
</div>
<div class="section" id="custom-sensor">
<h2>Custom Sensor<a class="headerlink" href="#custom-sensor" title="Permalink to this headline"></a></h2>
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div> </div>
</div>
</div> </div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation"> <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<h1 class="logo"><a href="index.html">CraftBeerPi</a></h1>
<ul class="current">
<h3>Navigation</h3>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="install.html">Installation</a></li> <li class="toctree-l1"><a class="reference internal" href="install.html">Installation</a></li>
<li class="toctree-l1"><a class="reference internal" href="core.html">Core</a></li> <li class="toctree-l1"><a class="reference internal" href="core.html">Core</a></li>
<li class="toctree-l1"><a class="reference internal" href="actor.html">Actor</a></li> <li class="toctree-l1"><a class="reference internal" href="actor.html">Actor</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Sensor</a><ul> <li class="toctree-l1 current"><a class="current reference internal" href="#">Sensor</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#architecture">Architecture</a></li> <li class="toctree-l2"><a class="reference internal" href="#sensor-controller">Sensor Controller</a></li>
<li class="toctree-l2"><a class="reference internal" href="#module-core.controller.sensor_controller">SensorController</a></li> <li class="toctree-l2"><a class="reference internal" href="#cbpisensor">CBPiSensor</a></li>
<li class="toctree-l2"><a class="reference internal" href="#custom-sensor">Custom Sensor</a></li> <li class="toctree-l2"><a class="reference internal" href="#custom-sensor">Custom Sensor</a></li>
</ul> </ul>
</li> </li>
<li class="toctree-l1"><a class="reference internal" href="step.html">Brewing Step</a></li>
<li class="toctree-l1"><a class="reference internal" href="kettle_controller.html">Kettle</a></li> <li class="toctree-l1"><a class="reference internal" href="kettle_controller.html">Kettle</a></li>
<li class="toctree-l1"><a class="reference internal" href="properties.html">Properties</a></li> <li class="toctree-l1"><a class="reference internal" href="properties.html">Properties</a></li>
</ul> </ul>
<div class="relations">
<h3>Related Topics</h3>
<ul>
<li><a href="index.html">Documentation overview</a><ul>
<li>Previous: <a href="actor.html" title="previous chapter">Actor</a></li>
<li>Next: <a href="kettle_controller.html" title="next chapter">Kettle</a></li>
</ul></li>
</ul>
</div>
<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div> </div>
</div> </div>
<div class="clearer"></div> </nav>
</div>
<div class="footer">
&copy;2018, Manuel Fritsch.
| <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
Powered by <a href="http://sphinx-doc.org/">Sphinx 1.8.2</a>
&amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">CraftBeerPi</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html">Docs</a> &raquo;</li>
<li>Sensor</li>
<li class="wy-breadcrumbs-aside">
<a href="_sources/sensor.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="sensor">
<h1>Sensor<a class="headerlink" href="#sensor" title="Permalink to this headline"></a></h1>
<div class="section" id="sensor-controller">
<h2>Sensor Controller<a class="headerlink" href="#sensor-controller" title="Permalink to this headline"></a></h2>
<dl class="class">
<dt id="core.controller.sensor_controller.SensorController">
<em class="property">class </em><code class="descclassname">core.controller.sensor_controller.</code><code class="descname">SensorController</code><span class="sig-paren">(</span><em>cbpi</em><span class="sig-paren">)</span><a class="headerlink" href="#core.controller.sensor_controller.SensorController" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">core.controller.crud_controller.CRUDController</span></code>, <code class="xref py py-class docutils literal notranslate"><span class="pre">core.http_endpoints.http_api.HttpAPI</span></code></p>
<dl class="method">
<dt id="core.controller.sensor_controller.SensorController.get_value">
<code class="descname">get_value</code><span class="sig-paren">(</span><em>id</em><span class="sig-paren">)</span><a class="headerlink" href="#core.controller.sensor_controller.SensorController.get_value" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="core.controller.sensor_controller.SensorController.init">
<code class="descname">init</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#core.controller.sensor_controller.SensorController.init" title="Permalink to this definition"></a></dt>
<dd><p>This method initializes all actors during startup. It creates actor instances</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body"></td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="attribute">
<dt id="core.controller.sensor_controller.SensorController.model">
<code class="descname">model</code><a class="headerlink" href="#core.controller.sensor_controller.SensorController.model" title="Permalink to this definition"></a></dt>
<dd><p>alias of <code class="xref py py-class docutils literal notranslate"><span class="pre">core.database.model.SensorModel</span></code></p>
</dd></dl>
</dd></dl>
</div>
<div class="section" id="cbpisensor">
<h2>CBPiSensor<a class="headerlink" href="#cbpisensor" title="Permalink to this headline"></a></h2>
<dl class="class">
<dt id="core.api.sensor.CBPiSensor">
<em class="property">class </em><code class="descclassname">core.api.sensor.</code><code class="descname">CBPiSensor</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwds</em><span class="sig-paren">)</span><a class="headerlink" href="#core.api.sensor.CBPiSensor" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">core.api.extension.CBPiExtension</span></code></p>
<dl class="method">
<dt id="core.api.sensor.CBPiSensor.run">
<code class="descname">run</code><span class="sig-paren">(</span><em>cbpi</em><span class="sig-paren">)</span><a class="headerlink" href="#core.api.sensor.CBPiSensor.run" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="core.api.sensor.CBPiSensor.state">
<code class="descname">state</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#core.api.sensor.CBPiSensor.state" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl>
</div>
<div class="section" id="custom-sensor">
<h2>Custom Sensor<a class="headerlink" href="#custom-sensor" title="Permalink to this headline"></a></h2>
<div class="literal-block-wrapper docutils container" id="init-py">
<div class="code-block-caption"><span class="caption-text">__init__.py</span><a class="headerlink" href="#init-py" title="Permalink to this code"></a></div>
<div class="highlight-python notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">asyncio</span>
<span class="kn">import</span> <span class="nn">logging</span>
<span class="kn">import</span> <span class="nn">random</span>
<span class="kn">from</span> <span class="nn">core.api</span> <span class="kn">import</span> <span class="n">CBPiActor</span><span class="p">,</span> <span class="n">Property</span><span class="p">,</span> <span class="n">action</span><span class="p">,</span> <span class="n">background_task</span>
<span class="kn">from</span> <span class="nn">core.api.sensor</span> <span class="kn">import</span> <span class="n">CBPiSensor</span>
<span class="k">class</span> <span class="nc">CustomSensor</span><span class="p">(</span><span class="n">CBPiSensor</span><span class="p">):</span>
<span class="c1"># Custom Properties which will can be configured by the user</span>
<span class="n">p1</span> <span class="o">=</span> <span class="n">Property</span><span class="o">.</span><span class="n">Number</span><span class="p">(</span><span class="n">label</span><span class="o">=</span><span class="s2">&quot;Test&quot;</span><span class="p">)</span>
<span class="n">p2</span> <span class="o">=</span> <span class="n">Property</span><span class="o">.</span><span class="n">Text</span><span class="p">(</span><span class="n">label</span><span class="o">=</span><span class="s2">&quot;Test&quot;</span><span class="p">)</span>
<span class="n">interval</span> <span class="o">=</span> <span class="n">Property</span><span class="o">.</span><span class="n">Number</span><span class="p">(</span><span class="n">label</span><span class="o">=</span><span class="s2">&quot;interval&quot;</span><span class="p">)</span>
<span class="c1"># Internal runtime variable</span>
<span class="n">value</span> <span class="o">=</span> <span class="mi">0</span>
<span class="nd">@action</span><span class="p">(</span><span class="n">key</span><span class="o">=</span><span class="s2">&quot;name&quot;</span><span class="p">,</span> <span class="n">parameters</span><span class="o">=</span><span class="p">{})</span>
<span class="k">def</span> <span class="nf">myAction</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="sd">&#39;&#39;&#39;</span>
<span class="sd"> Custom Action Exampel</span>
<span class="sd"> :return: None</span>
<span class="sd"> &#39;&#39;&#39;</span>
<span class="k">pass</span>
<span class="k">def</span> <span class="nf">state</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">state</span><span class="p">()</span>
<span class="k">def</span> <span class="nf">stop</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">pass</span>
<span class="n">async</span> <span class="k">def</span> <span class="nf">run</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cbpi</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">value</span> <span class="o">=</span> <span class="mi">0</span>
<span class="k">while</span> <span class="bp">True</span><span class="p">:</span>
<span class="n">await</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">interval</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">value</span> <span class="o">+</span> <span class="mi">1</span>
<span class="n">cbpi</span><span class="o">.</span><span class="n">bus</span><span class="o">.</span><span class="n">fire</span><span class="p">(</span><span class="s2">&quot;sensor/</span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="bp">self</span><span class="o">.</span><span class="n">id</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
<span class="k">print</span><span class="p">(</span><span class="s2">&quot;SENSOR IS RUNNING&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">value</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">setup</span><span class="p">(</span><span class="n">cbpi</span><span class="p">):</span>
<span class="sd">&#39;&#39;&#39;</span>
<span class="sd"> This method is called by the server during startup </span>
<span class="sd"> Here you need to register your plugins at the server</span>
<span class="sd"> </span>
<span class="sd"> :param cbpi: the cbpi core </span>
<span class="sd"> :return: </span>
<span class="sd"> &#39;&#39;&#39;</span>
<span class="n">cbpi</span><span class="o">.</span><span class="n">plugin</span><span class="o">.</span><span class="n">register</span><span class="p">(</span><span class="s2">&quot;CustomSensor&quot;</span><span class="p">,</span> <span class="n">CustomSensor</span><span class="p">)</span>
</pre></div>
</td></tr></table></div>
</div>
<p>config.yaml</p>
<div class="highlight-yaml notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1
2</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="l l-Scalar l-Scalar-Plain">name</span><span class="p p-Indicator">:</span> <span class="l l-Scalar l-Scalar-Plain">DummySensor</span>
<span class="l l-Scalar l-Scalar-Plain">version</span><span class="p p-Indicator">:</span> <span class="l l-Scalar l-Scalar-Plain">4</span>
</pre></div>
</td></tr></table></div>
</div>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="step.html" class="btn btn-neutral float-right" title="Brewing Step" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
<a href="actor.html" class="btn btn-neutral" title="Actor" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
|
<a href="_sources/sensor.rst.txt"
rel="nofollow">Page source</a>
</div> </div>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2018, Manuel Fritsch
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
</body>
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html> </html>

View file

@ -1,37 +1,159 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <!DOCTYPE html>
<head> <!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<meta http-equiv="X-UA-Compatible" content="IE=Edge" /> <!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <head>
<title>Brewing Step &#8212; CraftBeerPi 4.0 documentation</title> <meta charset="utf-8">
<link rel="stylesheet" href="_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" /> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
<script type="text/javascript" src="_static/jquery.js"></script> <title>Brewing Step &mdash; CraftBeerPi 4.0 documentation</title>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="index" title="Index" href="genindex.html" /> <link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" /> <link rel="search" title="Search" href="search.html" />
<link rel="next" title="Kettle" href="kettle_controller.html" /> <link rel="next" title="Kettle" href="kettle_controller.html" />
<link rel="prev" title="Sensor" href="sensor.html" /> <link rel="prev" title="Sensor" href="sensor.html" />
<link rel="stylesheet" href="_static/custom.css" type="text/css" />
<script src="_static/js/modernizr.min.js"></script>
</head>
<body class="wy-body-for-nav">
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" /> <div class="wy-grid-for-nav">
</head><body>
<div class="document"> <nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="documentwrapper"> <div class="wy-side-scroll">
<div class="bodywrapper"> <div class="wy-side-nav-search">
<div class="body" role="main">
<a href="index.html" class="icon icon-home"> CraftBeerPi
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="install.html">Installation</a></li>
<li class="toctree-l1"><a class="reference internal" href="core.html">Core</a></li>
<li class="toctree-l1"><a class="reference internal" href="actor.html">Actor</a></li>
<li class="toctree-l1"><a class="reference internal" href="sensor.html">Sensor</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Brewing Step</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#stepcontroller">StepController</a></li>
<li class="toctree-l2"><a class="reference internal" href="#simplestep">SimpleStep</a></li>
<li class="toctree-l2"><a class="reference internal" href="#custom-step">Custom Step</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="kettle_controller.html">Kettle</a></li>
<li class="toctree-l1"><a class="reference internal" href="properties.html">Properties</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="index.html">CraftBeerPi</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="index.html">Docs</a> &raquo;</li>
<li>Brewing Step</li>
<li class="wy-breadcrumbs-aside">
<a href="_sources/step.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="brewing-step"> <div class="section" id="brewing-step">
<h1>Brewing Step<a class="headerlink" href="#brewing-step" title="Permalink to this headline"></a></h1> <h1>Brewing Step<a class="headerlink" href="#brewing-step" title="Permalink to this headline"></a></h1>
@ -40,90 +162,207 @@
<dl class="class"> <dl class="class">
<dt id="core.controller.step_controller.StepController"> <dt id="core.controller.step_controller.StepController">
<em class="property">class </em><code class="descclassname">core.controller.step_controller.</code><code class="descname">StepController</code><span class="sig-paren">(</span><em>cbpi</em><span class="sig-paren">)</span><a class="headerlink" href="#core.controller.step_controller.StepController" title="Permalink to this definition"></a></dt> <em class="property">class </em><code class="descclassname">core.controller.step_controller.</code><code class="descname">StepController</code><span class="sig-paren">(</span><em>cbpi</em><span class="sig-paren">)</span><a class="headerlink" href="#core.controller.step_controller.StepController" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">core.http_endpoints.http_api.HttpAPI</span></code>, <code class="xref py py-class docutils literal notranslate"><span class="pre">core.controller.crud_controller.CRUDController</span></code></p> <dd><p>The Step Controller. This controller is responsible to start and stop the brewing steps.</p>
<dl class="method"> <table class="docutils field-list" frame="void" rules="none">
<dt id="core.controller.step_controller.StepController._step_done">
<code class="descname">_step_done</code><span class="sig-paren">(</span><em>task</em><span class="sig-paren">)</span><a class="headerlink" href="#core.controller.step_controller.StepController._step_done" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="core.controller.step_controller.StepController.get_manged_fields_as_array">
<code class="descname">get_manged_fields_as_array</code><span class="sig-paren">(</span><em>type_cfg</em><span class="sig-paren">)</span><a class="headerlink" href="#core.controller.step_controller.StepController.get_manged_fields_as_array" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="core.controller.step_controller.StepController.handle">
<code class="descname">handle</code><span class="sig-paren">(</span><em>topic</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#core.controller.step_controller.StepController.handle" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="core.controller.step_controller.StepController.handle_action">
<code class="descname">handle_action</code><span class="sig-paren">(</span><em>topic</em>, <em>action</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#core.controller.step_controller.StepController.handle_action" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="core.controller.step_controller.StepController.handle_next">
<code class="descname">handle_next</code><span class="sig-paren">(</span><em>**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#core.controller.step_controller.StepController.handle_next" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="core.controller.step_controller.StepController.handle_reset">
<code class="descname">handle_reset</code><span class="sig-paren">(</span><em>topic</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#core.controller.step_controller.StepController.handle_reset" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="core.controller.step_controller.StepController.handle_start">
<code class="descname">handle_start</code><span class="sig-paren">(</span><em>topic</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#core.controller.step_controller.StepController.handle_start" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="core.controller.step_controller.StepController.handle_stop">
<code class="descname">handle_stop</code><span class="sig-paren">(</span><em>topic</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#core.controller.step_controller.StepController.handle_stop" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="core.controller.step_controller.StepController.http_action">
<code class="descname">http_action</code><span class="sig-paren">(</span><em>request</em><span class="sig-paren">)</span><a class="headerlink" href="#core.controller.step_controller.StepController.http_action" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="core.controller.step_controller.StepController.http_reset">
<code class="descname">http_reset</code><span class="sig-paren">(</span><em>request</em><span class="sig-paren">)</span><a class="headerlink" href="#core.controller.step_controller.StepController.http_reset" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="core.controller.step_controller.StepController.http_start">
<code class="descname">http_start</code><span class="sig-paren">(</span><em>request</em><span class="sig-paren">)</span><a class="headerlink" href="#core.controller.step_controller.StepController.http_start" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="core.controller.step_controller.StepController.init">
<code class="descname">init</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#core.controller.step_controller.StepController.init" title="Permalink to this definition"></a></dt>
<dd><table class="docutils field-list" frame="void" rules="none">
<col class="field-name" /> <col class="field-name" />
<col class="field-body" /> <col class="field-body" />
<tbody valign="top"> <tbody valign="top">
<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body"></td> <tr class="field-odd field"><th class="field-name">Undoc-members:</th><td class="field-body"></td>
</tr>
<tr class="field-even field"><th class="field-name" colspan="2">Show-inheritance:</th></tr>
<tr class="field-even field"><td>&#160;</td><td class="field-body"></td>
</tr>
</tbody>
</table>
<dl class="method">
<dt id="core.controller.step_controller.StepController.handle_action">
<code class="descname">handle_action</code><span class="sig-paren">(</span><em>action</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#core.controller.step_controller.StepController.handle_action" title="Permalink to this definition"></a></dt>
<dd><p>Event Handler for “step/action”.
It invokes the provided method name on the current step</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
<li><strong>action</strong> the method name which will be invoked</li>
<li><strong>kwargs</strong> </li>
</ul>
</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first last">None</p>
</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</dd></dl> </dd></dl>
<dl class="attribute"> <dl class="method">
<dt id="core.controller.step_controller.StepController.model"> <dt id="core.controller.step_controller.StepController.handle_done">
<code class="descname">model</code><a class="headerlink" href="#core.controller.step_controller.StepController.model" title="Permalink to this definition"></a></dt> <code class="descname">handle_done</code><span class="sig-paren">(</span><em>topic</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#core.controller.step_controller.StepController.handle_done" title="Permalink to this definition"></a></dt>
<dd><p>alias of <code class="xref py py-class docutils literal notranslate"><span class="pre">core.database.model.StepModel</span></code></p> <dd><p>Event Handler for “step/+/done”.
Starts the next step</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
<li><strong>topic</strong> </li>
<li><strong>kwargs</strong> </li>
</ul>
</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first last"></p>
</td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="method">
<dt id="core.controller.step_controller.StepController.handle_next">
<code class="descname">handle_next</code><span class="sig-paren">(</span><em>**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#core.controller.step_controller.StepController.handle_next" title="Permalink to this definition"></a></dt>
<dd><p>Event Handler for “step/next”.
It start the next step</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>kwargs</strong> </td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">None</td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="method">
<dt id="core.controller.step_controller.StepController.handle_reset">
<code class="descname">handle_reset</code><span class="sig-paren">(</span><em>**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#core.controller.step_controller.StepController.handle_reset" title="Permalink to this definition"></a></dt>
<dd><p>Event Handler for “step/reset”.
Resets the current step</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>kwargs</strong> </td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">None</td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="method">
<dt id="core.controller.step_controller.StepController.handle_start">
<code class="descname">handle_start</code><span class="sig-paren">(</span><em>**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#core.controller.step_controller.StepController.handle_start" title="Permalink to this definition"></a></dt>
<dd><p>Event Handler for “step/start”.
It starts the brewing process</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>kwargs</strong> </td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">None</td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="method">
<dt id="core.controller.step_controller.StepController.handle_stop">
<code class="descname">handle_stop</code><span class="sig-paren">(</span><em>**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#core.controller.step_controller.StepController.handle_stop" title="Permalink to this definition"></a></dt>
<dd><p>Event Handler for “step/stop”.
Stops the current step</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>kwargs</strong> </td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">None</td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="method">
<dt id="core.controller.step_controller.StepController.http_action">
<code class="descname">http_action</code><span class="sig-paren">(</span><em>request</em><span class="sig-paren">)</span><a class="headerlink" href="#core.controller.step_controller.StepController.http_action" title="Permalink to this definition"></a></dt>
<dd><p>HTTP Endpoint to call an action on the current step.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>request</strong> web requset</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">web.Response(text=”OK”</td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="method">
<dt id="core.controller.step_controller.StepController.http_next">
<code class="descname">http_next</code><span class="sig-paren">(</span><em>request</em><span class="sig-paren">)</span><a class="headerlink" href="#core.controller.step_controller.StepController.http_next" title="Permalink to this definition"></a></dt>
<dd><p>HTTP Endpoint to start the next step. The current step will be stopped</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>request</strong> </td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"></td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="method">
<dt id="core.controller.step_controller.StepController.http_reset">
<code class="descname">http_reset</code><span class="sig-paren">(</span><em>request</em><span class="sig-paren">)</span><a class="headerlink" href="#core.controller.step_controller.StepController.http_reset" title="Permalink to this definition"></a></dt>
<dd><p>HTTP Endpoint to call reset on the current step.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>request</strong> </td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"></td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="method">
<dt id="core.controller.step_controller.StepController.http_start">
<code class="descname">http_start</code><span class="sig-paren">(</span><em>request</em><span class="sig-paren">)</span><a class="headerlink" href="#core.controller.step_controller.StepController.http_start" title="Permalink to this definition"></a></dt>
<dd><p>HTTP Endpoint to start the brewing process.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><strong>request</strong> </td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"></td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="method">
<dt id="core.controller.step_controller.StepController.init">
<code class="descname">init</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#core.controller.step_controller.StepController.init" title="Permalink to this definition"></a></dt>
<dd><p>Initializer of the the Step Controller.
:return:</p>
</dd></dl> </dd></dl>
<dl class="method"> <dl class="method">
<dt id="core.controller.step_controller.StepController.start"> <dt id="core.controller.step_controller.StepController.start">
<code class="descname">start</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#core.controller.step_controller.StepController.start" title="Permalink to this definition"></a></dt> <code class="descname">start</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#core.controller.step_controller.StepController.start" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd><p>Start the first step</p>
<p>:return:None</p>
<dl class="method"> </dd></dl>
<dt id="core.controller.step_controller.StepController.stop">
<code class="descname">stop</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#core.controller.step_controller.StepController.stop" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
</dd></dl> </dd></dl>
@ -134,30 +373,19 @@
<dt id="core.api.step.SimpleStep"> <dt id="core.api.step.SimpleStep">
<em class="property">class </em><code class="descclassname">core.api.step.</code><code class="descname">SimpleStep</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#core.api.step.SimpleStep" title="Permalink to this definition"></a></dt> <em class="property">class </em><code class="descclassname">core.api.step.</code><code class="descname">SimpleStep</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#core.api.step.SimpleStep" title="Permalink to this definition"></a></dt>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p> <dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<dl class="attribute">
<dt id="core.api.step.SimpleStep._SimpleStep__dirty">
<code class="descname">_SimpleStep__dirty</code><em class="property"> = False</em><a class="headerlink" href="#core.api.step.SimpleStep._SimpleStep__dirty" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="core.api.step.SimpleStep._exception_count">
<code class="descname">_exception_count</code><em class="property"> = 0</em><a class="headerlink" href="#core.api.step.SimpleStep._exception_count" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="core.api.step.SimpleStep._interval">
<code class="descname">_interval</code><em class="property"> = 1</em><a class="headerlink" href="#core.api.step.SimpleStep._interval" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="core.api.step.SimpleStep._max_exceptions">
<code class="descname">_max_exceptions</code><em class="property"> = 2</em><a class="headerlink" href="#core.api.step.SimpleStep._max_exceptions" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="core.api.step.SimpleStep.is_dirty"> <dt id="core.api.step.SimpleStep.is_dirty">
<code class="descname">is_dirty</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#core.api.step.SimpleStep.is_dirty" title="Permalink to this definition"></a></dt> <code class="descname">is_dirty</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#core.api.step.SimpleStep.is_dirty" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd><p>Check if a managed variable has a new value</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">True if at least one managed variable has a new value assigend. Otherwise False</td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="attribute"> <dl class="attribute">
<dt id="core.api.step.SimpleStep.managed_fields"> <dt id="core.api.step.SimpleStep.managed_fields">
@ -167,43 +395,112 @@
<dl class="method"> <dl class="method">
<dt id="core.api.step.SimpleStep.next"> <dt id="core.api.step.SimpleStep.next">
<code class="descname">next</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#core.api.step.SimpleStep.next" title="Permalink to this definition"></a></dt> <code class="descname">next</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#core.api.step.SimpleStep.next" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd><p>Request to stop the the step</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">None</td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="method"> <dl class="method">
<dt id="core.api.step.SimpleStep.reset"> <dt id="core.api.step.SimpleStep.reset">
<code class="descname">reset</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#core.api.step.SimpleStep.reset" title="Permalink to this definition"></a></dt> <code class="descname">reset</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#core.api.step.SimpleStep.reset" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd><p>Reset the step. This method needs to be overwritten by the custom step implementation</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">None</td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="method"> <dl class="method">
<dt id="core.api.step.SimpleStep.reset_dirty"> <dt id="core.api.step.SimpleStep.reset_dirty">
<code class="descname">reset_dirty</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#core.api.step.SimpleStep.reset_dirty" title="Permalink to this definition"></a></dt> <code class="descname">reset_dirty</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#core.api.step.SimpleStep.reset_dirty" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd><p>Reset the dirty flag</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body"></td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="method"> <dl class="method">
<dt id="core.api.step.SimpleStep.run"> <dt id="core.api.step.SimpleStep.run">
<code class="descname">run</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#core.api.step.SimpleStep.run" title="Permalink to this definition"></a></dt> <code class="descname">run</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#core.api.step.SimpleStep.run" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd><p>This method in running in the background. It invokes the run_cycle method in the configured interval
It checks if a managed variable was modified in the last exection cycle. If yes, the method will persisit the new value of the
managed property</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">None</td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="method"> <dl class="method">
<dt id="core.api.step.SimpleStep.run_cycle"> <dt id="core.api.step.SimpleStep.run_cycle">
<code class="descname">run_cycle</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#core.api.step.SimpleStep.run_cycle" title="Permalink to this definition"></a></dt> <code class="descname">run_cycle</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#core.api.step.SimpleStep.run_cycle" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd><p>This method is executed in the defined interval.
That the place to put your step logic.
The method need to be overwritten in the Ccstom step implementaion</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">None</td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="method"> <dl class="method">
<dt id="core.api.step.SimpleStep.running"> <dt id="core.api.step.SimpleStep.running">
<code class="descname">running</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#core.api.step.SimpleStep.running" title="Permalink to this definition"></a></dt> <code class="descname">running</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#core.api.step.SimpleStep.running" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd><p>Method checks if the step should continue running.
The method will return False if the step is requested to stop or the next step should start</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">True if the step is running. Otherwise False.</td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="method"> <dl class="method">
<dt id="core.api.step.SimpleStep.stop"> <dt id="core.api.step.SimpleStep.stop">
<code class="descname">stop</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#core.api.step.SimpleStep.stop" title="Permalink to this definition"></a></dt> <code class="descname">stop</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#core.api.step.SimpleStep.stop" title="Permalink to this definition"></a></dt>
<dd></dd></dl> <dd><p>Request to stop the step</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Returns:</th><td class="field-body">None</td>
</tr>
</tbody>
</table>
</dd></dl>
</dd></dl> </dd></dl>
</div> </div>
<div class="section" id="custom-step"> <div class="section" id="custom-step">
<h2>Custom Step<a class="headerlink" href="#custom-step" title="Permalink to this headline"></a></h2> <h2>Custom Step<a class="headerlink" href="#custom-step" title="Permalink to this headline"></a></h2>
<p>This is an example of a custom step. The Step class need to extend Simple step. In addtion at least the run_cycle method needs to be overwritten</p>
<div class="literal-block-wrapper docutils container" id="init-py"> <div class="literal-block-wrapper docutils container" id="init-py">
<div class="code-block-caption"><span class="caption-text">__init__.py</span><a class="headerlink" href="#init-py" title="Permalink to this code"></a></div> <div class="code-block-caption"><span class="caption-text">__init__.py</span><a class="headerlink" href="#init-py" title="Permalink to this code"></a></div>
<div class="highlight-python notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1 <div class="highlight-python notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
@ -288,13 +585,39 @@
</div> </div>
</div>
</div> </div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="kettle_controller.html" class="btn btn-neutral float-right" title="Kettle" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
<a href="sensor.html" class="btn btn-neutral" title="Sensor" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2018, Manuel Fritsch
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div> </div>
</div> </div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper"> </section>
<h1 class="logo"><a href="index.html">CraftBeerPi</a></h1>
</div>
@ -302,70 +625,21 @@
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
<h3>Navigation</h3> <script type="text/javascript" src="_static/jquery.js"></script>
<ul class="current"> <script type="text/javascript" src="_static/underscore.js"></script>
<li class="toctree-l1"><a class="reference internal" href="install.html">Installation</a></li> <script type="text/javascript" src="_static/doctools.js"></script>
<li class="toctree-l1"><a class="reference internal" href="core.html">Core</a></li>
<li class="toctree-l1"><a class="reference internal" href="actor.html">Actor</a></li>
<li class="toctree-l1"><a class="reference internal" href="sensor.html">Sensor</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Brewing Step</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#stepcontroller">StepController</a></li>
<li class="toctree-l2"><a class="reference internal" href="#simplestep">SimpleStep</a></li>
<li class="toctree-l2"><a class="reference internal" href="#custom-step">Custom Step</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="kettle_controller.html">Kettle</a></li>
<li class="toctree-l1"><a class="reference internal" href="properties.html">Properties</a></li>
</ul>
<div class="relations">
<h3>Related Topics</h3>
<ul>
<li><a href="index.html">Documentation overview</a><ul>
<li>Previous: <a href="sensor.html" title="previous chapter">Sensor</a></li>
<li>Next: <a href="kettle_controller.html" title="next chapter">Kettle</a></li>
</ul></li>
</ul>
</div>
<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
<script type="text/javascript" src="_static/js/theme.js"></script>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="footer">
&copy;2018, Manuel Fritsch.
|
Powered by <a href="http://sphinx-doc.org/">Sphinx 1.8.2</a>
&amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
<a href="_sources/step.rst.txt"
rel="nofollow">Page source</a>
</div>
</body>
</html> </html>

View file

@ -75,8 +75,8 @@ pygments_style = None
# The theme to use for HTML and HTML Help pages. See the documentation for # The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes. # a list of builtin themes.
# #
html_theme = 'alabaster' #html_theme = 'alabaster'
#html_theme = 'sphinx_rtd_theme' html_theme = 'sphinx_rtd_theme'
# Theme options are theme-specific and customize the look and feel of a theme # Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the # further. For a list of options available for each theme, see the

View file

@ -1,10 +1,31 @@
Properties Properties
=========== ===========
Properties can be use in all extensions.
During the startup the server scans all extension for variables of type Property.
Theses properties are exposed to the user for configuration during run time.
For example the user can set the GPIO number or the 1Wire Id.
Typical example how to use properties in an actor module.
Custom Actor
^^^^^^^^^^^^^
.. literalinclude:: ../../core/extension/dummyactor/__init__.py
:caption: __init__.py
:name: __init__-py
:language: python
:linenos:
.. autoclass:: core.api.property.Property .. autoclass:: core.api.property.Property
:members: :members:
:private-members: :private-members:
:undoc-members: :undoc-members:
:show-inheritance:

View file

@ -1,16 +1,39 @@
Sensor Sensor
========== =========
Architecture
^^^^
Sensor Controller
^^^^^^^^^^^^^^^^^
SensorController .. autoclass:: core.controller.sensor_controller.SensorController
^^^^^^^^^^^^^^^^
.. automodule:: core.controller.sensor_controller
:members: :members:
:private-members:
:undoc-members:
:show-inheritance:
CBPiSensor
^^^^^^^^^^
.. autoclass:: core.api.sensor.CBPiSensor
:members:
:private-members:
:undoc-members:
:show-inheritance:
Custom Sensor Custom Sensor
^^^^^^^^^^^^^ ^^^^^^^^^^^^^
.. literalinclude:: ../../core/extension/dummysensor/__init__.py
:caption: __init__.py
:name: __init__-py
:language: python
:linenos:
config.yaml
.. literalinclude:: ../../core/extension/dummysensor/config.yaml
:language: yaml
:linenos:

View file

@ -8,7 +8,7 @@ StepController
.. autoclass:: core.controller.step_controller.StepController .. autoclass:: core.controller.step_controller.StepController
:members: :members:
:private-members:
:undoc-members: :undoc-members:
:show-inheritance: :show-inheritance:
@ -18,7 +18,6 @@ SimpleStep
.. autoclass:: core.api.step.SimpleStep .. autoclass:: core.api.step.SimpleStep
:members: :members:
:private-members:
:undoc-members: :undoc-members:
:show-inheritance: :show-inheritance:
@ -26,6 +25,9 @@ SimpleStep
Custom Step Custom Step
^^^^^^^^^^^^^ ^^^^^^^^^^^^^
This is an example of a custom step. The Step class need to extend Simple step. In addtion at least the run_cycle method needs to be overwritten
.. literalinclude:: ../../core/extension/dummystep/__init__.py .. literalinclude:: ../../core/extension/dummystep/__init__.py
:caption: __init__.py :caption: __init__.py
:name: __init__-py :name: __init__-py