mirror of
https://github.com/esphome/esphome.git
synced 2024-12-22 16:37:52 +01:00
fix canbus send config (#5585)
Co-authored-by: Samuel Sieb <samuel@sieb.net>
This commit is contained in:
parent
e3fbf54a1a
commit
84c00a5867
@ -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
|
||||||
|
@ -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};
|
||||||
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user