import copy
from caspia.node import Pin, components
[docs]def create_relay_config(context, data):
cfg = components.Relay.Config(pin=Pin(data['pin']),
inverted=data.get('inverted', False),
initial_state=data.get('initial_state', False),
timeout=data.get('timeout', 0.0))
return cfg
[docs]def create_mcp980x_config(context, data):
return components.sensors.MCP980XSensor.Config(data.get('interval', 0),
address=data.get('address'),
resolution=data.get('resolution'))
[docs]def create_analog_config(context, data):
return components.sensors.AnalogSensor.Config(
pin=Pin(data['pin']),
power_pin=Pin(data['power_pin']) if 'power_pin' in data else None,
samples=data.get('samples', 1),
interval=data.get('interval', 0))
[docs]def create_blinds_config(context, data):
return components.Blinds.Config(pwr_pin=Pin(data['power_pin']),
dir_pin=Pin(data['direction_pin']),
dir_pin_inverted=data.get('direction_inverted', False),
calibrate_at_bottom=data.get('calibrate_at_bottom', False),
**data['timing'])
[docs]def create_s300_config(context, data):
return components.sensors.S300Sensor.Config(interval=data.get('interval', 0))
[docs]def create_apds9300_config(context, data):
return components.sensors.APDS9300Sensor.Config(interval=data.get('interval', 0),
address=data.get('address'))
[docs]def create_serial_config(context, data):
return components.Serial.Config(baudrate=data.get('baudrate'))
[docs]def create_sht2x_config(context, data):
return components.sensors.SHT2XSensor.Config(data.get('interval'))
# pylint: disable=too-many-return-statements
[docs]def create_component_config(context, comp_cls, data):
if comp_cls is components.Button:
return create_button_config(context, data)
elif comp_cls is components.Relay:
return create_relay_config(context, data)
elif comp_cls is components.sensors.MCP980XSensor:
return create_mcp980x_config(context, data)
elif comp_cls is components.Blinds:
return create_blinds_config(context, data)
elif comp_cls is components.DigitalInput:
return create_digitalinput_config(context, data)
elif comp_cls is components.sensors.analog.AnalogSensor:
return create_analog_config(context, data)
elif comp_cls is components.sensors.sht2x.SHT2XSensor:
return create_sht2x_config(context, data)
elif comp_cls is components.Serial:
return create_serial_config(context, data)
elif comp_cls is components.sensors.s300.S300Sensor:
return create_s300_config(context, data)
elif comp_cls is components.sensors.APDS9300Sensor:
return create_apds9300_config(context, data)
else:
raise NotImplementedError('Unsupported cls %s' % comp_cls)