ESP32-C6 zigbee2mqtt

Hello all! I tried to look up something, but most of the post are old that’s why i decided to create a new one.
Recently i bought ESP32-C6-WROOM1-N8 boards and from what i understand they have zigbee support.
Did someone managed to connect the new esp32-c6 board with zigbee2mqtt and report sensor data?

2 Likes

What firmware are you running on the esp32-c6

Not exactly out of the box, but i manage to send data to z2m (at least for BME280)
Kudos to GitHub - luar123/esphome_zb_sensor: Example of a zigbee sensor in esphome

Here is my example ESPHome Yaml

esphome:
  name: zb-sensor
  platformio_options:
    platform: https://github.com/luar123/platform-espressif32H2/archive/refs/tags/v6.5.1.zip
  includes:
    - esphome_zb.h
    - esp_zb_light.c
    - esp_zb_light.h

esp32:
  board: esp32-c6-devkitc-1
  variant: esp32c6
  flash_size: 8MB
  partitions: partitions_zb.csv
  framework:
    type: esp-idf
    version: 5.1.2
    platform_version: 6.5.0
    source: https://github.com/tasmota/esp-idf/releases/download/v5.1.3.240313/esp-idf-v5.1.3.zip
    sdkconfig_options:
      CONFIG_ESPTOOLPY_FLASHSIZE_8MB: y
      CONFIG_ZB_ENABLED: y
      CONFIG_ZB_ZED: y
      CONFIG_ZB_RADIO_NATIVE: y
      ZB_ED_ROLE: y

external_components:
  - source: github://pr#6323
    components: [ logger ]

logger:
    
i2c:
   - id: bus_a
     sda: 21
     scl: 22
     scan: true

sensor:
  - platform: bme280_i2c
    i2c_id: bus_a
    temperature:
      name: "Temperature"
      id: bme280_temperature
      oversampling: 16x
      on_value:
        then:
          - lambda: |-
                int16_t value = (int16_t)(x*100);
                reportAttribute(ESP_ZB_ZCL_CLUSTER_ID_TEMP_MEASUREMENT, ESP_ZB_ZCL_ATTR_TEMP_MEASUREMENT_VALUE_ID, &value);
    humidity:
      name: "Humidity"
      id: "bme280_humidity"
      on_value:
        then:
          - lambda: |-
                int16_t value = (int16_t)(x*100);
                reportAttribute(ESP_ZB_ZCL_CLUSTER_ID_REL_HUMIDITY_MEASUREMENT, ESP_ZB_ZCL_ATTR_REL_HUMIDITY_MEASUREMENT_VALUE_ID, &value);
    address: 0x76
    update_interval: 60s

custom_component:
- lambda: |-
    auto my_zb = new esphomeZB();
    return {my_zb};
  components:
  - id: zb
6 Likes

for me it throws an error

INFO Reading configuration config/c6-test.yaml...
WARNING The selected ESP-IDF framework version is not the recommended one. If there are connectivity or build issues please remove the manual version.
Failed config

esp32: [source config/c6-test.yaml:11]
  board: esp32-c6-devkitc-1
  variant: esp32c6
  flash_size: 8MB
  
  Could not find file 'config/partitions_zb.csv'. Please make sure it exists (full path: /home/username/config/partitions_zb.csv).
  partitions: partitions_zb.csv
  framework: 
    type: esp-idf
    version: 5.1.2
    platform_version: 6.5.0
    source: |-
      https://github.com/tasmota/esp-idf/releases/download/v5.1.3.240313/esp-idf-v5.1.3.zip
    sdkconfig_options: 
      CONFIG_ESPTOOLPY_FLASHSIZE_8MB: y
      CONFIG_ZB_ENABLED: y
      CONFIG_ZB_ZED: y
      CONFIG_ZB_RADIO_NATIVE: y
      ZB_ED_ROLE: y

Create the missing file config/partitions_zb.csv
it should contain:

otadata,  data, ota,     ,        0x2000,
phy_init, data, phy,     ,        0x1000,
app0,     app,  ota_0,   ,        0x1B0000,
app1,     app,  ota_1,   ,        0x1B0000,
nvs,      data, nvs,     ,        0x6D000,
zb_storage, data, fat,   , 16K,
zb_fct,     data, fat,   , 1K,

Hi folks,

I just ordered my C6. Few days before it arrives…
In the meantime, can someone please dumb it down for me? I want to flash it with whatever is needed in order to convert it into a Zigbee gateway so I can connect some push-buttons to control stuff in Home Assistant.

So what am I actually suppose to flash it with?

Thanks

It is not a zigbee gateway (whatever that is), it creates a zigbee end point.

The firmware is given in post 3. You flash it with esphome.io

Hi. I’m getting a long way through the process, but then failing here:

Compiling .pioenvs\zb-sensor\src\esphome\components\sensor\filter.o
src/esp_zb_light.c:43:10: fatal error: ha/esp_zigbee_ha_standard.h: No such file or directory
   43 | #include "ha/esp_zigbee_ha_standard.h"
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
*** [.pioenvs\zb-sensor\src\esp_zb_light.o] Error 1

I’m not sure where that header file is meant to come from and where I can get it.

Grateful for any assistance.
P.S. I have deactivated the logger - running like this: esphome run --no-logs zb_sensor.yaml

1 Like