Hi,
I am trying to setup the CAN part of the Daikin-Rotex project.
It does not communicate with my heatpump. When analyzing with a Digital Oscilloscope I came to realize that the ESP32-S3 only sends on the CAN Bus exactly once after startup. I am using a cheap VP230 based transceiver.
I can reproduce this behavior without the external repository with the simple esphome script below. At the time of testing there is no other controller connected to the CAN Bus.
The message is is sent once when pressing the button there is an error on the console
[W][canbus:053]: send to standard id=0x100 failed with error 2!
This can be seen on the oscilloscope. But no message will be sent after that.
Is this expected behavior when there is no ACK for a CAN Bus message?
esphome:
name: eh32-daikin-hpsu
friendly_name: eh32_daikin_hpsu
esp32:
board: esp32-s3-devkitc-1
framework:
type: arduino
logger:
#level: INFO
level: DEBUG
api:
encryption:
key: !secret api_encryption_key
ota:
platform: esphome
password: !secret ota_password
web_server:
version: 3
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
min_auth_mode: WPA2
power_save_mode: none
ap:
ssid: DaikinRotex Fallback Hotspot
password: !secret ap_password
captive_portal:
time:
- platform: homeassistant
debug:
update_interval: 5s
- platform: template
name: "Send CAN 0x100 Message"
on_press:
- canbus.send:
can_id: 0x100
data: [0x13]
- platform: template
name: "Send CAN 0x200 Message"
on_press:
- canbus.send:
can_id: 0x200
data: [0x01, 0x02, 0x03]
canbus:
- platform: esp32_can
id: can_bus
#can_id: 0x680
can_id: 0x780
tx_pin: GPIO5
rx_pin: GPIO6
bit_rate: 20kbps
on_frame:
- can_id: 0x500
use_extended_id: false
then:
- lambda: |-
std::string b(x.begin(), x.end());
ESP_LOGD("can id 500", "%s", &b[0] );