API

State Diagram

        stateDiagram-v2
    disconnected: Disconnected
    stu_connected: STU Connected
    sensor_node_connected: Sensor Node Connected

    disconnected --> stu_connected: connect_stu

    stu_connected --> disconnected: disconnect_stu
    stu_connected --> stu_connected: enable_ota, collect_sensor_nodes, reset
    stu_connected --> sensor_node_connected: connect_sensor_node_mac

    sensor_node_connected --> stu_connected: disconnect_sensor_node
    

System

class icostate.ICOsystem

Stateful access to ICOtronic system

async connect_stu()

Connect to STU

Return type:

None

Examples

Import necessary code

>>> from asyncio import run

Connect and disconnect from STU

>>> async def connect_disconnect_stu(icosystem: ICOsystem):
...     states = [icosystem.state]
...     await icosystem.connect_stu()
...     states.append(icosystem.state)
...     await icosystem.disconnect_stu()
...     states.append(icosystem.state)
...     return states
>>> run(connect_disconnect_stu(ICOsystem()))
[Disconnected, STU Connected, Disconnected]
async disconnect_stu()

Disconnect from STU

Return type:

None

async reset_stu()

Reset STU

Return type:

None

Examples

Import necessary code

>>> from asyncio import run

Reset a connected STU

>>> async def reset_stu(icosystem: ICOsystem):
...     await icosystem.connect_stu()
...     await icosystem.reset_stu()
...     await icosystem.disconnect_stu()
>>> run(reset_stu(ICOsystem()))

Resetting the STU will not work if the STU is not connected

>>> async def reset_stu_without_connection(icosystem: ICOsystem):
...     await icosystem.reset_stu()
>>> run(reset_stu_without_connection(
...     ICOsystem()))
Traceback (most recent call last):
   ...
icostate.error.IncorrectStateError: Resetting STU only allowed in
                                    the state: STU Connected