mirror of
https://github.com/PiBrewing/craftbeerpi4.git
synced 2024-12-22 13:34:55 +01:00
Kettle added
This commit is contained in:
parent
b5d96bf191
commit
f300076134
101 changed files with 6791 additions and 2051 deletions
|
@ -2,7 +2,7 @@
|
|||
<module type="PYTHON_MODULE" version="4">
|
||||
<component name="NewModuleRootManager">
|
||||
<content url="file://$MODULE_DIR$" />
|
||||
<orderEntry type="jdk" jdkName="Python 3.6.1 virtualenv at ~/aioenv" jdkType="Python SDK" />
|
||||
<orderEntry type="jdk" jdkName="Python 3.6.1 virtualenv at ~/cbpi41" jdkType="Python SDK" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
<component name="TestRunnerService">
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.6.1 virtualenv at ~/aioenv" project-jdk-type="Python SDK" />
|
||||
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.6.1 virtualenv at ~/cbpi41" project-jdk-type="Python SDK" />
|
||||
</project>
|
1364
.idea/workspace.xml
1364
.idea/workspace.xml
File diff suppressed because it is too large
Load diff
|
@ -3,16 +3,11 @@ __all__ = ["CBPiActor"]
|
|||
import logging
|
||||
|
||||
from core.api.extension import CBPiExtension
|
||||
from core.utils.utils import load_config as load
|
||||
|
||||
logger = logging.getLogger(__file__)
|
||||
|
||||
class CBPiActor(CBPiExtension):
|
||||
|
||||
def __init__(self, cbpi):
|
||||
self.id = ""
|
||||
self.state = None
|
||||
self.name = ""
|
||||
|
||||
def on(self, power):
|
||||
pass
|
||||
|
||||
|
|
|
@ -1,16 +1,34 @@
|
|||
__all__ = ["CBPiExtension"]
|
||||
|
||||
import logging
|
||||
import os
|
||||
|
||||
import sys
|
||||
|
||||
from core.utils.utils import load_config as load
|
||||
|
||||
__all__ = ["CBPiExtension"]
|
||||
|
||||
|
||||
logger = logging.getLogger(__file__)
|
||||
logging.basicConfig(level=logging.INFO)
|
||||
|
||||
|
||||
class CBPiExtension():
|
||||
|
||||
def __init__(self, *args, **kwds):
|
||||
for a in kwds:
|
||||
print(a)
|
||||
super(CBPiExtension, self).__setattr__(a, kwds.get(a))
|
||||
self.cbpi = kwds.get("cbpi")
|
||||
self.id = kwds.get("id")
|
||||
self.value = None
|
||||
self.__dirty = False
|
||||
|
||||
def __setattr__(self, name, value):
|
||||
|
||||
if name != "_CBPiExtension__dirty":
|
||||
self.__dirty = True
|
||||
super(CBPiExtension, self).__setattr__(name, value)
|
||||
else:
|
||||
super(CBPiExtension, self).__setattr__(name, value)
|
||||
|
||||
def load_config(self):
|
||||
path = os.path.dirname(sys.modules[self.__class__.__module__].__file__)
|
||||
try:
|
||||
|
|
7
core/api/kettle_logic.py
Normal file
7
core/api/kettle_logic.py
Normal file
|
@ -0,0 +1,7 @@
|
|||
|
||||
from core.api.extension import CBPiExtension
|
||||
|
||||
class CBPiKettleLogic(CBPiExtension):
|
||||
|
||||
def test(self):
|
||||
pass
|
|
@ -3,15 +3,9 @@ from core.api.extension import CBPiExtension
|
|||
|
||||
class CBPiSensor(CBPiExtension):
|
||||
|
||||
def __init__(self):
|
||||
self.id = "";
|
||||
self.name = ""
|
||||
|
||||
def on(self):
|
||||
pass
|
||||
|
||||
def off(self):
|
||||
pass
|
||||
async def run(self, cbpi):
|
||||
print("RUN NOT IMPLEMENTED")
|
||||
|
||||
def state(self):
|
||||
pass
|
|
@ -58,13 +58,9 @@ class ActorController(ActorHttp, CRUDController):
|
|||
self.types = {}
|
||||
self.actors = {}
|
||||
|
||||
|
||||
def register(self, name, clazz) -> None:
|
||||
'''
|
||||
Register a new actor type
|
||||
:param name: actor name
|
||||
:param clazz: actor class
|
||||
:return: None
|
||||
'''
|
||||
|
||||
print("REGISTER", name)
|
||||
if issubclass(clazz, CBPiActor):
|
||||
print("ITS AN ACTOR")
|
||||
|
@ -79,29 +75,51 @@ class ActorController(ActorHttp, CRUDController):
|
|||
:return:
|
||||
'''
|
||||
await super(ActorController, self).init()
|
||||
print("INIT ACTOR")
|
||||
|
||||
for name, clazz in self.types.items():
|
||||
print("Type", name)
|
||||
|
||||
for id, value in self.cache.items():
|
||||
|
||||
if value.type in self.types:
|
||||
cfg = value.config.copy()
|
||||
print(cfg)
|
||||
cfg.update(dict(cbpi=self.cbpi, id=id, name=value.name))
|
||||
clazz = self.types[value.type]["class"];
|
||||
print(self.cache[id])
|
||||
self.cache[id].instance = clazz(self.cbpi)
|
||||
|
||||
self.cache[id].instance = clazz(**cfg)
|
||||
print("gpIO", self.cache[id].instance, self.cache[id].instance.gpio)
|
||||
|
||||
|
||||
|
||||
@on_event(topic="actor/+/on")
|
||||
def on(self, id, power=100, **kwargs) -> None:
|
||||
print(id)
|
||||
'''
|
||||
Method to switch an actor on.
|
||||
Supporting Event Topic "actor/+/on"
|
||||
|
||||
:param id: the actor id
|
||||
:param power: as integer value between 1 and 100
|
||||
:param kwargs:
|
||||
:return:
|
||||
'''
|
||||
|
||||
id = int(id)
|
||||
if id in self.cache:
|
||||
print("POWER ON")
|
||||
actor = self.cache[id].instance
|
||||
print("ONNNNN", actor)
|
||||
actor.on(power)
|
||||
|
||||
@on_event(topic="actor/+/toggle")
|
||||
def toggle(self, id, power=100, **kwargs) -> None:
|
||||
'''
|
||||
Method to toggle an actor on or off
|
||||
Supporting Event Topic "actor/+/toggle"
|
||||
|
||||
:param power:
|
||||
:return:
|
||||
'''
|
||||
|
||||
id = int(id)
|
||||
if id in self.cache:
|
||||
|
@ -114,7 +132,10 @@ class ActorController(ActorHttp, CRUDController):
|
|||
@on_event(topic="actor/+/off")
|
||||
def off(self, id, **kwargs) -> None:
|
||||
"""
|
||||
|
||||
|
||||
Method to switch and actor off
|
||||
Supporting Event Topic "actor/+/off"
|
||||
|
||||
:param id:
|
||||
:param kwargs:
|
||||
"""
|
||||
|
|
18
core/controller/config_controller.py
Normal file
18
core/controller/config_controller.py
Normal file
|
@ -0,0 +1,18 @@
|
|||
from core.controller.crud_controller import CRUDController
|
||||
from core.database.model import ConfigModel
|
||||
|
||||
|
||||
class ConfigController(CRUDController):
|
||||
|
||||
'''
|
||||
The main actor controller
|
||||
'''
|
||||
model = ConfigModel
|
||||
|
||||
def __init__(self, cbpi):
|
||||
super(ConfigController, self).__init__(cbpi)
|
||||
self.cbpi = cbpi
|
||||
|
||||
self.cbpi.register(self, "/config")
|
||||
|
||||
|
|
@ -13,7 +13,11 @@ class CRUDController(object):
|
|||
self.cache = await self.model.get_all()
|
||||
|
||||
async def get_all(self, force_db_update=False):
|
||||
|
||||
'''
|
||||
|
||||
:param force_db_update:
|
||||
:return:
|
||||
'''
|
||||
if self.caching is False or force_db_update:
|
||||
self.cache = await self.model.get_all()
|
||||
|
||||
|
|
81
core/controller/kettle_controller.py
Normal file
81
core/controller/kettle_controller.py
Normal file
|
@ -0,0 +1,81 @@
|
|||
from aiohttp import web
|
||||
|
||||
from core.api import request_mapping
|
||||
from core.controller.crud_controller import CRUDController
|
||||
from core.database.model import KettleModel
|
||||
from core.http_endpoints.http_api import HttpAPI
|
||||
from core.utils import json_dumps
|
||||
|
||||
|
||||
class KettleHttp(HttpAPI):
|
||||
|
||||
@request_mapping(path="/types", auth_required=False)
|
||||
async def get_types(self, request):
|
||||
web.json_response(data=self.types, dumps=json_dumps)
|
||||
|
||||
@request_mapping(path="/automatic", auth_required=False)
|
||||
async def start(self, request):
|
||||
await self.toggle_automtic(1)
|
||||
return web.Response(text="OK")
|
||||
|
||||
@request_mapping(path="/automatic/stop", auth_required=False)
|
||||
async def stop(self, request):
|
||||
kettle = await self.get_one(1)
|
||||
kettle.instance.running = False
|
||||
return web.Response(text="OK")
|
||||
|
||||
|
||||
|
||||
class KettleController(CRUDController, KettleHttp):
|
||||
'''
|
||||
The main actor controller
|
||||
'''
|
||||
model = KettleModel
|
||||
|
||||
def __init__(self, cbpi):
|
||||
super(KettleController, self).__init__(cbpi)
|
||||
self.cbpi = cbpi
|
||||
self.types = {}
|
||||
self.cbpi.register(self, "/kettle")
|
||||
|
||||
async def init(self):
|
||||
'''
|
||||
This method initializes all actors during startup. It creates actor instances
|
||||
|
||||
:return:
|
||||
'''
|
||||
await super(KettleController, self).init()
|
||||
|
||||
async def toggle_automtic(self, id):
|
||||
kettle = await self.get_one(id)
|
||||
|
||||
if hasattr(kettle, "instance") is False:
|
||||
kettle.instance = None
|
||||
|
||||
if kettle.instance is None:
|
||||
if kettle.logic in self.types:
|
||||
clazz = self.types.get("CustomKettleLogic")["class"]
|
||||
kettle.instance = clazz()
|
||||
await self.cbpi.start_job(kettle.instance.run(), "test", "test")
|
||||
else:
|
||||
kettle.instance.running = False
|
||||
kettle.instance = None
|
||||
|
||||
|
||||
async def heater_on(self, id):
|
||||
pass
|
||||
|
||||
async def heater_off(self, id):
|
||||
pass
|
||||
|
||||
async def agitator_on(self, id):
|
||||
pass
|
||||
|
||||
async def agitator_off(self, id):
|
||||
pass
|
||||
|
||||
async def get_traget_temp(self, id):
|
||||
pass
|
||||
|
||||
async def get_temp(self, id):
|
||||
pass
|
|
@ -10,7 +10,9 @@ from aiohttp import web
|
|||
from core.api.actor import CBPiActor
|
||||
from core.api.decorator import request_mapping
|
||||
from core.api.extension import CBPiExtension
|
||||
from core.api.kettle_logic import CBPiKettleLogic
|
||||
from core.api.property import Property
|
||||
from core.api.sensor import CBPiSensor
|
||||
from core.utils.utils import load_config, json_dumps
|
||||
|
||||
logger = logging.getLogger(__file__)
|
||||
|
@ -87,10 +89,19 @@ class PluginController():
|
|||
:param clazz: actor class
|
||||
:return: None
|
||||
'''
|
||||
|
||||
print("REGISTER", name, clazz)
|
||||
if issubclass(clazz, CBPiActor):
|
||||
self.cbpi.actor.types[name] = {"class": clazz, "config": self._parse_props(clazz)}
|
||||
|
||||
|
||||
if issubclass(clazz, CBPiSensor):
|
||||
self.cbpi.sensor.types[name] = {"class": clazz, "config": self._parse_props(clazz)}
|
||||
|
||||
|
||||
if issubclass(clazz, CBPiKettleLogic):
|
||||
self.cbpi.kettle.types[name] = {"class": clazz, "config": self._parse_props(clazz)}
|
||||
|
||||
|
||||
if issubclass(clazz, CBPiExtension):
|
||||
self.c = clazz(self.cbpi)
|
||||
|
||||
|
|
|
@ -2,6 +2,8 @@ import logging
|
|||
import os
|
||||
from logging.handlers import TimedRotatingFileHandler
|
||||
|
||||
from core.job.aiohttp import get_scheduler_from_app
|
||||
|
||||
from core.api.decorator import background_task
|
||||
from core.controller.crud_controller import CRUDController
|
||||
from core.database.model import SensorModel
|
||||
|
@ -16,6 +18,7 @@ class SensorController(CRUDController, HttpAPI):
|
|||
self.cbpi = cbpi
|
||||
self.cbpi.register(self, "/sensor")
|
||||
self.service = self
|
||||
self.types = {}
|
||||
|
||||
self.sensors = {"S1": "S1", "S2": "S2"}
|
||||
|
||||
|
@ -32,12 +35,28 @@ class SensorController(CRUDController, HttpAPI):
|
|||
self.logger.propagate = False
|
||||
self.logger.addHandler(handler)
|
||||
|
||||
async def pre_get_one(self, id):
|
||||
pass
|
||||
async def init(self):
|
||||
'''
|
||||
This method initializes all actors during startup. It creates actor instances
|
||||
|
||||
:return:
|
||||
'''
|
||||
await super(SensorController, self).init()
|
||||
print("INIT SENSOR")
|
||||
for name, clazz in self.types.items():
|
||||
print("Type", name)
|
||||
|
||||
for id, value in self.cache.items():
|
||||
if value.type in self.types:
|
||||
cfg = value.config.copy()
|
||||
cfg.update(dict(cbpi=self.cbpi, id=id, name=value.name))
|
||||
clazz = self.types[value.type]["class"];
|
||||
self.cache[id].instance = clazz(**cfg)
|
||||
scheduler = get_scheduler_from_app(self.cbpi.app)
|
||||
self.cache[id].instance.job = await scheduler.spawn(self.cache[id].instance.run(self.cbpi), value.name, "sensor")
|
||||
print("------------")
|
||||
|
||||
@background_task(name="test", interval=1)
|
||||
async def hallo(self):
|
||||
|
||||
print("AHLLO")
|
||||
self.logger.info("WOOHO", extra={"sensor": 1})
|
||||
|
|
|
@ -24,9 +24,11 @@ class SystemController():
|
|||
@request_mapping("/jobs", method="GET", name="get_jobs", auth_required=False)
|
||||
def get_all_jobs(self, request):
|
||||
scheduler = get_scheduler_from_app(self.cbpi.app)
|
||||
|
||||
result = []
|
||||
for j in scheduler:
|
||||
print(j)
|
||||
|
||||
try:
|
||||
result.append(dict(name=j.name, type=j.type, time=j.start_time))
|
||||
except:
|
||||
pass
|
||||
# await j.close()
|
||||
return web.Response(text="HALLO")
|
||||
return web.json_response(data=result)
|
|
@ -9,7 +9,10 @@ from aiohttp_auth import auth
|
|||
from aiohttp_session import session_middleware
|
||||
from aiohttp_session.cookie_storage import EncryptedCookieStorage
|
||||
from aiohttp_swagger import setup_swagger
|
||||
from aiojobs.aiohttp import setup, get_scheduler_from_app
|
||||
|
||||
from core.controller.config_controller import ConfigController
|
||||
from core.controller.kettle_controller import KettleController
|
||||
from core.job.aiohttp import setup, get_scheduler_from_app
|
||||
|
||||
from core.controller.actor_controller import ActorController
|
||||
from core.controller.notification_controller import NotificationController
|
||||
|
@ -53,6 +56,8 @@ class CraftBeerPi():
|
|||
self.sensor = SensorController(self)
|
||||
self.plugin = PluginController(self)
|
||||
self.system = SystemController(self)
|
||||
self.config2 = ConfigController(self)
|
||||
self.kettle = KettleController(self)
|
||||
self.notification = NotificationController(self)
|
||||
|
||||
self.login = Login(self)
|
||||
|
@ -64,8 +69,11 @@ class CraftBeerPi():
|
|||
|
||||
doc = None
|
||||
if method.__doc__ is not None:
|
||||
doc = yaml.load(method.__doc__)
|
||||
doc["topic"] = method.__getattribute__("topic")
|
||||
try:
|
||||
doc = yaml.load(method.__doc__)
|
||||
doc["topic"] = method.__getattribute__("topic")
|
||||
except:
|
||||
pass
|
||||
self.bus.register(method.__getattribute__("topic"), method, doc)
|
||||
|
||||
def register_background_task(self, obj):
|
||||
|
@ -89,8 +97,8 @@ class CraftBeerPi():
|
|||
for method in [getattr(obj, f) for f in dir(obj) if callable(getattr(obj, f)) and hasattr(getattr(obj, f), "background_task")]:
|
||||
name = method.__getattribute__("name")
|
||||
interval = method.__getattribute__("interval")
|
||||
job = await scheduler.spawn(job_loop(self.app, name, interval, method),name, "background")
|
||||
|
||||
await scheduler.spawn(job_loop(self.app, name, interval, method))
|
||||
|
||||
self.app.on_startup.append(spawn_job)
|
||||
|
||||
|
@ -171,6 +179,11 @@ class CraftBeerPi():
|
|||
else:
|
||||
self.app.add_routes(routes)
|
||||
|
||||
|
||||
async def start_job(self, method, name, type):
|
||||
scheduler = get_scheduler_from_app(self.app)
|
||||
return await scheduler.spawn(method, name, type)
|
||||
|
||||
def _swagger_setup(self):
|
||||
'''
|
||||
Internatl method to expose REST API documentation by swagger
|
||||
|
@ -178,9 +191,7 @@ class CraftBeerPi():
|
|||
:return:
|
||||
'''
|
||||
long_description = """
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus vehicula, metus et sodales fringilla, purus leo aliquet odio, non tempor ante urna aliquet nibh. Integer accumsan laoreet tincidunt. Vestibulum semper vehicula sollicitudin. Suspendisse dapibus neque vitae mattis bibendum. Morbi eu pulvinar turpis, quis malesuada ex. Vestibulum sed maximus diam. Proin semper fermentum suscipit. Duis at suscipit diam. Integer in augue elementum, auctor orci ac, elementum est. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Maecenas condimentum id arcu quis volutpat. Vestibulum sit amet nibh sodales, iaculis nibh eget, scelerisque justo.
|
||||
|
||||
Nunc eget mauris lectus. Proin sit amet volutpat risus. Aliquam auctor nunc sit amet feugiat tempus. Maecenas nec ex dolor. Nam fermentum, mauris ut suscipit varius, odio purus luctus mauris, pretium interdum felis sem vel est. Proin a turpis vitae nunc volutpat tristique ac in erat. Pellentesque consequat rhoncus libero, ac sollicitudin odio tempus a. Sed vestibulum leo erat, ut auctor turpis mollis id. Ut nec nunc ex. Maecenas eu turpis in nibh placerat ullamcorper ac nec dui. Integer ac lacus neque. Donec dictum tellus lacus, a vulputate justo venenatis at. Morbi malesuada tellus quis orci aliquet, at vulputate lacus imperdiet. Nulla eu diam quis orci aliquam vulputate ac imperdiet elit. Quisque varius mollis dolor in interdum.
|
||||
This is the api for CraftBeerPi
|
||||
"""
|
||||
|
||||
setup_swagger(self.app,
|
||||
|
@ -218,7 +229,9 @@ class CraftBeerPi():
|
|||
await DBModel.test_connection()
|
||||
|
||||
async def init_controller(app):
|
||||
await self.sensor.init()
|
||||
await self.actor.init()
|
||||
await self.kettle.init()
|
||||
|
||||
async def load_plugins(app):
|
||||
await PluginController.load_plugin_list()
|
||||
|
|
|
@ -11,3 +11,14 @@ class SensorModel(DBModel):
|
|||
__fields__ = ["name", "type", "config"]
|
||||
__table_name__ = "sensor"
|
||||
__json_fields__ = ["config"]
|
||||
|
||||
class ConfigModel(DBModel):
|
||||
__fields__ = ["type", "value", "description", "options"]
|
||||
__table_name__ = "config"
|
||||
__json_fields__ = ["options"]
|
||||
__priamry_key__ = "name"
|
||||
|
||||
class KettleModel(DBModel):
|
||||
__fields__ = ["name","sensor", "heater", "automatic", "logic", "config", "agitator", "target_temp"]
|
||||
__table_name__ = "kettle"
|
||||
__json_fields__ = ["config"]
|
|
@ -6,13 +6,9 @@ from core.api import CBPiActor, Property, action, background_task
|
|||
|
||||
class CustomActor(CBPiActor):
|
||||
|
||||
name = Property.Number(label="Test")
|
||||
name1 = Property.Text(label="Test")
|
||||
name2 = Property.Kettle(label="Test")
|
||||
|
||||
@background_task("s1", interval=2)
|
||||
async def bg_job(self):
|
||||
print("WOOH BG")
|
||||
gpio = Property.Number(label="Test")
|
||||
|
||||
|
||||
@action(key="name", parameters={})
|
||||
def myAction(self):
|
||||
|
@ -22,29 +18,15 @@ class CustomActor(CBPiActor):
|
|||
super().state()
|
||||
|
||||
def off(self):
|
||||
print("OFF")
|
||||
print("OFF", self.gpio)
|
||||
self.state = False
|
||||
|
||||
def on(self, power=100):
|
||||
|
||||
print("ON")
|
||||
print("ON", self.gpio)
|
||||
self.state = True
|
||||
|
||||
|
||||
def __init__(self, cbpi=None):
|
||||
|
||||
if cbpi is None:
|
||||
return
|
||||
|
||||
print("INIT MY ACTOR111111")
|
||||
self.cfg = self.load_config()
|
||||
|
||||
self.logger = logging.getLogger(__file__)
|
||||
logging.basicConfig(level=logging.INFO)
|
||||
|
||||
self.logger.info("########WOOHOO MY ACTOR")
|
||||
self.cbpi = cbpi
|
||||
|
||||
|
||||
def setup(cbpi):
|
||||
|
30
core/extension/dummylogic/__init__.py
Normal file
30
core/extension/dummylogic/__init__.py
Normal file
|
@ -0,0 +1,30 @@
|
|||
import asyncio
|
||||
|
||||
from core.api import Property
|
||||
from core.api.kettle_logic import CBPiKettleLogic
|
||||
|
||||
|
||||
class CustomLogic(CBPiKettleLogic):
|
||||
|
||||
name = Property.Number(label="Test")
|
||||
|
||||
running = True
|
||||
|
||||
async def run(self):
|
||||
|
||||
while self.running:
|
||||
|
||||
print("RUN")
|
||||
await asyncio.sleep(1)
|
||||
|
||||
def setup(cbpi):
|
||||
|
||||
'''
|
||||
This method is called by the server during startup
|
||||
Here you need to register your plugins at the server
|
||||
|
||||
:param cbpi: the cbpi core
|
||||
:return:
|
||||
'''
|
||||
|
||||
cbpi.plugin.register("CustomKettleLogic", CustomLogic)
|
2
core/extension/dummylogic/config.yaml
Normal file
2
core/extension/dummylogic/config.yaml
Normal file
|
@ -0,0 +1,2 @@
|
|||
name: Manuel
|
||||
version: 4
|
44
core/extension/dummysensor/__init__.py
Normal file
44
core/extension/dummysensor/__init__.py
Normal file
|
@ -0,0 +1,44 @@
|
|||
import asyncio
|
||||
import logging
|
||||
|
||||
from core.api import CBPiActor, Property, action, background_task
|
||||
from core.api.sensor import CBPiSensor
|
||||
|
||||
|
||||
class CustomSensor(CBPiSensor):
|
||||
|
||||
name = Property.Number(label="Test")
|
||||
name1 = Property.Text(label="Test")
|
||||
interval = Property.Number(label="interval")
|
||||
name2 = Property.Kettle(label="Test")
|
||||
|
||||
|
||||
@action(key="name", parameters={})
|
||||
def myAction(self):
|
||||
pass
|
||||
|
||||
def state(self):
|
||||
super().state()
|
||||
|
||||
def stop(self):
|
||||
pass
|
||||
|
||||
async def run(self, cbpi):
|
||||
while True:
|
||||
await asyncio.sleep(self.interval)
|
||||
print("SENSOR IS RUNNING")
|
||||
|
||||
|
||||
|
||||
|
||||
def setup(cbpi):
|
||||
|
||||
'''
|
||||
This method is called by the server during startup
|
||||
Here you need to register your plugins at the server
|
||||
|
||||
:param cbpi: the cbpi core
|
||||
:return:
|
||||
'''
|
||||
|
||||
cbpi.plugin.register("CustomSensor", CustomSensor)
|
2
core/extension/dummysensor/config.yaml
Normal file
2
core/extension/dummysensor/config.yaml
Normal file
|
@ -0,0 +1,2 @@
|
|||
name: Manuel
|
||||
version: 4
|
|
@ -14,18 +14,28 @@ class HttpAPI():
|
|||
@request_mapping(path="/", auth_required=False)
|
||||
async def http_get_all(self, request):
|
||||
"""
|
||||
---
|
||||
description: This end-point allow to test that service is up.
|
||||
tags:
|
||||
- REST API
|
||||
produces:
|
||||
- application/json
|
||||
responses:
|
||||
"200":
|
||||
description: successful operation. Return "pong" text
|
||||
"405":
|
||||
description: invalid HTTP Method
|
||||
"""
|
||||
|
||||
---
|
||||
|
||||
description: This end-point allow to test that service is up.
|
||||
tags:
|
||||
- REST API
|
||||
produces:
|
||||
- application/json
|
||||
parameters:
|
||||
- name: "id"
|
||||
in: "path"
|
||||
description: "ID of object to return"
|
||||
required: true
|
||||
type: "integer"
|
||||
format: "int64"
|
||||
responses:
|
||||
"200":
|
||||
description: successful operation. Return "pong" text
|
||||
"405":
|
||||
description: invalid HTTP Met
|
||||
"""
|
||||
|
||||
return web.json_response(await self.get_all(force_db_update=True), dumps=json_dumps)
|
||||
|
||||
@request_mapping(path="/{id:\d+}", auth_required=False)
|
||||
|
|
23
core/job/__init__.py
Normal file
23
core/job/__init__.py
Normal file
|
@ -0,0 +1,23 @@
|
|||
"""Jobs scheduler for managing background task (asyncio).
|
||||
The library gives controlled way for scheduling background tasks for
|
||||
asyncio applications.
|
||||
"""
|
||||
|
||||
|
||||
__version__ = '0.2.2'
|
||||
|
||||
import asyncio
|
||||
from ._scheduler import Scheduler
|
||||
|
||||
|
||||
async def create_scheduler(*, close_timeout=0.1, limit=100,
|
||||
pending_limit=10000, exception_handler=None):
|
||||
if exception_handler is not None and not callable(exception_handler):
|
||||
raise TypeError('A callable object or None is expected, '
|
||||
'got {!r}'.format(exception_handler))
|
||||
loop = asyncio.get_event_loop()
|
||||
return Scheduler(loop=loop, close_timeout=close_timeout,
|
||||
limit=limit, pending_limit=pending_limit,
|
||||
exception_handler=exception_handler)
|
||||
|
||||
__all__ = ('create_scheduler',)
|
136
core/job/_job.py
Normal file
136
core/job/_job.py
Normal file
|
@ -0,0 +1,136 @@
|
|||
import asyncio
|
||||
import sys
|
||||
import traceback
|
||||
|
||||
import async_timeout
|
||||
import time
|
||||
|
||||
|
||||
class Job:
|
||||
_source_traceback = None
|
||||
_closed = False
|
||||
_explicit = False
|
||||
_task = None
|
||||
|
||||
def __init__(self, coro, name, type, scheduler, loop):
|
||||
self._loop = loop
|
||||
self.name = name
|
||||
self.type = type
|
||||
self.start_time = time.time()
|
||||
self._coro = coro
|
||||
self._scheduler = scheduler
|
||||
self._started = loop.create_future()
|
||||
|
||||
if loop.get_debug():
|
||||
self._source_traceback = traceback.extract_stack(sys._getframe(2))
|
||||
|
||||
def __repr__(self):
|
||||
info = []
|
||||
if self._closed:
|
||||
info.append('closed')
|
||||
elif self._task is None:
|
||||
info.append('pending')
|
||||
info = ' '.join(info)
|
||||
if info:
|
||||
info += ' '
|
||||
return '<Job {}coro=<{}>>'.format(info, self._coro)
|
||||
|
||||
@property
|
||||
def active(self):
|
||||
return not self.closed and not self.pending
|
||||
|
||||
@property
|
||||
def pending(self):
|
||||
return self._task is None and not self.closed
|
||||
|
||||
@property
|
||||
def closed(self):
|
||||
return self._closed
|
||||
|
||||
async def _do_wait(self, timeout):
|
||||
with async_timeout.timeout(timeout=timeout, loop=self._loop):
|
||||
# TODO: add a test for waiting for a pending coro
|
||||
await self._started
|
||||
return await self._task
|
||||
|
||||
async def wait(self, *, timeout=None):
|
||||
if self._closed:
|
||||
return
|
||||
self._explicit = True
|
||||
scheduler = self._scheduler
|
||||
try:
|
||||
return await asyncio.shield(self._do_wait(timeout),
|
||||
loop=self._loop)
|
||||
except asyncio.CancelledError:
|
||||
# Don't stop inner coroutine on explicit cancel
|
||||
raise
|
||||
except Exception:
|
||||
await self._close(scheduler.close_timeout)
|
||||
raise
|
||||
|
||||
async def close(self, *, timeout=None):
|
||||
if self._closed:
|
||||
return
|
||||
self._explicit = True
|
||||
if timeout is None:
|
||||
timeout = self._scheduler.close_timeout
|
||||
await self._close(timeout)
|
||||
|
||||
async def _close(self, timeout):
|
||||
self._closed = True
|
||||
if self._task is None:
|
||||
# the task is closed immediately without actual execution
|
||||
# it prevents a warning like
|
||||
# RuntimeWarning: coroutine 'coro' was never awaited
|
||||
self._start()
|
||||
if not self._task.done():
|
||||
self._task.cancel()
|
||||
# self._scheduler is None after _done_callback()
|
||||
scheduler = self._scheduler
|
||||
try:
|
||||
with async_timeout.timeout(timeout=timeout,
|
||||
loop=self._loop):
|
||||
await self._task
|
||||
except asyncio.CancelledError:
|
||||
pass
|
||||
except asyncio.TimeoutError as exc:
|
||||
if self._explicit:
|
||||
raise
|
||||
context = {'message': "Job closing timed out",
|
||||
'job': self,
|
||||
'exception': exc}
|
||||
if self._source_traceback is not None:
|
||||
context['source_traceback'] = self._source_traceback
|
||||
scheduler.call_exception_handler(context)
|
||||
except Exception as exc:
|
||||
if self._explicit:
|
||||
raise
|
||||
self._report_exception(exc)
|
||||
|
||||
def _start(self):
|
||||
assert self._task is None
|
||||
self._task = self._loop.create_task(self._coro)
|
||||
self._task.add_done_callback(self._done_callback)
|
||||
self._started.set_result(None)
|
||||
|
||||
def _done_callback(self, task):
|
||||
scheduler = self._scheduler
|
||||
scheduler._done(self)
|
||||
try:
|
||||
exc = task.exception()
|
||||
except asyncio.CancelledError:
|
||||
pass
|
||||
else:
|
||||
if exc is not None and not self._explicit:
|
||||
self._report_exception(exc)
|
||||
scheduler._failed_tasks.put_nowait(task)
|
||||
self._scheduler = None # drop backref
|
||||
self._closed = True
|
||||
|
||||
def _report_exception(self, exc):
|
||||
context = {'message': "Job processing failed",
|
||||
'job': self,
|
||||
'exception': exc}
|
||||
if self._source_traceback is not None:
|
||||
context['source_traceback'] = self._source_traceback
|
||||
self._scheduler.call_exception_handler(context)
|
144
core/job/_scheduler.py
Normal file
144
core/job/_scheduler.py
Normal file
|
@ -0,0 +1,144 @@
|
|||
import asyncio
|
||||
|
||||
from ._job import Job
|
||||
|
||||
try:
|
||||
from collections.abc import Collection
|
||||
except ImportError: # pragma: no cover
|
||||
# Python 3.5 has no Collection ABC class
|
||||
from collections.abc import Sized, Iterable, Container
|
||||
bases = Sized, Iterable, Container
|
||||
else: # pragma: no cover
|
||||
bases = (Collection,)
|
||||
|
||||
|
||||
class Scheduler(*bases):
|
||||
def __init__(self, *, close_timeout, limit, pending_limit,
|
||||
exception_handler, loop):
|
||||
self._loop = loop
|
||||
self._jobs = set()
|
||||
self._close_timeout = close_timeout
|
||||
self._limit = limit
|
||||
self._exception_handler = exception_handler
|
||||
self._failed_tasks = asyncio.Queue(loop=loop)
|
||||
self._failed_task = loop.create_task(self._wait_failed())
|
||||
self._pending = asyncio.Queue(maxsize=pending_limit, loop=loop)
|
||||
self._closed = False
|
||||
|
||||
def __iter__(self):
|
||||
return iter(list(self._jobs))
|
||||
|
||||
def __len__(self):
|
||||
return len(self._jobs)
|
||||
|
||||
def __contains__(self, job):
|
||||
return job in self._jobs
|
||||
|
||||
def __repr__(self):
|
||||
info = []
|
||||
if self._closed:
|
||||
info.append('closed')
|
||||
info = ' '.join(info)
|
||||
if info:
|
||||
info += ' '
|
||||
return '<Scheduler {}jobs={}>'.format(info, len(self))
|
||||
|
||||
@property
|
||||
def limit(self):
|
||||
return self._limit
|
||||
|
||||
@property
|
||||
def pending_limit(self):
|
||||
return self._pending.maxsize
|
||||
|
||||
@property
|
||||
def close_timeout(self):
|
||||
return self._close_timeout
|
||||
|
||||
@property
|
||||
def active_count(self):
|
||||
return len(self._jobs) - self._pending.qsize()
|
||||
|
||||
@property
|
||||
def pending_count(self):
|
||||
return self._pending.qsize()
|
||||
|
||||
@property
|
||||
def closed(self):
|
||||
return self._closed
|
||||
|
||||
async def spawn(self, coro, name=None, type=None):
|
||||
if self._closed:
|
||||
raise RuntimeError("Scheduling a new job after closing")
|
||||
job = Job(coro, name, type, self, self._loop)
|
||||
should_start = (self._limit is None or
|
||||
self.active_count < self._limit)
|
||||
self._jobs.add(job)
|
||||
if should_start:
|
||||
job._start()
|
||||
else:
|
||||
# wait for free slot in queue
|
||||
await self._pending.put(job)
|
||||
return job
|
||||
|
||||
async def close(self):
|
||||
if self._closed:
|
||||
return
|
||||
self._closed = True # prevent adding new jobs
|
||||
|
||||
jobs = self._jobs
|
||||
if jobs:
|
||||
# cleanup pending queue
|
||||
# all job will be started on closing
|
||||
while not self._pending.empty():
|
||||
self._pending.get_nowait()
|
||||
await asyncio.gather(
|
||||
*[job._close(self._close_timeout) for job in jobs],
|
||||
loop=self._loop, return_exceptions=True)
|
||||
self._jobs.clear()
|
||||
self._failed_tasks.put_nowait(None)
|
||||
await self._failed_task
|
||||
|
||||
def call_exception_handler(self, context):
|
||||
handler = self._exception_handler
|
||||
if handler is None:
|
||||
handler = self._loop.call_exception_handler(context)
|
||||
else:
|
||||
handler(self, context)
|
||||
|
||||
@property
|
||||
def exception_handler(self):
|
||||
return self._exception_handler
|
||||
|
||||
def _done(self, job):
|
||||
self._jobs.discard(job)
|
||||
if not self.pending_count:
|
||||
return
|
||||
# No pending jobs when limit is None
|
||||
# Safe to subtract.
|
||||
ntodo = self._limit - self.active_count
|
||||
i = 0
|
||||
while i < ntodo:
|
||||
if not self.pending_count:
|
||||
return
|
||||
new_job = self._pending.get_nowait()
|
||||
if new_job.closed:
|
||||
continue
|
||||
new_job._start()
|
||||
i += 1
|
||||
|
||||
async def _wait_failed(self):
|
||||
# a coroutine for waiting failed tasks
|
||||
# without awaiting for failed tasks async raises a warning
|
||||
while True:
|
||||
task = await self._failed_tasks.get()
|
||||
if task is None:
|
||||
return # closing
|
||||
try:
|
||||
await task # should raise exception
|
||||
except Exception:
|
||||
# Cleanup a warning
|
||||
# self.call_exception_handler() is already called
|
||||
# by Job._add_done_callback
|
||||
# Thus we caught an task exception and we are good citizens
|
||||
pass
|
51
core/job/aiohttp.py
Normal file
51
core/job/aiohttp.py
Normal file
|
@ -0,0 +1,51 @@
|
|||
from functools import wraps
|
||||
|
||||
from aiohttp.web import View
|
||||
|
||||
from . import create_scheduler
|
||||
|
||||
__all__ = ('setup', 'spawn', 'get_scheduler', 'get_scheduler_from_app',
|
||||
'atomic')
|
||||
|
||||
|
||||
def get_scheduler(request):
|
||||
scheduler = get_scheduler_from_request(request)
|
||||
if scheduler is None:
|
||||
raise RuntimeError(
|
||||
"Call aiojobs.aiohttp.setup() on application initialization")
|
||||
return scheduler
|
||||
|
||||
|
||||
def get_scheduler_from_app(app):
|
||||
return app.get('AIOJOBS_SCHEDULER')
|
||||
|
||||
|
||||
def get_scheduler_from_request(request):
|
||||
return request.config_dict.get('AIOJOBS_SCHEDULER')
|
||||
|
||||
|
||||
async def spawn(request, coro, name="Manuel"):
|
||||
return await get_scheduler(request).spawn(coro)
|
||||
|
||||
|
||||
def atomic(coro):
|
||||
@wraps(coro)
|
||||
async def wrapper(request):
|
||||
if isinstance(request, View):
|
||||
# Class Based View decorated.
|
||||
request = request.request
|
||||
|
||||
job = await spawn(request, coro(request))
|
||||
return await job.wait()
|
||||
return wrapper
|
||||
|
||||
|
||||
def setup(app, **kwargs):
|
||||
async def on_startup(app):
|
||||
app['AIOJOBS_SCHEDULER'] = await create_scheduler(**kwargs)
|
||||
|
||||
async def on_cleanup(app):
|
||||
await app['AIOJOBS_SCHEDULER'].close()
|
||||
|
||||
app.on_startup.append(on_startup)
|
||||
app.on_cleanup.append(on_cleanup)
|
26
core/utils/encoder.py
Normal file
26
core/utils/encoder.py
Normal file
|
@ -0,0 +1,26 @@
|
|||
from json import JSONEncoder
|
||||
|
||||
|
||||
|
||||
class ComplexEncoder(JSONEncoder):
|
||||
|
||||
|
||||
def default(self, obj):
|
||||
|
||||
from core.database.model import ActorModel
|
||||
from core.database.orm_framework import DBModel
|
||||
from core.api.kettle_logic import CBPiKettleLogic
|
||||
|
||||
try:
|
||||
if isinstance(obj, DBModel):
|
||||
return obj.__dict__
|
||||
|
||||
elif isinstance(obj, ActorModel):
|
||||
return None
|
||||
elif hasattr(obj, "callback"):
|
||||
return obj()
|
||||
else:
|
||||
return None
|
||||
except TypeError as e:
|
||||
pass
|
||||
return None
|
|
@ -1,6 +1,8 @@
|
|||
from pprint import pprint
|
||||
|
||||
|
||||
from core.api.property import Property
|
||||
from core.utils.encoder import ComplexEncoder
|
||||
|
||||
__all__ = ['load_config',"json_dumps", "parse_props"]
|
||||
|
||||
|
@ -21,23 +23,6 @@ def load_config(fname):
|
|||
pass
|
||||
|
||||
|
||||
class ComplexEncoder(JSONEncoder):
|
||||
def default(self, obj):
|
||||
|
||||
try:
|
||||
if isinstance(obj, DBModel):
|
||||
return obj.__dict__
|
||||
|
||||
elif isinstance(obj, ActorModel):
|
||||
return None
|
||||
|
||||
elif hasattr(obj, "callback"):
|
||||
return obj()
|
||||
else:
|
||||
return None
|
||||
except TypeError as e:
|
||||
pass
|
||||
return None
|
||||
|
||||
|
||||
def json_dumps(obj):
|
||||
|
|
BIN
craftbeerpi.db
BIN
craftbeerpi.db
Binary file not shown.
|
@ -1,4 +1,4 @@
|
|||
# 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.
|
||||
config: 68b21bdf85f832d5bb6e445088bd68e4
|
||||
config: a7fdf21acdd201956ed9899e36546207
|
||||
tags: 645f666f9bcd5a90fca523b33c5a78b7
|
||||
|
|
|
@ -13,6 +13,7 @@ ActorController
|
|||
|
||||
.. automodule:: core.controller.actor_controller
|
||||
:members:
|
||||
:inherited-members:
|
||||
|
||||
Custom Actor
|
||||
^^^^^^^^^^^^^
|
||||
|
|
|
@ -10,6 +10,7 @@ Welcome to CraftBeerPi's documentation!
|
|||
.. toctree::
|
||||
:maxdepth: 3
|
||||
|
||||
install
|
||||
core
|
||||
actor
|
||||
sensor
|
||||
|
|
12
docs/_sources/install.rst.txt
Normal file
12
docs/_sources/install.rst.txt
Normal file
|
@ -0,0 +1,12 @@
|
|||
Installation
|
||||
============
|
||||
|
||||
Please make sure that Python 3.6 is installed
|
||||
::
|
||||
|
||||
git clone https://github.com/manuel83/craftbeerpi4
|
||||
|
||||
cd craftbeerpi4
|
||||
|
||||
pip install -r requirements.txt
|
||||
|
701
docs/_static/alabaster.css
vendored
701
docs/_static/alabaster.css
vendored
|
@ -1,701 +0,0 @@
|
|||
@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;
|
||||
}
|
||||
}
|
1
docs/_static/css/badge_only.css
vendored
Normal file
1
docs/_static/css/badge_only.css
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
.fa:before{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-weight:normal;font-style:normal;src:url("../fonts/fontawesome-webfont.eot");src:url("../fonts/fontawesome-webfont.eot?#iefix") format("embedded-opentype"),url("../fonts/fontawesome-webfont.woff") format("woff"),url("../fonts/fontawesome-webfont.ttf") format("truetype"),url("../fonts/fontawesome-webfont.svg#FontAwesome") format("svg")}.fa:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;text-decoration:inherit}a .fa{display:inline-block;text-decoration:inherit}li .fa{display:inline-block}li .fa-large:before,li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-0.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before,ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before{content:""}.icon-book:before{content:""}.fa-caret-down:before{content:""}.icon-caret-down:before{content:""}.fa-caret-up:before{content:""}.icon-caret-up:before{content:""}.fa-caret-left:before{content:""}.icon-caret-left:before{content:""}.fa-caret-right:before{content:""}.icon-caret-right:before{content:""}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;z-index:400}.rst-versions a{color:#2980B9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27AE60;*zoom:1}.rst-versions .rst-current-version:before,.rst-versions .rst-current-version:after{display:table;content:""}.rst-versions .rst-current-version:after{clear:both}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book{float:left}.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#E74C3C;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#F1C40F;color:#000}.rst-versions.shift-up{height:auto;max-height:100%}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:gray;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:solid 1px #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px}.rst-versions.rst-badge .icon-book{float:none}.rst-versions.rst-badge .fa-book{float:none}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book{float:left}.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge .rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width: 768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}
|
6
docs/_static/css/theme.css
vendored
Normal file
6
docs/_static/css/theme.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
docs/_static/custom.css
vendored
1
docs/_static/custom.css
vendored
|
@ -1 +0,0 @@
|
|||
/* This file intentionally left blank. */
|
BIN
docs/_static/fonts/Inconsolata-Bold.ttf
vendored
Normal file
BIN
docs/_static/fonts/Inconsolata-Bold.ttf
vendored
Normal file
Binary file not shown.
BIN
docs/_static/fonts/Inconsolata-Regular.ttf
vendored
Normal file
BIN
docs/_static/fonts/Inconsolata-Regular.ttf
vendored
Normal file
Binary file not shown.
BIN
docs/_static/fonts/Inconsolata.ttf
vendored
Normal file
BIN
docs/_static/fonts/Inconsolata.ttf
vendored
Normal file
Binary file not shown.
BIN
docs/_static/fonts/Lato-Bold.ttf
vendored
Normal file
BIN
docs/_static/fonts/Lato-Bold.ttf
vendored
Normal file
Binary file not shown.
BIN
docs/_static/fonts/Lato-Regular.ttf
vendored
Normal file
BIN
docs/_static/fonts/Lato-Regular.ttf
vendored
Normal file
Binary file not shown.
BIN
docs/_static/fonts/Lato/lato-bold.eot
vendored
Normal file
BIN
docs/_static/fonts/Lato/lato-bold.eot
vendored
Normal file
Binary file not shown.
BIN
docs/_static/fonts/Lato/lato-bold.ttf
vendored
Normal file
BIN
docs/_static/fonts/Lato/lato-bold.ttf
vendored
Normal file
Binary file not shown.
BIN
docs/_static/fonts/Lato/lato-bold.woff
vendored
Normal file
BIN
docs/_static/fonts/Lato/lato-bold.woff
vendored
Normal file
Binary file not shown.
BIN
docs/_static/fonts/Lato/lato-bold.woff2
vendored
Normal file
BIN
docs/_static/fonts/Lato/lato-bold.woff2
vendored
Normal file
Binary file not shown.
BIN
docs/_static/fonts/Lato/lato-bolditalic.eot
vendored
Normal file
BIN
docs/_static/fonts/Lato/lato-bolditalic.eot
vendored
Normal file
Binary file not shown.
BIN
docs/_static/fonts/Lato/lato-bolditalic.ttf
vendored
Normal file
BIN
docs/_static/fonts/Lato/lato-bolditalic.ttf
vendored
Normal file
Binary file not shown.
BIN
docs/_static/fonts/Lato/lato-bolditalic.woff
vendored
Normal file
BIN
docs/_static/fonts/Lato/lato-bolditalic.woff
vendored
Normal file
Binary file not shown.
BIN
docs/_static/fonts/Lato/lato-bolditalic.woff2
vendored
Normal file
BIN
docs/_static/fonts/Lato/lato-bolditalic.woff2
vendored
Normal file
Binary file not shown.
BIN
docs/_static/fonts/Lato/lato-italic.eot
vendored
Normal file
BIN
docs/_static/fonts/Lato/lato-italic.eot
vendored
Normal file
Binary file not shown.
BIN
docs/_static/fonts/Lato/lato-italic.ttf
vendored
Normal file
BIN
docs/_static/fonts/Lato/lato-italic.ttf
vendored
Normal file
Binary file not shown.
BIN
docs/_static/fonts/Lato/lato-italic.woff
vendored
Normal file
BIN
docs/_static/fonts/Lato/lato-italic.woff
vendored
Normal file
Binary file not shown.
BIN
docs/_static/fonts/Lato/lato-italic.woff2
vendored
Normal file
BIN
docs/_static/fonts/Lato/lato-italic.woff2
vendored
Normal file
Binary file not shown.
BIN
docs/_static/fonts/Lato/lato-regular.eot
vendored
Normal file
BIN
docs/_static/fonts/Lato/lato-regular.eot
vendored
Normal file
Binary file not shown.
BIN
docs/_static/fonts/Lato/lato-regular.ttf
vendored
Normal file
BIN
docs/_static/fonts/Lato/lato-regular.ttf
vendored
Normal file
Binary file not shown.
BIN
docs/_static/fonts/Lato/lato-regular.woff
vendored
Normal file
BIN
docs/_static/fonts/Lato/lato-regular.woff
vendored
Normal file
Binary file not shown.
BIN
docs/_static/fonts/Lato/lato-regular.woff2
vendored
Normal file
BIN
docs/_static/fonts/Lato/lato-regular.woff2
vendored
Normal file
Binary file not shown.
BIN
docs/_static/fonts/RobotoSlab-Bold.ttf
vendored
Normal file
BIN
docs/_static/fonts/RobotoSlab-Bold.ttf
vendored
Normal file
Binary file not shown.
BIN
docs/_static/fonts/RobotoSlab-Regular.ttf
vendored
Normal file
BIN
docs/_static/fonts/RobotoSlab-Regular.ttf
vendored
Normal file
Binary file not shown.
BIN
docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot
vendored
Normal file
BIN
docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot
vendored
Normal file
Binary file not shown.
BIN
docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf
vendored
Normal file
BIN
docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf
vendored
Normal file
Binary file not shown.
BIN
docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff
vendored
Normal file
BIN
docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff
vendored
Normal file
Binary file not shown.
BIN
docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2
vendored
Normal file
BIN
docs/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2
vendored
Normal file
Binary file not shown.
BIN
docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot
vendored
Normal file
BIN
docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot
vendored
Normal file
Binary file not shown.
BIN
docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf
vendored
Normal file
BIN
docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf
vendored
Normal file
Binary file not shown.
BIN
docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff
vendored
Normal file
BIN
docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff
vendored
Normal file
Binary file not shown.
BIN
docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2
vendored
Normal file
BIN
docs/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2
vendored
Normal file
Binary file not shown.
BIN
docs/_static/fonts/fontawesome-webfont.eot
vendored
Normal file
BIN
docs/_static/fonts/fontawesome-webfont.eot
vendored
Normal file
Binary file not shown.
2671
docs/_static/fonts/fontawesome-webfont.svg
vendored
Normal file
2671
docs/_static/fonts/fontawesome-webfont.svg
vendored
Normal file
File diff suppressed because it is too large
Load diff
After Width: | Height: | Size: 434 KiB |
BIN
docs/_static/fonts/fontawesome-webfont.ttf
vendored
Normal file
BIN
docs/_static/fonts/fontawesome-webfont.ttf
vendored
Normal file
Binary file not shown.
BIN
docs/_static/fonts/fontawesome-webfont.woff
vendored
Normal file
BIN
docs/_static/fonts/fontawesome-webfont.woff
vendored
Normal file
Binary file not shown.
BIN
docs/_static/fonts/fontawesome-webfont.woff2
vendored
Normal file
BIN
docs/_static/fonts/fontawesome-webfont.woff2
vendored
Normal file
Binary file not shown.
4
docs/_static/js/modernizr.min.js
vendored
Normal file
4
docs/_static/js/modernizr.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
3
docs/_static/js/theme.js
vendored
Normal file
3
docs/_static/js/theme.js
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
/* sphinx_rtd_theme version 0.4.2 | MIT license */
|
||||
/* Built 20181005 13:10 */
|
||||
require=function r(s,a,l){function c(e,n){if(!a[e]){if(!s[e]){var i="function"==typeof require&&require;if(!n&&i)return i(e,!0);if(u)return u(e,!0);var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}var o=a[e]={exports:{}};s[e][0].call(o.exports,function(n){return c(s[e][1][n]||n)},o,o.exports,r,s,a,l)}return a[e].exports}for(var u="function"==typeof require&&require,n=0;n<l.length;n++)c(l[n]);return c}({"sphinx-rtd-theme":[function(n,e,i){var jQuery="undefined"!=typeof window?window.jQuery:n("jquery");e.exports.ThemeNav={navBar:null,win:null,winScroll:!1,winResize:!1,linkScroll:!1,winPosition:0,winHeight:null,docHeight:null,isRunning:!1,enable:function(e){var i=this;void 0===e&&(e=!0),i.isRunning||(i.isRunning=!0,jQuery(function(n){i.init(n),i.reset(),i.win.on("hashchange",i.reset),e&&i.win.on("scroll",function(){i.linkScroll||i.winScroll||(i.winScroll=!0,requestAnimationFrame(function(){i.onScroll()}))}),i.win.on("resize",function(){i.winResize||(i.winResize=!0,requestAnimationFrame(function(){i.onResize()}))}),i.onResize()}))},enableSticky:function(){this.enable(!0)},init:function(i){i(document);var t=this;this.navBar=i("div.wy-side-scroll:first"),this.win=i(window),i(document).on("click","[data-toggle='wy-nav-top']",function(){i("[data-toggle='wy-nav-shift']").toggleClass("shift"),i("[data-toggle='rst-versions']").toggleClass("shift")}).on("click",".wy-menu-vertical .current ul li a",function(){var n=i(this);i("[data-toggle='wy-nav-shift']").removeClass("shift"),i("[data-toggle='rst-versions']").toggleClass("shift"),t.toggleCurrent(n),t.hashChange()}).on("click","[data-toggle='rst-current-version']",function(){i("[data-toggle='rst-versions']").toggleClass("shift-up")}),i("table.docutils:not(.field-list,.footnote,.citation)").wrap("<div class='wy-table-responsive'></div>"),i("table.docutils.footnote").wrap("<div class='wy-table-responsive footnote'></div>"),i("table.docutils.citation").wrap("<div class='wy-table-responsive citation'></div>"),i(".wy-menu-vertical ul").not(".simple").siblings("a").each(function(){var e=i(this);expand=i('<span class="toctree-expand"></span>'),expand.on("click",function(n){return t.toggleCurrent(e),n.stopPropagation(),!1}),e.prepend(expand)})},reset:function(){var n=encodeURI(window.location.hash)||"#";try{var e=$(".wy-menu-vertical"),i=e.find('[href="'+n+'"]');if(0===i.length){var t=$('.document [id="'+n.substring(1)+'"]').closest("div.section");0===(i=e.find('[href="#'+t.attr("id")+'"]')).length&&(i=e.find('[href="#"]'))}0<i.length&&($(".wy-menu-vertical .current").removeClass("current"),i.addClass("current"),i.closest("li.toctree-l1").addClass("current"),i.closest("li.toctree-l1").parent().addClass("current"),i.closest("li.toctree-l1").addClass("current"),i.closest("li.toctree-l2").addClass("current"),i.closest("li.toctree-l3").addClass("current"),i.closest("li.toctree-l4").addClass("current"))}catch(o){console.log("Error expanding nav for anchor",o)}},onScroll:function(){this.winScroll=!1;var n=this.win.scrollTop(),e=n+this.winHeight,i=this.navBar.scrollTop()+(n-this.winPosition);n<0||e>this.docHeight||(this.navBar.scrollTop(i),this.winPosition=n)},onResize:function(){this.winResize=!1,this.winHeight=this.win.height(),this.docHeight=$(document).height()},hashChange:function(){this.linkScroll=!0,this.win.one("hashchange",function(){this.linkScroll=!1})},toggleCurrent:function(n){var e=n.closest("li");e.siblings("li.current").removeClass("current"),e.siblings().find("li.current").removeClass("current"),e.find("> ul li.current").removeClass("current"),e.toggleClass("current")}},"undefined"!=typeof window&&(window.SphinxRtdTheme={Navigation:e.exports.ThemeNav,StickyNav:e.exports.ThemeNav}),function(){for(var r=0,n=["ms","moz","webkit","o"],e=0;e<n.length&&!window.requestAnimationFrame;++e)window.requestAnimationFrame=window[n[e]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[n[e]+"CancelAnimationFrame"]||window[n[e]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(n,e){var i=(new Date).getTime(),t=Math.max(0,16-(i-r)),o=window.setTimeout(function(){n(i+t)},t);return r=i+t,o}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(n){clearTimeout(n)})}()},{jquery:"jquery"}]},{},["sphinx-rtd-theme"]);
|
134
docs/_static/pygments.css
vendored
134
docs/_static/pygments.css
vendored
|
@ -1,77 +1,69 @@
|
|||
.highlight .hll { background-color: #ffffcc }
|
||||
.highlight { background: #f8f8f8; }
|
||||
.highlight .c { color: #8f5902; font-style: italic } /* Comment */
|
||||
.highlight .err { color: #a40000; border: 1px solid #ef2929 } /* Error */
|
||||
.highlight .g { color: #000000 } /* Generic */
|
||||
.highlight .k { color: #004461; font-weight: bold } /* Keyword */
|
||||
.highlight .l { color: #000000 } /* Literal */
|
||||
.highlight .n { color: #000000 } /* Name */
|
||||
.highlight .o { color: #582800 } /* Operator */
|
||||
.highlight .x { color: #000000 } /* Other */
|
||||
.highlight .p { color: #000000; font-weight: bold } /* Punctuation */
|
||||
.highlight .ch { color: #8f5902; font-style: italic } /* Comment.Hashbang */
|
||||
.highlight .cm { color: #8f5902; font-style: italic } /* Comment.Multiline */
|
||||
.highlight .cp { color: #8f5902 } /* Comment.Preproc */
|
||||
.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 .c { color: #408080; font-style: italic } /* Comment */
|
||||
.highlight .err { border: 1px solid #FF0000 } /* Error */
|
||||
.highlight .k { color: #008000; font-weight: bold } /* Keyword */
|
||||
.highlight .o { color: #666666 } /* Operator */
|
||||
.highlight .ch { color: #408080; font-style: italic } /* Comment.Hashbang */
|
||||
.highlight .cm { color: #408080; font-style: italic } /* Comment.Multiline */
|
||||
.highlight .cp { color: #BC7A00 } /* Comment.Preproc */
|
||||
.highlight .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */
|
||||
.highlight .c1 { color: #408080; font-style: italic } /* Comment.Single */
|
||||
.highlight .cs { color: #408080; font-style: italic } /* Comment.Special */
|
||||
.highlight .gd { color: #A00000 } /* Generic.Deleted */
|
||||
.highlight .ge { font-style: italic } /* Generic.Emph */
|
||||
.highlight .gr { color: #FF0000 } /* Generic.Error */
|
||||
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
|
||||
.highlight .gi { color: #00A000 } /* Generic.Inserted */
|
||||
.highlight .go { color: #888888 } /* Generic.Output */
|
||||
.highlight .gp { color: #745334 } /* Generic.Prompt */
|
||||
.highlight .gs { color: #000000; font-weight: bold } /* Generic.Strong */
|
||||
.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
|
||||
.highlight .gs { font-weight: bold } /* Generic.Strong */
|
||||
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
|
||||
.highlight .gt { color: #a40000; font-weight: bold } /* Generic.Traceback */
|
||||
.highlight .kc { color: #004461; font-weight: bold } /* Keyword.Constant */
|
||||
.highlight .kd { color: #004461; font-weight: bold } /* Keyword.Declaration */
|
||||
.highlight .kn { color: #004461; font-weight: bold } /* Keyword.Namespace */
|
||||
.highlight .kp { color: #004461; font-weight: bold } /* Keyword.Pseudo */
|
||||
.highlight .kr { color: #004461; font-weight: bold } /* Keyword.Reserved */
|
||||
.highlight .kt { color: #004461; font-weight: bold } /* Keyword.Type */
|
||||
.highlight .ld { color: #000000 } /* Literal.Date */
|
||||
.highlight .m { color: #990000 } /* Literal.Number */
|
||||
.highlight .s { color: #4e9a06 } /* Literal.String */
|
||||
.highlight .na { color: #c4a000 } /* Name.Attribute */
|
||||
.highlight .nb { color: #004461 } /* Name.Builtin */
|
||||
.highlight .nc { color: #000000 } /* Name.Class */
|
||||
.highlight .no { color: #000000 } /* Name.Constant */
|
||||
.highlight .nd { color: #888888 } /* Name.Decorator */
|
||||
.highlight .ni { color: #ce5c00 } /* Name.Entity */
|
||||
.highlight .ne { color: #cc0000; font-weight: bold } /* Name.Exception */
|
||||
.highlight .nf { color: #000000 } /* Name.Function */
|
||||
.highlight .nl { color: #f57900 } /* Name.Label */
|
||||
.highlight .nn { color: #000000 } /* Name.Namespace */
|
||||
.highlight .nx { color: #000000 } /* Name.Other */
|
||||
.highlight .py { color: #000000 } /* Name.Property */
|
||||
.highlight .nt { color: #004461; font-weight: bold } /* Name.Tag */
|
||||
.highlight .nv { color: #000000 } /* Name.Variable */
|
||||
.highlight .ow { color: #004461; font-weight: bold } /* Operator.Word */
|
||||
.highlight .w { color: #f8f8f8; text-decoration: underline } /* Text.Whitespace */
|
||||
.highlight .mb { color: #990000 } /* Literal.Number.Bin */
|
||||
.highlight .mf { color: #990000 } /* Literal.Number.Float */
|
||||
.highlight .mh { color: #990000 } /* Literal.Number.Hex */
|
||||
.highlight .mi { color: #990000 } /* Literal.Number.Integer */
|
||||
.highlight .mo { color: #990000 } /* Literal.Number.Oct */
|
||||
.highlight .sa { color: #4e9a06 } /* Literal.String.Affix */
|
||||
.highlight .sb { color: #4e9a06 } /* Literal.String.Backtick */
|
||||
.highlight .sc { color: #4e9a06 } /* Literal.String.Char */
|
||||
.highlight .dl { color: #4e9a06 } /* Literal.String.Delimiter */
|
||||
.highlight .sd { color: #8f5902; font-style: italic } /* Literal.String.Doc */
|
||||
.highlight .s2 { color: #4e9a06 } /* Literal.String.Double */
|
||||
.highlight .se { color: #4e9a06 } /* Literal.String.Escape */
|
||||
.highlight .sh { color: #4e9a06 } /* Literal.String.Heredoc */
|
||||
.highlight .si { color: #4e9a06 } /* Literal.String.Interpol */
|
||||
.highlight .sx { color: #4e9a06 } /* Literal.String.Other */
|
||||
.highlight .sr { color: #4e9a06 } /* Literal.String.Regex */
|
||||
.highlight .s1 { color: #4e9a06 } /* Literal.String.Single */
|
||||
.highlight .ss { color: #4e9a06 } /* Literal.String.Symbol */
|
||||
.highlight .bp { color: #3465a4 } /* Name.Builtin.Pseudo */
|
||||
.highlight .fm { color: #000000 } /* Name.Function.Magic */
|
||||
.highlight .vc { color: #000000 } /* Name.Variable.Class */
|
||||
.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 */
|
||||
.highlight .gt { color: #0044DD } /* Generic.Traceback */
|
||||
.highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
|
||||
.highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
|
||||
.highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
|
||||
.highlight .kp { color: #008000 } /* Keyword.Pseudo */
|
||||
.highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
|
||||
.highlight .kt { color: #B00040 } /* Keyword.Type */
|
||||
.highlight .m { color: #666666 } /* Literal.Number */
|
||||
.highlight .s { color: #BA2121 } /* Literal.String */
|
||||
.highlight .na { color: #7D9029 } /* Name.Attribute */
|
||||
.highlight .nb { color: #008000 } /* Name.Builtin */
|
||||
.highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */
|
||||
.highlight .no { color: #880000 } /* Name.Constant */
|
||||
.highlight .nd { color: #AA22FF } /* Name.Decorator */
|
||||
.highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */
|
||||
.highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
|
||||
.highlight .nf { color: #0000FF } /* Name.Function */
|
||||
.highlight .nl { color: #A0A000 } /* Name.Label */
|
||||
.highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
|
||||
.highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */
|
||||
.highlight .nv { color: #19177C } /* Name.Variable */
|
||||
.highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
|
||||
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
|
||||
.highlight .mb { color: #666666 } /* Literal.Number.Bin */
|
||||
.highlight .mf { color: #666666 } /* Literal.Number.Float */
|
||||
.highlight .mh { color: #666666 } /* Literal.Number.Hex */
|
||||
.highlight .mi { color: #666666 } /* Literal.Number.Integer */
|
||||
.highlight .mo { color: #666666 } /* Literal.Number.Oct */
|
||||
.highlight .sa { color: #BA2121 } /* Literal.String.Affix */
|
||||
.highlight .sb { color: #BA2121 } /* Literal.String.Backtick */
|
||||
.highlight .sc { color: #BA2121 } /* Literal.String.Char */
|
||||
.highlight .dl { color: #BA2121 } /* Literal.String.Delimiter */
|
||||
.highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
|
||||
.highlight .s2 { color: #BA2121 } /* Literal.String.Double */
|
||||
.highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
|
||||
.highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */
|
||||
.highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
|
||||
.highlight .sx { color: #008000 } /* Literal.String.Other */
|
||||
.highlight .sr { color: #BB6688 } /* Literal.String.Regex */
|
||||
.highlight .s1 { color: #BA2121 } /* Literal.String.Single */
|
||||
.highlight .ss { color: #19177C } /* Literal.String.Symbol */
|
||||
.highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */
|
||||
.highlight .fm { color: #0000FF } /* Name.Function.Magic */
|
||||
.highlight .vc { color: #19177C } /* Name.Variable.Class */
|
||||
.highlight .vg { color: #19177C } /* Name.Variable.Global */
|
||||
.highlight .vi { color: #19177C } /* Name.Variable.Instance */
|
||||
.highlight .vm { color: #19177C } /* Name.Variable.Magic */
|
||||
.highlight .il { color: #666666 } /* Literal.Number.Integer.Long */
|
506
docs/actor.html
506
docs/actor.html
|
@ -1,38 +1,156 @@
|
|||
|
||||
<!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>Actor — 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>
|
||||
<script async="async" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
|
||||
<!DOCTYPE html>
|
||||
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
|
||||
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>Actor — CraftBeerPi 4.0 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<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="search" title="Search" href="search.html" />
|
||||
<link rel="next" title="Sensor" href="sensor.html" />
|
||||
<link rel="prev" title="Welcome to CraftBeerPi’s documentation!" href="index.html" />
|
||||
<link rel="prev" title="Core" href="core.html" />
|
||||
|
||||
|
||||
<script src="_static/js/modernizr.min.js"></script>
|
||||
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
|
||||
|
||||
<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" />
|
||||
<div class="wy-grid-for-nav">
|
||||
|
||||
</head><body>
|
||||
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search">
|
||||
|
||||
|
||||
<div class="body" role="main">
|
||||
|
||||
<a href="index.html" class="icon icon-home"> CraftBeerPi
|
||||
|
||||
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<ul class="current">
|
||||
<li class="toctree-l1"><a class="reference internal" href="install.html">Installation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="core.html">Core</a></li>
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="#">Actor</a><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#architecture">Architecture</a></li>
|
||||
<li class="toctree-l2"><a class="reference internal" href="#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> »</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">
|
||||
<h1>Actor<a class="headerlink" href="#actor" title="Permalink to this headline">¶</a></h1>
|
||||
|
@ -46,6 +164,191 @@
|
|||
<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>
|
||||
<dd><p>The main actor controller</p>
|
||||
<dl class="method">
|
||||
<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> → 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> → 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> → 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">
|
||||
<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>
|
||||
|
@ -63,7 +366,9 @@
|
|||
<dl class="method">
|
||||
<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> → None<a class="headerlink" href="#core.controller.actor_controller.ActorController.off" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><table class="docutils field-list" frame="void" rules="none">
|
||||
<dd><p>Method to switch and actor off
|
||||
Supporting Event Topic “actor/+/off”</p>
|
||||
<table class="docutils field-list" frame="void" rules="none">
|
||||
<col class="field-name" />
|
||||
<col class="field-body" />
|
||||
<tbody valign="top">
|
||||
|
@ -78,12 +383,43 @@
|
|||
</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> → None<a class="headerlink" href="#core.controller.actor_controller.ActorController.register" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Register a new actor type
|
||||
:param name: actor name
|
||||
:param clazz: actor class
|
||||
:return: None</p>
|
||||
<dt id="core.controller.actor_controller.ActorController.on">
|
||||
<code class="descname">on</code><span class="sig-paren">(</span><em>id</em>, <em>power=100</em>, <em>**kwargs</em><span class="sig-paren">)</span> → None<a class="headerlink" href="#core.controller.actor_controller.ActorController.on" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Method to switch an actor on.
|
||||
Supporting Event Topic “actor/+/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"><ul class="first simple">
|
||||
<li><strong>id</strong> – the actor id</li>
|
||||
<li><strong>power</strong> – as integer value between 1 and 100</li>
|
||||
<li><strong>kwargs</strong> – </li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first last"></p>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</dd></dl>
|
||||
|
||||
<dl class="method">
|
||||
<dt id="core.controller.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> → None<a class="headerlink" href="#core.controller.actor_controller.ActorController.toggle" title="Permalink to this definition">¶</a></dt>
|
||||
<dd><p>Method to toggle an actor on or off
|
||||
Supporting Event Topic “actor/+/toggle”</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> – </td>
|
||||
</tr>
|
||||
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</dd></dl>
|
||||
|
||||
</dd></dl>
|
||||
|
@ -223,75 +559,61 @@
|
|||
</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 current"><a class="current reference internal" href="#">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">Step API</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 CraftBeerPi’s documentation!</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>
|
||||
<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>
|
||||
</div>
|
||||
<script type="text/javascript">$('#searchbox').show(0);</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© 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 class="clearer"></div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
©2018, Manuel Fritsch.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 1.8.1</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
|
|
||||
<a href="_sources/actor.rst.txt"
|
||||
rel="nofollow">Page source</a>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
|
||||
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="text/javascript" src="_static/js/theme.js"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
269
docs/core.html
269
docs/core.html
|
@ -1,113 +1,212 @@
|
|||
|
||||
<!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>Core — 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>
|
||||
<script async="async" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
|
||||
<!DOCTYPE html>
|
||||
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
|
||||
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>Core — CraftBeerPi 4.0 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<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="search" title="Search" href="search.html" />
|
||||
<link rel="next" title="Actor" href="actor.html" />
|
||||
<link rel="prev" title="Welcome to CraftBeerPi’s documentation!" href="index.html" />
|
||||
<link rel="prev" title="Installation" href="install.html" />
|
||||
|
||||
|
||||
<script src="_static/js/modernizr.min.js"></script>
|
||||
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
|
||||
|
||||
<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" />
|
||||
<div class="wy-grid-for-nav">
|
||||
|
||||
</head><body>
|
||||
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search">
|
||||
|
||||
|
||||
<div class="body" role="main">
|
||||
|
||||
<a href="index.html" class="icon icon-home"> CraftBeerPi
|
||||
|
||||
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<ul class="current">
|
||||
<li class="toctree-l1"><a class="reference internal" href="install.html">Installation</a></li>
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="#">Core</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="actor.html">Actor</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="sensor.html">Sensor</a></li>
|
||||
</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> »</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">
|
||||
<h1>Core<a class="headerlink" href="#core" title="Permalink to this headline">¶</a></h1>
|
||||
</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 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 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 CraftBeerPi’s documentation!</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>
|
||||
<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>
|
||||
</div>
|
||||
<script type="text/javascript">$('#searchbox').show(0);</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© 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 class="clearer"></div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
©2018, Manuel Fritsch.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 1.8.1</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
|
|
||||
<a href="_sources/core.rst.txt"
|
||||
rel="nofollow">Page source</a>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
|
||||
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="text/javascript" src="_static/js/theme.js"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -1,37 +1,148 @@
|
|||
|
||||
|
||||
<!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>Index — 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>
|
||||
<script async="async" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
|
||||
<!DOCTYPE html>
|
||||
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
|
||||
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>Index — CraftBeerPi 4.0 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<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="search" title="Search" href="search.html" />
|
||||
<link rel="search" title="Search" href="search.html" />
|
||||
|
||||
|
||||
<script src="_static/js/modernizr.min.js"></script>
|
||||
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
|
||||
|
||||
<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" />
|
||||
<div class="wy-grid-for-nav">
|
||||
|
||||
</head><body>
|
||||
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search">
|
||||
|
||||
|
||||
<div class="body" role="main">
|
||||
|
||||
<a href="index.html" class="icon icon-home"> CraftBeerPi
|
||||
|
||||
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="install.html">Installation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="core.html">Core</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="actor.html">Actor</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="sensor.html">Sensor</a></li>
|
||||
</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> »</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>
|
||||
|
@ -39,9 +150,11 @@
|
|||
<div class="genindex-jumpbox">
|
||||
<a href="#A"><strong>A</strong></a>
|
||||
| <a href="#C"><strong>C</strong></a>
|
||||
| <a href="#G"><strong>G</strong></a>
|
||||
| <a href="#H"><strong>H</strong></a>
|
||||
| <a href="#I"><strong>I</strong></a>
|
||||
| <a href="#O"><strong>O</strong></a>
|
||||
| <a href="#R"><strong>R</strong></a>
|
||||
| <a href="#T"><strong>T</strong></a>
|
||||
|
||||
</div>
|
||||
<h2 id="A">A</h2>
|
||||
|
@ -64,6 +177,38 @@
|
|||
</ul></td>
|
||||
</tr></table>
|
||||
|
||||
<h2 id="G">G</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.get_all">get_all() (core.controller.actor_controller.ActorController method)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
</tr></table>
|
||||
|
||||
<h2 id="H">H</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.http_add">http_add() (core.controller.actor_controller.ActorController method)</a>
|
||||
</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>
|
||||
<li><a href="actor.html#core.controller.actor_controller.ActorController.http_get_all">http_get_all() (core.controller.actor_controller.ActorController method)</a>
|
||||
</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>
|
||||
</ul></td>
|
||||
<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>
|
||||
<li><a href="actor.html#core.controller.actor_controller.ActorController.http_on">http_on() (core.controller.actor_controller.ActorController method)</a>
|
||||
</li>
|
||||
<li><a href="actor.html#core.controller.actor_controller.ActorController.http_toggle">http_toggle() (core.controller.actor_controller.ActorController method)</a>
|
||||
</li>
|
||||
<li><a href="actor.html#core.controller.actor_controller.ActorController.http_update">http_update() (core.controller.actor_controller.ActorController method)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
</tr></table>
|
||||
|
||||
<h2 id="I">I</h2>
|
||||
<table style="width: 100%" class="indextable genindextable"><tr>
|
||||
<td style="width: 33%; vertical-align: top;"><ul>
|
||||
|
@ -76,84 +221,70 @@
|
|||
<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.off">off() (core.controller.actor_controller.ActorController method)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
<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>
|
||||
</ul></td>
|
||||
</tr></table>
|
||||
|
||||
<h2 id="R">R</h2>
|
||||
<h2 id="T">T</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><a href="actor.html#core.controller.actor_controller.ActorController.toggle">toggle() (core.controller.actor_controller.ActorController method)</a>
|
||||
</li>
|
||||
</ul></td>
|
||||
</tr></table>
|
||||
|
||||
|
||||
|
||||
</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="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 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>
|
||||
|
||||
|
||||
|
||||
<footer>
|
||||
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© 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 class="clearer"></div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
©2018, Manuel Fritsch.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 1.8.1</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
|
||||
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="text/javascript" src="_static/js/theme.js"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
267
docs/index.html
267
docs/index.html
|
@ -1,42 +1,156 @@
|
|||
|
||||
<!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>Welcome to CraftBeerPi’s documentation! — 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>
|
||||
<script async="async" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
|
||||
<!DOCTYPE html>
|
||||
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
|
||||
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>Welcome to CraftBeerPi’s documentation! — CraftBeerPi 4.0 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<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="search" title="Search" href="search.html" />
|
||||
<link rel="next" title="Core" href="core.html" />
|
||||
<link rel="next" title="Installation" href="install.html" />
|
||||
|
||||
|
||||
<script src="_static/js/modernizr.min.js"></script>
|
||||
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
|
||||
|
||||
<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" />
|
||||
<div class="wy-grid-for-nav">
|
||||
|
||||
</head><body>
|
||||
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search">
|
||||
|
||||
|
||||
<div class="body" role="main">
|
||||
|
||||
<a href="#" class="icon icon-home"> CraftBeerPi
|
||||
|
||||
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="install.html">Installation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="core.html">Core</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="actor.html">Actor</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="sensor.html">Sensor</a></li>
|
||||
</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> »</li>
|
||||
|
||||
<li>Welcome to CraftBeerPi’s 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">
|
||||
<h1>Welcome to CraftBeerPi’s documentation!<a class="headerlink" href="#welcome-to-craftbeerpi-s-documentation" title="Permalink to this headline">¶</a></h1>
|
||||
<div class="toctree-wrapper compound">
|
||||
<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><ul>
|
||||
<li class="toctree-l2"><a class="reference internal" href="actor.html#architecture">Architecture</a></li>
|
||||
|
@ -55,74 +169,59 @@
|
|||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
|
||||
<div class="sphinxsidebarwrapper">
|
||||
<h1 class="logo"><a href="#">CraftBeerPi</a></h1>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<h3>Navigation</h3>
|
||||
<ul>
|
||||
<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 class="relations">
|
||||
<h3>Related Topics</h3>
|
||||
<ul>
|
||||
<li><a href="#">Documentation overview</a><ul>
|
||||
<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>
|
||||
<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>
|
||||
</div>
|
||||
<script type="text/javascript">$('#searchbox').show(0);</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© 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 class="clearer"></div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
©2018, Manuel Fritsch.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 1.8.1</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
|
|
||||
<a href="_sources/index.rst.txt"
|
||||
rel="nofollow">Page source</a>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
|
||||
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="text/javascript" src="_static/js/theme.js"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
220
docs/install.html
Normal file
220
docs/install.html
Normal file
|
@ -0,0 +1,220 @@
|
|||
|
||||
|
||||
<!DOCTYPE html>
|
||||
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
|
||||
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>Installation — CraftBeerPi 4.0 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<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="search" title="Search" href="search.html" />
|
||||
<link rel="next" title="Core" href="core.html" />
|
||||
<link rel="prev" title="Welcome to CraftBeerPi’s documentation!" href="index.html" />
|
||||
|
||||
|
||||
<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="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> »</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">
|
||||
<h1>Installation<a class="headerlink" href="#installation" title="Permalink to this headline">¶</a></h1>
|
||||
<p>Please make sure that Python 3.6 is installed</p>
|
||||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">git</span> <span class="n">clone</span> <span class="n">https</span><span class="p">:</span><span class="o">//</span><span class="n">github</span><span class="o">.</span><span class="n">com</span><span class="o">/</span><span class="n">manuel83</span><span class="o">/</span><span class="n">craftbeerpi4</span>
|
||||
|
||||
<span class="n">cd</span> <span class="n">craftbeerpi4</span>
|
||||
|
||||
<span class="n">pip</span> <span class="n">install</span> <span class="o">-</span><span class="n">r</span> <span class="n">requirements</span><span class="o">.</span><span class="n">txt</span>
|
||||
</pre></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 CraftBeerPi’s documentation!" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© 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>
|
BIN
docs/objects.inv
BIN
docs/objects.inv
Binary file not shown.
|
@ -1,39 +1,148 @@
|
|||
|
||||
<!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>Python Module Index — 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>
|
||||
<script async="async" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
|
||||
<!DOCTYPE html>
|
||||
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
|
||||
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>Python Module Index — CraftBeerPi 4.0 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<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="search" title="Search" href="search.html" />
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script src="_static/js/modernizr.min.js"></script>
|
||||
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
|
||||
|
||||
<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" />
|
||||
<div class="wy-grid-for-nav">
|
||||
|
||||
|
||||
|
||||
</head><body>
|
||||
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search">
|
||||
|
||||
|
||||
<div class="body" role="main">
|
||||
|
||||
<a href="index.html" class="icon icon-home"> CraftBeerPi
|
||||
|
||||
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="install.html">Installation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="core.html">Core</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="actor.html">Actor</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="sensor.html">Sensor</a></li>
|
||||
</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> »</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>
|
||||
|
@ -65,70 +174,52 @@
|
|||
</table>
|
||||
|
||||
|
||||
</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="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 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>
|
||||
|
||||
|
||||
|
||||
<footer>
|
||||
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© 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 class="clearer"></div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
©2018, Manuel Fritsch.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 1.8.1</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
|
||||
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="text/javascript" src="_static/js/theme.js"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
274
docs/search.html
274
docs/search.html
|
@ -1,122 +1,216 @@
|
|||
|
||||
<!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>Search — 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" />
|
||||
<!DOCTYPE html>
|
||||
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
|
||||
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>Search — CraftBeerPi 4.0 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<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 async="async" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></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="search" title="Search" href="#" />
|
||||
<script type="text/javascript">
|
||||
jQuery(function() { Search.loadIndex("searchindex.js"); });
|
||||
</script>
|
||||
|
||||
<script type="text/javascript" id="searchindexloader"></script>
|
||||
<link rel="search" title="Search" href="#" />
|
||||
|
||||
|
||||
<script src="_static/js/modernizr.min.js"></script>
|
||||
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
|
||||
|
||||
<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" />
|
||||
<div class="wy-grid-for-nav">
|
||||
|
||||
|
||||
</head><body>
|
||||
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search">
|
||||
|
||||
|
||||
<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>
|
||||
|
||||
<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>
|
||||
</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>
|
||||
<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 class="relations">
|
||||
<h3>Related Topics</h3>
|
||||
<ul>
|
||||
<li><a href="index.html">Documentation overview</a><ul>
|
||||
</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> »</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>
|
||||
© 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 class="clearer"></div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
©2018, Manuel Fritsch.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 1.8.1</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
|
||||
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||
<script type="text/javascript" src="_static/searchtools.js"></script>
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="text/javascript" src="_static/js/theme.js"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
<script type="text/javascript">
|
||||
jQuery(function() { Search.loadIndex("searchindex.js"); });
|
||||
</script>
|
||||
|
||||
<script type="text/javascript" id="searchindexloader"></script>
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -1 +1 @@
|
|||
Search.setIndex({docnames:["actor","core","index","sensor","step"],envversion:{"sphinx.domains.c":1,"sphinx.domains.changeset":1,"sphinx.domains.cpp":1,"sphinx.domains.javascript":1,"sphinx.domains.math":1,"sphinx.domains.python":1,"sphinx.domains.rst":1,"sphinx.domains.std":1,sphinx:55},filenames:["actor.rst","core.rst","index.rst","sensor.rst","step.rst"],objects:{"core.controller":{actor_controller:[0,0,0,"-"],sensor_controller:[3,0,0,"-"]},"core.controller.actor_controller":{ActorController:[0,1,1,""]},"core.controller.actor_controller.ActorController":{init:[0,2,1,""],off:[0,2,1,""],register:[0,2,1,""]}},objnames:{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","method","Python method"]},objtypes:{"0":"py:module","1":"py:class","2":"py:method"},terms:{"class":0,"import":0,"new":0,"return":0,"super":0,"true":0,The:0,__file__:0,__init__:0,action:0,actor111111:0,actor:2,actor_control:0,actorcontrol:2,all:0,api:0,architectur:2,async:0,background_task:0,basicconfig:0,bg_job:0,call:0,cbpi:0,cbpiactor:0,cfg:0,clazz:0,config:0,control:0,core:[0,2],creat:0,custom:2,customactor:0,def:0,dure:0,fals:0,from:0,getlogg:0,here:0,info:0,init:0,initi:0,instanc:0,interv:0,kei:0,kettl:0,kwarg:0,label:0,level:0,load_config:0,log:0,logger:0,main:0,manuel:0,method:0,myaction:0,name1:0,name2:0,name:0,need:0,none:0,number:0,off:0,param:0,paramet:0,pass:0,plugin:0,power:0,print:0,properti:0,regist:0,self:0,sensor:2,sensorcontrol:2,server:0,setup:0,startup:0,state:0,step:[],test:0,text:0,thi:0,type:0,version:0,wooh:0,woohoo:0,yaml:0,you:0,your:0},titles:["Actor","Core","Welcome to CraftBeerPi\u2019s documentation!","Sensor","Step API"],titleterms:{actor:0,actorcontrol:0,api:4,architectur:[0,3],core:1,craftbeerpi:2,custom:[0,3],document:2,sensor:3,sensorcontrol:3,step:4,welcom:2}})
|
||||
Search.setIndex({docnames:["actor","core","index","install","sensor","step"],envversion:{"sphinx.domains.c":1,"sphinx.domains.changeset":1,"sphinx.domains.cpp":1,"sphinx.domains.javascript":1,"sphinx.domains.math":2,"sphinx.domains.python":1,"sphinx.domains.rst":1,"sphinx.domains.std":1,sphinx:55},filenames:["actor.rst","core.rst","index.rst","install.rst","sensor.rst","step.rst"],objects:{"core.controller":{actor_controller:[0,0,0,"-"],sensor_controller:[4,0,0,"-"]},"core.controller.actor_controller":{ActorController:[0,1,1,""]},"core.controller.actor_controller.ActorController":{get_all:[0,2,1,""],http_add:[0,2,1,""],http_delete_one:[0,2,1,""],http_get_all:[0,2,1,""],http_get_one:[0,2,1,""],http_off:[0,2,1,""],http_on:[0,2,1,""],http_toggle:[0,2,1,""],http_update:[0,2,1,""],init:[0,2,1,""],off:[0,2,1,""],on:[0,2,1,""],toggle:[0,2,1,""]}},objnames:{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","method","Python method"]},objtypes:{"0":"py:module","1":"py:class","2":"py:method"},terms:{"class":0,"import":0,"return":0,"super":0,"switch":0,"true":0,The:0,__file__:0,__init__:0,action:0,actor111111:0,actor:2,actor_control:0,actorcontrol:2,aiohttp:0,all:0,allow:0,api:0,applic:0,architectur:2,async:0,background_task:0,basicconfig:0,between:0,bg_job:0,bodi:0,call:0,cbpi:0,cbpiactor:0,cfg:0,clone:3,com:3,config:0,control:0,core:[0,2],craftbeerpi4:3,creat:0,custom:2,customactor:0,def:0,descript:0,dure:0,end:0,event:0,fals:0,force_db_upd:0,format:0,from:0,get_al:0,getlogg:0,git:3,github:3,here:0,http:[0,3],http_add:0,http_delete_on:0,http_get_al:0,http_get_on:0,http_off:0,http_on:0,http_toggl:0,http_updat:0,info:0,init:0,initi:0,instal:2,instanc:0,int64:0,integ:0,interv:0,invalid:0,json:0,kei:0,kettl:0,kwarg:0,label:0,level:0,load_config:0,log:0,logger:0,main:0,make:3,manuel83:3,manuel:0,method:0,myaction:0,name1:0,name2:0,name:0,need:0,none:0,number:0,object:0,off:0,oper:0,param:0,paramet:0,pass:0,path:0,pip:3,plain:0,pleas:3,plugin:0,point:0,pong:0,power:0,print:0,produc:0,properti:0,python:3,regist:0,request:0,requir:[0,3],respons:0,rest:0,schema:0,self:0,sensor:2,sensorcontrol:2,server:0,servic:0,setup:0,startup:0,state:0,success:0,support:0,sure:3,tag:0,test:0,text:0,thi:0,toggl:0,topic:0,txt:3,type:0,user:0,valu:0,version:0,web_respons:0,wooh:0,woohoo:0,yaml:0,you:0,your:0},titles:["Actor","Core","Welcome to CraftBeerPi\u2019s documentation!","Installation","Sensor","Step API"],titleterms:{actor:0,actorcontrol:0,api:5,architectur:[0,4],core:1,craftbeerpi:2,custom:[0,4],document:2,instal:3,sensor:4,sensorcontrol:4,step:5,welcom:2}})
|
273
docs/sensor.html
273
docs/sensor.html
|
@ -1,38 +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>Sensor — 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>
|
||||
<script async="async" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
|
||||
<!DOCTYPE html>
|
||||
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
|
||||
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>Sensor — CraftBeerPi 4.0 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<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="search" title="Search" href="search.html" />
|
||||
<link rel="next" title="Step API" href="step.html" />
|
||||
<link rel="prev" title="Actor" href="actor.html" />
|
||||
<link rel="prev" title="Actor" href="actor.html" />
|
||||
|
||||
|
||||
<script src="_static/js/modernizr.min.js"></script>
|
||||
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
|
||||
|
||||
<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" />
|
||||
<div class="wy-grid-for-nav">
|
||||
|
||||
</head><body>
|
||||
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search">
|
||||
|
||||
|
||||
<div class="body" role="main">
|
||||
|
||||
<a href="index.html" class="icon icon-home"> CraftBeerPi
|
||||
|
||||
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<ul class="current">
|
||||
<li class="toctree-l1"><a class="reference internal" href="install.html">Installation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="core.html">Core</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="actor.html">Actor</a></li>
|
||||
<li class="toctree-l1 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> »</li>
|
||||
|
||||
<li>Sensor</li>
|
||||
|
||||
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
|
||||
|
||||
<a href="_sources/sensor.rst.txt" rel="nofollow"> View page source</a>
|
||||
|
||||
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
||||
|
||||
<hr/>
|
||||
</div>
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
<div itemprop="articleBody">
|
||||
|
||||
<div class="section" id="sensor">
|
||||
<h1>Sensor<a class="headerlink" href="#sensor" title="Permalink to this headline">¶</a></h1>
|
||||
|
@ -48,75 +165,59 @@
|
|||
</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="actor.html">Actor</a></li>
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="#">Sensor</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="step.html">Step API</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="step.html" title="next chapter">Step API</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>
|
||||
<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>
|
||||
</div>
|
||||
<script type="text/javascript">$('#searchbox').show(0);</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© 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 class="clearer"></div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
©2018, Manuel Fritsch.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 1.8.1</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
|
|
||||
<a href="_sources/sensor.rst.txt"
|
||||
rel="nofollow">Page source</a>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
|
||||
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="text/javascript" src="_static/js/theme.js"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
262
docs/step.html
262
docs/step.html
|
@ -1,111 +1,201 @@
|
|||
|
||||
<!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>Step API — 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>
|
||||
<script async="async" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
|
||||
<!DOCTYPE html>
|
||||
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
|
||||
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<title>Step API — CraftBeerPi 4.0 documentation</title>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<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="search" title="Search" href="search.html" />
|
||||
<link rel="prev" title="Sensor" href="sensor.html" />
|
||||
<link rel="search" title="Search" href="search.html" />
|
||||
|
||||
|
||||
<script src="_static/js/modernizr.min.js"></script>
|
||||
|
||||
</head>
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
|
||||
|
||||
<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" />
|
||||
<div class="wy-grid-for-nav">
|
||||
|
||||
</head><body>
|
||||
|
||||
|
||||
<div class="document">
|
||||
<div class="documentwrapper">
|
||||
<div class="bodywrapper">
|
||||
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search">
|
||||
|
||||
|
||||
<div class="body" role="main">
|
||||
|
||||
<a href="index.html" class="icon icon-home"> CraftBeerPi
|
||||
|
||||
|
||||
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div role="search">
|
||||
<form id="rtd-search-form" class="wy-form" action="search.html" method="get">
|
||||
<input type="text" name="q" placeholder="Search docs" />
|
||||
<input type="hidden" name="check_keywords" value="yes" />
|
||||
<input type="hidden" name="area" value="default" />
|
||||
</form>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<ul>
|
||||
<li class="toctree-l1"><a class="reference internal" href="install.html">Installation</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="core.html">Core</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="actor.html">Actor</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="sensor.html">Sensor</a></li>
|
||||
</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> »</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>
|
||||
|
||||
</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="actor.html">Actor</a></li>
|
||||
<li class="toctree-l1"><a class="reference internal" href="sensor.html">Sensor</a></li>
|
||||
<li class="toctree-l1 current"><a class="current reference internal" href="#">Step API</a></li>
|
||||
</ul>
|
||||
|
||||
<div class="relations">
|
||||
<h3>Related Topics</h3>
|
||||
<ul>
|
||||
<li><a href="index.html">Documentation overview</a><ul>
|
||||
<li>Previous: <a href="sensor.html" title="previous chapter">Sensor</a></li>
|
||||
</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>
|
||||
|
||||
|
||||
|
||||
<footer>
|
||||
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
<p>
|
||||
© 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 class="clearer"></div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
©2018, Manuel Fritsch.
|
||||
|
||||
|
|
||||
Powered by <a href="http://sphinx-doc.org/">Sphinx 1.8.1</a>
|
||||
& <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
||||
|
||||
|
|
||||
<a href="_sources/step.rst.txt"
|
||||
rel="nofollow">Page source</a>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
|
||||
<script type="text/javascript" src="_static/jquery.js"></script>
|
||||
<script type="text/javascript" src="_static/underscore.js"></script>
|
||||
<script type="text/javascript" src="_static/doctools.js"></script>
|
||||
|
||||
|
||||
|
||||
|
||||
<script type="text/javascript" src="_static/js/theme.js"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable(true);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -13,6 +13,7 @@ ActorController
|
|||
|
||||
.. automodule:: core.controller.actor_controller
|
||||
:members:
|
||||
:inherited-members:
|
||||
|
||||
Custom Actor
|
||||
^^^^^^^^^^^^^
|
||||
|
|
|
@ -75,7 +75,8 @@ pygments_style = None
|
|||
# The theme to use for HTML and HTML Help pages. See the documentation for
|
||||
# a list of builtin themes.
|
||||
#
|
||||
html_theme = 'alabaster'
|
||||
#html_theme = 'alabaster'
|
||||
html_theme = 'sphinx_rtd_theme'
|
||||
|
||||
# Theme options are theme-specific and customize the look and feel of a theme
|
||||
# further. For a list of options available for each theme, see the
|
||||
|
|
|
@ -10,6 +10,7 @@ Welcome to CraftBeerPi's documentation!
|
|||
.. toctree::
|
||||
:maxdepth: 3
|
||||
|
||||
install
|
||||
core
|
||||
actor
|
||||
sensor
|
||||
|
|
12
docs_src/source/install.rst
Normal file
12
docs_src/source/install.rst
Normal file
|
@ -0,0 +1,12 @@
|
|||
Installation
|
||||
============
|
||||
|
||||
Please make sure that Python 3.6 is installed
|
||||
::
|
||||
|
||||
git clone https://github.com/manuel83/craftbeerpi4
|
||||
|
||||
cd craftbeerpi4
|
||||
|
||||
pip install -r requirements.txt
|
||||
|
5
logger.conf
Normal file
5
logger.conf
Normal file
|
@ -0,0 +1,5 @@
|
|||
2018-11-18 15:39:26,909,1,WOOHO
|
||||
2018-11-18 15:39:28,083,1,WOOHO
|
||||
2018-11-18 15:39:28,716,1,WOOHO
|
||||
2018-11-18 15:39:29,721,1,WOOHO
|
||||
2018-11-18 15:39:30,724,1,WOOHO
|
59
logger.conf.2018-11-18_14-05
Normal file
59
logger.conf.2018-11-18_14-05
Normal file
|
@ -0,0 +1,59 @@
|
|||
2018-11-18 14:05:13,822,1,WOOHO
|
||||
2018-11-18 14:05:14,829,1,WOOHO
|
||||
2018-11-18 14:05:15,832,1,WOOHO
|
||||
2018-11-18 14:05:16,837,1,WOOHO
|
||||
2018-11-18 14:05:17,842,1,WOOHO
|
||||
2018-11-18 14:05:18,844,1,WOOHO
|
||||
2018-11-18 14:05:19,849,1,WOOHO
|
||||
2018-11-18 14:05:20,860,1,WOOHO
|
||||
2018-11-18 14:05:21,863,1,WOOHO
|
||||
2018-11-18 14:05:22,869,1,WOOHO
|
||||
2018-11-18 14:05:23,875,1,WOOHO
|
||||
2018-11-18 14:05:24,877,1,WOOHO
|
||||
2018-11-18 14:05:25,880,1,WOOHO
|
||||
2018-11-18 14:05:26,883,1,WOOHO
|
||||
2018-11-18 14:05:27,888,1,WOOHO
|
||||
2018-11-18 14:05:28,889,1,WOOHO
|
||||
2018-11-18 14:05:29,893,1,WOOHO
|
||||
2018-11-18 14:05:30,897,1,WOOHO
|
||||
2018-11-18 14:05:31,901,1,WOOHO
|
||||
2018-11-18 14:05:32,906,1,WOOHO
|
||||
2018-11-18 14:05:33,907,1,WOOHO
|
||||
2018-11-18 14:05:34,912,1,WOOHO
|
||||
2018-11-18 14:05:35,915,1,WOOHO
|
||||
2018-11-18 14:05:36,919,1,WOOHO
|
||||
2018-11-18 14:05:37,922,1,WOOHO
|
||||
2018-11-18 14:05:38,927,1,WOOHO
|
||||
2018-11-18 14:05:39,928,1,WOOHO
|
||||
2018-11-18 14:05:40,932,1,WOOHO
|
||||
2018-11-18 14:05:41,936,1,WOOHO
|
||||
2018-11-18 14:05:42,941,1,WOOHO
|
||||
2018-11-18 14:05:43,945,1,WOOHO
|
||||
2018-11-18 14:05:44,951,1,WOOHO
|
||||
2018-11-18 14:05:45,954,1,WOOHO
|
||||
2018-11-18 14:05:46,957,1,WOOHO
|
||||
2018-11-18 14:05:47,961,1,WOOHO
|
||||
2018-11-18 14:05:48,966,1,WOOHO
|
||||
2018-11-18 14:05:49,974,1,WOOHO
|
||||
2018-11-18 14:05:50,975,1,WOOHO
|
||||
2018-11-18 14:05:51,976,1,WOOHO
|
||||
2018-11-18 14:05:52,977,1,WOOHO
|
||||
2018-11-18 14:05:53,977,1,WOOHO
|
||||
2018-11-18 14:05:54,981,1,WOOHO
|
||||
2018-11-18 14:05:55,986,1,WOOHO
|
||||
2018-11-18 14:05:56,988,1,WOOHO
|
||||
2018-11-18 14:05:57,988,1,WOOHO
|
||||
2018-11-18 14:05:58,992,1,WOOHO
|
||||
2018-11-18 14:05:59,995,1,WOOHO
|
||||
2018-11-18 14:06:00,998,1,WOOHO
|
||||
2018-11-18 14:06:01,999,1,WOOHO
|
||||
2018-11-18 14:06:03,004,1,WOOHO
|
||||
2018-11-18 14:06:04,009,1,WOOHO
|
||||
2018-11-18 14:06:05,013,1,WOOHO
|
||||
2018-11-18 14:06:06,019,1,WOOHO
|
||||
2018-11-18 14:06:07,025,1,WOOHO
|
||||
2018-11-18 14:06:08,030,1,WOOHO
|
||||
2018-11-18 14:06:09,033,1,WOOHO
|
||||
2018-11-18 14:06:10,037,1,WOOHO
|
||||
2018-11-18 14:06:11,041,1,WOOHO
|
||||
2018-11-18 14:06:12,042,1,WOOHO
|
116
logger.conf.2018-11-18_14-07
Normal file
116
logger.conf.2018-11-18_14-07
Normal file
|
@ -0,0 +1,116 @@
|
|||
2018-11-18 14:06:13,042,1,WOOHO
|
||||
2018-11-18 14:06:14,050,1,WOOHO
|
||||
2018-11-18 14:06:15,051,1,WOOHO
|
||||
2018-11-18 14:06:16,056,1,WOOHO
|
||||
2018-11-18 14:06:17,060,1,WOOHO
|
||||
2018-11-18 14:06:18,064,1,WOOHO
|
||||
2018-11-18 14:06:19,069,1,WOOHO
|
||||
2018-11-18 14:06:20,084,1,WOOHO
|
||||
2018-11-18 14:06:21,087,1,WOOHO
|
||||
2018-11-18 14:06:22,091,1,WOOHO
|
||||
2018-11-18 14:06:23,092,1,WOOHO
|
||||
2018-11-18 14:06:24,096,1,WOOHO
|
||||
2018-11-18 14:06:25,097,1,WOOHO
|
||||
2018-11-18 14:06:26,101,1,WOOHO
|
||||
2018-11-18 14:06:27,102,1,WOOHO
|
||||
2018-11-18 14:06:28,104,1,WOOHO
|
||||
2018-11-18 14:06:29,109,1,WOOHO
|
||||
2018-11-18 14:06:30,113,1,WOOHO
|
||||
2018-11-18 14:06:31,115,1,WOOHO
|
||||
2018-11-18 14:06:32,119,1,WOOHO
|
||||
2018-11-18 14:06:33,125,1,WOOHO
|
||||
2018-11-18 14:06:34,129,1,WOOHO
|
||||
2018-11-18 14:06:35,133,1,WOOHO
|
||||
2018-11-18 14:06:36,134,1,WOOHO
|
||||
2018-11-18 14:06:37,136,1,WOOHO
|
||||
2018-11-18 14:06:38,137,1,WOOHO
|
||||
2018-11-18 14:06:39,139,1,WOOHO
|
||||
2018-11-18 14:06:40,143,1,WOOHO
|
||||
2018-11-18 14:06:41,144,1,WOOHO
|
||||
2018-11-18 14:06:42,145,1,WOOHO
|
||||
2018-11-18 14:06:43,147,1,WOOHO
|
||||
2018-11-18 14:06:44,151,1,WOOHO
|
||||
2018-11-18 14:06:45,153,1,WOOHO
|
||||
2018-11-18 14:06:46,159,1,WOOHO
|
||||
2018-11-18 14:06:47,163,1,WOOHO
|
||||
2018-11-18 14:06:48,169,1,WOOHO
|
||||
2018-11-18 14:06:49,172,1,WOOHO
|
||||
2018-11-18 14:06:50,174,1,WOOHO
|
||||
2018-11-18 14:06:51,182,1,WOOHO
|
||||
2018-11-18 14:06:52,188,1,WOOHO
|
||||
2018-11-18 14:06:53,193,1,WOOHO
|
||||
2018-11-18 14:06:54,195,1,WOOHO
|
||||
2018-11-18 14:06:55,196,1,WOOHO
|
||||
2018-11-18 14:06:56,197,1,WOOHO
|
||||
2018-11-18 14:06:57,203,1,WOOHO
|
||||
2018-11-18 14:06:58,208,1,WOOHO
|
||||
2018-11-18 14:06:59,212,1,WOOHO
|
||||
2018-11-18 14:07:00,216,1,WOOHO
|
||||
2018-11-18 14:07:01,218,1,WOOHO
|
||||
2018-11-18 14:07:02,219,1,WOOHO
|
||||
2018-11-18 14:07:03,225,1,WOOHO
|
||||
2018-11-18 14:07:04,228,1,WOOHO
|
||||
2018-11-18 14:07:05,233,1,WOOHO
|
||||
2018-11-18 14:07:06,239,1,WOOHO
|
||||
2018-11-18 14:07:07,244,1,WOOHO
|
||||
2018-11-18 14:07:08,249,1,WOOHO
|
||||
2018-11-18 14:07:09,250,1,WOOHO
|
||||
2018-11-18 14:07:10,254,1,WOOHO
|
||||
2018-11-18 14:07:11,259,1,WOOHO
|
||||
2018-11-18 14:07:14,795,1,WOOHO
|
||||
2018-11-18 14:07:15,799,1,WOOHO
|
||||
2018-11-18 14:07:16,800,1,WOOHO
|
||||
2018-11-18 14:07:17,808,1,WOOHO
|
||||
2018-11-18 14:07:18,811,1,WOOHO
|
||||
2018-11-18 14:07:19,813,1,WOOHO
|
||||
2018-11-18 14:07:20,817,1,WOOHO
|
||||
2018-11-18 14:07:21,821,1,WOOHO
|
||||
2018-11-18 14:07:22,825,1,WOOHO
|
||||
2018-11-18 14:07:23,829,1,WOOHO
|
||||
2018-11-18 14:07:24,834,1,WOOHO
|
||||
2018-11-18 14:07:25,835,1,WOOHO
|
||||
2018-11-18 14:07:26,839,1,WOOHO
|
||||
2018-11-18 14:07:27,841,1,WOOHO
|
||||
2018-11-18 14:07:28,845,1,WOOHO
|
||||
2018-11-18 14:07:29,851,1,WOOHO
|
||||
2018-11-18 14:07:30,854,1,WOOHO
|
||||
2018-11-18 14:07:31,859,1,WOOHO
|
||||
2018-11-18 14:07:32,862,1,WOOHO
|
||||
2018-11-18 14:07:33,867,1,WOOHO
|
||||
2018-11-18 14:07:34,873,1,WOOHO
|
||||
2018-11-18 14:07:35,874,1,WOOHO
|
||||
2018-11-18 14:07:36,878,1,WOOHO
|
||||
2018-11-18 14:07:37,883,1,WOOHO
|
||||
2018-11-18 14:07:38,888,1,WOOHO
|
||||
2018-11-18 14:07:39,889,1,WOOHO
|
||||
2018-11-18 14:07:40,893,1,WOOHO
|
||||
2018-11-18 14:07:41,898,1,WOOHO
|
||||
2018-11-18 14:07:42,902,1,WOOHO
|
||||
2018-11-18 14:07:43,907,1,WOOHO
|
||||
2018-11-18 14:07:44,912,1,WOOHO
|
||||
2018-11-18 14:07:45,913,1,WOOHO
|
||||
2018-11-18 14:07:46,918,1,WOOHO
|
||||
2018-11-18 14:07:47,920,1,WOOHO
|
||||
2018-11-18 14:07:48,924,1,WOOHO
|
||||
2018-11-18 14:07:49,928,1,WOOHO
|
||||
2018-11-18 14:07:50,929,1,WOOHO
|
||||
2018-11-18 14:07:51,934,1,WOOHO
|
||||
2018-11-18 14:07:52,937,1,WOOHO
|
||||
2018-11-18 14:07:53,941,1,WOOHO
|
||||
2018-11-18 14:07:54,945,1,WOOHO
|
||||
2018-11-18 14:07:55,949,1,WOOHO
|
||||
2018-11-18 14:07:56,954,1,WOOHO
|
||||
2018-11-18 14:07:57,956,1,WOOHO
|
||||
2018-11-18 14:07:58,962,1,WOOHO
|
||||
2018-11-18 14:07:59,966,1,WOOHO
|
||||
2018-11-18 14:08:00,970,1,WOOHO
|
||||
2018-11-18 14:08:01,975,1,WOOHO
|
||||
2018-11-18 14:08:02,977,1,WOOHO
|
||||
2018-11-18 14:08:03,981,1,WOOHO
|
||||
2018-11-18 14:08:04,986,1,WOOHO
|
||||
2018-11-18 14:08:05,987,1,WOOHO
|
||||
2018-11-18 14:08:06,988,1,WOOHO
|
||||
2018-11-18 14:08:07,993,1,WOOHO
|
||||
2018-11-18 14:08:08,996,1,WOOHO
|
||||
2018-11-18 14:08:09,998,1,WOOHO
|
||||
2018-11-18 14:08:10,999,1,WOOHO
|
170
logger.conf.2018-11-18_14-10
Normal file
170
logger.conf.2018-11-18_14-10
Normal file
|
@ -0,0 +1,170 @@
|
|||
2018-11-18 14:08:12,004,1,WOOHO
|
||||
2018-11-18 14:08:13,007,1,WOOHO
|
||||
2018-11-18 14:08:14,013,1,WOOHO
|
||||
2018-11-18 14:08:15,016,1,WOOHO
|
||||
2018-11-18 14:08:16,020,1,WOOHO
|
||||
2018-11-18 14:08:17,025,1,WOOHO
|
||||
2018-11-18 14:08:18,030,1,WOOHO
|
||||
2018-11-18 14:08:19,032,1,WOOHO
|
||||
2018-11-18 14:08:20,036,1,WOOHO
|
||||
2018-11-18 14:08:21,042,1,WOOHO
|
||||
2018-11-18 14:08:22,047,1,WOOHO
|
||||
2018-11-18 14:08:23,048,1,WOOHO
|
||||
2018-11-18 14:08:24,052,1,WOOHO
|
||||
2018-11-18 14:08:25,056,1,WOOHO
|
||||
2018-11-18 14:08:26,061,1,WOOHO
|
||||
2018-11-18 14:08:27,065,1,WOOHO
|
||||
2018-11-18 14:08:28,069,1,WOOHO
|
||||
2018-11-18 14:08:29,073,1,WOOHO
|
||||
2018-11-18 14:08:30,076,1,WOOHO
|
||||
2018-11-18 14:08:31,082,1,WOOHO
|
||||
2018-11-18 14:08:32,083,1,WOOHO
|
||||
2018-11-18 14:08:33,089,1,WOOHO
|
||||
2018-11-18 14:08:34,091,1,WOOHO
|
||||
2018-11-18 14:08:35,092,1,WOOHO
|
||||
2018-11-18 14:08:36,097,1,WOOHO
|
||||
2018-11-18 14:08:37,101,1,WOOHO
|
||||
2018-11-18 14:08:38,105,1,WOOHO
|
||||
2018-11-18 14:08:39,107,1,WOOHO
|
||||
2018-11-18 14:08:40,112,1,WOOHO
|
||||
2018-11-18 14:08:41,116,1,WOOHO
|
||||
2018-11-18 14:08:42,121,1,WOOHO
|
||||
2018-11-18 14:08:43,124,1,WOOHO
|
||||
2018-11-18 14:08:44,126,1,WOOHO
|
||||
2018-11-18 14:08:45,128,1,WOOHO
|
||||
2018-11-18 14:08:46,131,1,WOOHO
|
||||
2018-11-18 14:08:47,136,1,WOOHO
|
||||
2018-11-18 14:08:48,138,1,WOOHO
|
||||
2018-11-18 14:08:49,146,1,WOOHO
|
||||
2018-11-18 14:08:50,152,1,WOOHO
|
||||
2018-11-18 14:08:51,154,1,WOOHO
|
||||
2018-11-18 14:08:52,160,1,WOOHO
|
||||
2018-11-18 14:08:53,165,1,WOOHO
|
||||
2018-11-18 14:08:54,170,1,WOOHO
|
||||
2018-11-18 14:08:55,174,1,WOOHO
|
||||
2018-11-18 14:08:56,178,1,WOOHO
|
||||
2018-11-18 14:08:57,181,1,WOOHO
|
||||
2018-11-18 14:08:58,185,1,WOOHO
|
||||
2018-11-18 14:08:59,191,1,WOOHO
|
||||
2018-11-18 14:09:00,193,1,WOOHO
|
||||
2018-11-18 14:09:01,199,1,WOOHO
|
||||
2018-11-18 14:09:02,201,1,WOOHO
|
||||
2018-11-18 14:09:03,212,1,WOOHO
|
||||
2018-11-18 14:09:04,213,1,WOOHO
|
||||
2018-11-18 14:09:05,215,1,WOOHO
|
||||
2018-11-18 14:09:06,218,1,WOOHO
|
||||
2018-11-18 14:09:07,223,1,WOOHO
|
||||
2018-11-18 14:09:08,227,1,WOOHO
|
||||
2018-11-18 14:09:11,791,1,WOOHO
|
||||
2018-11-18 14:09:12,796,1,WOOHO
|
||||
2018-11-18 14:09:13,801,1,WOOHO
|
||||
2018-11-18 14:09:14,805,1,WOOHO
|
||||
2018-11-18 14:09:15,806,1,WOOHO
|
||||
2018-11-18 14:09:16,811,1,WOOHO
|
||||
2018-11-18 14:09:17,814,1,WOOHO
|
||||
2018-11-18 14:09:18,820,1,WOOHO
|
||||
2018-11-18 14:09:19,821,1,WOOHO
|
||||
2018-11-18 14:09:20,829,1,WOOHO
|
||||
2018-11-18 14:09:21,832,1,WOOHO
|
||||
2018-11-18 14:09:22,836,1,WOOHO
|
||||
2018-11-18 14:09:23,841,1,WOOHO
|
||||
2018-11-18 14:09:24,844,1,WOOHO
|
||||
2018-11-18 14:09:25,848,1,WOOHO
|
||||
2018-11-18 14:09:26,853,1,WOOHO
|
||||
2018-11-18 14:09:27,858,1,WOOHO
|
||||
2018-11-18 14:09:28,860,1,WOOHO
|
||||
2018-11-18 14:09:29,865,1,WOOHO
|
||||
2018-11-18 14:09:30,868,1,WOOHO
|
||||
2018-11-18 14:09:31,872,1,WOOHO
|
||||
2018-11-18 14:09:32,879,1,WOOHO
|
||||
2018-11-18 14:09:33,884,1,WOOHO
|
||||
2018-11-18 14:09:34,885,1,WOOHO
|
||||
2018-11-18 14:09:35,889,1,WOOHO
|
||||
2018-11-18 14:09:36,894,1,WOOHO
|
||||
2018-11-18 14:09:37,899,1,WOOHO
|
||||
2018-11-18 14:09:38,905,1,WOOHO
|
||||
2018-11-18 14:09:39,905,1,WOOHO
|
||||
2018-11-18 14:09:40,906,1,WOOHO
|
||||
2018-11-18 14:09:41,907,1,WOOHO
|
||||
2018-11-18 14:09:42,913,1,WOOHO
|
||||
2018-11-18 14:09:43,914,1,WOOHO
|
||||
2018-11-18 14:09:44,918,1,WOOHO
|
||||
2018-11-18 14:09:45,920,1,WOOHO
|
||||
2018-11-18 14:09:46,923,1,WOOHO
|
||||
2018-11-18 14:09:47,927,1,WOOHO
|
||||
2018-11-18 14:09:48,931,1,WOOHO
|
||||
2018-11-18 14:09:49,937,1,WOOHO
|
||||
2018-11-18 14:09:50,948,1,WOOHO
|
||||
2018-11-18 14:09:51,950,1,WOOHO
|
||||
2018-11-18 14:09:52,954,1,WOOHO
|
||||
2018-11-18 14:09:53,957,1,WOOHO
|
||||
2018-11-18 14:09:54,959,1,WOOHO
|
||||
2018-11-18 14:09:55,965,1,WOOHO
|
||||
2018-11-18 14:09:56,969,1,WOOHO
|
||||
2018-11-18 14:09:57,974,1,WOOHO
|
||||
2018-11-18 14:09:58,979,1,WOOHO
|
||||
2018-11-18 14:09:59,982,1,WOOHO
|
||||
2018-11-18 14:10:00,986,1,WOOHO
|
||||
2018-11-18 14:10:01,991,1,WOOHO
|
||||
2018-11-18 14:10:02,997,1,WOOHO
|
||||
2018-11-18 14:10:04,001,1,WOOHO
|
||||
2018-11-18 14:10:05,007,1,WOOHO
|
||||
2018-11-18 14:10:06,013,1,WOOHO
|
||||
2018-11-18 14:10:07,017,1,WOOHO
|
||||
2018-11-18 14:10:10,186,1,WOOHO
|
||||
2018-11-18 14:10:11,192,1,WOOHO
|
||||
2018-11-18 14:10:12,194,1,WOOHO
|
||||
2018-11-18 14:10:13,197,1,WOOHO
|
||||
2018-11-18 14:10:14,202,1,WOOHO
|
||||
2018-11-18 14:10:15,206,1,WOOHO
|
||||
2018-11-18 14:10:16,210,1,WOOHO
|
||||
2018-11-18 14:10:17,211,1,WOOHO
|
||||
2018-11-18 14:10:18,215,1,WOOHO
|
||||
2018-11-18 14:10:19,216,1,WOOHO
|
||||
2018-11-18 14:10:20,219,1,WOOHO
|
||||
2018-11-18 14:10:21,219,1,WOOHO
|
||||
2018-11-18 14:10:22,220,1,WOOHO
|
||||
2018-11-18 14:10:23,224,1,WOOHO
|
||||
2018-11-18 14:10:24,227,1,WOOHO
|
||||
2018-11-18 14:10:25,232,1,WOOHO
|
||||
2018-11-18 14:10:26,237,1,WOOHO
|
||||
2018-11-18 14:10:27,239,1,WOOHO
|
||||
2018-11-18 14:10:28,244,1,WOOHO
|
||||
2018-11-18 14:10:29,246,1,WOOHO
|
||||
2018-11-18 14:10:30,248,1,WOOHO
|
||||
2018-11-18 14:10:31,251,1,WOOHO
|
||||
2018-11-18 14:10:32,256,1,WOOHO
|
||||
2018-11-18 14:10:33,258,1,WOOHO
|
||||
2018-11-18 14:10:34,261,1,WOOHO
|
||||
2018-11-18 14:10:35,263,1,WOOHO
|
||||
2018-11-18 14:10:36,265,1,WOOHO
|
||||
2018-11-18 14:10:37,267,1,WOOHO
|
||||
2018-11-18 14:10:38,268,1,WOOHO
|
||||
2018-11-18 14:10:39,269,1,WOOHO
|
||||
2018-11-18 14:10:40,274,1,WOOHO
|
||||
2018-11-18 14:10:41,278,1,WOOHO
|
||||
2018-11-18 14:10:42,282,1,WOOHO
|
||||
2018-11-18 14:10:43,286,1,WOOHO
|
||||
2018-11-18 14:10:44,290,1,WOOHO
|
||||
2018-11-18 14:10:45,295,1,WOOHO
|
||||
2018-11-18 14:10:46,299,1,WOOHO
|
||||
2018-11-18 14:10:47,302,1,WOOHO
|
||||
2018-11-18 14:10:48,307,1,WOOHO
|
||||
2018-11-18 14:10:49,310,1,WOOHO
|
||||
2018-11-18 14:10:50,321,1,WOOHO
|
||||
2018-11-18 14:10:51,324,1,WOOHO
|
||||
2018-11-18 14:10:52,329,1,WOOHO
|
||||
2018-11-18 14:10:53,333,1,WOOHO
|
||||
2018-11-18 14:10:54,336,1,WOOHO
|
||||
2018-11-18 14:10:55,341,1,WOOHO
|
||||
2018-11-18 14:10:56,346,1,WOOHO
|
||||
2018-11-18 14:10:57,350,1,WOOHO
|
||||
2018-11-18 14:10:58,354,1,WOOHO
|
||||
2018-11-18 14:10:59,358,1,WOOHO
|
||||
2018-11-18 14:11:00,362,1,WOOHO
|
||||
2018-11-18 14:11:01,367,1,WOOHO
|
||||
2018-11-18 14:11:02,370,1,WOOHO
|
||||
2018-11-18 14:11:03,372,1,WOOHO
|
||||
2018-11-18 14:11:04,378,1,WOOHO
|
||||
2018-11-18 14:11:05,382,1,WOOHO
|
||||
2018-11-18 14:11:06,386,1,WOOHO
|
60
logger.conf.2018-11-18_14-11
Normal file
60
logger.conf.2018-11-18_14-11
Normal file
|
@ -0,0 +1,60 @@
|
|||
2018-11-18 14:11:07,390,1,WOOHO
|
||||
2018-11-18 14:11:08,395,1,WOOHO
|
||||
2018-11-18 14:11:09,399,1,WOOHO
|
||||
2018-11-18 14:11:10,402,1,WOOHO
|
||||
2018-11-18 14:11:11,407,1,WOOHO
|
||||
2018-11-18 14:11:12,411,1,WOOHO
|
||||
2018-11-18 14:11:13,416,1,WOOHO
|
||||
2018-11-18 14:11:14,419,1,WOOHO
|
||||
2018-11-18 14:11:15,423,1,WOOHO
|
||||
2018-11-18 14:11:16,428,1,WOOHO
|
||||
2018-11-18 14:11:17,434,1,WOOHO
|
||||
2018-11-18 14:11:18,439,1,WOOHO
|
||||
2018-11-18 14:11:19,443,1,WOOHO
|
||||
2018-11-18 14:11:20,451,1,WOOHO
|
||||
2018-11-18 14:11:21,457,1,WOOHO
|
||||
2018-11-18 14:11:22,458,1,WOOHO
|
||||
2018-11-18 14:11:23,462,1,WOOHO
|
||||
2018-11-18 14:11:24,467,1,WOOHO
|
||||
2018-11-18 14:11:25,470,1,WOOHO
|
||||
2018-11-18 14:11:26,474,1,WOOHO
|
||||
2018-11-18 14:11:27,478,1,WOOHO
|
||||
2018-11-18 14:11:28,480,1,WOOHO
|
||||
2018-11-18 14:11:29,480,1,WOOHO
|
||||
2018-11-18 14:11:30,484,1,WOOHO
|
||||
2018-11-18 14:11:31,489,1,WOOHO
|
||||
2018-11-18 14:11:32,492,1,WOOHO
|
||||
2018-11-18 14:11:33,496,1,WOOHO
|
||||
2018-11-18 14:11:34,502,1,WOOHO
|
||||
2018-11-18 14:11:35,505,1,WOOHO
|
||||
2018-11-18 14:11:36,509,1,WOOHO
|
||||
2018-11-18 14:11:37,513,1,WOOHO
|
||||
2018-11-18 14:11:38,519,1,WOOHO
|
||||
2018-11-18 14:11:39,520,1,WOOHO
|
||||
2018-11-18 14:11:40,525,1,WOOHO
|
||||
2018-11-18 14:11:41,530,1,WOOHO
|
||||
2018-11-18 14:11:42,535,1,WOOHO
|
||||
2018-11-18 14:11:43,540,1,WOOHO
|
||||
2018-11-18 14:11:44,542,1,WOOHO
|
||||
2018-11-18 14:11:45,546,1,WOOHO
|
||||
2018-11-18 14:11:46,551,1,WOOHO
|
||||
2018-11-18 14:11:47,554,1,WOOHO
|
||||
2018-11-18 14:11:48,559,1,WOOHO
|
||||
2018-11-18 14:11:49,563,1,WOOHO
|
||||
2018-11-18 14:11:50,572,1,WOOHO
|
||||
2018-11-18 14:11:51,576,1,WOOHO
|
||||
2018-11-18 14:11:52,581,1,WOOHO
|
||||
2018-11-18 14:11:53,586,1,WOOHO
|
||||
2018-11-18 14:11:54,589,1,WOOHO
|
||||
2018-11-18 14:11:55,594,1,WOOHO
|
||||
2018-11-18 14:11:56,597,1,WOOHO
|
||||
2018-11-18 14:11:57,601,1,WOOHO
|
||||
2018-11-18 14:11:58,606,1,WOOHO
|
||||
2018-11-18 14:11:59,610,1,WOOHO
|
||||
2018-11-18 14:12:00,614,1,WOOHO
|
||||
2018-11-18 14:12:01,618,1,WOOHO
|
||||
2018-11-18 14:12:02,621,1,WOOHO
|
||||
2018-11-18 14:12:03,625,1,WOOHO
|
||||
2018-11-18 14:12:04,630,1,WOOHO
|
||||
2018-11-18 14:12:05,635,1,WOOHO
|
||||
2018-11-18 14:12:06,639,1,WOOHO
|
39
logger.conf.2018-11-18_14-12
Normal file
39
logger.conf.2018-11-18_14-12
Normal file
|
@ -0,0 +1,39 @@
|
|||
2018-11-18 14:12:07,642,1,WOOHO
|
||||
2018-11-18 14:12:08,644,1,WOOHO
|
||||
2018-11-18 14:12:09,649,1,WOOHO
|
||||
2018-11-18 14:12:10,653,1,WOOHO
|
||||
2018-11-18 14:12:11,654,1,WOOHO
|
||||
2018-11-18 14:12:12,657,1,WOOHO
|
||||
2018-11-18 14:12:13,661,1,WOOHO
|
||||
2018-11-18 14:12:14,666,1,WOOHO
|
||||
2018-11-18 14:12:15,670,1,WOOHO
|
||||
2018-11-18 14:12:16,674,1,WOOHO
|
||||
2018-11-18 14:12:17,677,1,WOOHO
|
||||
2018-11-18 14:12:18,682,1,WOOHO
|
||||
2018-11-18 14:12:19,686,1,WOOHO
|
||||
2018-11-18 14:12:20,695,1,WOOHO
|
||||
2018-11-18 14:12:21,700,1,WOOHO
|
||||
2018-11-18 14:12:22,701,1,WOOHO
|
||||
2018-11-18 14:12:23,702,1,WOOHO
|
||||
2018-11-18 14:12:24,703,1,WOOHO
|
||||
2018-11-18 14:12:25,711,1,WOOHO
|
||||
2018-11-18 14:12:26,718,1,WOOHO
|
||||
2018-11-18 14:12:27,719,1,WOOHO
|
||||
2018-11-18 14:12:28,729,1,WOOHO
|
||||
2018-11-18 14:12:29,733,1,WOOHO
|
||||
2018-11-18 14:12:30,743,1,WOOHO
|
||||
2018-11-18 14:12:31,753,1,WOOHO
|
||||
2018-11-18 14:12:32,758,1,WOOHO
|
||||
2018-11-18 14:12:33,761,1,WOOHO
|
||||
2018-11-18 14:12:34,768,1,WOOHO
|
||||
2018-11-18 14:12:35,770,1,WOOHO
|
||||
2018-11-18 14:12:36,777,1,WOOHO
|
||||
2018-11-18 14:12:37,778,1,WOOHO
|
||||
2018-11-18 14:12:38,787,1,WOOHO
|
||||
2018-11-18 14:12:39,798,1,WOOHO
|
||||
2018-11-18 14:12:40,802,1,WOOHO
|
||||
2018-11-18 14:12:41,813,1,WOOHO
|
||||
2018-11-18 14:12:42,816,1,WOOHO
|
||||
2018-11-18 14:12:43,819,1,WOOHO
|
||||
2018-11-18 14:12:44,827,1,WOOHO
|
||||
2018-11-18 14:12:45,837,1,WOOHO
|
|
@ -35,3 +35,4 @@ ticket-auth==0.1.4
|
|||
transitions==0.6.8
|
||||
websockets==6.0
|
||||
yarl==1.2.6
|
||||
pyfiglet
|
|
@ -39,6 +39,8 @@ class MyAppTestCase(AioHTTPTestCase):
|
|||
i = await self.cbpi.actor.get_one(1)
|
||||
assert i.instance.state is False
|
||||
|
||||
i = await self.cbpi.actor.get_all()
|
||||
assert len(i) == 2
|
||||
#ws = await self.client.ws_connect("/ws");
|
||||
#await ws.send_str(json.dumps({"key": "test"}))
|
||||
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue