Source code for caspia.gateway.config.component

import copy

from caspia.node import Pin, components


[docs]def create_button_config(context, data): cfg = components.Button.Config(pin=Pin(data['pin'])) return cfg
[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_digitalinput_config(context, data): config = copy.copy(data) config.pop('node') pull = config.pop('pull', 'up') if pull == 'up': mode = components.DigitalInput.Config.MODE_PULL_UP elif pull == 'down': mode = components.DigitalInput.Config.MODE_PULL_DOWN else: raise ValueError('Invalid value for `pull` on digitalinput') pin_num = config.pop('pin') return components.DigitalInput.Config(pin=Pin(pin_num), mode=mode, **config)
[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)