diff --git a/esphome/components/canbus/automation.h b/esphome/components/canbus/automation.h index 5c4c0a88b2..8d0e0aada3 100644 --- a/esphome/components/canbus/automation.h +++ b/esphome/components/canbus/automation.h @@ -21,8 +21,6 @@ template class CanbusSendAction : public Action, public P void set_can_id(uint32_t can_id) { this->can_id_ = can_id; } - TEMPLATABLE_VALUE(float, data) - void play(Ts... x) override { if (this->static_) { this->parent_->send_data(this->can_id_, this->data_static_); @@ -33,9 +31,7 @@ template class CanbusSendAction : public Action, public P } protected: - Canbus *parent_; uint32_t can_id_; - bool static_{false}; std::function(Ts...)> data_func_{}; std::vector data_static_{}; diff --git a/esphome/components/canbus/canbus.cpp b/esphome/components/canbus/canbus.cpp index 3324906d24..31bbb81af1 100644 --- a/esphome/components/canbus/canbus.cpp +++ b/esphome/components/canbus/canbus.cpp @@ -19,28 +19,28 @@ void Canbus::dump_config() { ESP_LOGCONFIG(TAG, "Canbus: sender_id=%d", this->se void Canbus::send_data(uint32_t can_id, const std::vector data) { struct can_frame can_message; - //uint8_t size = static_cast(data.size()); - //ESP_LOGD(TAG, "size=%d", size); - // if (size > CAN_MAX_DLC) - // size = CAN_MAX_DLC; - // can_message.can_dlc = size; - // can_message.can_id = this->sender_id_; - - // for (int i = 0; i < size; i++) { - // can_message.data[i] = data[i]; - // ESP_LOGD(TAG, "data[%d] = %02x", i, can_message.data[i]); - // } - + uint8_t size = static_cast(data.size()); + ESP_LOGD(TAG, "size=%d", size); + if (size > CAN_MAX_DLC) + size = CAN_MAX_DLC; + can_message.can_dlc = size; can_message.can_id = this->sender_id_; - can_message.can_dlc = 8; - can_message.data[0] = 0x00; - can_message.data[1] = 0x01; - can_message.data[2] = 0x02; - can_message.data[3] = 0x03; - can_message.data[4] = 0x04; - can_message.data[5] = 0x05; - can_message.data[6] = 0x06; - can_message.data[7] = 0x07; + + for (int i = 0; i < size; i++) { + can_message.data[i] = data[i]; + ESP_LOGD(TAG, "data[%d] = %02x", i, can_message.data[i]); + } + + // can_message.can_id = this->sender_id_; + // can_message.can_dlc = 8; + // can_message.data[0] = 0x00; + // can_message.data[1] = 0x01; + // can_message.data[2] = 0x02; + // can_message.data[3] = 0x03; + // can_message.data[4] = 0x04; + // can_message.data[5] = 0x05; + // can_message.data[6] = 0x06; + // can_message.data[7] = 0x07; //this->dump_frame_(&can_message); this->send_message_(&can_message);