fix canbus send config (#5585)

Co-authored-by: Samuel Sieb <samuel@sieb.net>
This commit is contained in:
Samuel Sieb 2023-10-23 11:26:23 -07:00 committed by GitHub
parent e3fbf54a1a
commit 84c00a5867
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 31 additions and 14 deletions

View File

@ -17,11 +17,12 @@ CONF_ON_FRAME = "on_frame"
def validate_id(config): def validate_id(config):
can_id = config[CONF_CAN_ID] if CONF_CAN_ID in config:
id_ext = config[CONF_USE_EXTENDED_ID] can_id = config[CONF_CAN_ID]
if not id_ext: id_ext = config[CONF_USE_EXTENDED_ID]
if can_id > 0x7FF: if not id_ext:
raise cv.Invalid("Standard IDs must be 11 Bit (0x000-0x7ff / 0-2047)") if can_id > 0x7FF:
raise cv.Invalid("Standard IDs must be 11 Bit (0x000-0x7ff / 0-2047)")
return config return config
@ -151,22 +152,18 @@ async def canbus_action_to_code(config, action_id, template_arg, args):
if can_id := config.get(CONF_CAN_ID): if can_id := config.get(CONF_CAN_ID):
can_id = await cg.templatable(can_id, args, cg.uint32) can_id = await cg.templatable(can_id, args, cg.uint32)
cg.add(var.set_can_id(can_id)) cg.add(var.set_can_id(can_id))
use_extended_id = await cg.templatable( cg.add(var.set_use_extended_id(config[CONF_USE_EXTENDED_ID]))
config[CONF_USE_EXTENDED_ID], args, cg.uint32
)
cg.add(var.set_use_extended_id(use_extended_id))
remote_transmission_request = await cg.templatable( cg.add(
config[CONF_REMOTE_TRANSMISSION_REQUEST], args, bool var.set_remote_transmission_request(config[CONF_REMOTE_TRANSMISSION_REQUEST])
) )
cg.add(var.set_remote_transmission_request(remote_transmission_request))
data = config[CONF_DATA] data = config[CONF_DATA]
if isinstance(data, bytes):
data = [int(x) for x in data]
if cg.is_template(data): if cg.is_template(data):
templ = await cg.templatable(data, args, cg.std_vector.template(cg.uint8)) templ = await cg.templatable(data, args, cg.std_vector.template(cg.uint8))
cg.add(var.set_data_template(templ)) cg.add(var.set_data_template(templ))
else: else:
if isinstance(data, bytes):
data = [int(x) for x in data]
cg.add(var.set_data_static(data)) cg.add(var.set_data_static(data))
return var return var

View File

@ -203,3 +203,19 @@ light:
from: 20 from: 20
to: 25 to: 25
- single_light_id: ${roomname}_lights - single_light_id: ${roomname}_lights
canbus:
- platform: esp32_can
id: esp32_internal_can
rx_pin: GPIO04
tx_pin: GPIO05
can_id: 4
bit_rate: 50kbps
button:
- platform: template
name: Canbus Actions
on_press:
- canbus.send: "abc"
- canbus.send: [0, 1, 2]
- canbus.send: !lambda return {0, 1, 2};

View File

@ -3214,6 +3214,10 @@ text_sensor:
canbus_id: mcp2515_can canbus_id: mcp2515_can
can_id: 23 can_id: 23
data: [0x10, 0x20, 0x30] data: [0x10, 0x20, 0x30]
- canbus.send:
canbus_id: mcp2515_can
can_id: 23
data: !lambda return {0x10, 0x20, 0x30};
- canbus.send: - canbus.send:
canbus_id: esp32_internal_can canbus_id: esp32_internal_can
can_id: 23 can_id: 23