-
-
Save JavanXD/696d026ef202a7d6455ed4745df63e39 to your computer and use it in GitHub Desktop.
substitutions: | |
name: esphome-ledaluc2 | |
friendly_name: ESPHome LEDA LUC2 | |
esphome: | |
name: ${name} | |
friendly_name: ${friendly_name} | |
min_version: 2023.6.0 # Use a stable ESPHome version for compatibility | |
name_add_mac_suffix: false # Prevent adding MAC suffix to the device name | |
project: | |
name: esphome.web | |
version: dev # Version of the project | |
esp32: | |
board: esp32dev # Specify the ESP32 development board | |
framework: | |
type: arduino # Use the Arduino framework | |
# Enable logging for debugging purposes | |
logger: | |
# Enable Home Assistant API with encryption key from secrets.yaml | |
api: | |
encryption: | |
key: !secret api_key | |
# Enable over-the-air updates for firmware | |
ota: | |
platform: esphome | |
wifi: | |
ssid: !secret wifi_ssid | |
password: !secret wifi_password | |
# Fallback hotspot in case Wi-Fi connection fails | |
ap: | |
ssid: "ESPHome-LEDALUC2" | |
password: !secret ap_password | |
# Allow Wi-Fi provisioning via serial connection | |
improv_serial: | |
# Enable captive portal for Wi-Fi provisioning via the fallback hotspot | |
captive_portal: | |
# Import specific components from an example configuration without overwriting local settings | |
dashboard_import: | |
package_import_url: github://esphome/example-configs/esphome-web/esp32.yaml@main | |
import_full_config: false | |
# Host a simple web server (e.g., for Improv Wi-Fi) | |
web_server: | |
# Configure the SPI interface for the MCP2515 CAN bus module | |
spi: | |
clk_pin: GPIO22 # Clock pin | |
miso_pin: GPIO17 # Master In Slave Out pin | |
mosi_pin: GPIO21 # Master Out Slave In pin | |
# Configure the CAN bus using the MCP2515 module | |
canbus: | |
- platform: mcp2515 | |
cs_pin: GPIO16 | |
can_id: 0x28A | |
bit_rate: 125KBPS | |
on_frame: | |
- can_id: 0x28A | |
then: | |
- lambda: |- | |
// Log all received CAN frames for debugging | |
if (x.size() > 0 && x.size() < 8) { | |
// Log the received frame data safely | |
std::string frame_data; | |
for (size_t i = 0; i < x.size(); i++) { | |
char byte_str[5]; | |
snprintf(byte_str, sizeof(byte_str), "0x%02X ", x[i]); | |
frame_data += byte_str; | |
} | |
// Log the frame data in a single line | |
ESP_LOGD("CAN", "Received CAN Frame (Size: %d bytes): %s", x.size(), frame_data.c_str()); | |
// Check for specific sizes and log states | |
if (x.size() == 2) { | |
ESP_LOGI("CAN", "Interpreted State: Ventilation turned OFF via Display"); | |
} else if (x.size() == 1) { | |
ESP_LOGI("CAN", "Interpreted State: Ventilation turned ON via Display"); | |
} else { | |
ESP_LOGW("CAN", "Interpreted State: Unknown or Additional Data"); | |
} | |
} | |
else if (x.size() == 8) { | |
uint8_t frame_type = x[0]; // First byte determines the frame type | |
// Frame type 0x00: Pressure difference and exhaust temperature | |
if (frame_type == 0x00) { | |
// Extract pressure difference from Byte 2 | |
float pressure_difference = x[1] * 0.1f; // Convert to Pascals | |
// Check for adjustment flag in Byte 3 | |
if (x[2] == 0x81) { | |
const float PRESSURE_ADJUSTMENT_VALUE = 25.5f; | |
pressure_difference += PRESSURE_ADJUSTMENT_VALUE; | |
ESP_LOGI("CAN", "Adjustment Applied: +%.1f Pa", PRESSURE_ADJUSTMENT_VALUE); | |
} | |
// Extract exhaust temperature from Byte 4 | |
float exhaust_temperature = static_cast<float>(x[3]); // °C | |
// Log decoded values | |
ESP_LOGI("CAN", "Pressure: %.1f Pa, Temperature: %.1f °C", pressure_difference, exhaust_temperature); | |
// Publish to sensors | |
id(pressure_difference_sensor).publish_state(pressure_difference); | |
id(exhaust_temperature_sensor).publish_state(exhaust_temperature); | |
} | |
// Frame type 0x01: Ventilation status | |
else if (frame_type == 0x01) { | |
// Extract ventilation status from Byte 6 | |
bool ventilation_active = (x[5] == 0x01); | |
// Log ventilation status | |
ESP_LOGI("CAN", "Ventilation Active: %s", ventilation_active ? "Yes" : "No"); | |
ESP_LOGD("CAN", "Ventilation Bytes: Data=%02X %02X %02X %02X %02X %02X %02X %02X", | |
x[0], x[1], x[2], x[3], x[4], x[5], x[6], x[7]); | |
// Publish to binary sensor | |
id(ventilation_status_sensor).publish_state(ventilation_active); | |
} | |
// Frame type 0x09: Heartbeat signal | |
else if (frame_type == 0x09) { | |
// Log loop and counter for reference | |
ESP_LOGD("CAN", "Heartbeat (0x09): Loop=%02X, Counter=%02X", x[2], x[1]); | |
} | |
// Frame type 0x55: Heartbeat signal | |
else if (frame_type == 0x55) { | |
// Log loop and counter for reference | |
ESP_LOGD("CAN", "Heartbeat (0x55): Loop=%02X, Counter=%02X", x[2], x[1]); | |
} | |
else if (frame_type == 0x80) { | |
ESP_LOGW("CAN", "Error Frame (0x80): Data=%02X %02X %02X %02X %02X %02X %02X %02X", | |
x[0], x[1], x[2], x[3], x[4], x[5], x[6], x[7]); | |
} | |
else if (frame_type == 0x81) { | |
ESP_LOGW("CAN", "Error Frame (0x81): Data=%02X %02X %02X %02X %02X %02X %02X %02X", | |
x[0], x[1], x[2], x[3], x[4], x[5], x[6], x[7]); | |
} | |
// Handle unknown frame types | |
else { | |
ESP_LOGW("CAN", "Unknown Frame Type. Data=%02X %02X %02X %02X %02X %02X %02X %02X", | |
x[0], x[1], x[2], x[3], x[4], x[5], x[6], x[7]); | |
} | |
} else { | |
ESP_LOGW("CAN", "Unexpected frame size: %d bytes", x.size()); | |
} | |
# Define template sensors to hold the values published from the CAN bus data | |
sensor: | |
- platform: template | |
name: "Pressure Difference" | |
id: pressure_difference_sensor | |
unit_of_measurement: "Pa" | |
accuracy_decimals: 1 | |
device_class: pressure # Device class for pressure sensors | |
icon: "mdi:air-filter" # Optional custom icon for visual clarity | |
filters: | |
- throttle_average: 3s | |
- platform: template | |
name: "Exhaust Temperature" | |
id: exhaust_temperature_sensor | |
unit_of_measurement: "°C" | |
accuracy_decimals: 1 | |
device_class: temperature # Device class for temperature sensors | |
icon: "mdi:thermometer" | |
filters: | |
- throttle_average: 3s | |
binary_sensor: | |
- platform: template | |
name: "Ventilation Status" | |
id: ventilation_status_sensor | |
device_class: running # Device class for indicating system activity | |
icon: "mdi:fan" # Optional custom icon for ventilation |
Hallo, ich habe eine 30-Pin-ESP32 hier. Kann mir bitte jemand die PIN-Belegung dafür zum MCP2525 nennen? Muss ich im Code dann Änderungen vornehmen?
Danke!
Und ich sehe gerade in dem Log vom esphome folgendes:
[19:24:35][E][component:085]: Component canbus is marked FAILED:
Jemand eine Idee woran das liegen könnte?
@failbit Funktioniert bei mir leider nicht, ich weiß auch nicht wieso. Nach einem Neustart vom ESP bekomme ich manchmal 1-2 Werte und dann tut sich nichts mehr.
Habe alles schon 1000-fach überprüft und kann keinen "Fehler" finden ...
Wenn ihr das Webinterface vom ESP32 aufruft bekommt ihr recht gute Logs zu allen Nachrichten die auf dem CAN-Bus übertragen werden. Aktuell sind die Aussagen hier im Chat vonwegen "bei mir funktioniert es nicht", so gar nicht aufschlussreich.
Da ich von den letzten Nachrichten "Funktioniert nicht" kurz abgeschreckt war, musste ich ein Kommentar hinterlassen:
Bei mir läuft es auf anhieb.
Vielen Dank an @JavanXD
Hi bgunner1987, schön zu hören - bei mir leider auch keine Funktion. Im Webinterface konnte ich ein mal folgendes speichern:
41:01 [D] [esp-idf:000]�[1;31m[httpd]�[0;36m
�[0;33mW (502926) httpd_txrx: httpd_sock_err: error in recv : 104�[0m
Das ganze zusammengelötet, die CanBus adern getauscht und mit ESPHome geflasht, die Codezeilen 46-49 muss man dann auskommentieren.
Hat da jemand eine Idee?
HG Michael und Dank an JavanXD fürs ausknobeln und veröffentlichen.
Alles noch mal neu auf dem ESP (neu) installiert, neue CanBus Platine, gleiche verhalten.
Zur Config, mein HA lauft auf einer VM auf einem Unraid Server - kommen die Daten irgendwie nicht durch? Beim Anstecken des ESP an den Bus zeigt das Display des Leda kurz „suche Module“ . Könnte das auch an der Version des Leda liegen? Können die bei den es klappt einmal die Versionsnummer posten?
HG Michael
Habe ebenfalls nochmal neu installiert. Hier einmal die Log-Ausgabe vom ESP die den Fehler wirft:
[18:47:41][C][spi:068]: SPI bus:
[18:47:41][C][spi:069]: CLK Pin: GPIO22
[18:47:41][C][spi:070]: SDI Pin: GPIO17
[18:47:41][C][spi:071]: SDO Pin: GPIO21
[18:47:41][C][spi:076]: Using HW SPI: SPI
[18:47:41][C][canbus:021]: config standard id=0x28a
[18:47:41][E][component:088]: Component canbus is marked FAILED:
Sieht das bei Dir auch so aus, @Blaumicha ?
Das läuft bei mir, sieht so aus:
[17:00:12][C][spi:068]: SPI bus:
[17:00:12][C][spi:069]: CLK Pin: GPIO22
[17:00:12][C][spi:070]: SDI Pin: GPIO17
[17:00:12][C][spi:071]: SDO Pin: GPIO21
[17:00:12][C][spi:076]: Using HW SPI: SPI2_HOST
[17:00:12][C][canbus:021]: config standard id=0x28a
[17:00:12][C][template.sensor:022]: Template Sensor 'Pressure Difference'
Entschuldige die Frage in welche Lochreihe hast Du das CanBus Interface gelötet? Bei mir ist es die Reihe direkt am ESP Chip.
Genau, habe ich auch. Weiß hinterlegte reihe.
Es kommen keine Daten, nachdem ich dem ESP eine feste IP Adresse zugewiesen hatte, wurde direkt nach dem Installieren folgendes im Logfemnster ausgegeben, danach keine weiteren Zeilen:
22:00:53 [D] [api. connection:236] Home Assistant 2025.6.1 (192.168.178.193) disconnected
22:00:53 [W] [component:188] Component api set Warning flag: unspecified
22:01:22 [D] [canbus:077] received can message (#1) std can_id=0x0 size=0
22:01:22 [D] [canbus:077] received can message (#2) std can_id=0x0 size=0
22:01:32 [D] (api:133) Accepted 192.168.178.193
22:01:32 [W] [component: 203] Component api cleared Warning flag
22:01:32 [D] (api.connection:1570] Home Assistant 2025.6.1 (192.168.178.193) connected
22:01:39 [D] [canbus:077] received can message (#1) std can_id=0x0 size=0
22:01:45 [D] [api:133] Accepted 192.168.178.193
22:01:45 [D] (api.connection:236] aioesphomeapi (192.168.178.193) disconnected
22:01:45 [D] [canbus:077] received can message (#1) std can_id=0x0 size=0
Danach hatte ich 8 Grad Abgastemp (wir hatten gut 30 Grad gestern im Haus) und 0 Druckdifferenz und Lüftungsstatus „OFF“, läuft aber.
Nach dem Abziehen des ESP von der Versorgungsspannung und neubooten nur noch folgende Ausgaben:
22:14:53 [D] lapi: 1331 Accepted 192.168.178.193
22:14:53 [W] [component: 203] Component api cleared Warning flag
22:14:53 [D] [api. connection:1570] Home Assistant 2025.6.1 (192.168.178.193) connected
22:15:24 [I] [safe_mode:042] Boot seems successful; resetting boot loop counter
22:15:24 [D] [esp32.preferences:142] Writing 1 items: 0 cached, 1 written, 0 failed
Ich hoffe jemand hier hat eine Idee. HG Michael
Könnten unterschiedliche esphome Versionen auch ein Problem machen? Ich verwende derzeit ESPHome 2025.6.0
Mich macht stutzig, dass bei dir "Using HW SPI: SPI2_HOST" in den Logs erscheint, bei mir "Using HW SPI: SPI". Ich habe noch mit der "interface"-Option unterhalb von spi etwas zu verändern - ohne erfolg.
Alles noch mal neu auf dem ESP (neu) installiert, neue CanBus Platine, gleiche verhalten.
Zur Config, mein HA lauft auf einer VM auf einem Unraid Server - kommen die Daten irgendwie nicht durch? Beim Anstecken des ESP an den Bus zeigt das Display des Leda kurz „suche Module“ . Könnte das auch an der Version des Leda liegen? Können die bei den es klappt einmal die Versionsnummer posten?
HG Michael
Wo finde ich Versionsnummer?
Die Modulsuche vom Leda hatte ich mal bei einer schlechten Kabelverbindung. Da ging Leda dann auch in Fehler.
Alles noch mal neu auf dem ESP (neu) installiert, neue CanBus Platine, gleiche verhalten.
Zur Config, mein HA lauft auf einer VM auf einem Unraid Server - kommen die Daten irgendwie nicht durch? Beim Anstecken des ESP an den Bus zeigt das Display des Leda kurz „suche Module“ . Könnte das auch an der Version des Leda liegen? Können die bei den es klappt einmal die Versionsnummer posten?
HG MichaelWo finde ich Versionsnummer? Die Modulsuche vom Leda hatte ich mal bei einer schlechten Kabelverbindung. Da ging Leda dann auch in Fehler.
Man kann das Fachbetrieb Menü aufrufen, PW ist die PLZ vom Hersteller: 26761
Alles noch mal neu auf dem ESP (neu) installiert, neue CanBus Platine, gleiche verhalten.
Zur Config, mein HA lauft auf einer VM auf einem Unraid Server - kommen die Daten irgendwie nicht durch? Beim Anstecken des ESP an den Bus zeigt das Display des Leda kurz „suche Module“ . Könnte das auch an der Version des Leda liegen? Können die bei den es klappt einmal die Versionsnummer posten?
HG MichaelWo finde ich Versionsnummer? Die Modulsuche vom Leda hatte ich mal bei einer schlechten Kabelverbindung. Da ging Leda dann auch in Fehler.
Man kann das Fachbetrieb Menü aufrufen, PW ist die PLZ vom Hersteller: 26761
Bei mir wird das Passwort nicht angenommen. Muss morgen mal die Bedienungsanleitung suchen, vielleicht hat der Elektriker ein eigenes/ neues vergeben.
Sorry könnte auch 26789 Sein, die haben zwei PLZs.
Das läuft bei mir, sieht so aus: [17:00:12][C][spi:068]: SPI bus: [17:00:12][C][spi:069]: CLK Pin: GPIO22 [17:00:12][C][spi:070]: SDI Pin: GPIO17 [17:00:12][C][spi:071]: SDO Pin: GPIO21 [17:00:12][C][spi:076]: Using HW SPI: SPI2_HOST [17:00:12][C][canbus:021]: config standard id=0x28a [17:00:12][C][template.sensor:022]: Template Sensor 'Pressure Difference'
Entschuldige die Frage in welche Lochreihe hast Du das CanBus Interface gelötet? Bei mir ist es die Reihe direkt am ESP Chip.
Bei mir scheint der canbus auch zu laufen, es kommen aber keine Werte rein ... habe auch testweise den Jumper auf dem Board mal geschlossen, bringt aber auch nix :(
Es bleibt unerklärlich. Aus dem Artikel https://esphome.io/components/canbus/mcp2515 Habe ich mitgenommen, das es einige MCPs gibt, die mit den 3,3/5V Pegeln nihct zurecht kommen. Also einen LevelShifter zwischen geschaltet, beim Booten des ESP wird der CAM Bus erkannt - weiter keine Daten (Auch das umdrehen der HI/LO Eingänge am MCP hat nicht geholfen).
Entweder machen wir (die keine Daten bekommen) etwas grundsätzlich anders, der MCP ist bei mir drei mal def. oder es - kommt jetzt jemand mit einer neuen Idee. Ich habe übrigens den CAM BUS Y-Splitter an dem Display angeschlossen, alle bei denen es funktioniert auch oder am Steuermodul (im Keller)?
Help.
Es bleibt unerklärlich. Aus dem Artikel https://esphome.io/components/canbus/mcp2515 Habe ich mitgenommen, das es einige MCPs gibt, die mit den 3,3/5V Pegeln nihct zurecht kommen. Also einen LevelShifter zwischen geschaltet, beim Booten des ESP wird der CAM Bus erkannt - weiter keine Daten (Auch das umdrehen der HI/LO Eingänge am MCP hat nicht geholfen).
Entweder machen wir (die keine Daten bekommen) etwas grundsätzlich anders, der MCP ist bei mir drei mal def. oder es - kommt jetzt jemand mit einer neuen Idee. Ich habe übrigens den CAM BUS Y-Splitter an dem Display angeschlossen, alle bei denen es funktioniert auch oder am Steuermodul (im Keller)?
Help.
Ich habe den CAN-Bus Y-Splitter an beiden Stellen probiert, jeweils kein Erfolg.
Hey, irgendwie bin ich zu doof das Zeug zusammen zu löten. Könnte mir jemand, natürlich gegen Aufwandsentschädigung, so ein Ding zusammen bauen?