﻿# Matter ESP32 Temperature Sensor Example

This example is meant to represent a minimal-sized application.

Please
[setup ESP-IDF and CHIP Environment](../../../platforms/esp32/setup_idf_chip.md)
and refer
[building and commissioning](../../../platforms/esp32/build_app_and_commission.md)
guides to get started.

---

-   [Cluster control](#cluster-control)
-   [Optimization](#optimization)

---

### Cluster control

#### temperaturemeasurement

```bash
Usage:
  ./out/debug/chip-tool temperaturemeasurement read measured-value <NODE ID> 1
```

## Additional details

This example demonstrates the utilization of the diagnostic logs cluster to send
diagnostic logs to the client.

In this scenario, the [main/diagnostic_logs](https://github.com/project-chip/connectedhomeip/blob/master/examples/temperature-measurement-app/esp32/main/diagnostic_logs) directory
contains three files:

```
main/diagnostic_logs
├── end_user_support.log
└── network_diag.log
```

These files contain dummy data.

#### To use diagnostic tracing

Open menuconfig

```
 idf.py menuconfig
```

Enable `ENABLE_ESP_DIAGNOSTICS` option from menuconfig

Set diagnostic storage buffer size from `Platform Diagnostics` menu

-   End user buffer default size 4096
-   Retrieval buffer default size 4096

#### To test the diagnostic logs cluster

```
# Commission the app
chip-tool pairing ble-wifi 1 SSID PASSPHRASE 20202021 3840

# Read end user support logs using response payload protocol
chip-tool diagnosticlogs retrieve-logs-request 0 0 1 0

# Read network diagnostic using BDX protocol
chip-tool interactive start
> diagnosticlogs retrieve-logs-request 1 1 1 0 --TransferFileDesignator network-diag.log
# Retrieve crash summary over BDX
> diagnosticlogs retrieve-logs-request 2 1 1 0 --TransferFileDesignator crash-summary.bin
```

esp-idf supports storing and retrieving
[core dump in flash](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/core_dump.html#core-dump-to-flash).

To support that, application needs to add core dump partition's entry in
[partitons.csv](https://github.com/project-chip/connectedhomeip/blob/master/partitions.csv) and we need to enable few menuconfig options.

```
CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH=y
CONFIG_ESP32_COREDUMP_DATA_FORMAT_ELF=y
```

This example's partition table and sdkconfig.default are already modified

-   Retrieve the core dump using diagnostic logs cluster

    ```
    # Read crash summary over BDX
    chip-tool interactive start
    > diagnosticlogs retrieve-logs-request 2 1 1 0 --TransferFileDesignator crash-summary.bin
    ```

## Optimization

Optimization related to WiFi, BLuetooth, Asserts etc are the part of this
example by default. To enable this option set is_debug=false from command-line.

```
# Reconfigure the project for additional optimizations
rm -rf sdkconfig build/
idf.py -Dis_debug=false reconfigure

# Set additional configurations if required
idf.py menuconfig

# Build, flash, and monitor the device
idf.py -p /dev/tty.SLAB_USBtoUART build flash monitor
```
