Documentation improved

This commit is contained in:
manuel83 2018-12-08 14:21:00 +01:00
parent 617e13a601
commit 3b7befe54c
85 changed files with 4085 additions and 5096 deletions

File diff suppressed because it is too large Load diff

View file

@ -9,10 +9,29 @@ logger = logging.getLogger(__file__)
class CBPiActor(CBPiExtension): class CBPiActor(CBPiExtension):
def on(self, power): def on(self, power):
'''
Code to switch the actor on. Power is provided as integer value
:param power: power value between 0 and 100
:return: None
'''
pass pass
def off(self): def off(self):
'''
Code to switch the actor off
:return: None
'''
pass pass
def state(self): def state(self):
'''
Return the current actor state
:return:
'''
pass pass

View file

@ -12,6 +12,12 @@ logging.basicConfig(level=logging.INFO)
class CBPiExtension(): class CBPiExtension():
def init(self):
pass
def stop(self):
pass
def __init__(self, *args, **kwds): def __init__(self, *args, **kwds):
for a in kwds: for a in kwds:

View file

@ -7,13 +7,20 @@ class CBPiKettleLogic(CBPiExtension):
Base Class for a Kettle logic. Base Class for a Kettle logic.
''' '''
def init(self):
'''
Code which will be executed when the logic is initialised. Needs to be overwritten by the implementing logic
:return: None
'''
pass
def stop(self): def stop(self):
''' '''
test Code which will be executed when the logic is stopped. Needs to be overwritten by the implementing logic
:return: :return: None
''' '''
pass pass
@ -25,7 +32,7 @@ class CBPiKettleLogic(CBPiExtension):
while self.running: while self.running:
await asyncio.sleep(1) await asyncio.sleep(1)
:return: :return: None
''' '''
pass pass

View file

@ -1,9 +1,7 @@
from core.api.extension import CBPiExtension from core.api.extension import CBPiExtension
class CBPiSensor(CBPiExtension): class CBPiSensor(CBPiExtension):
async def run(self, cbpi): async def run(self, cbpi):
print("RUN NOT IMPLEMENTED") print("RUN NOT IMPLEMENTED")

View file

@ -5,7 +5,7 @@ import asyncio
import logging import logging
class Step(object): class SimpleStep(object):
__dirty = False __dirty = False
managed_fields = [] managed_fields = []
@ -16,7 +16,7 @@ class Step(object):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
self.logger = logging.getLogger(__name__) self.logger = logging.getLogger(__name__)
for a in kwargs: for a in kwargs:
super(Step, self).__setattr__(a, kwargs.get(a)) super(SimpleStep, self).__setattr__(a, kwargs.get(a))
self.id = kwargs.get("id") self.id = kwargs.get("id")
self.is_stopped = False self.is_stopped = False
self.is_next = False self.is_next = False
@ -37,15 +37,18 @@ class Step(object):
try: try:
await self.run_cycle() await self.run_cycle()
except Exception as e: except Exception as e:
logging.exception("Step Error") logging.exception("SimpleStep Error")
self._exception_count = self._exception_count + 1 self._exception_count = self._exception_count + 1
if self._exception_count == self._max_exceptions: if self._exception_count == self._max_exceptions:
self.logger.error("Step Exception limit exceeded. Stopping Step")
self.stop() self.stop()
print("INTER",self._interval) print("INTER",self._interval)
await asyncio.sleep(self._interval) await asyncio.sleep(self._interval)
if self.is_dirty(): if self.is_dirty():
# Now we have to store the managed props # Now we have to store the managed props
self.reset_dirty() self.reset_dirty()
async def run_cycle(self): async def run_cycle(self):
@ -70,6 +73,6 @@ class Step(object):
def __setattr__(self, name, value): def __setattr__(self, name, value):
if name != "_Step__dirty" and name in self.managed_fields: if name != "_Step__dirty" and name in self.managed_fields:
self.__dirty = True self.__dirty = True
super(Step, self).__setattr__(name, value) super(SimpleStep, self).__setattr__(name, value)
else: else:
super(Step, self).__setattr__(name, value) super(SimpleStep, self).__setattr__(name, value)

View file

@ -118,7 +118,8 @@ class ActorController(ActorHttp, CRUDController):
Method to toggle an actor on or off Method to toggle an actor on or off
Supporting Event Topic "actor/+/toggle" Supporting Event Topic "actor/+/toggle"
:param power: :param id: the actor id
:param power: the power as interger between 0 and 100
:return: :return:
''' '''
@ -137,7 +138,7 @@ class ActorController(ActorHttp, CRUDController):
Method to switch and actor off Method to switch and actor off
Supporting Event Topic "actor/+/off" Supporting Event Topic "actor/+/off"
:param id: :param id: the actor id
:param kwargs: :param kwargs:
""" """

View file

@ -13,7 +13,7 @@ from core.api.extension import CBPiExtension
from core.api.kettle_logic import CBPiKettleLogic from core.api.kettle_logic import CBPiKettleLogic
from core.api.property import Property from core.api.property import Property
from core.api.sensor import CBPiSensor from core.api.sensor import CBPiSensor
from core.api.step import Step from core.api.step import SimpleStep
from core.utils.utils import load_config, json_dumps from core.utils.utils import load_config, json_dumps
logger = logging.getLogger(__file__) logger = logging.getLogger(__file__)
@ -98,18 +98,14 @@ class PluginController():
if issubclass(clazz, CBPiSensor): if issubclass(clazz, CBPiSensor):
self.cbpi.sensor.types[name] = {"class": clazz, "config": self._parse_props(clazz)} self.cbpi.sensor.types[name] = {"class": clazz, "config": self._parse_props(clazz)}
if issubclass(clazz, CBPiKettleLogic): if issubclass(clazz, CBPiKettleLogic):
self.cbpi.kettle.types[name] = {"class": clazz, "config": self._parse_props(clazz)} self.cbpi.kettle.types[name] = {"class": clazz, "config": self._parse_props(clazz)}
if issubclass(clazz, Step): if issubclass(clazz, SimpleStep):
self.cbpi.step.types[name] = self._parse_props(clazz) self.cbpi.step.types[name] = self._parse_props(clazz)
print(self.cbpi.step.types) print(self.cbpi.step.types)
if issubclass(clazz, CBPiExtension): if issubclass(clazz, CBPiExtension):
self.c = clazz(self.cbpi) self.c = clazz(self.cbpi)
print("D###### DUMMY")
#self.cbpi.register(self.c, "/dummy")
def _parse_props(self, cls): def _parse_props(self, cls):
print("PARSE", cls) print("PARSE", cls)

View file

@ -1,23 +1,29 @@
import asyncio import asyncio
from aiohttp import web from aiohttp import web
from core.api import on_event, request_mapping from core.api import on_event, request_mapping
from core.controller.crud_controller import CRUDController
from core.database.model import StepModel
from core.http_endpoints.http_api import HttpAPI
class StepController():
class StepController(HttpAPI, CRUDController):
model = StepModel
def __init__(self, cbpi): def __init__(self, cbpi):
super(StepController, self).__init__(cbpi)
self.cbpi = cbpi self.cbpi = cbpi
self.current_task = None self.current_task = None
self.types = {} self.types = {}
self.steps = {
1: dict(name="S1", config=dict(time=1), type="CustomStep", state=None),
2: dict(name="S2", config=dict(time=1), type="CustomStep", state=None),
3: dict(name="S3", config=dict(time=1), type="CustomStep", state=None)
}
self.current_step = None self.current_step = None
self.cbpi.register(self, "/step") self.cbpi.register(self, "/step")
async def init(self): async def init(self):
#self.start() #self.start()
await super(StepController, self).init()
pass pass
@request_mapping(path="/action", auth_required=False) @request_mapping(path="/action", auth_required=False)
@ -77,8 +83,8 @@ class StepController():
if self.current_step is not None: if self.current_step is not None:
self.current_step.stop() self.current_step.stop()
for key, step in self.steps.items(): for key, step in self.cache.items():
step["state"] = None step.state = None
self.current_step = None self.current_step = None
@ -89,7 +95,7 @@ class StepController():
def _step_done(self, task): def _step_done(self, task):
if task.cancelled() == False: if task.cancelled() == False:
self.steps[self.current_step.id]["state"] = "D" self.cache[self.current_step.id].state = "D"
step_id = self.current_step.id step_id = self.current_step.id
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)
@ -107,13 +113,13 @@ class StepController():
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
for key, step in self.steps.items(): for key, step in self.cache.items():
if step["state"] is None: if step.state is None:
step_type = self.types["CustomStep"] step_type = self.types["CustomStep"]
print("----------") print("----------")
print(step_type) print(step_type)
print("----------") print("----------")
config = dict(cbpi = self.cbpi, id=key, name="Manuel", 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)

View file

@ -22,3 +22,54 @@ class KettleModel(DBModel):
__fields__ = ["name","sensor", "heater", "automatic", "logic", "config", "agitator", "target_temp"] __fields__ = ["name","sensor", "heater", "automatic", "logic", "config", "agitator", "target_temp"]
__table_name__ = "kettle" __table_name__ = "kettle"
__json_fields__ = ["config"] __json_fields__ = ["config"]
class StepModel(DBModel):
__fields__ = ["order", "name", "type", "stepstate", "state", "start", "end", "config", "kettleid"]
__table_name__ = "step"
__json_fields__ = ["config", "stepstate"]
'''
@classmethod
def sort(cls, new_order):
cur = get_db().cursor()
for key, value in new_order.items():
cur.execute("UPDATE %s SET '%s' = ? WHERE id = ?" % (cls.__table_name__, "order"), (value, key))
get_db().commit()
@classmethod
def get_max_order(cls):
cur = get_db().cursor()
cur.execute("SELECT max(step.'order') as 'order' FROM %s" % cls.__table_name__)
r = cur.fetchone()
return r.get("order")
@classmethod
def delete_all(cls):
cur = get_db().cursor()
cur.execute("DELETE FROM %s" % cls.__table_name__)
get_db().commit()
@classmethod
def get_by_state(cls, state, order=True):
cur = get_db().cursor()
cur.execute("SELECT * FROM %s WHERE state = ? ORDER BY %s.'order'" % (cls.__table_name__, cls.__table_name__,), state)
r = cur.fetchone()
if r is not None:
return cls(r)
else:
return None
@classmethod
def update_step_state(cls, id, state):
cur = get_db().cursor()
cur.execute("UPDATE %s SET stepstate = ? WHERE id =?" % cls.__table_name__, (json.dumps(state), id))
get_db().commit()
@classmethod
def reset_all_steps(cls):
cur = get_db().cursor()
cur.execute("UPDATE %s SET state = 'I', stepstate = NULL , start = NULL, end = NULL " % cls.__table_name__)
get_db().commit()
'''

View file

@ -8,6 +8,9 @@ from core.http_endpoints.http_api import HttpAPI
class DummyModel(DBModel): class DummyModel(DBModel):
'''
Cumstom Data Model which will is stored in the database
'''
__fields__ = ["name"] __fields__ = ["name"]
__table_name__ = "dummy" __table_name__ = "dummy"
@ -22,7 +25,8 @@ class MyComp(CBPiExtension, CRUDController, HttpAPI):
:param cbpi: :param cbpi:
''' '''
self.cbpi = cbpi self.cbpi = cbpi
# register for bus events # register component for http, events
# In addtion the sub folder static is exposed to access static content via http
self.cbpi.register(self, "/dummy", static="./core/extension/comp/static") self.cbpi.register(self, "/dummy", static="./core/extension/comp/static")
@ -37,8 +41,6 @@ class MyComp(CBPiExtension, CRUDController, HttpAPI):
self.cbpi.bus.fire(topic="actor/%s/toggle" % 1, id=1) self.cbpi.bus.fire(topic="actor/%s/toggle" % 1, id=1)
def setup(cbpi): def setup(cbpi):
''' '''
Setup method is invoked during startup Setup method is invoked during startup

View file

@ -1,2 +1,2 @@
name: Manuel name: DummyComponent
version: 4 version: 4

View file

@ -1,12 +1,11 @@
import logging import logging
from core.api import CBPiActor, Property, action, background_task from core.api import CBPiActor, Property, action
class CustomActor(CBPiActor): class CustomActor(CBPiActor):
# Custom property which can be configured by the user
gpio = Property.Number(label="Test") gpio = Property.Number(label="Test")
@ -19,10 +18,15 @@ class CustomActor(CBPiActor):
def off(self): def off(self):
print("OFF", self.gpio) print("OFF", self.gpio)
# Code to swtich the actor off goes here
self.state = False self.state = False
def on(self, power=100): def on(self, power=100):
print("ON", self.gpio)
# Code to swtich the actor on goes here
self.state = True self.state = True

View file

@ -1,2 +1,2 @@
name: Manuel name: DummyActor
version: 4 version: 4

View file

@ -8,7 +8,6 @@ class CustomLogic(CBPiKettleLogic):
test = Property.Number(label="Test") test = Property.Number(label="Test")
running = True running = True
@ -17,8 +16,6 @@ class CustomLogic(CBPiKettleLogic):
future_obj = self.cbpi.app.loop.create_future() future_obj = self.cbpi.app.loop.create_future()
async def default_callback(id, **kwargs): async def default_callback(id, **kwargs):
future_obj.set_result("HELLO") future_obj.set_result("HELLO")

View file

@ -1,2 +1,2 @@
name: Manuel name: DummyKettleLogic
version: 4 version: 4

View file

@ -8,15 +8,21 @@ from core.api.sensor import CBPiSensor
class CustomSensor(CBPiSensor): class CustomSensor(CBPiSensor):
name = Property.Number(label="Test") # Custom Properties which will can be configured by the user
name1 = Property.Text(label="Test")
interval = Property.Number(label="interval")
name2 = Property.Kettle(label="Test")
p1 = Property.Number(label="Test")
p2 = Property.Text(label="Test")
interval = Property.Number(label="interval")
# Internal runtime variable
value = 0 value = 0
@action(key="name", parameters={}) @action(key="name", parameters={})
def myAction(self): def myAction(self):
'''
Custom Action Exampel
:return: None
'''
pass pass
def state(self): def state(self):
@ -28,8 +34,7 @@ class CustomSensor(CBPiSensor):
async def run(self, cbpi): async def run(self, cbpi):
self.value = 0 self.value = 0
while True: while True:
#await asyncio.sleep(self.interval) await asyncio.sleep(self.interval)
await asyncio.sleep(random.uniform(0, 1))
self.value = self.value + 1 self.value = self.value + 1
cbpi.bus.fire("sensor/%s" % self.id, value=self.value) cbpi.bus.fire("sensor/%s" % self.id, value=self.value)

View file

@ -1,2 +1,2 @@
name: Manuel name: DummySensor
version: 4 version: 4

View file

@ -1,13 +1,13 @@
import asyncio import asyncio
from core.api import Property, action from core.api import Property, action
from core.api.step import Step from core.api.step import SimpleStep
class CustomStep(Step): class CustomStep(SimpleStep):
name = Property.Number(label="Test") name = Property.Number(label="Test")
_interval = 1
i = 0 i = 0
@action(key="name", parameters=None) @action(key="name", parameters=None)
@ -20,8 +20,6 @@ class CustomStep(Step):
#await asyncio.sleep(1) #await asyncio.sleep(1)
self.i = self.i + 1 self.i = self.i + 1
print("RUN STEP", self.id, self.name, self.__dict__) print("RUN STEP", self.id, self.name, self.__dict__)

View file

@ -1,2 +1,2 @@
name: Manuel name: DummyStep
version: 4 version: 4

Binary file not shown.

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: a7fdf21acdd201956ed9899e36546207 config: 68b21bdf85f832d5bb6e445088bd68e4
tags: 645f666f9bcd5a90fca523b33c5a78b7 tags: 645f666f9bcd5a90fca523b33c5a78b7

View file

@ -11,14 +11,27 @@ Architecture
ActorController ActorController
^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^
.. automodule:: core.controller.actor_controller .. autoclass:: core.controller.actor_controller.ActorController
:members: :members:
:inherited-members: :private-members:
:undoc-members:
:show-inheritance:
CBPiActor
^^^^^^^^^
.. autoclass:: core.api.actor.CBPiActor
:members:
:private-members:
:undoc-members:
:show-inheritance:
Custom Actor Custom Actor
^^^^^^^^^^^^^ ^^^^^^^^^^^^^
.. literalinclude:: ../../core/extension/dummy/__init__.py .. literalinclude:: ../../core/extension/dummyactor/__init__.py
:caption: __init__.py :caption: __init__.py
:name: __init__-py :name: __init__-py
:language: python :language: python
@ -27,6 +40,6 @@ Custom Actor
config.yaml config.yaml
.. literalinclude:: ../../core/extension/dummy/config.yaml .. literalinclude:: ../../core/extension/dummyactor/config.yaml
:language: yaml :language: yaml
:linenos: :linenos:

View file

@ -14,7 +14,9 @@ Welcome to CraftBeerPi's documentation!
core core
actor actor
sensor sensor
step
kettle_controller
properties
.. ..

View file

@ -0,0 +1,39 @@
Kettle
================
KettleController
^^^^^^^^^^^^^^^^
.. autoclass:: core.controller.kettle_controller.KettleController
:members:
:private-members:
:undoc-members:
:show-inheritance:
CBPiKettleLogic
^^^^^^^^^^^^^^^
.. autoclass:: core.api.kettle_logic.CBPiKettleLogic
:members:
:show-inheritance:
:inherited-members:
Custom Logic
^^^^^^^^^^^^^
.. literalinclude:: ../../core/extension/dummylogic/__init__.py
:caption: __init__.py
:name: __init__-py
:language: python
:linenos:
config.yaml
.. literalinclude:: ../../core/extension/dummylogic/config.yaml
:language: yaml
:linenos:

View file

@ -0,0 +1,10 @@
Properties
===========
.. autoclass:: core.api.property.Property
:members:
:private-members:
:undoc-members:
:show-inheritance:

View file

@ -1,2 +1,40 @@
Step API Brewing Step
======== ============
StepController
^^^^^^^^^^^^^^^
.. autoclass:: core.controller.step_controller.StepController
:members:
:private-members:
:undoc-members:
:show-inheritance:
SimpleStep
^^^^^^^^^^
.. autoclass:: core.api.step.SimpleStep
:members:
:private-members:
:undoc-members:
:show-inheritance:
Custom Step
^^^^^^^^^^^^^
.. literalinclude:: ../../core/extension/dummystep/__init__.py
:caption: __init__.py
:name: __init__-py
:language: python
:linenos:
config.yaml
.. literalinclude:: ../../core/extension/dummystep/config.yaml
:language: yaml
:linenos:

701
docs/_static/alabaster.css vendored Normal file
View file

@ -0,0 +1,701 @@
@import url("basic.css");
/* -- page layout ----------------------------------------------------------- */
body {
font-family: Georgia, serif;
font-size: 17px;
background-color: #fff;
color: #000;
margin: 0;
padding: 0;
}
div.document {
width: 940px;
margin: 30px auto 0 auto;
}
div.documentwrapper {
float: left;
width: 100%;
}
div.bodywrapper {
margin: 0 0 0 220px;
}
div.sphinxsidebar {
width: 220px;
font-size: 14px;
line-height: 1.5;
}
hr {
border: 1px solid #B1B4B6;
}
div.body {
background-color: #fff;
color: #3E4349;
padding: 0 30px 0 30px;
}
div.body > .section {
text-align: left;
}
div.footer {
width: 940px;
margin: 20px auto 30px auto;
font-size: 14px;
color: #888;
text-align: right;
}
div.footer a {
color: #888;
}
p.caption {
font-family: inherit;
font-size: inherit;
}
div.relations {
display: none;
}
div.sphinxsidebar a {
color: #444;
text-decoration: none;
border-bottom: 1px dotted #999;
}
div.sphinxsidebar a:hover {
border-bottom: 1px solid #999;
}
div.sphinxsidebarwrapper {
padding: 18px 10px;
}
div.sphinxsidebarwrapper p.logo {
padding: 0;
margin: -10px 0 0 0px;
text-align: center;
}
div.sphinxsidebarwrapper h1.logo {
margin-top: -10px;
text-align: center;
margin-bottom: 5px;
text-align: left;
}
div.sphinxsidebarwrapper h1.logo-name {
margin-top: 0px;
}
div.sphinxsidebarwrapper p.blurb {
margin-top: 0;
font-style: normal;
}
div.sphinxsidebar h3,
div.sphinxsidebar h4 {
font-family: Georgia, serif;
color: #444;
font-size: 24px;
font-weight: normal;
margin: 0 0 5px 0;
padding: 0;
}
div.sphinxsidebar h4 {
font-size: 20px;
}
div.sphinxsidebar h3 a {
color: #444;
}
div.sphinxsidebar p.logo a,
div.sphinxsidebar h3 a,
div.sphinxsidebar p.logo a:hover,
div.sphinxsidebar h3 a:hover {
border: none;
}
div.sphinxsidebar p {
color: #555;
margin: 10px 0;
}
div.sphinxsidebar ul {
margin: 10px 0;
padding: 0;
color: #000;
}
div.sphinxsidebar ul li.toctree-l1 > a {
font-size: 120%;
}
div.sphinxsidebar ul li.toctree-l2 > a {
font-size: 110%;
}
div.sphinxsidebar input {
border: 1px solid #CCC;
font-family: Georgia, serif;
font-size: 1em;
}
div.sphinxsidebar hr {
border: none;
height: 1px;
color: #AAA;
background: #AAA;
text-align: left;
margin-left: 0;
width: 50%;
}
div.sphinxsidebar .badge {
border-bottom: none;
}
div.sphinxsidebar .badge:hover {
border-bottom: none;
}
/* To address an issue with donation coming after search */
div.sphinxsidebar h3.donation {
margin-top: 10px;
}
/* -- body styles ----------------------------------------------------------- */
a {
color: #004B6B;
text-decoration: underline;
}
a:hover {
color: #6D4100;
text-decoration: underline;
}
div.body h1,
div.body h2,
div.body h3,
div.body h4,
div.body h5,
div.body h6 {
font-family: Georgia, serif;
font-weight: normal;
margin: 30px 0px 10px 0px;
padding: 0;
}
div.body h1 { margin-top: 0; padding-top: 0; font-size: 240%; }
div.body h2 { font-size: 180%; }
div.body h3 { font-size: 150%; }
div.body h4 { font-size: 130%; }
div.body h5 { font-size: 100%; }
div.body h6 { font-size: 100%; }
a.headerlink {
color: #DDD;
padding: 0 4px;
text-decoration: none;
}
a.headerlink:hover {
color: #444;
background: #EAEAEA;
}
div.body p, div.body dd, div.body li {
line-height: 1.4em;
}
div.admonition {
margin: 20px 0px;
padding: 10px 30px;
background-color: #EEE;
border: 1px solid #CCC;
}
div.admonition tt.xref, div.admonition code.xref, div.admonition a tt {
background-color: #FBFBFB;
border-bottom: 1px solid #fafafa;
}
div.admonition p.admonition-title {
font-family: Georgia, serif;
font-weight: normal;
font-size: 24px;
margin: 0 0 10px 0;
padding: 0;
line-height: 1;
}
div.admonition p.last {
margin-bottom: 0;
}
div.highlight {
background-color: #fff;
}
dt:target, .highlight {
background: #FAF3E8;
}
div.warning {
background-color: #FCC;
border: 1px solid #FAA;
}
div.danger {
background-color: #FCC;
border: 1px solid #FAA;
-moz-box-shadow: 2px 2px 4px #D52C2C;
-webkit-box-shadow: 2px 2px 4px #D52C2C;
box-shadow: 2px 2px 4px #D52C2C;
}
div.error {
background-color: #FCC;
border: 1px solid #FAA;
-moz-box-shadow: 2px 2px 4px #D52C2C;
-webkit-box-shadow: 2px 2px 4px #D52C2C;
box-shadow: 2px 2px 4px #D52C2C;
}
div.caution {
background-color: #FCC;
border: 1px solid #FAA;
}
div.attention {
background-color: #FCC;
border: 1px solid #FAA;
}
div.important {
background-color: #EEE;
border: 1px solid #CCC;
}
div.note {
background-color: #EEE;
border: 1px solid #CCC;
}
div.tip {
background-color: #EEE;
border: 1px solid #CCC;
}
div.hint {
background-color: #EEE;
border: 1px solid #CCC;
}
div.seealso {
background-color: #EEE;
border: 1px solid #CCC;
}
div.topic {
background-color: #EEE;
}
p.admonition-title {
display: inline;
}
p.admonition-title:after {
content: ":";
}
pre, tt, code {
font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace;
font-size: 0.9em;
}
.hll {
background-color: #FFC;
margin: 0 -12px;
padding: 0 12px;
display: block;
}
img.screenshot {
}
tt.descname, tt.descclassname, code.descname, code.descclassname {
font-size: 0.95em;
}
tt.descname, code.descname {
padding-right: 0.08em;
}
img.screenshot {
-moz-box-shadow: 2px 2px 4px #EEE;
-webkit-box-shadow: 2px 2px 4px #EEE;
box-shadow: 2px 2px 4px #EEE;
}
table.docutils {
border: 1px solid #888;
-moz-box-shadow: 2px 2px 4px #EEE;
-webkit-box-shadow: 2px 2px 4px #EEE;
box-shadow: 2px 2px 4px #EEE;
}
table.docutils td, table.docutils th {
border: 1px solid #888;
padding: 0.25em 0.7em;
}
table.field-list, table.footnote {
border: none;
-moz-box-shadow: none;
-webkit-box-shadow: none;
box-shadow: none;
}
table.footnote {
margin: 15px 0;
width: 100%;
border: 1px solid #EEE;
background: #FDFDFD;
font-size: 0.9em;
}
table.footnote + table.footnote {
margin-top: -15px;
border-top: none;
}
table.field-list th {
padding: 0 0.8em 0 0;
}
table.field-list td {
padding: 0;
}
table.field-list p {
margin-bottom: 0.8em;
}
/* Cloned from
* https://github.com/sphinx-doc/sphinx/commit/ef60dbfce09286b20b7385333d63a60321784e68
*/
.field-name {
-moz-hyphens: manual;
-ms-hyphens: manual;
-webkit-hyphens: manual;
hyphens: manual;
}
table.footnote td.label {
width: .1px;
padding: 0.3em 0 0.3em 0.5em;
}
table.footnote td {
padding: 0.3em 0.5em;
}
dl {
margin: 0;
padding: 0;
}
dl dd {
margin-left: 30px;
}
blockquote {
margin: 0 0 0 30px;
padding: 0;
}
ul, ol {
/* Matches the 30px from the narrow-screen "li > ul" selector below */
margin: 10px 0 10px 30px;
padding: 0;
}
pre {
background: #EEE;
padding: 7px 30px;
margin: 15px 0px;
line-height: 1.3em;
}
div.viewcode-block:target {
background: #ffd;
}
dl pre, blockquote pre, li pre {
margin-left: 0;
padding-left: 30px;
}
tt, code {
background-color: #ecf0f3;
color: #222;
/* padding: 1px 2px; */
}
tt.xref, code.xref, a tt {
background-color: #FBFBFB;
border-bottom: 1px solid #fff;
}
a.reference {
text-decoration: none;
border-bottom: 1px dotted #004B6B;
}
/* Don't put an underline on images */
a.image-reference, a.image-reference:hover {
border-bottom: none;
}
a.reference:hover {
border-bottom: 1px solid #6D4100;
}
a.footnote-reference {
text-decoration: none;
font-size: 0.7em;
vertical-align: top;
border-bottom: 1px dotted #004B6B;
}
a.footnote-reference:hover {
border-bottom: 1px solid #6D4100;
}
a:hover tt, a:hover code {
background: #EEE;
}
@media screen and (max-width: 870px) {
div.sphinxsidebar {
display: none;
}
div.document {
width: 100%;
}
div.documentwrapper {
margin-left: 0;
margin-top: 0;
margin-right: 0;
margin-bottom: 0;
}
div.bodywrapper {
margin-top: 0;
margin-right: 0;
margin-bottom: 0;
margin-left: 0;
}
ul {
margin-left: 0;
}
li > ul {
/* Matches the 30px from the "ul, ol" selector above */
margin-left: 30px;
}
.document {
width: auto;
}
.footer {
width: auto;
}
.bodywrapper {
margin: 0;
}
.footer {
width: auto;
}
.github {
display: none;
}
}
@media screen and (max-width: 875px) {
body {
margin: 0;
padding: 20px 30px;
}
div.documentwrapper {
float: none;
background: #fff;
}
div.sphinxsidebar {
display: block;
float: none;
width: 102.5%;
margin: 50px -30px -20px -30px;
padding: 10px 20px;
background: #333;
color: #FFF;
}
div.sphinxsidebar h3, div.sphinxsidebar h4, div.sphinxsidebar p,
div.sphinxsidebar h3 a {
color: #fff;
}
div.sphinxsidebar a {
color: #AAA;
}
div.sphinxsidebar p.logo {
display: none;
}
div.document {
width: 100%;
margin: 0;
}
div.footer {
display: none;
}
div.bodywrapper {
margin: 0;
}
div.body {
min-height: 0;
padding: 0;
}
.rtd_doc_footer {
display: none;
}
.document {
width: auto;
}
.footer {
width: auto;
}
.footer {
width: auto;
}
.github {
display: none;
}
}
/* misc. */
.revsys-inline {
display: none!important;
}
/* Make nested-list/multi-paragraph items look better in Releases changelog
* pages. Without this, docutils' magical list fuckery causes inconsistent
* formatting between different release sub-lists.
*/
div#changelog > div.section > ul > li > p:only-child {
margin-bottom: 0;
}
/* Hide fugly table cell borders in ..bibliography:: directive output */
table.docutils.citation, table.docutils.citation td, table.docutils.citation th {
border: none;
/* Below needed in some edge cases; if not applied, bottom shadows appear */
-moz-box-shadow: none;
-webkit-box-shadow: none;
box-shadow: none;
}
/* relbar */
.related {
line-height: 30px;
width: 100%;
font-size: 0.9rem;
}
.related.top {
border-bottom: 1px solid #EEE;
margin-bottom: 20px;
}
.related.bottom {
border-top: 1px solid #EEE;
}
.related ul {
padding: 0;
margin: 0;
list-style: none;
}
.related li {
display: inline;
}
nav#rellinks {
float: right;
}
nav#rellinks li+li:before {
content: "|";
}
nav#breadcrumbs li+li:before {
content: "\00BB";
}
/* Hide certain items when printing */
@media print {
div.related {
display: none;
}
}

View file

@ -1 +0,0 @@
.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}}

File diff suppressed because one or more lines are too long

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

@ -0,0 +1 @@
/* This file intentionally left blank. */

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.

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.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load diff

Before

Width:  |  Height:  |  Size: 434 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

View file

@ -1,3 +0,0 @@
/* 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,69 +1,77 @@
.highlight .hll { background-color: #ffffcc } .highlight .hll { background-color: #ffffcc }
.highlight { background: #f8f8f8; } .highlight { background: #f8f8f8; }
.highlight .c { color: #408080; font-style: italic } /* Comment */ .highlight .c { color: #8f5902; font-style: italic } /* Comment */
.highlight .err { border: 1px solid #FF0000 } /* Error */ .highlight .err { color: #a40000; border: 1px solid #ef2929 } /* Error */
.highlight .k { color: #008000; font-weight: bold } /* Keyword */ .highlight .g { color: #000000 } /* Generic */
.highlight .o { color: #666666 } /* Operator */ .highlight .k { color: #004461; font-weight: bold } /* Keyword */
.highlight .ch { color: #408080; font-style: italic } /* Comment.Hashbang */ .highlight .l { color: #000000 } /* Literal */
.highlight .cm { color: #408080; font-style: italic } /* Comment.Multiline */ .highlight .n { color: #000000 } /* Name */
.highlight .cp { color: #BC7A00 } /* Comment.Preproc */ .highlight .o { color: #582800 } /* Operator */
.highlight .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */ .highlight .x { color: #000000 } /* Other */
.highlight .c1 { color: #408080; font-style: italic } /* Comment.Single */ .highlight .p { color: #000000; font-weight: bold } /* Punctuation */
.highlight .cs { color: #408080; font-style: italic } /* Comment.Special */ .highlight .ch { color: #8f5902; font-style: italic } /* Comment.Hashbang */
.highlight .gd { color: #A00000 } /* Generic.Deleted */ .highlight .cm { color: #8f5902; font-style: italic } /* Comment.Multiline */
.highlight .ge { font-style: italic } /* Generic.Emph */ .highlight .cp { color: #8f5902 } /* Comment.Preproc */
.highlight .gr { color: #FF0000 } /* Generic.Error */ .highlight .cpf { color: #8f5902; font-style: italic } /* Comment.PreprocFile */
.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: #000080; font-weight: bold } /* Generic.Prompt */ .highlight .gp { color: #745334 } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */ .highlight .gs { color: #000000; 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: #0044DD } /* Generic.Traceback */ .highlight .gt { color: #a40000; font-weight: bold } /* Generic.Traceback */
.highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */ .highlight .kc { color: #004461; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */ .highlight .kd { color: #004461; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */ .highlight .kn { color: #004461; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #008000 } /* Keyword.Pseudo */ .highlight .kp { color: #004461; font-weight: bold } /* Keyword.Pseudo */
.highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */ .highlight .kr { color: #004461; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #B00040 } /* Keyword.Type */ .highlight .kt { color: #004461; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #666666 } /* Literal.Number */ .highlight .ld { color: #000000 } /* Literal.Date */
.highlight .s { color: #BA2121 } /* Literal.String */ .highlight .m { color: #990000 } /* Literal.Number */
.highlight .na { color: #7D9029 } /* Name.Attribute */ .highlight .s { color: #4e9a06 } /* Literal.String */
.highlight .nb { color: #008000 } /* Name.Builtin */ .highlight .na { color: #c4a000 } /* Name.Attribute */
.highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */ .highlight .nb { color: #004461 } /* Name.Builtin */
.highlight .no { color: #880000 } /* Name.Constant */ .highlight .nc { color: #000000 } /* Name.Class */
.highlight .nd { color: #AA22FF } /* Name.Decorator */ .highlight .no { color: #000000 } /* Name.Constant */
.highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */ .highlight .nd { color: #888888 } /* Name.Decorator */
.highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */ .highlight .ni { color: #ce5c00 } /* Name.Entity */
.highlight .nf { color: #0000FF } /* Name.Function */ .highlight .ne { color: #cc0000; font-weight: bold } /* Name.Exception */
.highlight .nl { color: #A0A000 } /* Name.Label */ .highlight .nf { color: #000000 } /* Name.Function */
.highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */ .highlight .nl { color: #f57900 } /* Name.Label */
.highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */ .highlight .nn { color: #000000 } /* Name.Namespace */
.highlight .nv { color: #19177C } /* Name.Variable */ .highlight .nx { color: #000000 } /* Name.Other */
.highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */ .highlight .py { color: #000000 } /* Name.Property */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */ .highlight .nt { color: #004461; font-weight: bold } /* Name.Tag */
.highlight .mb { color: #666666 } /* Literal.Number.Bin */ .highlight .nv { color: #000000 } /* Name.Variable */
.highlight .mf { color: #666666 } /* Literal.Number.Float */ .highlight .ow { color: #004461; font-weight: bold } /* Operator.Word */
.highlight .mh { color: #666666 } /* Literal.Number.Hex */ .highlight .w { color: #f8f8f8; text-decoration: underline } /* Text.Whitespace */
.highlight .mi { color: #666666 } /* Literal.Number.Integer */ .highlight .mb { color: #990000 } /* Literal.Number.Bin */
.highlight .mo { color: #666666 } /* Literal.Number.Oct */ .highlight .mf { color: #990000 } /* Literal.Number.Float */
.highlight .sa { color: #BA2121 } /* Literal.String.Affix */ .highlight .mh { color: #990000 } /* Literal.Number.Hex */
.highlight .sb { color: #BA2121 } /* Literal.String.Backtick */ .highlight .mi { color: #990000 } /* Literal.Number.Integer */
.highlight .sc { color: #BA2121 } /* Literal.String.Char */ .highlight .mo { color: #990000 } /* Literal.Number.Oct */
.highlight .dl { color: #BA2121 } /* Literal.String.Delimiter */ .highlight .sa { color: #4e9a06 } /* Literal.String.Affix */
.highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */ .highlight .sb { color: #4e9a06 } /* Literal.String.Backtick */
.highlight .s2 { color: #BA2121 } /* Literal.String.Double */ .highlight .sc { color: #4e9a06 } /* Literal.String.Char */
.highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */ .highlight .dl { color: #4e9a06 } /* Literal.String.Delimiter */
.highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */ .highlight .sd { color: #8f5902; font-style: italic } /* Literal.String.Doc */
.highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */ .highlight .s2 { color: #4e9a06 } /* Literal.String.Double */
.highlight .sx { color: #008000 } /* Literal.String.Other */ .highlight .se { color: #4e9a06 } /* Literal.String.Escape */
.highlight .sr { color: #BB6688 } /* Literal.String.Regex */ .highlight .sh { color: #4e9a06 } /* Literal.String.Heredoc */
.highlight .s1 { color: #BA2121 } /* Literal.String.Single */ .highlight .si { color: #4e9a06 } /* Literal.String.Interpol */
.highlight .ss { color: #19177C } /* Literal.String.Symbol */ .highlight .sx { color: #4e9a06 } /* Literal.String.Other */
.highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */ .highlight .sr { color: #4e9a06 } /* Literal.String.Regex */
.highlight .fm { color: #0000FF } /* Name.Function.Magic */ .highlight .s1 { color: #4e9a06 } /* Literal.String.Single */
.highlight .vc { color: #19177C } /* Name.Variable.Class */ .highlight .ss { color: #4e9a06 } /* Literal.String.Symbol */
.highlight .vg { color: #19177C } /* Name.Variable.Global */ .highlight .bp { color: #3465a4 } /* Name.Builtin.Pseudo */
.highlight .vi { color: #19177C } /* Name.Variable.Instance */ .highlight .fm { color: #000000 } /* Name.Function.Magic */
.highlight .vm { color: #19177C } /* Name.Variable.Magic */ .highlight .vc { color: #000000 } /* Name.Variable.Class */
.highlight .il { color: #666666 } /* Literal.Number.Integer.Long */ .highlight .vg { color: #000000 } /* Name.Variable.Global */
.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,156 +1,37 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml">
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> <head>
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta charset="utf-8"> <title>Actor &#8212; CraftBeerPi 4.0 documentation</title>
<link rel="stylesheet" href="_static/alabaster.css" type="text/css" />
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <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>
<title>Actor &mdash; CraftBeerPi 4.0 documentation</title> <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>
<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> <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
<body class="wy-body-for-nav"> </head><body>
<div class="wy-grid-for-nav"> <div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<nav data-toggle="wy-nav-shift" class="wy-nav-side"> <div class="body" role="main">
<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 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="#module-core.controller.actor_controller">ActorController</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>
</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>
@ -158,197 +39,13 @@
<h2>Architecture<a class="headerlink" href="#architecture" title="Permalink to this headline"></a></h2> <h2>Architecture<a class="headerlink" href="#architecture" title="Permalink to this headline"></a></h2>
<a class="reference internal image-reference" href="_images/picture.jpeg"><img alt="_images/picture.jpeg" src="_images/picture.jpeg" style="width: 512.0px; height: 326.5px;" /></a> <a class="reference internal image-reference" href="_images/picture.jpeg"><img alt="_images/picture.jpeg" src="_images/picture.jpeg" style="width: 512.0px; height: 326.5px;" /></a>
</div> </div>
<div class="section" id="module-core.controller.actor_controller"> <div class="section" id="actorcontroller">
<span id="actorcontroller"></span><h2>ActorController<a class="headerlink" href="#module-core.controller.actor_controller" title="Permalink to this headline"></a></h2> <h2>ActorController<a class="headerlink" href="#actorcontroller" title="Permalink to this headline"></a></h2>
<dl class="class"> <dl class="class">
<dt id="core.controller.actor_controller.ActorController"> <dt id="core.controller.actor_controller.ActorController">
<em class="property">class </em><code class="descclassname">core.controller.actor_controller.</code><code class="descname">ActorController</code><span class="sig-paren">(</span><em>cbpi</em><span class="sig-paren">)</span><a class="headerlink" href="#core.controller.actor_controller.ActorController" title="Permalink to this definition"></a></dt> <em class="property">class </em><code class="descclassname">core.controller.actor_controller.</code><code class="descname">ActorController</code><span class="sig-paren">(</span><em>cbpi</em><span class="sig-paren">)</span><a class="headerlink" href="#core.controller.actor_controller.ActorController" title="Permalink to this definition"></a></dt>
<dd><p>The main actor controller</p> <dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">core.controller.actor_controller.ActorHttp</span></code>, <code class="xref py py-class docutils literal notranslate"><span class="pre">core.controller.crud_controller.CRUDController</span></code></p>
<dl class="method"> <p>The main actor controller</p>
<dt id="core.controller.actor_controller.ActorController.get_all">
<code class="descname">get_all</code><span class="sig-paren">(</span><em>force_db_update=False</em><span class="sig-paren">)</span><a class="headerlink" href="#core.controller.actor_controller.ActorController.get_all" title="Permalink to this definition"></a></dt>
<dd><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>force_db_update</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.actor_controller.ActorController.http_add">
<code class="descname">http_add</code><span class="sig-paren">(</span><em>request</em><span class="sig-paren">)</span><a class="headerlink" href="#core.controller.actor_controller.ActorController.http_add" title="Permalink to this definition"></a></dt>
<dd><p>
description: This end-point allow to test that service is up.
tags:
- REST API
produces:
- application/json
responses:</p>
<blockquote>
<div><dl class="docutils">
<dt>“200”:</dt>
<dd>description: successful operation. Return “pong” text</dd>
<dt>“405”:</dt>
<dd>description: invalid HTTP Method</dd>
</dl>
</div></blockquote>
</dd></dl>
<dl class="method">
<dt id="core.controller.actor_controller.ActorController.http_delete_one">
<code class="descname">http_delete_one</code><span class="sig-paren">(</span><em>request</em><span class="sig-paren">)</span><a class="headerlink" href="#core.controller.actor_controller.ActorController.http_delete_one" title="Permalink to this definition"></a></dt>
<dd><p>
description: This end-point allow to test that service is up.
tags:
- REST API
produces:
- text/plain
responses:</p>
<blockquote>
<div><dl class="docutils">
<dt>“200”:</dt>
<dd>description: successful operation. Return “pong” text</dd>
<dt>“405”:</dt>
<dd>description: invalid HTTP Method</dd>
</dl>
</div></blockquote>
</dd></dl>
<dl class="method">
<dt id="core.controller.actor_controller.ActorController.http_get_all">
<code class="descname">http_get_all</code><span class="sig-paren">(</span><em>request</em><span class="sig-paren">)</span><a class="headerlink" href="#core.controller.actor_controller.ActorController.http_get_all" title="Permalink to this definition"></a></dt>
<dd><p>test</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.actor_controller.ActorController.http_get_one">
<code class="descname">http_get_one</code><span class="sig-paren">(</span><em>request</em><span class="sig-paren">)</span><a class="headerlink" href="#core.controller.actor_controller.ActorController.http_get_one" title="Permalink to this definition"></a></dt>
<dd><p>
description: This end-point allow to test that service is up.
tags:
- REST API
produces:
- application/json
parameters:
- name: “id”</p>
<blockquote>
<div>in: “path”
description: “ID of object to return”
required: true
type: “integer”
format: “int64”</div></blockquote>
<dl class="docutils">
<dt>responses:</dt>
<dd><dl class="first last docutils">
<dt>“200”:</dt>
<dd>description: successful operation. Return “pong” text</dd>
<dt>“405”:</dt>
<dd>description: invalid HTTP Method</dd>
</dl>
</dd>
</dl>
</dd></dl>
<dl class="method">
<dt id="core.controller.actor_controller.ActorController.http_off">
<code class="descname">http_off</code><span class="sig-paren">(</span><em>request</em><span class="sig-paren">)</span> &#x2192; aiohttp.web_response.Response<a class="headerlink" href="#core.controller.actor_controller.ActorController.http_off" title="Permalink to this definition"></a></dt>
<dd><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.actor_controller.ActorController.http_on">
<code class="descname">http_on</code><span class="sig-paren">(</span><em>request</em><span class="sig-paren">)</span> &#x2192; aiohttp.web_response.Response<a class="headerlink" href="#core.controller.actor_controller.ActorController.http_on" title="Permalink to this definition"></a></dt>
<dd><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.actor_controller.ActorController.http_toggle">
<code class="descname">http_toggle</code><span class="sig-paren">(</span><em>request</em><span class="sig-paren">)</span> &#x2192; aiohttp.web_response.Response<a class="headerlink" href="#core.controller.actor_controller.ActorController.http_toggle" title="Permalink to this definition"></a></dt>
<dd><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.actor_controller.ActorController.http_update">
<code class="descname">http_update</code><span class="sig-paren">(</span><em>request</em><span class="sig-paren">)</span><a class="headerlink" href="#core.controller.actor_controller.ActorController.http_update" title="Permalink to this definition"></a></dt>
<dd><p>
description: This end-point allow to test that service is up.
tags:
- REST API
produces:
- application/json
parameters:
- in: body</p>
<blockquote>
<div><p>name: body
description: Created user object
required: false
schema:</p>
<blockquote>
<div><p>type: object
properties:</p>
<blockquote>
<div><dl class="docutils">
<dt>id:</dt>
<dd>type: integer
format: int64</dd>
</dl>
</div></blockquote>
</div></blockquote>
</div></blockquote>
<dl class="docutils">
<dt>responses:</dt>
<dd><dl class="first last docutils">
<dt>“200”:</dt>
<dd>description: successful operation. Return “pong” text</dd>
<dt>“405”:</dt>
<dd>description: invalid HTTP Method</dd>
</dl>
</dd>
</dl>
</dd></dl>
<dl class="method"> <dl class="method">
<dt id="core.controller.actor_controller.ActorController.init"> <dt id="core.controller.actor_controller.ActorController.init">
<code class="descname">init</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#core.controller.actor_controller.ActorController.init" title="Permalink to this definition"></a></dt> <code class="descname">init</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#core.controller.actor_controller.ActorController.init" title="Permalink to this definition"></a></dt>
@ -363,6 +60,12 @@ format: int64</dd>
</table> </table>
</dd></dl> </dd></dl>
<dl class="attribute">
<dt id="core.controller.actor_controller.ActorController.model">
<code class="descname">model</code><a class="headerlink" href="#core.controller.actor_controller.ActorController.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.ActorModel</span></code></p>
</dd></dl>
<dl class="method"> <dl class="method">
<dt id="core.controller.actor_controller.ActorController.off"> <dt id="core.controller.actor_controller.ActorController.off">
<code class="descname">off</code><span class="sig-paren">(</span><em>id</em>, <em>**kwargs</em><span class="sig-paren">)</span> &#x2192; None<a class="headerlink" href="#core.controller.actor_controller.ActorController.off" title="Permalink to this definition"></a></dt> <code class="descname">off</code><span class="sig-paren">(</span><em>id</em>, <em>**kwargs</em><span class="sig-paren">)</span> &#x2192; None<a class="headerlink" href="#core.controller.actor_controller.ActorController.off" title="Permalink to this definition"></a></dt>
@ -373,7 +76,7 @@ Supporting Event Topic “actor/+/off”</p>
<col class="field-body" /> <col class="field-body" />
<tbody valign="top"> <tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple"> <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first last simple">
<li><strong>id</strong> </li> <li><strong>id</strong> the actor id</li>
<li><strong>kwargs</strong> </li> <li><strong>kwargs</strong> </li>
</ul> </ul>
</td> </td>
@ -392,7 +95,7 @@ Supporting Event Topic “actor/+/on”</p>
<col class="field-body" /> <col class="field-body" />
<tbody valign="top"> <tbody valign="top">
<tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple"> <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
<li><strong>id</strong> the actor id</li> <li><strong>actor_id</strong> the actor id</li>
<li><strong>power</strong> as integer value between 1 and 100</li> <li><strong>power</strong> as integer value between 1 and 100</li>
<li><strong>kwargs</strong> </li> <li><strong>kwargs</strong> </li>
</ul> </ul>
@ -405,6 +108,11 @@ Supporting Event Topic “actor/+/on”</p>
</table> </table>
</dd></dl> </dd></dl>
<dl class="method">
<dt id="core.controller.actor_controller.ActorController.register">
<code class="descname">register</code><span class="sig-paren">(</span><em>name</em>, <em>clazz</em><span class="sig-paren">)</span> &#x2192; None<a class="headerlink" href="#core.controller.actor_controller.ActorController.register" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method"> <dl class="method">
<dt id="core.controller.actor_controller.ActorController.toggle"> <dt id="core.controller.actor_controller.ActorController.toggle">
<code class="descname">toggle</code><span class="sig-paren">(</span><em>id</em>, <em>power=100</em>, <em>**kwargs</em><span class="sig-paren">)</span> &#x2192; None<a class="headerlink" href="#core.controller.actor_controller.ActorController.toggle" title="Permalink to this definition"></a></dt> <code class="descname">toggle</code><span class="sig-paren">(</span><em>id</em>, <em>power=100</em>, <em>**kwargs</em><span class="sig-paren">)</span> &#x2192; None<a class="headerlink" href="#core.controller.actor_controller.ActorController.toggle" title="Permalink to this definition"></a></dt>
@ -414,9 +122,67 @@ Supporting Event Topic “actor/+/toggle”</p>
<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">Parameters:</th><td class="field-body"><strong>power</strong> </td> <tr class="field-odd field"><th class="field-name">Parameters:</th><td class="field-body"><ul class="first simple">
<li><strong>id</strong> the actor id</li>
<li><strong>power</strong> the power as interger between 0 and 100</li>
</ul>
</td>
</tr> </tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"></td> <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>
</dd></dl>
</div>
<div class="section" id="cbpiactor">
<h2>CBPiActor<a class="headerlink" href="#cbpiactor" title="Permalink to this headline"></a></h2>
<dl class="class">
<dt id="core.api.actor.CBPiActor">
<em class="property">class </em><code class="descclassname">core.api.actor.</code><code class="descname">CBPiActor</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwds</em><span class="sig-paren">)</span><a class="headerlink" href="#core.api.actor.CBPiActor" 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.actor.CBPiActor.off">
<code class="descname">off</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#core.api.actor.CBPiActor.off" title="Permalink to this definition"></a></dt>
<dd><p>Code to switch the actor off</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">
<dt id="core.api.actor.CBPiActor.on">
<code class="descname">on</code><span class="sig-paren">(</span><em>power</em><span class="sig-paren">)</span><a class="headerlink" href="#core.api.actor.CBPiActor.on" title="Permalink to this definition"></a></dt>
<dd><p>Code to switch the actor on. Power is provided as integer 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">Parameters:</th><td class="field-body"><strong>power</strong> power value between 0 and 100</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.api.actor.CBPiActor.state">
<code class="descname">state</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#core.api.actor.CBPiActor.state" title="Permalink to this definition"></a></dt>
<dd><p>Return the current actor state</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> </tr>
</tbody> </tbody>
</table> </table>
@ -473,35 +239,16 @@ Supporting Event Topic “actor/+/toggle”</p>
42 42
43 43
44 44
45 45</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">logging</span>
46
47
48
49
50
51
52
53
54
55
56
57
58
59</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="p">,</span> <span class="n">background_task</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="k">class</span> <span class="nc">CustomActor</span><span class="p">(</span><span class="n">CBPiActor</span><span class="p">):</span>
<span class="n">name</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="c1"># Custom property which can be configured by the user</span>
<span class="n">name1</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">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="n">name2</span> <span class="o">=</span> <span class="n">Property</span><span class="o">.</span><span class="n">Kettle</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">@background_task</span><span class="p">(</span><span class="s2">&quot;s1&quot;</span><span class="p">,</span> <span class="n">interval</span><span class="o">=</span><span class="mi">2</span><span class="p">)</span>
<span class="n">async</span> <span class="k">def</span> <span class="nf">bg_job</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;WOOH BG&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="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">def</span> <span class="nf">myAction</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
@ -511,29 +258,20 @@ Supporting Event Topic “actor/+/toggle”</p>
<span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">state</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">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="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="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">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="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">state</span> <span class="o">=</span> <span class="bp">True</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="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">cbpi</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
<span class="k">if</span> <span class="n">cbpi</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
<span class="k">return</span>
<span class="k">print</span><span class="p">(</span><span class="s2">&quot;INIT MY ACTOR111111&quot;</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">cfg</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">load_config</span><span class="p">()</span>
<span class="bp">self</span><span class="o">.</span><span class="n">logger</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="vm">__file__</span><span class="p">)</span>
<span class="n">logging</span><span class="o">.</span><span class="n">basicConfig</span><span class="p">(</span><span class="n">level</span><span class="o">=</span><span class="n">logging</span><span class="o">.</span><span class="n">INFO</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">logger</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">&quot;########WOOHOO MY ACTOR&quot;</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">cbpi</span> <span class="o">=</span> <span class="n">cbpi</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="k">def</span> <span class="nf">setup</span><span class="p">(</span><span class="n">cbpi</span><span class="p">):</span>
@ -551,7 +289,7 @@ Supporting Event Topic “actor/+/toggle”</p>
</div> </div>
<p>config.yaml</p> <p>config.yaml</p>
<div class="highlight-yaml notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1 <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">Manuel</span> 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">DummyActor</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> <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> </pre></div>
</td></tr></table></div> </td></tr></table></div>
@ -559,39 +297,13 @@ 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">
</section> <div class="sphinxsidebarwrapper">
<h1 class="logo"><a href="index.html">CraftBeerPi</a></h1>
</div>
@ -599,21 +311,71 @@ Supporting Event Topic “actor/+/toggle”</p>
<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> <h3>Navigation</h3>
<script type="text/javascript" src="_static/underscore.js"></script> <ul class="current">
<script type="text/javascript" src="_static/doctools.js"></script> <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 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,190 +1,50 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml">
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> <head>
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta charset="utf-8"> <title>Core &#8212; CraftBeerPi 4.0 documentation</title>
<link rel="stylesheet" href="_static/alabaster.css" type="text/css" />
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <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>
<title>Core &mdash; CraftBeerPi 4.0 documentation</title> <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>
<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> <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
<body class="wy-body-for-nav"> </head><body>
<div class="wy-grid-for-nav"> <div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<nav data-toggle="wy-nav-shift" class="wy-nav-side"> <div class="body" role="main">
<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 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>
</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">
</section> <div class="sphinxsidebarwrapper">
<h1 class="logo"><a href="index.html">CraftBeerPi</a></h1>
</div>
@ -192,21 +52,64 @@
<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> <h3>Navigation</h3>
<script type="text/javascript" src="_static/underscore.js"></script> <ul class="current">
<script type="text/javascript" src="_static/doctools.js"></script> <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="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,166 +1,88 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml">
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> <head>
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta charset="utf-8"> <title>Index &#8212; CraftBeerPi 4.0 documentation</title>
<link rel="stylesheet" href="_static/alabaster.css" type="text/css" />
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <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>
<title>Index &mdash; CraftBeerPi 4.0 documentation</title> <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>
<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> <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
<body class="wy-body-for-nav"> </head><body>
<div class="wy-grid-for-nav"> <div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<nav data-toggle="wy-nav-shift" class="wy-nav-side"> <div class="body" role="main">
<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>
</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>
<div class="genindex-jumpbox"> <div class="genindex-jumpbox">
<a href="#A"><strong>A</strong></a> <a href="#_"><strong>_</strong></a>
| <a href="#A"><strong>A</strong></a>
| <a href="#C"><strong>C</strong></a> | <a href="#C"><strong>C</strong></a>
| <a href="#G"><strong>G</strong></a> | <a href="#G"><strong>G</strong></a>
| <a href="#H"><strong>H</strong></a> | <a href="#H"><strong>H</strong></a>
| <a href="#I"><strong>I</strong></a> | <a href="#I"><strong>I</strong></a>
| <a href="#J"><strong>J</strong></a>
| <a href="#K"><strong>K</strong></a>
| <a href="#M"><strong>M</strong></a>
| <a href="#N"><strong>N</strong></a>
| <a href="#O"><strong>O</strong></a> | <a href="#O"><strong>O</strong></a>
| <a href="#P"><strong>P</strong></a>
| <a href="#R"><strong>R</strong></a>
| <a href="#S"><strong>S</strong></a>
| <a href="#T"><strong>T</strong></a> | <a href="#T"><strong>T</strong></a>
</div> </div>
<h2 id="_">_</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<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>
</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>
</ul></td>
</tr></table>
<h2 id="A">A</h2> <h2 id="A">A</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="actor.html#core.controller.actor_controller.ActorController">ActorController (class in core.controller.actor_controller)</a> <li><a href="actor.html#core.controller.actor_controller.ActorController">ActorController (class in core.controller.actor_controller)</a>
</li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="kettle_controller.html#core.controller.kettle_controller.KettleController.agitator_off">agitator_off() (core.controller.kettle_controller.KettleController method)</a>
</li>
<li><a href="kettle_controller.html#core.controller.kettle_controller.KettleController.agitator_on">agitator_on() (core.controller.kettle_controller.KettleController method)</a>
</li> </li>
</ul></td> </ul></td>
</tr></table> </tr></table>
@ -168,10 +90,12 @@
<h2 id="C">C</h2> <h2 id="C">C</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="actor.html#module-core.controller.actor_controller">core.controller.actor_controller (module)</a> <li><a href="actor.html#core.api.actor.CBPiActor">CBPiActor (class in core.api.actor)</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.api.kettle_logic.CBPiKettleLogic">CBPiKettleLogic (class in core.api.kettle_logic)</a>
</li>
<li><a href="sensor.html#module-core.controller.sensor_controller">core.controller.sensor_controller (module)</a> <li><a href="sensor.html#module-core.controller.sensor_controller">core.controller.sensor_controller (module)</a>
</li> </li>
</ul></td> </ul></td>
@ -180,7 +104,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="actor.html#core.controller.actor_controller.ActorController.get_all">get_all() (core.controller.actor_controller.ActorController method)</a> <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>
</ul></td>
<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> </li>
</ul></td> </ul></td>
</tr></table> </tr></table>
@ -188,23 +118,31 @@
<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="actor.html#core.controller.actor_controller.ActorController.http_add">http_add() (core.controller.actor_controller.ActorController method)</a> <li><a href="step.html#core.controller.step_controller.StepController.handle">handle() (core.controller.step_controller.StepController method)</a>
</li> </li>
<li><a href="actor.html#core.controller.actor_controller.ActorController.http_delete_one">http_delete_one() (core.controller.actor_controller.ActorController 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="actor.html#core.controller.actor_controller.ActorController.http_get_all">http_get_all() (core.controller.actor_controller.ActorController 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>
<li><a href="actor.html#core.controller.actor_controller.ActorController.http_get_one">http_get_one() (core.controller.actor_controller.ActorController 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><a href="step.html#core.controller.step_controller.StepController.handle_reset">handle_reset() (core.controller.step_controller.StepController method)</a>
</li>
<li><a href="step.html#core.controller.step_controller.StepController.handle_start">handle_start() (core.controller.step_controller.StepController 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="actor.html#core.controller.actor_controller.ActorController.http_off">http_off() (core.controller.actor_controller.ActorController method)</a> <li><a href="step.html#core.controller.step_controller.StepController.handle_stop">handle_stop() (core.controller.step_controller.StepController method)</a>
</li> </li>
<li><a href="actor.html#core.controller.actor_controller.ActorController.http_on">http_on() (core.controller.actor_controller.ActorController method)</a> <li><a href="kettle_controller.html#core.controller.kettle_controller.KettleController.heater_off">heater_off() (core.controller.kettle_controller.KettleController method)</a>
</li> </li>
<li><a href="actor.html#core.controller.actor_controller.ActorController.http_toggle">http_toggle() (core.controller.actor_controller.ActorController 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="actor.html#core.controller.actor_controller.ActorController.http_update">http_update() (core.controller.actor_controller.ActorController 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_reset">http_reset() (core.controller.step_controller.StepController method)</a>
</li>
<li><a href="step.html#core.controller.step_controller.StepController.http_start">http_start() (core.controller.step_controller.StepController method)</a>
</li> </li>
</ul></td> </ul></td>
</tr></table> </tr></table>
@ -212,7 +150,59 @@
<h2 id="I">I</h2> <h2 id="I">I</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="actor.html#core.controller.actor_controller.ActorController.init">init() (core.controller.actor_controller.ActorController method)</a> <li><a href="kettle_controller.html#core.api.kettle_logic.CBPiKettleLogic.init">init() (core.api.kettle_logic.CBPiKettleLogic method)</a>
<ul>
<li><a href="actor.html#core.controller.actor_controller.ActorController.init">(core.controller.actor_controller.ActorController method)</a>
</li>
<li><a href="kettle_controller.html#core.controller.kettle_controller.KettleController.init">(core.controller.kettle_controller.KettleController method)</a>
</li>
<li><a href="step.html#core.controller.step_controller.StepController.init">(core.controller.step_controller.StepController method)</a>
</li>
</ul></li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="step.html#core.api.step.SimpleStep.is_dirty">is_dirty() (core.api.step.SimpleStep method)</a>
</li>
</ul></td>
</tr></table>
<h2 id="J">J</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="kettle_controller.html#core.controller.kettle_controller.KettleController.job_stop">job_stop() (core.controller.kettle_controller.KettleController method)</a>
</li>
</ul></td>
</tr></table>
<h2 id="K">K</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="kettle_controller.html#core.controller.kettle_controller.KettleController">KettleController (class in core.controller.kettle_controller)</a>
</li>
</ul></td>
</tr></table>
<h2 id="M">M</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="step.html#core.api.step.SimpleStep.managed_fields">managed_fields (core.api.step.SimpleStep attribute)</a>
</li>
<li><a href="actor.html#core.controller.actor_controller.ActorController.model">model (core.controller.actor_controller.ActorController attribute)</a>
<ul>
<li><a href="kettle_controller.html#core.controller.kettle_controller.KettleController.model">(core.controller.kettle_controller.KettleController attribute)</a>
</li>
<li><a href="step.html#core.controller.step_controller.StepController.model">(core.controller.step_controller.StepController attribute)</a>
</li>
</ul></li>
</ul></td>
</tr></table>
<h2 id="N">N</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="step.html#core.api.step.SimpleStep.next">next() (core.api.step.SimpleStep method)</a>
</li> </li>
</ul></td> </ul></td>
</tr></table> </tr></table>
@ -220,12 +210,90 @@
<h2 id="O">O</h2> <h2 id="O">O</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="actor.html#core.controller.actor_controller.ActorController.off">off() (core.controller.actor_controller.ActorController method)</a> <li><a href="actor.html#core.api.actor.CBPiActor.off">off() (core.api.actor.CBPiActor method)</a>
<ul>
<li><a href="actor.html#core.controller.actor_controller.ActorController.off">(core.controller.actor_controller.ActorController method)</a>
</li>
</ul></li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="actor.html#core.api.actor.CBPiActor.on">on() (core.api.actor.CBPiActor method)</a>
<ul>
<li><a href="actor.html#core.controller.actor_controller.ActorController.on">(core.controller.actor_controller.ActorController method)</a>
</li>
</ul></li>
</ul></td>
</tr></table>
<h2 id="P">P</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="properties.html#core.api.property.Property">Property (class in core.api.property)</a>
</li>
<li><a href="properties.html#core.api.property.Property.Actor">Property.Actor (class in core.api.property)</a>
</li>
<li><a href="properties.html#core.api.property.Property.Kettle">Property.Kettle (class in core.api.property)</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="actor.html#core.controller.actor_controller.ActorController.on">on() (core.controller.actor_controller.ActorController method)</a> <li><a href="properties.html#core.api.property.Property.Number">Property.Number (class in core.api.property)</a>
</li> </li>
<li><a href="properties.html#core.api.property.Property.Select">Property.Select (class in core.api.property)</a>
</li>
<li><a href="properties.html#core.api.property.Property.Sensor">Property.Sensor (class in core.api.property)</a>
</li>
<li><a href="properties.html#core.api.property.Property.Text">Property.Text (class in core.api.property)</a>
</li>
</ul></td>
</tr></table>
<h2 id="R">R</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="actor.html#core.controller.actor_controller.ActorController.register">register() (core.controller.actor_controller.ActorController method)</a>
</li>
<li><a href="step.html#core.api.step.SimpleStep.reset">reset() (core.api.step.SimpleStep method)</a>
</li>
<li><a href="step.html#core.api.step.SimpleStep.reset_dirty">reset_dirty() (core.api.step.SimpleStep method)</a>
</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>
<ul>
<li><a href="step.html#core.api.step.SimpleStep.run">(core.api.step.SimpleStep method)</a>
</li>
</ul></li>
<li><a href="step.html#core.api.step.SimpleStep.run_cycle">run_cycle() (core.api.step.SimpleStep method)</a>
</li>
<li><a href="step.html#core.api.step.SimpleStep.running">running() (core.api.step.SimpleStep method)</a>
</li>
</ul></td>
</tr></table>
<h2 id="S">S</h2>
<table style="width: 100%" class="indextable genindextable"><tr>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="step.html#core.api.step.SimpleStep">SimpleStep (class in core.api.step)</a>
</li>
<li><a href="step.html#core.controller.step_controller.StepController.start">start() (core.controller.step_controller.StepController method)</a>
</li>
<li><a href="actor.html#core.api.actor.CBPiActor.state">state() (core.api.actor.CBPiActor method)</a>
</li>
</ul></td>
<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>
<li><a href="kettle_controller.html#core.api.kettle_logic.CBPiKettleLogic.stop">stop() (core.api.kettle_logic.CBPiKettleLogic method)</a>
<ul>
<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>
</ul></li>
</ul></td> </ul></td>
</tr></table> </tr></table>
@ -233,36 +301,23 @@
<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="actor.html#core.controller.actor_controller.ActorController.toggle">toggle() (core.controller.actor_controller.ActorController method)</a> <li><a href="actor.html#core.controller.actor_controller.ActorController.toggle">toggle() (core.controller.actor_controller.ActorController method)</a>
</li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="kettle_controller.html#core.controller.kettle_controller.KettleController.toggle_automtic">toggle_automtic() (core.controller.kettle_controller.KettleController method)</a>
</li> </li>
</ul></td> </ul></td>
</tr></table> </tr></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">
</section> <div class="sphinxsidebarwrapper">
<h1 class="logo"><a href="index.html">CraftBeerPi</a></h1>
</div>
@ -270,21 +325,60 @@
<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> <h3>Navigation</h3>
<script type="text/javascript" src="_static/underscore.js"></script> <ul>
<script type="text/javascript" src="_static/doctools.js"></script> <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 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,150 +1,36 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml">
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> <head>
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta charset="utf-8"> <title>Welcome to CraftBeerPis documentation! &#8212; CraftBeerPi 4.0 documentation</title>
<link rel="stylesheet" href="_static/alabaster.css" type="text/css" />
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <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>
<title>Welcome to CraftBeerPis documentation! &mdash; CraftBeerPi 4.0 documentation</title> <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>
<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> <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
<body class="wy-body-for-nav"> </head><body>
<div class="wy-grid-for-nav"> <div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<nav data-toggle="wy-nav-shift" class="wy-nav-side"> <div class="body" role="main">
<div class="wy-side-scroll">
<div class="wy-side-nav-search">
<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>
</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>
@ -154,7 +40,8 @@
<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><ul> <li class="toctree-l1"><a class="reference internal" href="actor.html">Actor</a><ul>
<li class="toctree-l2"><a class="reference internal" href="actor.html#architecture">Architecture</a></li> <li class="toctree-l2"><a class="reference internal" href="actor.html#architecture">Architecture</a></li>
<li class="toctree-l2"><a class="reference internal" href="actor.html#module-core.controller.actor_controller">ActorController</a></li> <li class="toctree-l2"><a class="reference internal" href="actor.html#actorcontroller">ActorController</a></li>
<li class="toctree-l2"><a class="reference internal" href="actor.html#cbpiactor">CBPiActor</a></li>
<li class="toctree-l2"><a class="reference internal" href="actor.html#custom-actor">Custom Actor</a></li> <li class="toctree-l2"><a class="reference internal" href="actor.html#custom-actor">Custom Actor</a></li>
</ul> </ul>
</li> </li>
@ -164,42 +51,31 @@
<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>
<li class="toctree-l1"><a class="reference internal" href="step.html">Brewing Step</a><ul>
<li class="toctree-l2"><a class="reference internal" href="step.html#stepcontroller">StepController</a></li>
<li class="toctree-l2"><a class="reference internal" href="step.html#simplestep">SimpleStep</a></li>
<li class="toctree-l2"><a class="reference internal" href="step.html#custom-step">Custom Step</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="kettle_controller.html">Kettle</a><ul>
<li class="toctree-l2"><a class="reference internal" href="kettle_controller.html#kettlecontroller">KettleController</a></li>
<li class="toctree-l2"><a class="reference internal" href="kettle_controller.html#cbpikettlelogic">CBPiKettleLogic</a></li>
<li class="toctree-l2"><a class="reference internal" href="kettle_controller.html#custom-logic">Custom Logic</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="properties.html">Properties</a></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">
</section> <div class="sphinxsidebarwrapper">
<h1 class="logo"><a href="#">CraftBeerPi</a></h1>
</div>
@ -207,21 +83,64 @@
<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> <h3>Navigation</h3>
<script type="text/javascript" src="_static/underscore.js"></script> <ul>
<script type="text/javascript" src="_static/doctools.js"></script> <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 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,151 +1,37 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml">
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> <head>
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta charset="utf-8"> <title>Installation &#8212; CraftBeerPi 4.0 documentation</title>
<link rel="stylesheet" href="_static/alabaster.css" type="text/css" />
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <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>
<title>Installation &mdash; CraftBeerPi 4.0 documentation</title> <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>
<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> <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
<body class="wy-body-for-nav"> </head><body>
<div class="wy-grid-for-nav"> <div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<nav data-toggle="wy-nav-shift" class="wy-nav-side"> <div class="body" role="main">
<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 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>
</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>
@ -160,39 +46,13 @@
</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">
</section> <div class="sphinxsidebarwrapper">
<h1 class="logo"><a href="index.html">CraftBeerPi</a></h1>
</div>
@ -200,21 +60,64 @@
<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> <h3>Navigation</h3>
<script type="text/javascript" src="_static/underscore.js"></script> <ul class="current">
<script type="text/javascript" src="_static/doctools.js"></script> <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="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>

488
docs/kettle_controller.html Normal file
View file

@ -0,0 +1,488 @@
<!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">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Kettle &#8212; CraftBeerPi 4.0 documentation</title>
<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>
<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>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="Properties" href="properties.html" />
<link rel="prev" title="Brewing Step" href="step.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>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<div class="section" id="kettle">
<h1>Kettle<a class="headerlink" href="#kettle" title="Permalink to this headline"></a></h1>
<div class="section" id="kettlecontroller">
<h2>KettleController<a class="headerlink" href="#kettlecontroller" title="Permalink to this headline"></a></h2>
<dl class="class">
<dt id="core.controller.kettle_controller.KettleController">
<em class="property">class </em><code class="descclassname">core.controller.kettle_controller.</code><code class="descname">KettleController</code><span class="sig-paren">(</span><em>cbpi</em><span class="sig-paren">)</span><a class="headerlink" href="#core.controller.kettle_controller.KettleController" 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></p>
<p>The main kettle controller</p>
<dl class="method">
<dt id="core.controller.kettle_controller.KettleController._is_logic_running">
<code class="descname">_is_logic_running</code><span class="sig-paren">(</span><em>kettle_id</em><span class="sig-paren">)</span><a class="headerlink" href="#core.controller.kettle_controller.KettleController._is_logic_running" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="core.controller.kettle_controller.KettleController.agitator_off">
<code class="descname">agitator_off</code><span class="sig-paren">(</span><em>id</em><span class="sig-paren">)</span><a class="headerlink" href="#core.controller.kettle_controller.KettleController.agitator_off" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="core.controller.kettle_controller.KettleController.agitator_on">
<code class="descname">agitator_on</code><span class="sig-paren">(</span><em>id</em><span class="sig-paren">)</span><a class="headerlink" href="#core.controller.kettle_controller.KettleController.agitator_on" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="core.controller.kettle_controller.KettleController.get_temp">
<code class="descname">get_temp</code><span class="sig-paren">(</span><em>id</em><span class="sig-paren">)</span><a class="headerlink" href="#core.controller.kettle_controller.KettleController.get_temp" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="core.controller.kettle_controller.KettleController.get_traget_temp">
<code class="descname">get_traget_temp</code><span class="sig-paren">(</span><em>id</em><span class="sig-paren">)</span><a class="headerlink" href="#core.controller.kettle_controller.KettleController.get_traget_temp" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<dt id="core.controller.kettle_controller.KettleController.handle_automtic_event">
<code class="descname">handle_automtic_event</code><span class="sig-paren">(</span><em>id</em>, <em>**kwargs</em><span class="sig-paren">)</span><a class="headerlink" href="#core.controller.kettle_controller.KettleController.handle_automtic_event" title="Permalink to this definition"></a></dt>
<dd><p>Method to handle the event kettle/+/automatic</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>id</strong> The kettle id</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>
</tbody>
</table>
</dd></dl>
<dl class="method">
<dt id="core.controller.kettle_controller.KettleController.heater_off">
<code class="descname">heater_off</code><span class="sig-paren">(</span><em>id</em><span class="sig-paren">)</span><a class="headerlink" href="#core.controller.kettle_controller.KettleController.heater_off" title="Permalink to this definition"></a></dt>
<dd><p>Convenience Method to switch the heater of a kettle off</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>id</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.kettle_controller.KettleController.heater_on">
<code class="descname">heater_on</code><span class="sig-paren">(</span><em>id</em><span class="sig-paren">)</span><a class="headerlink" href="#core.controller.kettle_controller.KettleController.heater_on" title="Permalink to this definition"></a></dt>
<dd><p>Convenience Method to switch the heater of a kettle on</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>id</strong> the kettle id</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">(boolean, string)</td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="method">
<dt id="core.controller.kettle_controller.KettleController.init">
<code class="descname">init</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#core.controller.kettle_controller.KettleController.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="method">
<dt id="core.controller.kettle_controller.KettleController.job_stop">
<code class="descname">job_stop</code><span class="sig-paren">(</span><em>key</em>, <em>**kwargs</em><span class="sig-paren">)</span> &#x2192; None<a class="headerlink" href="#core.controller.kettle_controller.KettleController.job_stop" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="attribute">
<dt id="core.controller.kettle_controller.KettleController.model">
<code class="descname">model</code><a class="headerlink" href="#core.controller.kettle_controller.KettleController.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.KettleModel</span></code></p>
</dd></dl>
<dl class="method">
<dt id="core.controller.kettle_controller.KettleController.toggle_automtic">
<code class="descname">toggle_automtic</code><span class="sig-paren">(</span><em>id</em><span class="sig-paren">)</span><a class="headerlink" href="#core.controller.kettle_controller.KettleController.toggle_automtic" title="Permalink to this definition"></a></dt>
<dd><p>Convenience Method to toggle automatic</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>id</strong> kettle id as int</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body">(boolean, string)</td>
</tr>
</tbody>
</table>
</dd></dl>
</dd></dl>
</div>
<div class="section" id="cbpikettlelogic">
<h2>CBPiKettleLogic<a class="headerlink" href="#cbpikettlelogic" title="Permalink to this headline"></a></h2>
<dl class="class">
<dt id="core.api.kettle_logic.CBPiKettleLogic">
<em class="property">class </em><code class="descclassname">core.api.kettle_logic.</code><code class="descname">CBPiKettleLogic</code><span class="sig-paren">(</span><em>*args</em>, <em>**kwds</em><span class="sig-paren">)</span><a class="headerlink" href="#core.api.kettle_logic.CBPiKettleLogic" 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>
<p>Base Class for a Kettle logic.</p>
<dl class="method">
<dt id="core.api.kettle_logic.CBPiKettleLogic.init">
<code class="descname">init</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#core.api.kettle_logic.CBPiKettleLogic.init" title="Permalink to this definition"></a></dt>
<dd><p>Code which will be executed when the logic is initialised. Needs to be overwritten by the implementing logic</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">
<dt id="core.api.kettle_logic.CBPiKettleLogic.run">
<code class="descname">run</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#core.api.kettle_logic.CBPiKettleLogic.run" title="Permalink to this definition"></a></dt>
<dd><p>This method is running as background process when logic is started.
Typically a while loop responsible that the method keeps running</p>
<blockquote>
<div><dl class="docutils">
<dt>while self.running:</dt>
<dd>await asyncio.sleep(1)</dd>
</dl>
</div></blockquote>
<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">
<dt id="core.api.kettle_logic.CBPiKettleLogic.stop">
<code class="descname">stop</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#core.api.kettle_logic.CBPiKettleLogic.stop" title="Permalink to this definition"></a></dt>
<dd><p>Code which will be executed when the logic is stopped. Needs to be overwritten by the implementing logic</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>
</div>
<div class="section" id="custom-logic">
<h2>Custom Logic<a class="headerlink" href="#custom-logic" 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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83</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">from</span> <span class="nn">core.api</span> <span class="kn">import</span> <span class="n">Property</span><span class="p">,</span> <span class="n">on_event</span>
<span class="kn">from</span> <span class="nn">core.api.kettle_logic</span> <span class="kn">import</span> <span class="n">CBPiKettleLogic</span>
<span class="k">class</span> <span class="nc">CustomLogic</span><span class="p">(</span><span class="n">CBPiKettleLogic</span><span class="p">):</span>
<span class="n">test</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">running</span> <span class="o">=</span> <span class="bp">True</span>
<span class="n">async</span> <span class="k">def</span> <span class="nf">wait_for_event</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">topic</span><span class="p">,</span> <span class="n">callback</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">timeout</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
<span class="n">future_obj</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">cbpi</span><span class="o">.</span><span class="n">app</span><span class="o">.</span><span class="n">loop</span><span class="o">.</span><span class="n">create_future</span><span class="p">()</span>
<span class="n">async</span> <span class="k">def</span> <span class="nf">default_callback</span><span class="p">(</span><span class="nb">id</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
<span class="n">future_obj</span><span class="o">.</span><span class="n">set_result</span><span class="p">(</span><span class="s2">&quot;HELLO&quot;</span><span class="p">)</span>
<span class="k">if</span> <span class="n">callback</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">cbpi</span><span class="o">.</span><span class="n">bus</span><span class="o">.</span><span class="n">register</span><span class="p">(</span><span class="n">topic</span><span class="o">=</span><span class="n">topic</span><span class="p">,</span> <span class="n">method</span><span class="o">=</span><span class="n">default_callback</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">callback</span><span class="o">.</span><span class="n">future</span> <span class="o">=</span> <span class="n">future_obj</span>
<span class="bp">self</span><span class="o">.</span><span class="n">cbpi</span><span class="o">.</span><span class="n">bus</span><span class="o">.</span><span class="n">register</span><span class="p">(</span><span class="n">topic</span><span class="o">=</span><span class="n">topic</span><span class="p">,</span> <span class="n">method</span><span class="o">=</span><span class="n">callback</span><span class="p">)</span>
<span class="k">if</span> <span class="n">timeout</span> <span class="ow">is</span> <span class="ow">not</span> <span class="bp">None</span><span class="p">:</span>
<span class="k">try</span><span class="p">:</span>
<span class="k">print</span><span class="p">(</span><span class="s2">&quot;----&gt; WAIT FOR FUTURE&quot;</span><span class="p">)</span>
<span class="n">await</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">wait_for</span><span class="p">(</span><span class="n">future_obj</span><span class="p">,</span> <span class="n">timeout</span><span class="o">=</span><span class="n">timeout</span><span class="p">)</span>
<span class="k">print</span><span class="p">(</span><span class="s2">&quot;------&gt; TIMEOUT&quot;</span><span class="p">)</span>
<span class="k">return</span> <span class="n">future_obj</span><span class="o">.</span><span class="n">result</span><span class="p">()</span>
<span class="k">except</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">TimeoutError</span><span class="p">:</span>
<span class="k">print</span><span class="p">(</span><span class="s1">&#39;timeout!&#39;</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">print</span><span class="p">(</span><span class="s2">&quot;----&gt; WAIT FOR FUTURE&quot;</span><span class="p">)</span>
<span class="n">await</span> <span class="n">future_obj</span>
<span class="k">return</span> <span class="n">future_obj</span><span class="o">.</span><span class="n">result</span><span class="p">()</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">async</span> <span class="k">def</span> <span class="nf">my_callback</span><span class="p">(</span><span class="n">value</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
<span class="k">if</span> <span class="n">value</span> <span class="o">==</span> <span class="mi">5</span><span class="p">:</span>
<span class="bp">self</span><span class="o">.</span><span class="n">cbpi</span><span class="o">.</span><span class="n">bus</span><span class="o">.</span><span class="n">unregister</span><span class="p">(</span><span class="n">my_callback</span><span class="p">)</span>
<span class="n">kwargs</span><span class="p">[</span><span class="s2">&quot;future&quot;</span><span class="p">]</span><span class="o">.</span><span class="n">set_result</span><span class="p">(</span><span class="s2">&quot;AMAZING&quot;</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">print</span><span class="p">(</span><span class="s2">&quot;OTHER VALUE&quot;</span><span class="p">,</span> <span class="n">value</span><span class="p">)</span>
<span class="n">result</span> <span class="o">=</span> <span class="n">await</span> <span class="bp">self</span><span class="o">.</span><span class="n">wait_for_event</span><span class="p">(</span><span class="s2">&quot;sensor/1&quot;</span><span class="p">,</span> <span class="n">callback</span><span class="o">=</span><span class="n">my_callback</span><span class="p">)</span>
<span class="k">print</span><span class="p">(</span><span class="s2">&quot;THE RESULT&quot;</span><span class="p">,</span> <span class="n">result</span><span class="p">)</span>
<span class="sd">&#39;&#39;&#39;</span>
<span class="sd"> while self.running:</span>
<span class="sd"> </span>
<span class="sd"> </span>
<span class="sd"> print(&quot;RUN&quot;, self.test)</span>
<span class="sd"> value = await self.cbpi.sensor.get_value(1)</span>
<span class="sd"> print(value)</span>
<span class="sd"> if value &gt;= 10:</span>
<span class="sd"> break</span>
<span class="sd"> await asyncio.sleep(1)</span>
<span class="sd"> &#39;&#39;&#39;</span>
<span class="k">print</span><span class="p">(</span><span class="s2">&quot;YES IM FINISHED STOP LOGIC&quot;</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;CustomKettleLogic&quot;</span><span class="p">,</span> <span class="n">CustomLogic</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">DummyKettleLogic</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>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<h1 class="logo"><a href="index.html">CraftBeerPi</a></h1>
<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="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>
</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>

Binary file not shown.

155
docs/properties.html Normal file
View file

@ -0,0 +1,155 @@
<!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">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Properties &#8212; CraftBeerPi 4.0 documentation</title>
<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>
<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>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="prev" title="Kettle" href="kettle_controller.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>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<div class="section" id="properties">
<h1>Properties<a class="headerlink" href="#properties" title="Permalink to this headline"></a></h1>
<dl class="class">
<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>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">object</span></code></p>
<dl class="class">
<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>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">core.api.property.PropertyType</span></code></p>
</dd></dl>
<dl class="class">
<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>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">core.api.property.PropertyType</span></code></p>
</dd></dl>
<dl class="class">
<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>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">core.api.property.PropertyType</span></code></p>
</dd></dl>
<dl class="class">
<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>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">core.api.property.PropertyType</span></code></p>
</dd></dl>
<dl class="class">
<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>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">core.api.property.PropertyType</span></code></p>
</dd></dl>
<dl class="class">
<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>
<dd><p>Bases: <code class="xref py py-class docutils literal notranslate"><span class="pre">core.api.property.PropertyType</span></code></p>
</dd></dl>
</dd></dl>
</div>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<h1 class="logo"><a href="index.html">CraftBeerPi</a></h1>
<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="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>
</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>

View file

@ -1,148 +1,38 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml">
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> <head>
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta charset="utf-8"> <title>Python Module Index &#8212; CraftBeerPi 4.0 documentation</title>
<link rel="stylesheet" href="_static/alabaster.css" type="text/css" />
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <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>
<title>Python Module Index &mdash; CraftBeerPi 4.0 documentation</title> <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>
<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" />
<script src="_static/js/modernizr.min.js"></script>
</head>
<body class="wy-body-for-nav"> </head><body>
<div class="wy-grid-for-nav"> <div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<nav data-toggle="wy-nav-shift" class="wy-nav-side"> <div class="body" role="main">
<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>
</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>
@ -161,11 +51,6 @@
<td> <td>
<code class="xref">core</code></td><td> <code class="xref">core</code></td><td>
<em></em></td></tr> <em></em></td></tr>
<tr class="cg-1">
<td></td>
<td>&#160;&#160;&#160;
<a href="actor.html#module-core.controller.actor_controller"><code class="xref">core.controller.actor_controller</code></a></td><td>
<em></em></td></tr>
<tr class="cg-1"> <tr class="cg-1">
<td></td> <td></td>
<td>&#160;&#160;&#160; <td>&#160;&#160;&#160;
@ -174,30 +59,13 @@
</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">
</section> <div class="sphinxsidebarwrapper">
<h1 class="logo"><a href="index.html">CraftBeerPi</a></h1>
</div>
@ -205,21 +73,60 @@
<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> <h3>Navigation</h3>
<script type="text/javascript" src="_static/underscore.js"></script> <ul>
<script type="text/javascript" src="_static/doctools.js"></script> <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 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,209 +1,22 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml">
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> <head>
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta charset="utf-8"> <title>Search &#8212; CraftBeerPi 4.0 documentation</title>
<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>Search &mdash; CraftBeerPi 4.0 documentation</title> <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>
<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 src="_static/js/modernizr.min.js"></script>
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<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="#" 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>
</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>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"> <script type="text/javascript">
jQuery(function() { Search.loadIndex("searchindex.js"); }); jQuery(function() { Search.loadIndex("searchindex.js"); });
</script> </script>
@ -211,6 +24,102 @@
<script type="text/javascript" id="searchindexloader"></script> <script type="text/javascript" id="searchindexloader"></script>
<link rel="stylesheet" href="_static/custom.css" type="text/css" />
</body>
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
</head><body>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<h1 id="search-documentation">Search</h1>
<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>
From here you can search these documents. Enter your search
words into the box below and click "search". Note that the search
function will automatically search for all of the words. Pages
containing fewer words won't appear in the result list.
</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>
<div id="search-results">
</div>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<h1 class="logo"><a href="index.html">CraftBeerPi</a></h1>
<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="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>
</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>

File diff suppressed because one or more lines are too long

View file

@ -1,155 +1,37 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml">
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> <head>
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta charset="utf-8"> <title>Sensor &#8212; CraftBeerPi 4.0 documentation</title>
<link rel="stylesheet" href="_static/alabaster.css" type="text/css" />
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <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>
<title>Sensor &mdash; CraftBeerPi 4.0 documentation</title> <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>
<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="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> <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
<body class="wy-body-for-nav"> </head><body>
<div class="wy-grid-for-nav"> <div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<nav data-toggle="wy-nav-shift" class="wy-nav-side"> <div class="body" role="main">
<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 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 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="#module-core.controller.sensor_controller">SensorController</a></li>
<li class="toctree-l2"><a class="reference internal" href="#custom-sensor">Custom Sensor</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>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"> <div class="section" id="sensor">
<h1>Sensor<a class="headerlink" href="#sensor" title="Permalink to this headline"></a></h1> <h1>Sensor<a class="headerlink" href="#sensor" title="Permalink to this headline"></a></h1>
@ -165,37 +47,13 @@
</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" title="Actor" 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">
</section> <div class="sphinxsidebarwrapper">
<h1 class="logo"><a href="index.html">CraftBeerPi</a></h1>
</div>
@ -203,21 +61,69 @@
<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> <h3>Navigation</h3>
<script type="text/javascript" src="_static/underscore.js"></script> <ul class="current">
<script type="text/javascript" src="_static/doctools.js"></script> <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 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="#module-core.controller.sensor_controller">SensorController</a></li>
<li class="toctree-l2"><a class="reference internal" href="#custom-sensor">Custom Sensor</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="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>
<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/sensor.rst.txt"
rel="nofollow">Page source</a>
</div>
</body>
</html> </html>

View file

@ -1,201 +1,371 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml">
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]--> <head>
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]--> <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta charset="utf-8"> <title>Brewing Step &#8212; CraftBeerPi 4.0 documentation</title>
<link rel="stylesheet" href="_static/alabaster.css" type="text/css" />
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <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>
<title>Step API &mdash; CraftBeerPi 4.0 documentation</title> <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>
<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="prev" title="Sensor" href="sensor.html" />
<link rel="stylesheet" href="_static/custom.css" type="text/css" />
<script src="_static/js/modernizr.min.js"></script> <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
</head> </head><body>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav"> <div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<nav data-toggle="wy-nav-shift" class="wy-nav-side"> <div class="body" role="main">
<div class="wy-side-scroll">
<div class="wy-side-nav-search"> <div class="section" id="brewing-step">
<h1>Brewing Step<a class="headerlink" href="#brewing-step" title="Permalink to this headline"></a></h1>
<div class="section" id="stepcontroller">
<h2>StepController<a class="headerlink" href="#stepcontroller" title="Permalink to this headline"></a></h2>
<dl class="class">
<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>
<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>
<dl class="method">
<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-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.step_controller.StepController.model">
<code class="descname">model</code><a class="headerlink" href="#core.controller.step_controller.StepController.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.StepModel</span></code></p>
</dd></dl>
<dl class="method">
<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>
<dd></dd></dl>
<dl class="method">
<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>
</div>
<div class="section" id="simplestep">
<h2>SimpleStep<a class="headerlink" href="#simplestep" title="Permalink to this headline"></a></h2>
<dl class="class">
<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>
<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">
<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>
<dd></dd></dl>
<dl class="attribute">
<dt id="core.api.step.SimpleStep.managed_fields">
<code class="descname">managed_fields</code><em class="property"> = []</em><a class="headerlink" href="#core.api.step.SimpleStep.managed_fields" title="Permalink to this definition"></a></dt>
<dd></dd></dl>
<dl class="method">
<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>
<dd></dd></dl>
<dl class="method">
<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>
<dd></dd></dl>
<dl class="method">
<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>
<dd></dd></dl>
<dl class="method">
<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>
<dd></dd></dl>
<dl class="method">
<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>
<dd></dd></dl>
<dl class="method">
<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>
<dd></dd></dl>
<dl class="method">
<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>
<dd></dd></dl>
</dd></dl>
</div>
<div class="section" id="custom-step">
<h2>Custom Step<a class="headerlink" href="#custom-step" 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</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">from</span> <span class="nn">core.api</span> <span class="kn">import</span> <span class="n">Property</span><span class="p">,</span> <span class="n">action</span>
<span class="kn">from</span> <span class="nn">core.api.step</span> <span class="kn">import</span> <span class="n">SimpleStep</span>
<span class="k">class</span> <span class="nc">CustomStep</span><span class="p">(</span><span class="n">SimpleStep</span><span class="p">):</span>
<a href="index.html" class="icon icon-home"> CraftBeerPi <span class="n">name</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">i</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="bp">None</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">test</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
<span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="o">=</span><span class="s2">&quot;WOOHOO&quot;</span>
<span class="n">async</span> <span class="k">def</span> <span class="nf">run_cycle</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="c1">#await asyncio.sleep(1)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">i</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">i</span> <span class="o">+</span> <span class="mi">1</span>
</a> <span class="k">print</span><span class="p">(</span><span class="s2">&quot;RUN STEP&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">id</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="vm">__dict__</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"> :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;CustomStep&quot;</span><span class="p">,</span> <span class="n">CustomStep</span><span class="p">)</span>
</pre></div>
</td></tr></table></div>
<div role="search"> </div>
<form id="rtd-search-form" class="wy-form" action="search.html" method="get"> <p>config.yaml</p>
<input type="text" name="q" placeholder="Search docs" /> <div class="highlight-yaml notranslate"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1
<input type="hidden" name="check_keywords" value="yes" /> 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">DummyStep</span>
<input type="hidden" name="area" value="default" /> <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>
</form> </pre></div>
</td></tr></table></div>
</div>
</div> </div>
</div>
</div> </div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation"> <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<h1 class="logo"><a href="index.html">CraftBeerPi</a></h1>
<ul>
<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"><a class="reference internal" href="sensor.html">Sensor</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> </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>
</div> </div>
</div> </div>
</nav> <div class="clearer"></div>
</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"> <a href="_sources/step.rst.txt"
rel="nofollow">Page source</a>
<i data-toggle="wy-nav-top" class="fa fa-bars"></i> </div>
<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>Step API</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="step-api">
<h1>Step API<a class="headerlink" href="#step-api" title="Permalink to this headline"></a></h1>
</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/js/theme.js"></script>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html> </html>

View file

@ -14,6 +14,7 @@ Welcome to CraftBeerPi's documentation!
core core
actor actor
sensor sensor
step
kettle_controller kettle_controller
properties properties

View file

@ -1,2 +1,40 @@
Step API Brewing Step
======== ============
StepController
^^^^^^^^^^^^^^^
.. autoclass:: core.controller.step_controller.StepController
:members:
:private-members:
:undoc-members:
:show-inheritance:
SimpleStep
^^^^^^^^^^
.. autoclass:: core.api.step.SimpleStep
:members:
:private-members:
:undoc-members:
:show-inheritance:
Custom Step
^^^^^^^^^^^^^
.. literalinclude:: ../../core/extension/dummystep/__init__.py
:caption: __init__.py
:name: __init__-py
:language: python
:linenos:
config.yaml
.. literalinclude:: ../../core/extension/dummystep/config.yaml
:language: yaml
:linenos: