async def canbus_action_to_code(config, action_id, template_arg, args): var = cg.new_Pvariable(action_id, template_arg) await cg.register_parented(var, config[CONF_CANBUS_ID]) if CONF_CAN_ID in config: can_id = await cg.templatable(config[CONF_CAN_ID], args, cg.uint32) cg.add(var.set_can_id(can_id)) use_extended_id = await cg.templatable(config[CONF_USE_EXTENDED_ID], args, cg.uint32) cg.add(var.set_use_extended_id(use_extended_id)) remote_transmission_request = await cg.templatable( config[CONF_REMOTE_TRANSMISSION_REQUEST], args, bool) cg.add(var.set_remote_transmission_request(remote_transmission_request)) data = config[CONF_DATA] if isinstance(data, bytes): data = [int(x) for x in data] if cg.is_template(data): templ = await cg.templatable(data, args, cg.std_vector.template(cg.uint8)) cg.add(var.set_data_template(templ)) else: cg.add(var.set_data_static(data)) return var
def register_rs485_device(var, config): paren = yield cg.get_variable(config[CONF_RS485_ID]) cg.add(paren.register_listener(var)) yield var device = yield state_hex_expression(config[CONF_DEVICE]) cg.add(var.set_device(device)) if CONF_SUB_DEVICE in config: sub_device = yield state_hex_expression(config[CONF_SUB_DEVICE]) cg.add(var.set_sub_device(sub_device)) if CONF_STATE_ON in config: state_on = yield state_hex_expression(config[CONF_STATE_ON]) cg.add(var.set_state_on(state_on)) if CONF_STATE_OFF in config: state_off = yield state_hex_expression(config[CONF_STATE_OFF]) cg.add(var.set_state_off(state_off)) if CONF_COMMAND_ON in config: data = config[CONF_COMMAND_ON] if cg.is_template(data): command_on = yield cg.templatable(data, [], cmd_hex_t) cg.add(var.set_command_on(command_on)) else: command_on = yield command_hex_expression(config[CONF_COMMAND_ON]) cg.add(var.set_command_on(command_on)) if CONF_COMMAND_OFF in config: data = config[CONF_COMMAND_OFF] if cg.is_template(data): command_off = yield cg.templatable(data, [], cmd_hex_t) cg.add(var.set_command_off(command_off)) else: command_off = yield command_hex_expression( config[CONF_COMMAND_OFF]) cg.add(var.set_command_off(command_off)) if CONF_COMMAND_STATE in config: command_state = yield command_hex_expression( config[CONF_COMMAND_STATE]) cg.add(var.set_command_state(command_state))
async def raw_action(var, config, args): code_ = config[CONF_CODE] if cg.is_template(code_): template_ = await cg.templatable(code_, args, cg.std_vector.template(cg.int32)) cg.add(var.set_code_template(template_)) else: code_ = config[CONF_CODE] arr = cg.progmem_array(config[CONF_CODE_STORAGE_ID], code_) cg.add(var.set_code_static(arr, len(code_))) templ = await cg.templatable(config[CONF_CARRIER_FREQUENCY], args, cg.uint32) cg.add(var.set_carrier_frequency(templ))
async def rs485_write_to_code(config, action_id, template_arg, args): var = cg.new_Pvariable(action_id, template_arg) await cg.register_parented(var, config[CONF_ID]) data = config[CONF_DATA] if cg.is_template(data): templ = await cg.templatable(data, args, cmd_hex_t) cg.add(var.set_data_template(templ)) else: cmd = await command_hex_expression(config) cg.add(var.set_data_static(cmd)) return var
def uart_write_to_code(config, action_id, template_arg, args): var = cg.new_Pvariable(action_id, template_arg) yield cg.register_parented(var, config[CONF_ID]) data = config[CONF_DATA] if isinstance(data, binary_type): data = [char_to_byte(x) for x in data] if cg.is_template(data): templ = yield cg.templatable(data, args, cg.std_vector.template(cg.uint8)) cg.add(var.set_data_template(templ)) else: cg.add(var.set_data_static(data)) yield var
async def uart_write_to_code(config, action_id, template_arg, args): var = cg.new_Pvariable(action_id, template_arg) await cg.register_parented(var, config[CONF_ID]) data = config[CONF_DATA] if isinstance(data, bytes): data = list(data) if cg.is_template(data): templ = await cg.templatable(data, args, cg.std_vector.template(cg.uint8)) cg.add(var.set_data_template(templ)) else: cg.add(var.set_data_static(data)) return var
def canbus_action_to_code(config, action_id, template_arg, args): validate_id(config[CONF_CAN_ID], config[CONF_USE_EXTENDED_ID]) var = cg.new_Pvariable(action_id, template_arg) yield cg.register_parented(var, config[CONF_CANBUS_ID]) if CONF_CAN_ID in config: can_id = yield cg.templatable(config[CONF_CAN_ID], args, cg.uint32) cg.add(var.set_can_id(can_id)) use_extended_id = yield cg.templatable(config[CONF_USE_EXTENDED_ID], args, cg.uint32) cg.add(var.set_use_extended_id(use_extended_id)) data = config[CONF_DATA] if isinstance(data, bytes): data = [int(x) for x in data] if cg.is_template(data): templ = yield cg.templatable(data, args, cg.std_vector.template(cg.uint8)) cg.add(var.set_data_template(templ)) else: cg.add(var.set_data_static(data)) yield var
async def to_code(config): var = cg.new_Pvariable(config[CONF_ID]) await cg.register_component(var, config) await climate.register_climate(var, config) await rs485.register_rs485_device(var, config) templ = await cg.templatable(config[CONF_COMMAND_TEMPERATURE], [(cg.float_.operator('const'), 'x')], cmd_hex_t) cg.add(var.set_command_temperature(templ)) state = config[CONF_STATE_TARGET] if cg.is_template(state): templ = await cg.templatable(state, [(uint8_ptr_const, 'data'), (num_t_const, 'len')], cg.float_) cg.add(var.set_state_target(templ)) else: args = state[CONF_OFFSET], state[CONF_LENGTH], state[CONF_PRECISION] cg.add(var.set_state_target(args)) if CONF_SENSOR in config: sens = await cg.get_variable(config[CONF_SENSOR]) cg.add(var.set_sensor(sens)) if CONF_STATE_CURRENT in config: state = config[CONF_STATE_CURRENT] if cg.is_template(state): templ = await cg.templatable(state, [(uint8_ptr_const, 'data'), (num_t_const, 'len')], cg.float_) cg.add(var.set_state_current(templ)) else: args = state[CONF_OFFSET], state[CONF_LENGTH], state[ CONF_PRECISION] cg.add(var.set_state_current(args)) if CONF_STATE_AUTO in config: args = await state_hex_expression(config[CONF_STATE_AUTO]) cg.add(var.set_state_auto(args)) if CONF_STATE_HEAT in config: args = await state_hex_expression(config[CONF_STATE_HEAT]) cg.add(var.set_state_heat(args)) if CONF_STATE_COOL in config: args = await state_hex_expression(config[CONF_STATE_COOL]) cg.add(var.set_state_cool(args)) if CONF_STATE_AWAY in config: args = await state_hex_expression(config[CONF_STATE_AWAY]) cg.add(var.set_state_away(args)) if CONF_COMMAND_AUTO in config: args = await command_hex_expression(config[CONF_COMMAND_AUTO]) cg.add(var.set_command_auto(args)) if CONF_COMMAND_HEAT in config: args = await command_hex_expression(config[CONF_COMMAND_HEAT]) cg.add(var.set_command_heat(args)) if CONF_COMMAND_COOL in config: args = await command_hex_expression(config[CONF_COMMAND_COOL]) cg.add(var.set_command_cool(args)) if CONF_COMMAND_AWAY in config: args = await command_hex_expression(config[CONF_COMMAND_AWAY]) cg.add(var.set_command_away(args))
async def to_code(config): cg.add_global(rs485_ns.using) var = cg.new_Pvariable(config[CONF_ID], config[CONF_BAUD_RATE], config[CONF_DATA_BITS], config[CONF_PARITY], config[CONF_STOP_BITS], config[CONF_RX_WAIT]) await cg.register_component(var, config) if CONF_TX_INTERVAL in config: cg.add(var.set_tx_interval(config[CONF_TX_INTERVAL])) if CONF_TX_WAIT in config: cg.add(var.set_tx_wait(config[CONF_TX_WAIT])) if CONF_TX_RETRY_CNT in config: cg.add(var.set_tx_retry_cnt(config[CONF_TX_RETRY_CNT])) if CONF_CTRL_PIN in config: pin = await cg.gpio_pin_expression(config[CONF_CTRL_PIN]) cg.add(var.set_ctrl_pin(pin)) if CONF_PREFIX in config: cg.add(var.set_prefix(config[CONF_PREFIX])) if CONF_SUFFIX in config: cg.add(var.set_suffix(config[CONF_SUFFIX])) if CONF_CHECKSUM_LAMBDA in config: _LOGGER.warning( CONF_CHECKSUM_LAMBDA + " is deprecated and will be removed in a future version.") template_ = await cg.process_lambda(config[CONF_CHECKSUM_LAMBDA], [(uint8_ptr_const, 'data'), (num_t_const, 'len')], return_type=cg.uint8) cg.add(var.set_checksum_lambda(template_)) if CONF_CHECKSUM in config: data = config[CONF_CHECKSUM] if cg.is_template(data): template_ = await cg.process_lambda(data, [(uint8_ptr_const, 'data'), (num_t_const, 'len')], return_type=cg.uint8) cg.add(var.set_checksum_lambda(template_)) else: cg.add(var.set_checksum(data)) if CONF_CHECKSUM2 in config: data = config[CONF_CHECKSUM2] if cg.is_template(data): template_ = await cg.process_lambda(data, [(uint8_ptr_const, 'data'), (num_t_const, 'len'), (uint8_const, 'checksum1')], return_type=cg.uint8) cg.add(var.set_checksum2_lambda(template_)) else: cg.add(var.set_checksum2(data)) if CONF_STATE_RESPONSE in config: state_response = await state_hex_expression(config[CONF_STATE_RESPONSE] ) cg.add(var.set_state_response(state_response)) if CONF_PACKET_MONITOR in config: sm = cg.new_Pvariable(config[CONF_PACKET_MONITOR_ID]) await sm for conf in config[CONF_PACKET_MONITOR]: data = conf[CONF_DATA] and_operator = conf[CONF_AND_OPERATOR] inverted = conf[CONF_INVERTED] offset = conf[CONF_OFFSET] cg.add(sm.add_filter([offset, and_operator, inverted, data])) cg.add(var.register_listener(sm))