"FP32": 2, "FP32_R": 2, } MULTI_CONF = True _LOGGER = logging.getLogger(__name__) CONFIG_SCHEMA = cv.All( cv.Schema({ cv.GenerateID(): cv.declare_id(ModbusController), cv.Optional(CONF_COMMAND_THROTTLE, default="0ms"): cv.positive_time_period_milliseconds, }).extend(cv.polling_component_schema("60s")).extend( modbus.modbus_device_schema(0x01))) ModbusItemBaseSchema = cv.Schema( { cv.GenerateID(CONF_MODBUS_CONTROLLER_ID): cv.use_id(ModbusController), cv.Optional(CONF_ADDRESS): cv.positive_int, cv.Optional(CONF_CUSTOM_COMMAND): cv.ensure_list(cv.hex_uint8_t), cv.Exclusive( CONF_OFFSET, "offset", f"{CONF_OFFSET} and {CONF_BYTE_OFFSET} can't be used together", ): cv.positive_int,
CONF_DIS1 = "dis1" CONF_DIS2 = "dis2" CONF_REDOX = "redox" CONF_EC = "ec" CONF_OCI = "oci" CONFIG_SCHEMA = cv.Schema({ cv.GenerateID(): cv.declare_id(Kuntze), cv.Optional(CONF_PH): sensor.sensor_schema(UNIT_EMPTY, ICON_EMPTY, 1, DEVICE_CLASS_EMPTY), cv.Optional(CONF_TEMPERATURE): sensor.sensor_schema(UNIT_CELSIUS, ICON_THERMOMETER, 1, DEVICE_CLASS_TEMPERATURE), cv.Optional(CONF_DIS1): sensor.sensor_schema(UNIT_EMPTY, ICON_EMPTY, 1, DEVICE_CLASS_EMPTY), cv.Optional(CONF_DIS2): sensor.sensor_schema(UNIT_EMPTY, ICON_EMPTY, 1, DEVICE_CLASS_EMPTY), cv.Optional(CONF_REDOX): sensor.sensor_schema(UNIT_EMPTY, ICON_EMPTY, 1, DEVICE_CLASS_EMPTY), cv.Optional(CONF_EC): sensor.sensor_schema(UNIT_EMPTY, ICON_EMPTY, 1, DEVICE_CLASS_EMPTY), cv.Optional(CONF_OCI): sensor.sensor_schema(UNIT_EMPTY, ICON_EMPTY, 1, DEVICE_CLASS_EMPTY), }).extend(cv.polling_component_schema('60s')).extend(modbus.modbus_device_schema(0x01)) def to_code(config): var = cg.new_Pvariable(config[CONF_ID]) yield cg.register_component(var, config) yield modbus.register_modbus_device(var, config) if CONF_PH in config: conf = config[CONF_PH] sens = yield sensor.new_sensor(conf) cg.add(var.set_ph_sensor(sens)) if CONF_TEMPERATURE in config: conf = config[CONF_TEMPERATURE] sens = yield sensor.new_sensor(conf) cg.add(var.set_temperature_sensor(sens))
accuracy_decimals=3, device_class=DEVICE_CLASS_POWER, state_class=STATE_CLASS_MEASUREMENT, ), CONF_MAXIMUM_DEMAND_APPARENT_POWER: sensor.sensor_schema( unit_of_measurement=UNIT_VOLT_AMPS, accuracy_decimals=3, device_class=DEVICE_CLASS_POWER, state_class=STATE_CLASS_MEASUREMENT, ), } CONFIG_SCHEMA = ( cv.Schema({cv.GenerateID(): cv.declare_id(SelecMeter)}) .extend( {cv.Optional(sensor_name): schema for sensor_name, schema in SENSORS.items()} ) .extend(cv.polling_component_schema("10s")) .extend(modbus.modbus_device_schema(0x01)) ) async def to_code(config): var = cg.new_Pvariable(config[CONF_ID]) await cg.register_component(var, config) await modbus.register_modbus_device(var, config) for name in SENSORS: if name in config: sens = await sensor.new_sensor(config[name]) cg.add(getattr(var, f"set_{name}_sensor")(sens))
cv.GenerateID(): cv.declare_id(NILAN), cv.Optional(CONF_VOLTAGE): sensor.sensor_schema(UNIT_VOLT, ICON_FLASH, 1), cv.Optional(CONF_CURRENT): sensor.sensor_schema(UNIT_AMPERE, ICON_CURRENT_AC, 3), cv.Optional(CONF_POWER): sensor.sensor_schema(UNIT_WATT, ICON_POWER, 1), cv.Optional(CONF_ENERGY): sensor.sensor_schema(UNIT_WATT_HOURS, ICON_COUNTER, 0), cv.Optional(CONF_FREQUENCY): sensor.sensor_schema(UNIT_HERTZ, ICON_CURRENT_AC, 1), cv.Optional(CONF_POWER_FACTOR): sensor.sensor_schema(UNIT_EMPTY, ICON_FLASH, 2), }).extend(cv.polling_component_schema('60s')).extend( modbus.modbus_device_schema(0x30)) def to_code(config): var = cg.new_Pvariable(config[CONF_ID]) yield cg.register_component(var, config) yield modbus.register_modbus_device(var, config) if CONF_VOLTAGE in config: conf = config[CONF_VOLTAGE] sens = yield sensor.new_sensor(conf) cg.add(var.set_voltage_sensor(sens)) if CONF_CURRENT in config: conf = config[CONF_CURRENT] sens = yield sensor.new_sensor(conf) cg.add(var.set_current_sensor(sens))