canbus:
  - platform: esp32_can
    id: esp32_internal_can
    rx_pin: 4
    tx_pin: 5
    can_id: 4
    bit_rate: 50kbps
    on_frame:
      - can_id: 500
        then:
          - lambda: |-
              std::string b(x.begin(), x.end());
              ESP_LOGD("canid 500", "%s", b.c_str());
      - can_id: 23
        then:
          - if:
              condition:
                lambda: "return x[0] == 0x11;"
              then:
                logger.log: Truth
      - 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("canbus", "exhaust_fan_duty");
                  break;
                case 118:
                  ESP_LOGD("canbus", "supply_fan_duty");
                  break;
                case 119:
                  ESP_LOGD("canbus", "supply_fan_flow");
                  break;
              }

button:
  - platform: template
    name: Canbus Actions
    on_press:
      - canbus.send: "abc"
      - canbus.send: [0, 1, 2]
      - canbus.send: !lambda return {0, 1, 2};