Skip to content

Zigbee - Data missing in Home Assistant #11597

Open
@def1149

Description

@def1149

Board

Adafruit ESP36-C6

Device Description

Adafruit ESP32-C6 - Nothing attached

Hardware Configuration

No

Version

Arduino Library 3.2.1

IDE Name

Arduino 2.3.5

Operating System

Windows 11

Flash frequency

80 Mhz

PSRAM enabled

no

Upload speed

921600

Description

I have been occasionally missing expected data in Home Assistant using ZHA integration, but it's been difficult to see consistently. I created the following test program that sends 8 analog values every 3 minutes, and deep sleeps between cycles.
The data is created so that each value increments by 1 for each cycle, and all values are offset from each other by 2. This is to ensure no duplicates are created and all values are monotonically increasing. This data is charted, and the missing data is obvious

Sketch

/// Test Zigbee sleopy sensor with 8 Analog values
/// ---------------------------------------------------
/// !3-JUL-2025
/// Demonstrate missing values in Home Assistant

#ifndef ZIGBEE_MODE_ED
#error "Zigbee end device mode is not selected in Tools->Zigbee mode"
#endif

#include "Zigbee.h"
#include <rom/rtc.h>
#include <esp_task_wdt.h>
#include <Preferences.h>


// Hardware pins
#define BOOT_PIN 9 // Boot button for C6/H2

// Zigbee endpoint configuration
#define ANALOG_DEVICE_ENDPOINT_NUMBER 10

// Zigbee objects 
static ZigbeeAnalog zbA1(ANALOG_DEVICE_ENDPOINT_NUMBER);
static ZigbeeAnalog zbA2(ANALOG_DEVICE_ENDPOINT_NUMBER + 1);
static ZigbeeAnalog zbA3(ANALOG_DEVICE_ENDPOINT_NUMBER + 2);
static ZigbeeAnalog zbA4(ANALOG_DEVICE_ENDPOINT_NUMBER + 3);
static ZigbeeAnalog zbA5(ANALOG_DEVICE_ENDPOINT_NUMBER + 4);
static ZigbeeAnalog zbA6(ANALOG_DEVICE_ENDPOINT_NUMBER + 5);
static ZigbeeAnalog zbA7(ANALOG_DEVICE_ENDPOINT_NUMBER + 6);
static ZigbeeAnalog zbA8(ANALOG_DEVICE_ENDPOINT_NUMBER + 7);

// Constants
constexpr uint64_t uS_TO_S_FACTOR = 1000000ULL; // Microseconds to seconds
constexpr uint32_t TIME_TO_SLEEP = 3 * 60;      // 3 minutes
constexpr uint32_t LONG_SLEEP = 15 * 60;        // 15 minutes
constexpr uint32_t SHORT_SLEEP = 10;            // 10 seconds

// Model string 
constexpr char model[] = "Multiple Analog Test " __DATE__;

// RTC variables (persisted across deep sleep)
RTC_DATA_ATTR int32_t gretryCount = 0.0; // Connection attempt counter
RTC_DATA_ATTR float gwakeCount = 0.0;    // Wakeup counter


// Global variables 
static int gresetReason = 0;
static const uint8_t gbutton = BOOT_PIN; 
static Preferences preferences;          // Flash storage for enrolled flag

// Watchdog configuration 
constexpr esp_task_wdt_config_t twdt_config = {
    .timeout_ms = 60000,
    .idle_core_mask = (1 << 1) - 2, // Single core
    .trigger_panic = true
};

//LED blink function
void ledBlink(uint8_t numBlinks, uint16_t durationMs, uint16_t delaySec) {
    // Signal status via LED
    if (delaySec) delay(delaySec * 1000);        // Initial delay
    if (numBlinks == 0) {
        digitalWrite(LED_BUILTIN, LOW);          // Turn off
    } else if (durationMs == 0) {
        digitalWrite(LED_BUILTIN, HIGH);         // Turn on
    } else {
        for (uint8_t i = 0; i < numBlinks; ++i) {
            digitalWrite(LED_BUILTIN, HIGH);
            delay(durationMs);
            digitalWrite(LED_BUILTIN, LOW);
            if (i + 1 < numBlinks) delay(durationMs); // No delay after last blink
        }
    }
}

// Unified sleep function
void sleep(bool persistent, uint32_t timeToSleep) {
    log_d("Sleep: %s, %u seconds\n", persistent ? "Persistent" : "Timed", timeToSleep);
    if (persistent) {
        esp_sleep_disable_wakeup_source(ESP_SLEEP_WAKEUP_ALL); // Disable all wake sources
        ledBlink(5, 300, 2); // Signal persistent sleep
    } else {
        // Dither sleep time to avoid synchronized collisions
        esp_sleep_enable_timer_wakeup((timeToSleep + random(-5, 5)) * uS_TO_S_FACTOR);
    }
    esp_deep_sleep_start();
}


// Zigbee initialization
void initializeZigbee(bool doFactoryReset) {

    preferences.begin("Zigbee", false);
    bool enrolled = preferences.getBool("ENROLLED", false);
    preferences.end();

    esp_task_wdt_reset();
    zbA1.setManufacturerAndModel("Occam", model);
    zbA1.setPowerSource(ZB_POWER_SOURCE_BATTERY, 100);

    // Add endpoints efficiently
    zbA1.addAnalogInput();
    zbA1.setAnalogInputApplication(ESP_ZB_ZCL_AI_PERCENTAGE_OTHER);        
    zbA1.setAnalogInputDescription("Float 1");
    zbA1.setAnalogInputResolution(0.001);
  
    zbA2.addAnalogInput();
    zbA2.setAnalogInputApplication(ESP_ZB_ZCL_AI_PERCENTAGE_OTHER);
    zbA2.setAnalogInputDescription("Float 2");
    zbA2.setAnalogInputResolution(0.001);

    zbA3.addAnalogInput();
    zbA3.setAnalogInputApplication(ESP_ZB_ZCL_AI_PERCENTAGE_OTHER);
    zbA3.setAnalogInputDescription("Float 3");
    zbA3.setAnalogInputResolution(0.001);
    
    zbA4.addAnalogInput();
    zbA4.setAnalogInputApplication(ESP_ZB_ZCL_AI_PERCENTAGE_OTHER);
    zbA4.setAnalogInputDescription("Float 4");
    zbA4.setAnalogInputResolution(0.001);

    zbA5.addAnalogInput();
    zbA5.setAnalogInputApplication(ESP_ZB_ZCL_AI_PERCENTAGE_OTHER);
    zbA5.setAnalogInputDescription("Float 5");
    zbA5.setAnalogInputResolution(0.001);

    zbA6.addAnalogInput();
    zbA6.setAnalogInputApplication(ESP_ZB_ZCL_AI_PERCENTAGE_OTHER);
    zbA6.setAnalogInputDescription("Float 6");
    zbA6.setAnalogInputResolution(0.001);

    zbA7.addAnalogInput();
    zbA7.setAnalogInputApplication(ESP_ZB_ZCL_AI_PERCENTAGE_OTHER);
    zbA7.setAnalogInputDescription("Float 7");
    zbA7.setAnalogInputResolution(0.001);

    zbA8.addAnalogInput();
    zbA8.setAnalogInputApplication(ESP_ZB_ZCL_AI_PERCENTAGE_OTHER);
    zbA8.setAnalogInputDescription("Float 8");
    zbA8.setAnalogInputResolution(0.001);

      
    Zigbee.addEndpoint(&zbA1);
    Zigbee.addEndpoint(&zbA2);
    Zigbee.addEndpoint(&zbA3);
    Zigbee.addEndpoint(&zbA4);
    Zigbee.addEndpoint(&zbA5);
    Zigbee.addEndpoint(&zbA6);
    Zigbee.addEndpoint(&zbA7);
    Zigbee.addEndpoint(&zbA8);
                                                   
    esp_zb_cfg_t zigbeeConfig = ZIGBEE_DEFAULT_ED_CONFIG();
    zigbeeConfig.nwk_cfg.zed_cfg.keep_alive = 15000;
    Zigbee.setTimeout(15000);


    if (!Zigbee.begin(&zigbeeConfig, false)) {
        log_d("Zigbee Failed to start\n");
        ++gretryCount;
        if (enrolled) {
            if (gretryCount % 5) {
                sleep(false, SHORT_SLEEP);
            } else {
                sleep(false, LONG_SLEEP);
            }
        } else {
            sleep(true, 0);  // Failed to Start during enrollment
        }
    }

    if (doFactoryReset) {
        log_d("Factory resetting\n");
        ledBlink(4, 300, 2);
        preferences.begin("Zigbee", false);
        preferences.putBool("ENROLLED", false);
        preferences.end();
        Zigbee.factoryReset(false);
        sleep(true, 0);
    }

    for (uint8_t i = 0; i < 200 && !Zigbee.connected(); ++i) {
        delay(100);
        log_d(".");
    }
    if (!Zigbee.connected()) {
        log_d("Zigbee Failed to connect\n");
        ++gretryCount;
        if (enrolled) {
            if (gretryCount % 5) {
                sleep(false, SHORT_SLEEP);
            } else {
                sleep(false, LONG_SLEEP);
            }
        } else {
            sleep(true, 0); //  Failed to connect during enrollment
        }
    }
 
    log_d("\nConnected to Zigbee network\n");
    if (!enrolled) {
        preferences.begin("Zigbee", false);
        preferences.putBool("ENROLLED", true);
        preferences.end();
    }
}

// Report 
void report() {

    float t;

    esp_task_wdt_reset();

    zbA1.setBatteryPercentage(100);   
    zbA1.reportBatteryPercentage();

    // Each one of the analog values is offset from the wakeup count
    t = gwakeCount + (gresetReason/100.0); // Capture last Reset Code as fractional part
    zbA1.setAnalogInput(t);
    zbA1.reportAnalogInput();

    
    t = gwakeCount + 2.0; 
    zbA2.setAnalogInput(t);
    zbA2.reportAnalogInput();
 
    
    t = gwakeCount + 4.0;
    zbA3.setAnalogInput(t);
    zbA3.reportAnalogInput();

    
    t = gwakeCount + 6.0; 
    zbA4.setAnalogInput(t);
    zbA4.reportAnalogInput(); 

    
    t = gwakeCount + 8.0; 
    zbA5.setAnalogInput(t);
    zbA5.reportAnalogInput();

    
    t = gwakeCount + 10.0;
    zbA6.setAnalogInput(t);
    zbA6.reportAnalogInput();

    
    
    t = gwakeCount + 12.0;
    zbA7.setAnalogInput(t);
    zbA7.reportAnalogInput();

    
    
    t = gwakeCount + 14.0;
    zbA8.setAnalogInput(t);
    zbA8.reportAnalogInput();
  
    esp_task_wdt_reset();
  
    gretryCount = 0;

    delay(gresetReason != 5 ? 15000 : 500); // Conditional long delay for non-sleep wake-up

}


void setup() {

    pinMode(LED_BUILTIN, OUTPUT);
    digitalWrite(LED_BUILTIN, LOW);
    pinMode(gbutton, INPUT_PULLUP);

    randomSeed(analogRead(0));

    gwakeCount++;  // Keep track of number of sleep wakeup cycles from Power on  
    gresetReason = rtc_get_reset_reason(0);

    // Check for factory reset 
    // Hold boot button for 15-20 seconds 
    bool doReset = false;
    if (gresetReason == 1) { 
        ledBlink(1, 2000, 0);                  // Start holding when LED lights
        if (digitalRead(gbutton) == LOW) {
            delay(100); // Debounce
            int32_t startTime = millis();
            while (digitalRead(gbutton) == LOW && millis() - startTime <= 3000) {
                delay(50);
            }
            if (millis() - startTime > 3000) {
                doReset = true;
                ledBlink(2, 300, 2);            // Reset initiation successful
            }
        }
    }

    esp_task_wdt_reconfigure(&twdt_config);
    esp_task_wdt_add(NULL);

    initializeZigbee(doReset); //Doesn't return if doReset is TRUE
    report();

    sleep(false, TIME_TO_SLEEP);
}

void loop() { 
    // Never executes
}

Debug Message

No errors are thrown. This is the typical debug output

11:11:14.111 -> =========== Before Setup Start ===========
11:11:14.111 -> Chip Info:
11:11:14.111 -> ------------------------------------------
11:11:14.111 ->   Model             : ESP32-C6
11:11:14.111 ->   Package           : 1
11:11:14.111 ->   Revision          : 0.01
11:11:14.111 ->   Cores             : 1
11:11:14.111 ->   CPU Frequency     : 80 MHz
11:11:14.111 ->   XTAL Frequency    : 40  Features Bitfield : 0x00000052
11:11:14.111 ->   Embedded Flash    : No
11:11:14.111 ->   Embedded PSRAM    : No
11:11:14.111 ->   2.4GHz WiFi       : Yes
11:11:14.111 ->   Classic BT        : No
11:11:14.111 ->   BT Low Energy     : Yes
11:11:14.111 ->   IEEE 802.15.4     : Yes
11:11:14.111 -> ------------------------------------------
11:11:14.111 -> INTERNAL Memory Info:
11:11:14.111 -> ------------------------------------------
11:11:14.111 ->   Total Size        :   435924 B ( 425.7 KB)
11:11:14.111 ->   Free Bytes        :   397272 B ( 388.0 KB)
11:11:14.111 ->   Allocated Bytes   :    30068 B (  29.4 KB)
11:11:14.111 ->   Minimum Free Bytes:   392548 B ( 383.3 KB)
11:11:14.111 ->   Largest Free Block:   360436 B ( 352.0 KB)
11:11:14.111 -> ------------------------------------------
11:11:14.111 -> Flash Info:
11:11:14.111 -> ------------------------------------------
11:11:14.111 ->   Chip Size         :  4194304 B (4 MB)
11:11:14.111 ->   Block Size        :    65536 B (  64.0 KB)
11:11:14.111 ->   Sector Size       :     4096 B (   4.0 KB)
11:11:14.111 ->   Page Size         :      256 B (   0.2 KB)
11:11:14.111 ->   Bus Speed         : 40 MHz
11:11:14.111 ->   Bus Mode          : QIO
11:11:14.111 -> ------------------------------------------
11:11:14.148 -> Partitions Info:
11:11:14.148 -> ------------------------------------------
11:11:14.148 ->                 nvs : addr: 0x00009000, size:    20.0 KB, type: DATA, subtype: NVS
11:11:14.148 ->             otadata : addr: 0x0000E000, size:     8.0 KB, type: DATA, subtype: OTA
11:11:14.148 ->                app0 : addr: 0x00010000, size:  1280.0 KB, type:  APP, subtype: OTA_0
11:11:14.148 ->                app1 : addr: 0x00150000, size:  1280.0 KB, type:  APP, subtype: OTA_1
11:11:14.148 ->              spiffs : addr: 0x00290000, size:  1388.0 KB, type: DATA, subtype: SPIFFS
11:11:14.148 ->          zb_storage : addr: 0x003EB000, size:    16.0 KB, type: DATA, subtype: FAT
11:11:14.148 ->              zb_fct : addr: 0x003EF000, size:     4.0 KB, type: DATA, subtype: FAT
11:11:14.148 ->            coredump : addr: 0x003F0000, size:    64.0 KB, type: DATA, subtype: COREDUMP
11:11:14.148 -> ------------------------------------------
11:11:14.148 -> Software Info:
11:11:14.148 -> ------------------------------------------
11:11:14.148 ->   Compile Date/Time : Jul 11 2025 09:30:23
11:11:14.148 ->   Compile Host OS   : windows
11:11:14.148 ->   ESP-IDF Version   : v5.4.2-25-g858a988d6e
11:11:14.148 ->   Arduino Version   : 3.2.1
11:11:14.148 -> ------------------------------------------
11:11:14.148 -> Board Info:
11:11:14.148 -> ------------------------------------------
11:11:14.148 ->   Arduino Board     : ADAFRUIT_FEATHER_ESP32C6
11:11:14.148 ->   Arduino Variant   : adafruit_feather_esp32c6
11:11:14.148 ->   Arduino FQBN      : esp32:esp32:adafruit_feather_esp32c6:UploadSpeed=921600,CDCOnBoot=cdc,CPUFreq=80,FlashFreq=80,FlashMode=qio,PartitionScheme=zigbee,DebugLevel=debug,EraseFlash=none,JTAGAdapter=default,ZigbeeMode=ed
11:11:14.148 -> ============ Before Setup End ============
11:11:14.229 -> [   887][D][esp32-hal-adc.c:272] __analogRead(): Calling __analogInit! pin = 0
11:11:14.229 -> [   891][D][ZigbeeCore.cpp:100] addEndpoint(): Endpoint: 10, Device ID: 0x000c
11:11:14.263 -> [   892][D][ZigbeeCore.cpp:100] addEndpoint(): Endpoint: 11, Device ID: 0x000c
11:11:14.263 -> [   893][D][ZigbeeCore.cpp:100] addEndpoint(): Endpoint: 12, Device ID: 0x000c
11:11:14.263 -> [   894][D][ZigbeeCore.cpp:100] addEndpoint(): Endpoint: 13, Device ID: 0x000c
11:11:14.263 -> [   895][D][ZigbeeCore.cpp:100] addEndpoint(): Endpoint: 14, Device ID: 0x000c
11:11:14.263 -> [   895][D][ZigbeeCore.cpp:100] addEndpoint(): Endpoint: 15, Device ID: 0x000c
11:11:14.263 -> [   896][D][ZigbeeCore.cpp:100] addEndpoint(): Endpoint: 16, Device ID: 0x000c
11:11:14.263 -> [   897][D][ZigbeeCore.cpp:100] addEndpoint(): Endpoint: 17, Device ID: 0x000c
11:11:14.263 -> [   898][D][ZigbeeCore.cpp:148] zigbeeInit(): Initialize Zigbee stack
11:11:14.263 -> [   916][D][ZigbeeCore.cpp:155] zigbeeInit(): Register all Zigbee EPs in list
11:11:14.263 -> [   926][I][ZigbeeCore.cpp:163] zigbeeInit(): List of registered Zigbee EPs:
11:11:14.301 -> [   927][I][ZigbeeCore.cpp:165] zigbeeInit(): Device type: Simple Sensor device, Endpoint: 10, Device ID: 0x000c
11:11:14.301 -> [   928][I][ZigbeeCore.cpp:165] zigbeeInit(): Device type: Simple Sensor device, Endpoint: 11, Device ID: 0x000c
11:11:14.301 -> [   929][I][ZigbeeCore.cpp:165] zigbeeInit(): Device type: Simple Sensor device, Endpoint: 12, Device ID: 0x000c
11:11:14.301 -> [   930][I][ZigbeeCore.cpp:165] zigbeeInit(): Device type: Simple Sensor device, Endpoint: 13, Device ID: 0x000c
11:11:14.301 -> [   931][I][ZigbeeCore.cpp:165] zigbeeInit(): Device type: Simple Sensor device, Endpoint: 14, Device ID: 0x000c
11:11:14.301 -> [   932][I][ZigbeeCore.cpp:165] zigbeeInit(): Device type: Simple Sensor device, Endpoint: 15, Device ID: 0x000c
11:11:14.301 -> [   933][I][ZigbeeCore.cpp:165] zigbeeInit(): Device type: Simple Sensor device, Endpoint: 16, Device ID: 0x000c
11:11:14.301 -> [   934][I][ZigbeeCore.cpp:165] zigbeeInit(): Device type: Simple Sensor device, Endpoint: 17, Device ID: 0x000c
11:11:14.301 -> [   954][I][ZigbeeCore.cpp:257] esp_zb_app_signal_handler(): Zigbee stack initialized
11:11:14.301 -> [   955][D][ZigbeeCore.cpp:258] esp_zb_app_signal_handler(): Zigbee channel mask: 0x02000000
11:11:14.599 -> [  1236][I][ZigbeeCore.cpp:264] esp_zb_app_signal_handler(): Device started up in non factory-reset mode
11:11:14.599 -> [  1237][I][ZigbeeCore.cpp:277] esp_zb_app_signal_handler(): Device rebooted
11:11:14.599 -> [  1239][D][ZigbeeCore.cpp:732] searchBindings(): Requesting binding table for address 0x4b6f
11:11:14.599 -> [  1241][D][ZigbeeCore.cpp:540] bindingTableCb(): Binding table callback for address 0x4b6f with status 0
11:11:14.599 -> [  1242][D][ZigbeeCore.cpp:544] bindingTableCb(): Binding table info: total 9, index 0, count 3
11:11:14.599 -> [  1243][D][ZigbeeCore.cpp:589] bindingTableCb(): Processing record 0: src_endp 10, dst_endp 1, cluster_id 0x0001, dst_addr_mode 3
11:11:14.599 -> [  1245][D][ZigbeeCore.cpp:589] bindingTableCb(): Processing record 1: src_endp 10, dst_endp 1, cluster_id 0x000c, dst_addr_mode 3
11:11:14.599 -> [  1246][D][ZigbeeCore.cpp:589] bindingTableCb(): Processing record 2: src_endp 11, dst_endp 1, cluster_id 0x000c, dst_addr_mode 3
11:11:14.599 -> [  1247][D][ZigbeeCore.cpp:599] bindingTableCb(): Requesting next chunk of binding table (current index: 0, count: 3, total: 9)
11:11:14.599 -> [  1249][D][ZigbeeCore.cpp:540] bindingTableCb(): Binding table callback for address 0x4b6f with status 0
11:11:14.599 -> [  1250][D][ZigbeeCore.cpp:544] bindingTableCb(): Binding table info: total 9, index 3, count 3
11:11:14.599 -> [  1251][D][ZigbeeCore.cpp:589] bindingTableCb(): Processing record 0: src_endp 12, dst_endp 1, cluster_id 0x000c, dst_addr_mode 3
11:11:14.599 -> [  1253][D][ZigbeeCore.cpp:589] bindingTableCb(): Processing record 1: src_endp 13, dst_endp 1, cluster_id 0x000c, dst_addr_mode 3
11:11:14.599 -> [  1254][D][ZigbeeCore.cpp:589] bindingTableCb(): Processing record 2: src_endp 14, dst_endp 1, cluster_id 0x000c, dst_addr_mode 3
11:11:14.599 -> [  1255][D][ZigbeeCore.cpp:599] bindingTableCb(): Requesting next chunk of binding table (current index: 3, count: 3, total: 9)
11:11:14.599 -> [  1257][D][ZigbeeCore.cpp:540] bindingTableCb(): Binding table callback for address 0x4b6f with status 0
11:11:14.599 -> [  1258][D][ZigbeeCore.cpp:544] bindingTableCb(): Binding table info: total 9, index 6, count 3
11:11:14.599 -> [  1259][D][ZigbeeCore.cpp:589] bindingTableCb(): Processing record 0: src_endp 15, dst_endp 1, cluster_id 0x000c, dst_addr_mode 3
11:11:14.599 -> [  1260][D][ZigbeeCore.cpp:589] bindingTableCb(): Processing record 1: src_endp 16, dst_endp 1, cluster_id 0x000c, dst_addr_mode 3
11:11:14.599 -> [  1262][D][ZigbeeCore.cpp:589] bindingTableCb(): Processing record 2: src_endp 17, dst_endp 1, cluster_id 0x000c, dst_addr_mode 3
11:11:14.634 -> [  1263][D][ZigbeeCore.cpp:604] bindingTableCb(): Processing final chunk of binding table, total records: 9
11:11:14.634 -> [  1264][D][ZigbeeCore.cpp:625] bindingTableCb(): Processing endpoint 10
11:11:14.634 -> [  1265][D][ZigbeeCore.cpp:671] bindingTableCb(): Processing binding record for EP 10
11:11:14.634 -> [  1266][D][ZigbeeCore.cpp:706] bindingTableCb(): Device bound to EP 10 -> device endpoint: 1, ieee addr: F0:82:C0:FF:FE:6B:DB:EC
11:11:14.634 -> [  1267][D][ZigbeeCore.cpp:671] bindingTableCb(): Processing binding record for EP 10
11:11:14.634 -> [  1268][D][ZigbeeCore.cpp:706] bindingTableCb(): Device bound to EP 10 -> device endpoint: 1, ieee addr: F0:82:C0:FF:FE:6B:DB:EC
11:11:14.634 -> [  1269][D][ZigbeeCore.cpp:625] bindingTableCb(): Processing endpoint 11
11:11:14.634 -> [  1270][D][ZigbeeCore.cpp:671] bindingTableCb(): Processing binding record for EP 11
11:11:14.634 -> [  1271][D][ZigbeeCore.cpp:706] bindingTableCb(): Device bound to EP 11 -> device endpoint: 1, ieee addr: F0:82:C0:FF:FE:6B:DB:EC
11:11:14.634 -> [  1272][D][ZigbeeCore.cpp:625] bindingTableCb(): Processing endpoint 12
11:11:14.634 -> [  1272][D][ZigbeeCore.cpp:671] bindingTableCb(): Processing binding record for EP 12
11:11:14.634 -> [  1273][D][ZigbeeCore.cpp:706] bindingTableCb(): Device bound to EP 12 -> device endpoint: 1, ieee addr: F0:82:C0:FF:FE:6B:DB:EC
11:11:14.634 -> [  1275][D][ZigbeeCore.cpp:625] bindingTableCb(): Processing endpoint 13
11:11:14.634 -> [  1275][D][ZigbeeCore.cpp:671] bindingTableCb(): Processing binding record for EP 13
11:11:14.634 -> [  1276][D][ZigbeeCore.cpp:706] bindingTableCb(): Device bound to EP 13 -> device endpoint: 1, ieee addr: F0:82:C0:FF:FE:6B:DB:EC
11:11:14.634 -> [  1277][D][ZigbeeCore.cpp:625] bindingTableCb(): Processing endpoint 14
11:11:14.634 -> [  1278][D][ZigbeeCore.cpp:671] bindingTableCb(): Processing binding record for EP 14
11:11:14.634 -> [  1279][D][ZigbeeCore.cpp:706] bindingTableCb(): Device bound to EP 14 -> device endpoint: 1, ieee addr: F0:82:C0:FF:FE:6B:DB:EC
11:11:14.634 -> [  1280][D][ZigbeeCore.cpp:625] bindingTableCb(): Processing endpoint 15
11:11:14.634 -> [  1281][D][ZigbeeCore.cpp:671] bindingTableCb(): Processing binding record for EP 15
11:11:14.634 -> [  1282][D][ZigbeeCore.cpp:706] bindingTableCb(): Device bound to EP 15 -> device endpoint: 1, ieee addr: F0:82:C0:FF:FE:6B:DB:EC
11:11:14.634 -> [  1283][D][ZigbeeCore.cpp:625] bindingTableCb(): Processing endpoint 16
11:11:14.634 -> [  1284][D][ZigbeeCore.cpp:671] bindingTableCb(): Processing binding record for EP 16
1:11:14.634 -> [  1286][D][ZigbeeCore.cpp:671] bindingTableCb(): Processing binding record for EP 17
11:11:14.634 -> [  1287][D][ZigbeeCore.cpp:706] bindingTableCb(): Device bound to EP 17 -> device endpoint: 1, ieee addr: F0:82:C0:FF:FE:6B:DB:EC
11:11:14.634 -> [  1288][D][ZigbeeCore.cpp:719] bindingTableCb(): Filling bounded devices finished
11:11:14.634 -> [  1291][D][Test_multiple.ino:199] initializeZigbee(): 
11:11:14.634 -> Connected to Zigbee network
11:11:14.634 -> 
11:11:14.634 -> [  1296][D][ZigbeeAnalog.cpp:186] setAnalogInput(): Setting analog input to 4.1
11:11:14.666 -> [  1298][D][ZigbeeAnalog.cpp:186] setAnalogInput(): Setting analog input to 6.0
11:11:14.666 -> [  1301][D][ZigbeeAnalog.cpp:186] setAnalogInput(): Setting analog input to 8.0
11:11:14.666 -> [  1308][D][ZigbeeAnalog.cpp:186] setAnalogInput(): Setting analog input to 10.0
11:11:14.666 -> [  1311][D][ZigbeeAnalog.cpp:186] setAnalogInput(): Setting analog input to 12.0
11:11:14.666 -> [  1317][D][ZigbeeAnalog.cpp:186] setAnalogInput(): Setting analog input to 14.0
11:11:14.666 -> [  1324][D][ZigbeeAnalog.cpp:186] setAnalogInput(): Setting analog input to 16.0
11:11:14.666 -> [  1328][D][ZigbeeAnalog.cpp:186] setAnalogInput(): Setting analog input to 18.0
11:11:15.211 -> [  1830][D][Test_multiple.ino:78] sleep(): Sleep: Timed, 180 seconds
11:11:15.211 ->

Other Steps to Reproduce

Run the program and chart Float 1 through Float 8

This chart highlights the missing data ... the missing steps in the chart

The attached ZHA log is related to the missing data highlighted by the yellow arrow. Search for >>>>> for log entries for Float 1 through Float 8. I don't see anything that look like an error. It looks like the missing data wasn't transmitted

zha_log 13-JUL-2025.txt

Image

I have checked existing issues, online documentation and the Troubleshooting Guide

  • I confirm I have checked existing issues, online documentation and Troubleshooting guide.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions