Actor

Architecture

_images/picture.jpeg

ActorController

class core.controller.actor_controller.ActorController(cbpi)

The main actor controller

init()

This method initializes all actors during startup. It creates actor instances

Returns:
off(id, **kwargs) → None
Parameters:
  • id
  • kwargs
register(name, clazz) → None

Register a new actor type :param name: actor name :param clazz: actor class :return: None

Custom Actor

__init__.py
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import logging

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")

    @action(key="name", parameters={})
    def myAction(self):
        pass

    def state(self):
        super().state()

    def off(self):
        print("OFF")
        self.state = False

    def on(self, power=100):

        print("ON")
        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):

    '''
    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("CustomActor", CustomActor)

config.yaml

1
2
name: Manuel
version: 4