caspia.node.components package

Submodules

caspia.node.components.analogoutput module

class caspia.node.components.analogoutput.AnalogOutput(node, identifier: int)[source]

Bases: caspia.node.components.base.Component

class Config(output_number: int, initial_state: float)[source]

Bases: caspia.node.components.base.Config

classmethod from_bytes(data)[source]
get_bytes()[source]
class Event

Bases: caspia.node.events.Event

An Event.

Every type of a broadcast made by a component should be

represented as subclass of this class.

Subclasses must provide can_id and component_id attributes.

class State(is_on: bool = None, value: float = None, error: int = None)[source]

Bases: caspia.node.components.base.State

error = None
is_on = None
update_from_bytes(data)[source]
update_from_error(error_code, data)
update_from_event(event)[source]
value = None
class StateOffEvent(broadcast: caspia.node.broadcast.Broadcast)[source]

Bases: caspia.node.events.BroadcastEvent, caspia.node.components.base.Event

property can_id
property component_id
class StateOnEvent(broadcast: caspia.node.broadcast.Broadcast)[source]

Bases: caspia.node.events.BroadcastEvent, caspia.node.components.base.Event

property can_id
property component_id
static component_class_for_config_class(config_cls)

Get a Component subclass for a given Config subclass.

static component_classes()

Return dictionary [type:cls] with all registered comp. classes.

static component_type_to_cls(types, raise_on_unknown=True)
classmethod decode_value(value)[source]
classmethod does_request(builder)
classmethod encode_value(value)[source]
static get_error_code_domain(error_code) → int

Return the type of component the error_code is related to.

async load_state()
async off(response)[source]
async on(response)[source]
classmethod parse_broadcast(broadcast)[source]

Return Event subclass for specific broadcast.

async request(data: bytes, *args, timeout=5.0, **kwargs) → bytes

Make pollen request on behalf of the component.

async set(value)[source]
async toggle(response)[source]
type = 12

caspia.node.components.base module

class caspia.node.components.base.Component(node, identifier: int)[source]

Bases: object

Abstract Component Class.

Each component should derive from this class. (Class) Attributes to be defined by every subclass: type: int config_cls: Config state_cls: State

class Config[source]

Bases: caspia.node.config.Config

classmethod from_bytes(data)
get_bytes()
class Event[source]

Bases: caspia.node.events.Event

An Event.

Every type of a broadcast made by a component should be

represented as subclass of this class.

Subclasses must provide can_id and component_id attributes.

class State[source]

Bases: object

abstract update_from_bytes(data)[source]
update_from_error(error_code, data)[source]
abstract update_from_event(event)[source]
static component_class_for_config_class(config_cls)[source]

Get a Component subclass for a given Config subclass.

static component_classes()[source]

Return dictionary [type:cls] with all registered comp. classes.

static component_type_to_cls(types, raise_on_unknown=True)[source]
classmethod does_request(builder)[source]
static get_error_code_domain(error_code) → int[source]

Return the type of component the error_code is related to.

async load_state()[source]
abstract classmethod parse_broadcast(broadcast)[source]

Return Event subclass for specific broadcast.

async request(data: bytes, *args, timeout=5.0, **kwargs) → bytes[source]

Make pollen request on behalf of the component.

type = None

caspia.node.components.blinds module

class caspia.node.components.blinds.Blinds(node, identifier: int)[source]

Bases: caspia.node.components.base.Component

class Config(pwr_pin: caspia.node.pin.Pin, dir_pin: caspia.node.pin.Pin, move_up_delay: float, move_down_delay: float, direction_change_delay: float, tilt_time: float, move_up_time: float, move_down_time: float, arrest_time: float, backlash: int = 0.0, dir_pin_inverted: bool = False, calibrate_at_bottom: bool = False)[source]

Bases: caspia.node.components.base.Config

backlash = 0.0
calibrate_at_bottom = False
dir_pin_inverted = False
classmethod from_bytes(data)[source]
get_bytes()[source]
class Event

Bases: caspia.node.events.Event

An Event.

Every type of a broadcast made by a component should be

represented as subclass of this class.

Subclasses must provide can_id and component_id attributes.

INVALID_BLIND = 2147483647
INVALID_TILT = 2147483647
MOVEMENT_DOWN = 2
MOVEMENT_UP = 1
NO_MOVEMENT = 0
class State(movement: int = None, blind: int = None, tilt: int = None, target_blind: int = None, target_tilt: int = None)[source]

Bases: caspia.node.components.base.State

blind = None
movement = None
target_blind = None
target_tilt = None
tilt = None
update_from_bytes(data)[source]
update_from_error(error_code, data)
update_from_event(event)[source]
class StateUpdateEvent(broadcast: caspia.node.broadcast.Broadcast)[source]

Bases: caspia.node.events.BroadcastEvent, caspia.node.components.base.Event

property can_id
property component_id
async blind_to_absolute(blind)[source]

Convert blind from 0..1 to ms

async blind_to_relative(blind)[source]

Convert blind from ms to 0..1

async calibrate(response)[source]
static component_class_for_config_class(config_cls)

Get a Component subclass for a given Config subclass.

static component_classes()

Return dictionary [type:cls] with all registered comp. classes.

static component_type_to_cls(types, raise_on_unknown=True)
classmethod does_request(builder)
static get_error_code_domain(error_code) → int

Return the type of component the error_code is related to.

async get_timing(allow_cached=True)[source]

Returns (maximum_tilt, maximum_blind) expressed in milliseconds

async load_state()
async load_timing()[source]

Loads max_tilt and max_blind from the node (expressed in ms)

async move_down(response)[source]
async move_up(response)[source]
classmethod parse_broadcast(broadcast)[source]

Return Event subclass for specific broadcast.

async request(data: bytes, *args, timeout=5.0, **kwargs) → bytes

Make pollen request on behalf of the component.

async set_internal_state(blind, tilt, backlash=0, calibrated=True, relative=True)[source]

Set the internal state of blinds (backlash is always in seconds)

async set_target_blind(blind, relative=True)[source]
async set_target_position(blind, tilt, relative=True)[source]
async set_target_tilt(tilt, relative=True)[source]
async stop_movement(response)[source]
async tilt_to_absolute(tilt)[source]

Convert tilt from 0..1 to ms

async tilt_to_relative(tilt)[source]

Convert tilt from ms to 0..1

type = 5

caspia.node.components.button module

class caspia.node.components.button.Button(node, identifier: int)[source]

Bases: caspia.node.components.base.Component

class ButtonEvent(broadcast: caspia.node.broadcast.Broadcast)[source]

Bases: caspia.node.events.BroadcastEvent, caspia.node.components.base.Event

Broadcasted on Hold, Click, etc …

EVENT_CLICK = 1
EVENT_HOLD = 2
property can_id
property component_id
static create_raw_broadcast_data(component_id, evt_type, interval=None)[source]
class Config(pin: caspia.node.pin.Pin, events: List[ForwardRef('EventConfig')] = <factory>)[source]

Bases: caspia.node.components.base.Config

add_event(event)[source]
classmethod from_bytes(data)[source]
get_bytes()[source]
class Event

Bases: caspia.node.events.Event

An Event.

Every type of a broadcast made by a component should be

represented as subclass of this class.

Subclasses must provide can_id and component_id attributes.

class EventConfig(trigger: int, evt_type: int, addr: int, data: bytes, canceling: bool = True, when_online: bool = True, when_offline: bool = True)[source]

Bases: caspia.node.config.Config

TRIGGER_PUSH = 65534
TRIGGER_RELEASE = 65535
TYPE_BROADCAST = 1
TYPE_REQUEST = 0
canceling = True
classmethod decode_trigger(raw)[source]
classmethod encode_trigger(trigger)[source]
classmethod from_bytes(data)[source]
get_bytes()[source]
when_offline = True
when_online = True
class PushEvent(broadcast: caspia.node.broadcast.Broadcast)[source]

Bases: caspia.node.events.BroadcastEvent, caspia.node.components.base.Event

Broadcasted on button push.

property can_id
property component_id
class ReleaseEvent(broadcast: caspia.node.broadcast.Broadcast)[source]

Bases: caspia.node.events.BroadcastEvent, caspia.node.components.base.Event

Broadcasted on button release.

property can_id
property component_id
class State(is_pushed: bool = None)[source]

Bases: caspia.node.components.base.State

is_pushed = None
update_from_bytes(data)[source]
update_from_error(error_code, data)
update_from_event(event)[source]
static component_class_for_config_class(config_cls)

Get a Component subclass for a given Config subclass.

static component_classes()

Return dictionary [type:cls] with all registered comp. classes.

static component_type_to_cls(types, raise_on_unknown=True)
classmethod does_request(builder)
static get_error_code_domain(error_code) → int

Return the type of component the error_code is related to.

async load_state()
classmethod parse_broadcast(broadcast)[source]

Return Event subclass for specific broadcast.

async request(data: bytes, *args, timeout=5.0, **kwargs) → bytes

Make pollen request on behalf of the component.

type = 2

caspia.node.components.digitalinput module

class caspia.node.components.digitalinput.DigitalInput(node, identifier: int)[source]

Bases: caspia.node.components.base.Component

class Config(pin: caspia.node.pin.Pin, mode: int = 1, sampling_freq: int = 100, samples_till_change: int = 3, broadcast_on_low_to_high: bool = True, broadcast_on_high_to_low: bool = True, inverted: bool = False)[source]

Bases: caspia.node.components.base.Config

MODE_PULL_DOWN = 2
MODE_PULL_UP = 1
broadcast_on_high_to_low = True
broadcast_on_low_to_high = True
classmethod from_bytes(data)[source]
get_bytes()[source]
inverted = False
mode = 1
samples_till_change = 3
sampling_freq = 100
class Event

Bases: caspia.node.events.Event

An Event.

Every type of a broadcast made by a component should be

represented as subclass of this class.

Subclasses must provide can_id and component_id attributes.

class HighToLowEvent(broadcast: caspia.node.broadcast.Broadcast)[source]

Bases: caspia.node.events.BroadcastEvent, caspia.node.components.base.Event

property can_id
property component_id
class LowToHighEvent(broadcast: caspia.node.broadcast.Broadcast)[source]

Bases: caspia.node.events.BroadcastEvent, caspia.node.components.base.Event

property can_id
property component_id
class State(value=None)[source]

Bases: caspia.node.components.base.State

update_from_bytes(data)[source]
update_from_error(error_code, data)
update_from_event(event)[source]
static component_class_for_config_class(config_cls)

Get a Component subclass for a given Config subclass.

static component_classes()

Return dictionary [type:cls] with all registered comp. classes.

static component_type_to_cls(types, raise_on_unknown=True)
classmethod does_request(builder)
static get_error_code_domain(error_code) → int

Return the type of component the error_code is related to.

async load_state()
classmethod parse_broadcast(broadcast)[source]

Return Event subclass for specific broadcast.

async request(data: bytes, *args, timeout=5.0, **kwargs) → bytes

Make pollen request on behalf of the component.

type = 4

caspia.node.components.relay module

class caspia.node.components.relay.Relay(node, identifier: int)[source]

Bases: caspia.node.components.base.Component

class Config(pin: caspia.node.pin.Pin, inverted: bool = False, initial_state: bool = False, timeout: float = 0.0, group_memberships: List[int] = <factory>)[source]

Bases: caspia.node.components.base.Config

classmethod from_bytes(data)[source]
get_bytes()[source]
initial_state = False
inverted = False
timeout = 0.0
class Event

Bases: caspia.node.events.Event

An Event.

Every type of a broadcast made by a component should be

represented as subclass of this class.

Subclasses must provide can_id and component_id attributes.

class GroupMembership(group: int, is_master: bool)[source]

Bases: caspia.node.config.Config

classmethod from_bytes(data)[source]
get_bytes()[source]
class GroupOffEvent(broadcast: caspia.node.broadcast.Broadcast)[source]

Bases: caspia.node.events.BroadcastEvent

property can_id
property component_id
class GroupOnEvent(broadcast: caspia.node.broadcast.Broadcast)[source]

Bases: caspia.node.events.BroadcastEvent

property can_id
property component_id
class GroupToggleEvent(broadcast: caspia.node.broadcast.Broadcast)[source]

Bases: caspia.node.events.BroadcastEvent

property can_id
property component_id
class State(is_on=None)[source]

Bases: caspia.node.components.base.State

update_from_bytes(data)[source]
update_from_error(error_code, data)
update_from_event(event)[source]
class StateOffEvent(broadcast: caspia.node.broadcast.Broadcast)[source]

Bases: caspia.node.events.BroadcastEvent, caspia.node.components.base.Event

property can_id
property component_id
class StateOnEvent(broadcast: caspia.node.broadcast.Broadcast)[source]

Bases: caspia.node.events.BroadcastEvent, caspia.node.components.base.Event

property can_id
property component_id
static component_class_for_config_class(config_cls)

Get a Component subclass for a given Config subclass.

static component_classes()

Return dictionary [type:cls] with all registered comp. classes.

static component_type_to_cls(types, raise_on_unknown=True)
classmethod does_request(builder)
static get_error_code_domain(error_code) → int

Return the type of component the error_code is related to.

static group_off(client, group)[source]
static group_on(client, group)[source]
static group_request(command, group)[source]
static group_toggle(client, group)[source]
async load_state()
async off(response)[source]
async on(response)[source]
classmethod parse_broadcast(broadcast)[source]

Return Event subclass for specific broadcast.

async request(data: bytes, *args, timeout=5.0, **kwargs) → bytes

Make pollen request on behalf of the component.

async toggle(response)[source]
type = 1

caspia.node.components.serial module

class caspia.node.components.serial.Serial(node, identifier: int)[source]

Bases: caspia.node.components.base.Component

class Config(baudrate=None)[source]

Bases: caspia.node.components.base.Config

classmethod from_bytes(data)[source]
get_bytes()[source]
class DataReceivedEvent(broadcast: caspia.node.broadcast.Broadcast)[source]

Bases: caspia.node.events.BroadcastEvent

property can_id
property component_id
class Event

Bases: caspia.node.events.Event

An Event.

Every type of a broadcast made by a component should be

represented as subclass of this class.

Subclasses must provide can_id and component_id attributes.

class State[source]

Bases: caspia.node.components.base.State

read(max_length=None)[source]
update_from_bytes(data)[source]
update_from_error(error_code, data)
update_from_event(event)[source]
static component_class_for_config_class(config_cls)

Get a Component subclass for a given Config subclass.

static component_classes()

Return dictionary [type:cls] with all registered comp. classes.

static component_type_to_cls(types, raise_on_unknown=True)
classmethod does_request(builder)
static get_error_code_domain(error_code) → int

Return the type of component the error_code is related to.

async load_state()
classmethod parse_broadcast(broadcast)[source]

Return Event subclass for specific broadcast.

async read(length=None, timeout=None)[source]
async request(data: bytes, *args, timeout=5.0, **kwargs) → bytes

Make pollen request on behalf of the component.

async set_baudrate(baudrate)[source]
type = 9
async write(data)[source]

caspia.node.components.system module

class caspia.node.components.system.System(node, identifier: int)[source]

Bases: caspia.node.components.base.Component

class BuildInfo(data)[source]

Bases: object

class Config(can_id: int, metadata: dict = None, online_timeout: int = None, mock_i2c_hw: bool = False)[source]

Bases: caspia.node.components.base.Config

ENTRY_CAN_ID = 0
ENTRY_METADATA = 1
ENTRY_MOCK_I2C_HW = 3
ENTRY_ONLINE_TIMEOUT = 2
classmethod from_bytes(data)[source]
get_bytes()[source]
metadata = None
mock_i2c_hw = False
online_timeout = None
class Event

Bases: caspia.node.events.Event

An Event.

Every type of a broadcast made by a component should be

represented as subclass of this class.

Subclasses must provide can_id and component_id attributes.

class HeartbeatEvent(broadcast: caspia.node.broadcast.Broadcast)[source]

Bases: caspia.node.events.BroadcastEvent, caspia.node.components.base.Event

property can_id
property component_id
class ResetReason[source]

Bases: enum.Enum

An enumeration.

BROWNOUT = 4
EXTERNAL = 2
POWER_ON_RESET = 1
SOFTWARE = 5
UNKNOWN = 0
WATCHDOG = 3
class State[source]

Bases: caspia.node.components.base.State

update_from_bytes(data)[source]
update_from_error(error_code, data)
update_from_event(event)[source]
static component_class_for_config_class(config_cls)

Get a Component subclass for a given Config subclass.

static component_classes()

Return dictionary [type:cls] with all registered comp. classes.

static component_type_to_cls(types, raise_on_unknown=True)
async config_clear()[source]

Set config’s buffer to all zeros.

async config_current_length() → int[source]

Get length of current configuration.

async config_current_read()[source]

Read data of current config.

async config_current_read_chunk(offset, length)[source]

Read part of current config’s data.

async config_flash()[source]

Write the config buffer to FLASH.

async config_hash_read() → int[source]

Read hash of current config’s buffer.

async config_reset()[source]

Reset config’s buffer to the content of FLASH.

async config_write(data)[source]

Write data to node’s config buffer.

classmethod does_request(builder)
static get_error_code_domain(error_code) → int

Return the type of component the error_code is related to.

async invoke_isp()[source]
async load_state()
classmethod parse_broadcast(broadcast)[source]

Return Event subclass for specific broadcast.

async ping()[source]
async read_buildinfo()[source]
async read_hwid()[source]
async request(data: bytes, *args, timeout=5.0, **kwargs) → bytes

Make pollen request on behalf of the component.

async restart()[source]
async trigger_wdt_reset()[source]
type = 0

Module contents