esphome:
  on_boot:
    then:
      - canbus.send:
          # Extended ID explicit
          canbus_id: esp32_internal_can
          use_extended_id: true
          can_id: 0x100
          data: [0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08]
      - canbus.send:
          # Standard ID by default
          canbus_id: esp32_internal_can
          can_id: 0x100
          data: [0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08]
      # Note: esp32_internal_can_2 uses LISTENONLY mode, so no send actions

canbus:
  - platform: esp32_can
    id: esp32_internal_can
    rx_pin: GPIO8
    tx_pin: GPIO7
    can_id: 4
    bit_rate: 50kbps
    mode: NORMAL
    on_frame:
      - can_id: 500
        then:
          - lambda: |-
              std::string b(x.begin(), x.end());
              ESP_LOGD("canbus1", "canid 500 %s", b.c_str() );
      - can_id: 0b00000000000000000000001000000
        can_id_mask: 0b11111000000000011111111000000
        use_extended_id: true
        then:
          - lambda: |-
              auto pdo_id = can_id >> 14;
              switch (pdo_id)
              {
                case 117:
                  ESP_LOGD("canbus1", "exhaust_fan_duty");
                  break;
                case 118:
                  ESP_LOGD("canbus1", "supply_fan_duty");
                  break;
                case 119:
                  ESP_LOGD("canbus1", "supply_fan_flow");
                  break;
                // to be continued...
              }
  - platform: esp32_can
    id: esp32_internal_can_2
    rx_pin: GPIO10
    tx_pin: GPIO9
    can_id: 4
    bit_rate: 50kbps
    mode: LISTENONLY
    on_frame:
      - can_id: 500
        then:
          - lambda: |-
              std::string b(x.begin(), x.end());
              ESP_LOGD("canbus2", "canid 500 %s", b.c_str() );
      - can_id: 0b00000000000000000000001000000
        can_id_mask: 0b11111000000000011111111000000
        use_extended_id: true
        then:
          - lambda: |-
              auto pdo_id = can_id >> 14;
              switch (pdo_id)
              {
                case 117:
                  ESP_LOGD("canbus2", "exhaust_fan_duty");
                  break;
                case 118:
                  ESP_LOGD("canbus2", "supply_fan_duty");
                  break;
                case 119:
                  ESP_LOGD("canbus2", "supply_fan_flow");
                  break;
                // to be continued...
              }
