Description
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

I have checked existing issues, online documentation and the Troubleshooting Guide
- I confirm I have checked existing issues, online documentation and Troubleshooting guide.