feat(matter): enables BLE Matter commissioning with NimBLE (#11537)
* feat(matter): enables BLE Matter commissioning with NimBLE * fix(matter): commentary typo and formatting * fix(matter): commentary typo and formatting * fix(matter): removes forcing second network clustter * fix(matter): adds matter source code to CMakeLists.txt * ci(pre-commit): Apply automatic fixes --------- Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
This commit is contained in:
parent
d4e5c5f969
commit
c2d23258f1
52 changed files with 448 additions and 156 deletions
|
|
@ -184,7 +184,8 @@ set(ARDUINO_LIBRARY_Matter_SRCS
|
||||||
libraries/Matter/src/MatterEndpoints/MatterOccupancySensor.cpp
|
libraries/Matter/src/MatterEndpoints/MatterOccupancySensor.cpp
|
||||||
libraries/Matter/src/MatterEndpoints/MatterOnOffPlugin.cpp
|
libraries/Matter/src/MatterEndpoints/MatterOnOffPlugin.cpp
|
||||||
libraries/Matter/src/MatterEndpoints/MatterThermostat.cpp
|
libraries/Matter/src/MatterEndpoints/MatterThermostat.cpp
|
||||||
libraries/Matter/src/Matter.cpp)
|
libraries/Matter/src/Matter.cpp
|
||||||
|
libraries/Matter/src/MatterEndPoint.cpp)
|
||||||
|
|
||||||
set(ARDUINO_LIBRARY_PPP_SRCS
|
set(ARDUINO_LIBRARY_PPP_SRCS
|
||||||
libraries/PPP/src/PPP.cpp
|
libraries/PPP/src/PPP.cpp
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2024 Espressif Systems (Shanghai) PTE LTD
|
// Copyright 2025 Espressif Systems (Shanghai) PTE LTD
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
|
|
@ -14,16 +14,22 @@
|
||||||
|
|
||||||
// Matter Manager
|
// Matter Manager
|
||||||
#include <Matter.h>
|
#include <Matter.h>
|
||||||
|
#if !CONFIG_ENABLE_CHIPOBLE
|
||||||
|
// if the device can be commissioned using BLE, WiFi is not used - save flash space
|
||||||
#include <WiFi.h>
|
#include <WiFi.h>
|
||||||
|
#endif
|
||||||
#include <Preferences.h>
|
#include <Preferences.h>
|
||||||
|
|
||||||
// List of Matter Endpoints for this Node
|
// List of Matter Endpoints for this Node
|
||||||
// Color Light Endpoint
|
// Color Light Endpoint
|
||||||
MatterColorLight ColorLight;
|
MatterColorLight ColorLight;
|
||||||
|
|
||||||
|
// CONFIG_ENABLE_CHIPOBLE is enabled when BLE is used to commission the Matter Network
|
||||||
|
#if !CONFIG_ENABLE_CHIPOBLE
|
||||||
// WiFi is manually set and started
|
// WiFi is manually set and started
|
||||||
const char *ssid = "your-ssid"; // Change this to your WiFi SSID
|
const char *ssid = "your-ssid"; // Change this to your WiFi SSID
|
||||||
const char *password = "your-password"; // Change this to your WiFi password
|
const char *password = "your-password"; // Change this to your WiFi password
|
||||||
|
#endif
|
||||||
|
|
||||||
// it will keep last OnOff & HSV Color state stored, using Preferences
|
// it will keep last OnOff & HSV Color state stored, using Preferences
|
||||||
Preferences matterPref;
|
Preferences matterPref;
|
||||||
|
|
@ -81,6 +87,8 @@ void setup() {
|
||||||
|
|
||||||
Serial.begin(115200);
|
Serial.begin(115200);
|
||||||
|
|
||||||
|
// CONFIG_ENABLE_CHIPOBLE is enabled when BLE is used to commission the Matter Network
|
||||||
|
#if !CONFIG_ENABLE_CHIPOBLE
|
||||||
// We start by connecting to a WiFi network
|
// We start by connecting to a WiFi network
|
||||||
Serial.print("Connecting to ");
|
Serial.print("Connecting to ");
|
||||||
Serial.println(ssid);
|
Serial.println(ssid);
|
||||||
|
|
@ -95,6 +103,7 @@ void setup() {
|
||||||
Serial.println("IP address: ");
|
Serial.println("IP address: ");
|
||||||
Serial.println(WiFi.localIP());
|
Serial.println(WiFi.localIP());
|
||||||
delay(500);
|
delay(500);
|
||||||
|
#endif
|
||||||
|
|
||||||
// Initialize Matter EndPoint
|
// Initialize Matter EndPoint
|
||||||
matterPref.begin("MatterPrefs", false);
|
matterPref.begin("MatterPrefs", false);
|
||||||
|
|
@ -121,7 +130,7 @@ void setup() {
|
||||||
Matter.begin();
|
Matter.begin();
|
||||||
// This may be a restart of a already commissioned Matter accessory
|
// This may be a restart of a already commissioned Matter accessory
|
||||||
if (Matter.isDeviceCommissioned()) {
|
if (Matter.isDeviceCommissioned()) {
|
||||||
Serial.println("Matter Node is commissioned and connected to Wi-Fi. Ready for use.");
|
Serial.println("Matter Node is commissioned and connected to the network. Ready for use.");
|
||||||
Serial.printf(
|
Serial.printf(
|
||||||
"Initial state: %s | RGB Color: (%d,%d,%d) \r\n", ColorLight ? "ON" : "OFF", ColorLight.getColorRGB().r, ColorLight.getColorRGB().g,
|
"Initial state: %s | RGB Color: (%d,%d,%d) \r\n", ColorLight ? "ON" : "OFF", ColorLight.getColorRGB().r, ColorLight.getColorRGB().g,
|
||||||
ColorLight.getColorRGB().b
|
ColorLight.getColorRGB().b
|
||||||
|
|
@ -154,7 +163,7 @@ void loop() {
|
||||||
);
|
);
|
||||||
// configure the Light based on initial on-off state and its color
|
// configure the Light based on initial on-off state and its color
|
||||||
ColorLight.updateAccessory();
|
ColorLight.updateAccessory();
|
||||||
Serial.println("Matter Node is commissioned and connected to Wi-Fi. Ready for use.");
|
Serial.println("Matter Node is commissioned and connected to the network. Ready for use.");
|
||||||
}
|
}
|
||||||
|
|
||||||
// A button is also used to control the light
|
// A button is also used to control the light
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2024 Espressif Systems (Shanghai) PTE LTD
|
// Copyright 2025 Espressif Systems (Shanghai) PTE LTD
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
|
|
@ -14,19 +14,27 @@
|
||||||
|
|
||||||
// Matter Manager
|
// Matter Manager
|
||||||
#include <Matter.h>
|
#include <Matter.h>
|
||||||
|
#if !CONFIG_ENABLE_CHIPOBLE
|
||||||
|
// if the device can be commissioned using BLE, WiFi is not used - save flash space
|
||||||
#include <WiFi.h>
|
#include <WiFi.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
// List of Matter Endpoints for this Node
|
// List of Matter Endpoints for this Node
|
||||||
// On/Off Light Endpoint
|
// On/Off Light Endpoint
|
||||||
MatterOnOffLight OnOffLight;
|
MatterOnOffLight OnOffLight;
|
||||||
|
|
||||||
|
// CONFIG_ENABLE_CHIPOBLE is enabled when BLE is used to commission the Matter Network
|
||||||
|
#if !CONFIG_ENABLE_CHIPOBLE
|
||||||
// WiFi is manually set and started
|
// WiFi is manually set and started
|
||||||
const char *ssid = "your-ssid"; // Change this to your WiFi SSID
|
const char *ssid = "your-ssid"; // Change this to your WiFi SSID
|
||||||
const char *password = "your-password"; // Change this to your WiFi password
|
const char *password = "your-password"; // Change this to your WiFi password
|
||||||
|
#endif
|
||||||
|
|
||||||
void setup() {
|
void setup() {
|
||||||
Serial.begin(115200);
|
Serial.begin(115200);
|
||||||
|
|
||||||
|
// CONFIG_ENABLE_CHIPOBLE is enabled when BLE is used to commission the Matter Network
|
||||||
|
#if !CONFIG_ENABLE_CHIPOBLE
|
||||||
// We start by connecting to a WiFi network
|
// We start by connecting to a WiFi network
|
||||||
Serial.print("Connecting to ");
|
Serial.print("Connecting to ");
|
||||||
Serial.println(ssid);
|
Serial.println(ssid);
|
||||||
|
|
@ -41,6 +49,7 @@ void setup() {
|
||||||
Serial.println("IP address: ");
|
Serial.println("IP address: ");
|
||||||
Serial.println(WiFi.localIP());
|
Serial.println(WiFi.localIP());
|
||||||
delay(500);
|
delay(500);
|
||||||
|
#endif
|
||||||
|
|
||||||
// Initialize at least one Matter EndPoint
|
// Initialize at least one Matter EndPoint
|
||||||
OnOffLight.begin();
|
OnOffLight.begin();
|
||||||
|
|
@ -64,7 +73,7 @@ void loop() {
|
||||||
Serial.println("Matter Fabric not commissioned yet. Waiting for commissioning.");
|
Serial.println("Matter Fabric not commissioned yet. Waiting for commissioning.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Serial.println("Matter Node is commissioned and connected to Wi-Fi.");
|
Serial.println("Matter Node is commissioned and connected to the network.");
|
||||||
Serial.println("====> Decommissioning in 30 seconds. <====");
|
Serial.println("====> Decommissioning in 30 seconds. <====");
|
||||||
delay(30000);
|
delay(30000);
|
||||||
Matter.decommission();
|
Matter.decommission();
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2024 Espressif Systems (Shanghai) PTE LTD
|
// Copyright 2025 Espressif Systems (Shanghai) PTE LTD
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
|
|
@ -14,7 +14,10 @@
|
||||||
|
|
||||||
// Matter Manager
|
// Matter Manager
|
||||||
#include <Matter.h>
|
#include <Matter.h>
|
||||||
|
#if !CONFIG_ENABLE_CHIPOBLE
|
||||||
|
// if the device can be commissioned using BLE, WiFi is not used - save flash space
|
||||||
#include <WiFi.h>
|
#include <WiFi.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
// List of Matter Endpoints for this Node
|
// List of Matter Endpoints for this Node
|
||||||
// There will be 3 On/Off Light Endpoints in the same Node
|
// There will be 3 On/Off Light Endpoints in the same Node
|
||||||
|
|
@ -22,9 +25,12 @@ MatterOnOffLight Light1;
|
||||||
MatterDimmableLight Light2;
|
MatterDimmableLight Light2;
|
||||||
MatterColorLight Light3;
|
MatterColorLight Light3;
|
||||||
|
|
||||||
|
// CONFIG_ENABLE_CHIPOBLE is enabled when BLE is used to commission the Matter Network
|
||||||
|
#if !CONFIG_ENABLE_CHIPOBLE
|
||||||
// WiFi is manually set and started
|
// WiFi is manually set and started
|
||||||
const char *ssid = "your-ssid"; // Change this to your WiFi SSID
|
const char *ssid = "your-ssid"; // Change this to your WiFi SSID
|
||||||
const char *password = "your-password"; // Change this to your WiFi password
|
const char *password = "your-password"; // Change this to your WiFi password
|
||||||
|
#endif
|
||||||
|
|
||||||
// set your board USER BUTTON pin here - USED to decommission the Matter Node
|
// set your board USER BUTTON pin here - USED to decommission the Matter Node
|
||||||
const uint8_t buttonPin = BOOT_PIN; // Set your pin here. Using BOOT Button.
|
const uint8_t buttonPin = BOOT_PIN; // Set your pin here. Using BOOT Button.
|
||||||
|
|
@ -56,6 +62,8 @@ void setup() {
|
||||||
|
|
||||||
Serial.begin(115200);
|
Serial.begin(115200);
|
||||||
|
|
||||||
|
// CONFIG_ENABLE_CHIPOBLE is enabled when BLE is used to commission the Matter Network
|
||||||
|
#if !CONFIG_ENABLE_CHIPOBLE
|
||||||
// We start by connecting to a WiFi network
|
// We start by connecting to a WiFi network
|
||||||
Serial.print("Connecting to ");
|
Serial.print("Connecting to ");
|
||||||
Serial.println(ssid);
|
Serial.println(ssid);
|
||||||
|
|
@ -71,6 +79,7 @@ void setup() {
|
||||||
Serial.println("IP address: ");
|
Serial.println("IP address: ");
|
||||||
Serial.println(WiFi.localIP());
|
Serial.println(WiFi.localIP());
|
||||||
delay(500);
|
delay(500);
|
||||||
|
#endif
|
||||||
|
|
||||||
// Initialize all 3 Matter EndPoints
|
// Initialize all 3 Matter EndPoints
|
||||||
Light1.begin();
|
Light1.begin();
|
||||||
|
|
@ -103,7 +112,7 @@ void loop() {
|
||||||
Serial.println("Matter Node not commissioned yet. Waiting for commissioning.");
|
Serial.println("Matter Node not commissioned yet. Waiting for commissioning.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Serial.println("Matter Node is commissioned and connected to Wi-Fi. Ready for use.");
|
Serial.println("Matter Node is commissioned and connected to the network. Ready for use.");
|
||||||
}
|
}
|
||||||
|
|
||||||
//displays the Light state every 5 seconds
|
//displays the Light state every 5 seconds
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2024 Espressif Systems (Shanghai) PTE LTD
|
// Copyright 2025 Espressif Systems (Shanghai) PTE LTD
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
|
|
@ -30,15 +30,21 @@
|
||||||
|
|
||||||
// Matter Manager
|
// Matter Manager
|
||||||
#include <Matter.h>
|
#include <Matter.h>
|
||||||
|
#if !CONFIG_ENABLE_CHIPOBLE
|
||||||
|
// if the device can be commissioned using BLE, WiFi is not used - save flash space
|
||||||
#include <WiFi.h>
|
#include <WiFi.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
// List of Matter Endpoints for this Node
|
// List of Matter Endpoints for this Node
|
||||||
// Matter Contact Sensor Endpoint
|
// Matter Contact Sensor Endpoint
|
||||||
MatterContactSensor ContactSensor;
|
MatterContactSensor ContactSensor;
|
||||||
|
|
||||||
|
// CONFIG_ENABLE_CHIPOBLE is enabled when BLE is used to commission the Matter Network
|
||||||
|
#if !CONFIG_ENABLE_CHIPOBLE
|
||||||
// WiFi is manually set and started
|
// WiFi is manually set and started
|
||||||
const char *ssid = "your-ssid"; // Change this to your WiFi SSID
|
const char *ssid = "your-ssid"; // Change this to your WiFi SSID
|
||||||
const char *password = "your-password"; // Change this to your WiFi password
|
const char *password = "your-password"; // Change this to your WiFi password
|
||||||
|
#endif
|
||||||
|
|
||||||
// LED will be used to indicate the Contact Sensor state
|
// LED will be used to indicate the Contact Sensor state
|
||||||
// set your board RGB LED pin here
|
// set your board RGB LED pin here
|
||||||
|
|
@ -67,6 +73,8 @@ void setup() {
|
||||||
|
|
||||||
Serial.begin(115200);
|
Serial.begin(115200);
|
||||||
|
|
||||||
|
// CONFIG_ENABLE_CHIPOBLE is enabled when BLE is used to commission the Matter Network
|
||||||
|
#if !CONFIG_ENABLE_CHIPOBLE
|
||||||
// Manually connect to WiFi
|
// Manually connect to WiFi
|
||||||
WiFi.begin(ssid, password);
|
WiFi.begin(ssid, password);
|
||||||
// Wait for connection
|
// Wait for connection
|
||||||
|
|
@ -75,6 +83,7 @@ void setup() {
|
||||||
Serial.print(".");
|
Serial.print(".");
|
||||||
}
|
}
|
||||||
Serial.println();
|
Serial.println();
|
||||||
|
#endif
|
||||||
|
|
||||||
// set initial contact sensor state as false (default)
|
// set initial contact sensor state as false (default)
|
||||||
ContactSensor.begin();
|
ContactSensor.begin();
|
||||||
|
|
@ -99,7 +108,7 @@ void setup() {
|
||||||
Serial.println("Matter Node not commissioned yet. Waiting for commissioning.");
|
Serial.println("Matter Node not commissioned yet. Waiting for commissioning.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Serial.println("Matter Node is commissioned and connected to Wi-Fi. Ready for use.");
|
Serial.println("Matter Node is commissioned and connected to the network. Ready for use.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2024 Espressif Systems (Shanghai) PTE LTD
|
// Copyright 2025 Espressif Systems (Shanghai) PTE LTD
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
|
|
@ -14,16 +14,22 @@
|
||||||
|
|
||||||
// Matter Manager
|
// Matter Manager
|
||||||
#include <Matter.h>
|
#include <Matter.h>
|
||||||
|
#if !CONFIG_ENABLE_CHIPOBLE
|
||||||
|
// if the device can be commissioned using BLE, WiFi is not used - save flash space
|
||||||
#include <WiFi.h>
|
#include <WiFi.h>
|
||||||
|
#endif
|
||||||
#include <Preferences.h>
|
#include <Preferences.h>
|
||||||
|
|
||||||
// List of Matter Endpoints for this Node
|
// List of Matter Endpoints for this Node
|
||||||
// Dimmable Light Endpoint
|
// Dimmable Light Endpoint
|
||||||
MatterDimmableLight DimmableLight;
|
MatterDimmableLight DimmableLight;
|
||||||
|
|
||||||
|
// CONFIG_ENABLE_CHIPOBLE is enabled when BLE is used to commission the Matter Network
|
||||||
|
#if !CONFIG_ENABLE_CHIPOBLE
|
||||||
// WiFi is manually set and started
|
// WiFi is manually set and started
|
||||||
const char *ssid = "your-ssid"; // Change this to your WiFi SSID
|
const char *ssid = "your-ssid"; // Change this to your WiFi SSID
|
||||||
const char *password = "your-password"; // Change this to your WiFi password
|
const char *password = "your-password"; // Change this to your WiFi password
|
||||||
|
#endif
|
||||||
|
|
||||||
// it will keep last OnOff & Brightness state stored, using Preferences
|
// it will keep last OnOff & Brightness state stored, using Preferences
|
||||||
Preferences matterPref;
|
Preferences matterPref;
|
||||||
|
|
@ -77,6 +83,8 @@ void setup() {
|
||||||
|
|
||||||
Serial.begin(115200);
|
Serial.begin(115200);
|
||||||
|
|
||||||
|
// CONFIG_ENABLE_CHIPOBLE is enabled when BLE is used to commission the Matter Network
|
||||||
|
#if !CONFIG_ENABLE_CHIPOBLE
|
||||||
// We start by connecting to a WiFi network
|
// We start by connecting to a WiFi network
|
||||||
Serial.print("Connecting to ");
|
Serial.print("Connecting to ");
|
||||||
Serial.println(ssid);
|
Serial.println(ssid);
|
||||||
|
|
@ -91,6 +99,7 @@ void setup() {
|
||||||
Serial.println("IP address: ");
|
Serial.println("IP address: ");
|
||||||
Serial.println(WiFi.localIP());
|
Serial.println(WiFi.localIP());
|
||||||
delay(500);
|
delay(500);
|
||||||
|
#endif
|
||||||
|
|
||||||
// Initialize Matter EndPoint
|
// Initialize Matter EndPoint
|
||||||
matterPref.begin("MatterPrefs", false);
|
matterPref.begin("MatterPrefs", false);
|
||||||
|
|
@ -116,7 +125,7 @@ void setup() {
|
||||||
Matter.begin();
|
Matter.begin();
|
||||||
// This may be a restart of a already commissioned Matter accessory
|
// This may be a restart of a already commissioned Matter accessory
|
||||||
if (Matter.isDeviceCommissioned()) {
|
if (Matter.isDeviceCommissioned()) {
|
||||||
Serial.println("Matter Node is commissioned and connected to Wi-Fi. Ready for use.");
|
Serial.println("Matter Node is commissioned and connected to the network. Ready for use.");
|
||||||
Serial.printf("Initial state: %s | brightness: %d\r\n", DimmableLight ? "ON" : "OFF", DimmableLight.getBrightness());
|
Serial.printf("Initial state: %s | brightness: %d\r\n", DimmableLight ? "ON" : "OFF", DimmableLight.getBrightness());
|
||||||
// configure the Light based on initial on-off state and brightness
|
// configure the Light based on initial on-off state and brightness
|
||||||
DimmableLight.updateAccessory();
|
DimmableLight.updateAccessory();
|
||||||
|
|
@ -143,7 +152,7 @@ void loop() {
|
||||||
Serial.printf("Initial state: %s | brightness: %d\r\n", DimmableLight ? "ON" : "OFF", DimmableLight.getBrightness());
|
Serial.printf("Initial state: %s | brightness: %d\r\n", DimmableLight ? "ON" : "OFF", DimmableLight.getBrightness());
|
||||||
// configure the Light based on initial on-off state and brightness
|
// configure the Light based on initial on-off state and brightness
|
||||||
DimmableLight.updateAccessory();
|
DimmableLight.updateAccessory();
|
||||||
Serial.println("Matter Node is commissioned and connected to Wi-Fi. Ready for use.");
|
Serial.println("Matter Node is commissioned and connected to the network. Ready for use.");
|
||||||
}
|
}
|
||||||
|
|
||||||
// A button is also used to control the light
|
// A button is also used to control the light
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2024 Espressif Systems (Shanghai) PTE LTD
|
// Copyright 2025 Espressif Systems (Shanghai) PTE LTD
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
|
|
@ -14,16 +14,22 @@
|
||||||
|
|
||||||
// Matter Manager
|
// Matter Manager
|
||||||
#include <Matter.h>
|
#include <Matter.h>
|
||||||
|
#if !CONFIG_ENABLE_CHIPOBLE
|
||||||
|
// if the device can be commissioned using BLE, WiFi is not used - save flash space
|
||||||
#include <WiFi.h>
|
#include <WiFi.h>
|
||||||
|
#endif
|
||||||
#include <Preferences.h>
|
#include <Preferences.h>
|
||||||
|
|
||||||
// List of Matter Endpoints for this Node
|
// List of Matter Endpoints for this Node
|
||||||
// Color Light Endpoint
|
// Color Light Endpoint
|
||||||
MatterEnhancedColorLight EnhancedColorLight;
|
MatterEnhancedColorLight EnhancedColorLight;
|
||||||
|
|
||||||
|
// CONFIG_ENABLE_CHIPOBLE is enabled when BLE is used to commission the Matter Network
|
||||||
|
#if !CONFIG_ENABLE_CHIPOBLE
|
||||||
// WiFi is manually set and started
|
// WiFi is manually set and started
|
||||||
const char *ssid = "your-ssid"; // Change this to your WiFi SSID
|
const char *ssid = "your-ssid"; // Change this to your WiFi SSID
|
||||||
const char *password = "your-password"; // Change this to your WiFi password
|
const char *password = "your-password"; // Change this to your WiFi password
|
||||||
|
#endif
|
||||||
|
|
||||||
// It will use HSV color to control all Matter Attribute Changes
|
// It will use HSV color to control all Matter Attribute Changes
|
||||||
HsvColor_t currentHSVColor = {0, 0, 0};
|
HsvColor_t currentHSVColor = {0, 0, 0};
|
||||||
|
|
@ -85,6 +91,8 @@ void setup() {
|
||||||
|
|
||||||
Serial.begin(115200);
|
Serial.begin(115200);
|
||||||
|
|
||||||
|
// CONFIG_ENABLE_CHIPOBLE is enabled when BLE is used to commission the Matter Network
|
||||||
|
#if !CONFIG_ENABLE_CHIPOBLE
|
||||||
// We start by connecting to a WiFi network
|
// We start by connecting to a WiFi network
|
||||||
Serial.print("Connecting to ");
|
Serial.print("Connecting to ");
|
||||||
Serial.println(ssid);
|
Serial.println(ssid);
|
||||||
|
|
@ -99,6 +107,7 @@ void setup() {
|
||||||
Serial.println("IP address: ");
|
Serial.println("IP address: ");
|
||||||
Serial.println(WiFi.localIP());
|
Serial.println(WiFi.localIP());
|
||||||
delay(500);
|
delay(500);
|
||||||
|
#endif
|
||||||
|
|
||||||
// Initialize Matter EndPoint
|
// Initialize Matter EndPoint
|
||||||
matterPref.begin("MatterPrefs", false);
|
matterPref.begin("MatterPrefs", false);
|
||||||
|
|
@ -143,7 +152,7 @@ void setup() {
|
||||||
Matter.begin();
|
Matter.begin();
|
||||||
// This may be a restart of a already commissioned Matter accessory
|
// This may be a restart of a already commissioned Matter accessory
|
||||||
if (Matter.isDeviceCommissioned()) {
|
if (Matter.isDeviceCommissioned()) {
|
||||||
Serial.println("Matter Node is commissioned and connected to Wi-Fi. Ready for use.");
|
Serial.println("Matter Node is commissioned and connected to the network. Ready for use.");
|
||||||
Serial.printf(
|
Serial.printf(
|
||||||
"Initial state: %s | RGB Color: (%d,%d,%d) \r\n", EnhancedColorLight ? "ON" : "OFF", EnhancedColorLight.getColorRGB().r,
|
"Initial state: %s | RGB Color: (%d,%d,%d) \r\n", EnhancedColorLight ? "ON" : "OFF", EnhancedColorLight.getColorRGB().r,
|
||||||
EnhancedColorLight.getColorRGB().g, EnhancedColorLight.getColorRGB().b
|
EnhancedColorLight.getColorRGB().g, EnhancedColorLight.getColorRGB().b
|
||||||
|
|
@ -176,7 +185,7 @@ void loop() {
|
||||||
);
|
);
|
||||||
// configure the Light based on initial on-off state and its color
|
// configure the Light based on initial on-off state and its color
|
||||||
EnhancedColorLight.updateAccessory();
|
EnhancedColorLight.updateAccessory();
|
||||||
Serial.println("Matter Node is commissioned and connected to Wi-Fi. Ready for use.");
|
Serial.println("Matter Node is commissioned and connected to the network. Ready for use.");
|
||||||
}
|
}
|
||||||
|
|
||||||
// A button is also used to control the light
|
// A button is also used to control the light
|
||||||
|
|
|
||||||
|
|
@ -14,11 +14,17 @@
|
||||||
|
|
||||||
// Matter Manager
|
// Matter Manager
|
||||||
#include <Matter.h>
|
#include <Matter.h>
|
||||||
|
#if !CONFIG_ENABLE_CHIPOBLE
|
||||||
|
// if the device can be commissioned using BLE, WiFi is not used - save flash space
|
||||||
#include <WiFi.h>
|
#include <WiFi.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// CONFIG_ENABLE_CHIPOBLE is enabled when BLE is used to commission the Matter Network
|
||||||
|
#if !CONFIG_ENABLE_CHIPOBLE
|
||||||
// WiFi is manually set and started
|
// WiFi is manually set and started
|
||||||
const char *ssid = "your-ssid"; // Change this to your WiFi SSID
|
const char *ssid = "your-ssid"; // Change this to your WiFi SSID
|
||||||
const char *password = "your-password"; // Change this to your WiFi password
|
const char *password = "your-password"; // Change this to your WiFi password
|
||||||
|
#endif
|
||||||
|
|
||||||
// List of Matter Endpoints for this Node
|
// List of Matter Endpoints for this Node
|
||||||
// On/Off Light Endpoint
|
// On/Off Light Endpoint
|
||||||
|
|
@ -119,6 +125,8 @@ void setup() {
|
||||||
delay(10); // Wait for Serial to initialize
|
delay(10); // Wait for Serial to initialize
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// CONFIG_ENABLE_CHIPOBLE is enabled when BLE is used to commission the Matter Network
|
||||||
|
#if !CONFIG_ENABLE_CHIPOBLE
|
||||||
// We start by connecting to a WiFi network
|
// We start by connecting to a WiFi network
|
||||||
Serial.print("Connecting to ");
|
Serial.print("Connecting to ");
|
||||||
Serial.println(ssid);
|
Serial.println(ssid);
|
||||||
|
|
@ -134,6 +142,7 @@ void setup() {
|
||||||
Serial.println("IP address: ");
|
Serial.println("IP address: ");
|
||||||
Serial.println(WiFi.localIP());
|
Serial.println(WiFi.localIP());
|
||||||
delay(500);
|
delay(500);
|
||||||
|
#endif
|
||||||
|
|
||||||
// Initialize at least one Matter EndPoint
|
// Initialize at least one Matter EndPoint
|
||||||
OnOffLight.begin();
|
OnOffLight.begin();
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2024 Espressif Systems (Shanghai) PTE LTD
|
// Copyright 2025 Espressif Systems (Shanghai) PTE LTD
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
|
|
@ -14,15 +14,21 @@
|
||||||
|
|
||||||
// Matter Manager
|
// Matter Manager
|
||||||
#include <Matter.h>
|
#include <Matter.h>
|
||||||
|
#if !CONFIG_ENABLE_CHIPOBLE
|
||||||
|
// if the device can be commissioned using BLE, WiFi is not used - save flash space
|
||||||
#include <WiFi.h>
|
#include <WiFi.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
// List of Matter Endpoints for this Node
|
// List of Matter Endpoints for this Node
|
||||||
// Fan Endpoint - On/Off control + Speed Percent Control + Fan Modes
|
// Fan Endpoint - On/Off control + Speed Percent Control + Fan Modes
|
||||||
MatterFan Fan;
|
MatterFan Fan;
|
||||||
|
|
||||||
|
// CONFIG_ENABLE_CHIPOBLE is enabled when BLE is used to commission the Matter Network
|
||||||
|
#if !CONFIG_ENABLE_CHIPOBLE
|
||||||
// WiFi is manually set and started
|
// WiFi is manually set and started
|
||||||
const char *ssid = "your-ssid"; // Change this to your WiFi SSID
|
const char *ssid = "your-ssid"; // Change this to your WiFi SSID
|
||||||
const char *password = "your-password"; // Change this to your WiFi password
|
const char *password = "your-password"; // Change this to your WiFi password
|
||||||
|
#endif
|
||||||
|
|
||||||
// set your board USER BUTTON pin here - used for toggling On/Off and decommission the Matter Node
|
// set your board USER BUTTON pin here - used for toggling On/Off and decommission the Matter Node
|
||||||
const uint8_t buttonPin = BOOT_PIN; // Set your pin here. Using BOOT Button.
|
const uint8_t buttonPin = BOOT_PIN; // Set your pin here. Using BOOT Button.
|
||||||
|
|
@ -76,6 +82,8 @@ void setup() {
|
||||||
|
|
||||||
Serial.begin(115200);
|
Serial.begin(115200);
|
||||||
|
|
||||||
|
// CONFIG_ENABLE_CHIPOBLE is enabled when BLE is used to commission the Matter Network
|
||||||
|
#if !CONFIG_ENABLE_CHIPOBLE
|
||||||
// We start by connecting to a WiFi network
|
// We start by connecting to a WiFi network
|
||||||
Serial.print("Connecting to ");
|
Serial.print("Connecting to ");
|
||||||
Serial.println(ssid);
|
Serial.println(ssid);
|
||||||
|
|
@ -90,6 +98,7 @@ void setup() {
|
||||||
Serial.println("IP address: ");
|
Serial.println("IP address: ");
|
||||||
Serial.println(WiFi.localIP());
|
Serial.println(WiFi.localIP());
|
||||||
delay(500);
|
delay(500);
|
||||||
|
#endif
|
||||||
|
|
||||||
// On Boot or Reset, Fan is set at 0% speed, OFF, changing between OFF, ON, SMART and HIGH
|
// On Boot or Reset, Fan is set at 0% speed, OFF, changing between OFF, ON, SMART and HIGH
|
||||||
Fan.begin(0, MatterFan::FAN_MODE_OFF, MatterFan::FAN_MODE_SEQ_OFF_HIGH);
|
Fan.begin(0, MatterFan::FAN_MODE_OFF, MatterFan::FAN_MODE_SEQ_OFF_HIGH);
|
||||||
|
|
@ -141,7 +150,7 @@ void setup() {
|
||||||
Matter.begin();
|
Matter.begin();
|
||||||
// This may be a restart of a already commissioned Matter accessory
|
// This may be a restart of a already commissioned Matter accessory
|
||||||
if (Matter.isDeviceCommissioned()) {
|
if (Matter.isDeviceCommissioned()) {
|
||||||
Serial.println("Matter Node is commissioned and connected to Wi-Fi. Ready for use.");
|
Serial.println("Matter Node is commissioned and connected to the network. Ready for use.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -162,7 +171,7 @@ void loop() {
|
||||||
Serial.println("Matter Node not commissioned yet. Waiting for commissioning.");
|
Serial.println("Matter Node not commissioned yet. Waiting for commissioning.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Serial.println("Matter Node is commissioned and connected to Wi-Fi. Ready for use.");
|
Serial.println("Matter Node is commissioned and connected to the network. Ready for use.");
|
||||||
}
|
}
|
||||||
|
|
||||||
// A builtin button is used to trigger and send a command to the Matter Controller
|
// A builtin button is used to trigger and send a command to the Matter Controller
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2024 Espressif Systems (Shanghai) PTE LTD
|
// Copyright 2025 Espressif Systems (Shanghai) PTE LTD
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
|
|
@ -21,15 +21,21 @@
|
||||||
|
|
||||||
// Matter Manager
|
// Matter Manager
|
||||||
#include <Matter.h>
|
#include <Matter.h>
|
||||||
|
#if !CONFIG_ENABLE_CHIPOBLE
|
||||||
|
// if the device can be commissioned using BLE, WiFi is not used - save flash space
|
||||||
#include <WiFi.h>
|
#include <WiFi.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
// List of Matter Endpoints for this Node
|
// List of Matter Endpoints for this Node
|
||||||
// Matter Humidity Sensor Endpoint
|
// Matter Humidity Sensor Endpoint
|
||||||
MatterHumiditySensor SimulatedHumiditySensor;
|
MatterHumiditySensor SimulatedHumiditySensor;
|
||||||
|
|
||||||
|
// CONFIG_ENABLE_CHIPOBLE is enabled when BLE is used to commission the Matter Network
|
||||||
|
#if !CONFIG_ENABLE_CHIPOBLE
|
||||||
// WiFi is manually set and started
|
// WiFi is manually set and started
|
||||||
const char *ssid = "your-ssid"; // Change this to your WiFi SSID
|
const char *ssid = "your-ssid"; // Change this to your WiFi SSID
|
||||||
const char *password = "your-password"; // Change this to your WiFi password
|
const char *password = "your-password"; // Change this to your WiFi password
|
||||||
|
#endif
|
||||||
|
|
||||||
// set your board USER BUTTON pin here - decommissioning button
|
// set your board USER BUTTON pin here - decommissioning button
|
||||||
const uint8_t buttonPin = BOOT_PIN; // Set your pin here. Using BOOT Button.
|
const uint8_t buttonPin = BOOT_PIN; // Set your pin here. Using BOOT Button.
|
||||||
|
|
@ -60,6 +66,8 @@ void setup() {
|
||||||
|
|
||||||
Serial.begin(115200);
|
Serial.begin(115200);
|
||||||
|
|
||||||
|
// CONFIG_ENABLE_CHIPOBLE is enabled when BLE is used to commission the Matter Network
|
||||||
|
#if !CONFIG_ENABLE_CHIPOBLE
|
||||||
// Manually connect to WiFi
|
// Manually connect to WiFi
|
||||||
WiFi.begin(ssid, password);
|
WiFi.begin(ssid, password);
|
||||||
// Wait for connection
|
// Wait for connection
|
||||||
|
|
@ -68,6 +76,7 @@ void setup() {
|
||||||
Serial.print(".");
|
Serial.print(".");
|
||||||
}
|
}
|
||||||
Serial.println();
|
Serial.println();
|
||||||
|
#endif
|
||||||
|
|
||||||
// set initial humidity sensor measurement
|
// set initial humidity sensor measurement
|
||||||
// Simulated Sensor - it shall initially print 95% and then move to the 10% to 30% humidity range
|
// Simulated Sensor - it shall initially print 95% and then move to the 10% to 30% humidity range
|
||||||
|
|
@ -92,7 +101,7 @@ void setup() {
|
||||||
Serial.println("Matter Node not commissioned yet. Waiting for commissioning.");
|
Serial.println("Matter Node not commissioned yet. Waiting for commissioning.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Serial.println("Matter Node is commissioned and connected to Wi-Fi. Ready for use.");
|
Serial.println("Matter Node is commissioned and connected to the network. Ready for use.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2024 Espressif Systems (Shanghai) PTE LTD
|
// Copyright 2025 Espressif Systems (Shanghai) PTE LTD
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
|
|
@ -22,15 +22,21 @@
|
||||||
|
|
||||||
// Matter Manager
|
// Matter Manager
|
||||||
#include <Matter.h>
|
#include <Matter.h>
|
||||||
|
#if !CONFIG_ENABLE_CHIPOBLE
|
||||||
|
// if the device can be commissioned using BLE, WiFi is not used - save flash space
|
||||||
#include <WiFi.h>
|
#include <WiFi.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
// List of Matter Endpoints for this Node
|
// List of Matter Endpoints for this Node
|
||||||
// Single On/Off Light Endpoint - at least one per node
|
// Single On/Off Light Endpoint - at least one per node
|
||||||
MatterOnOffLight OnOffLight;
|
MatterOnOffLight OnOffLight;
|
||||||
|
|
||||||
|
// CONFIG_ENABLE_CHIPOBLE is enabled when BLE is used to commission the Matter Network
|
||||||
|
#if !CONFIG_ENABLE_CHIPOBLE
|
||||||
// WiFi is manually set and started
|
// WiFi is manually set and started
|
||||||
const char *ssid = "your-ssid"; // Change this to your WiFi SSID
|
const char *ssid = "your-ssid"; // Change this to your WiFi SSID
|
||||||
const char *password = "your-password"; // Change this to your WiFi password
|
const char *password = "your-password"; // Change this to your WiFi password
|
||||||
|
#endif
|
||||||
|
|
||||||
// Light GPIO that can be controlled by Matter APP
|
// Light GPIO that can be controlled by Matter APP
|
||||||
#ifdef LED_BUILTIN
|
#ifdef LED_BUILTIN
|
||||||
|
|
@ -62,6 +68,8 @@ void setup() {
|
||||||
// Initialize the LED GPIO
|
// Initialize the LED GPIO
|
||||||
pinMode(ledPin, OUTPUT);
|
pinMode(ledPin, OUTPUT);
|
||||||
|
|
||||||
|
// CONFIG_ENABLE_CHIPOBLE is enabled when BLE is used to commission the Matter Network
|
||||||
|
#if !CONFIG_ENABLE_CHIPOBLE
|
||||||
// Manually connect to WiFi
|
// Manually connect to WiFi
|
||||||
WiFi.begin(ssid, password);
|
WiFi.begin(ssid, password);
|
||||||
// Wait for connection
|
// Wait for connection
|
||||||
|
|
@ -73,6 +81,7 @@ void setup() {
|
||||||
delay(500);
|
delay(500);
|
||||||
}
|
}
|
||||||
Serial.println();
|
Serial.println();
|
||||||
|
#endif
|
||||||
|
|
||||||
// Initialize at least one Matter EndPoint
|
// Initialize at least one Matter EndPoint
|
||||||
OnOffLight.begin();
|
OnOffLight.begin();
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2024 Espressif Systems (Shanghai) PTE LTD
|
// Copyright 2025 Espressif Systems (Shanghai) PTE LTD
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
|
|
@ -28,15 +28,21 @@
|
||||||
|
|
||||||
// Matter Manager
|
// Matter Manager
|
||||||
#include <Matter.h>
|
#include <Matter.h>
|
||||||
|
#if !CONFIG_ENABLE_CHIPOBLE
|
||||||
|
// if the device can be commissioned using BLE, WiFi is not used - save flash space
|
||||||
#include <WiFi.h>
|
#include <WiFi.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
// List of Matter Endpoints for this Node
|
// List of Matter Endpoints for this Node
|
||||||
// Matter Occupancy Sensor Endpoint
|
// Matter Occupancy Sensor Endpoint
|
||||||
MatterOccupancySensor OccupancySensor;
|
MatterOccupancySensor OccupancySensor;
|
||||||
|
|
||||||
|
// CONFIG_ENABLE_CHIPOBLE is enabled when BLE is used to commission the Matter Network
|
||||||
|
#if !CONFIG_ENABLE_CHIPOBLE
|
||||||
// WiFi is manually set and started
|
// WiFi is manually set and started
|
||||||
const char *ssid = "your-ssid"; // Change this to your WiFi SSID
|
const char *ssid = "your-ssid"; // Change this to your WiFi SSID
|
||||||
const char *password = "your-password"; // Change this to your WiFi password
|
const char *password = "your-password"; // Change this to your WiFi password
|
||||||
|
#endif
|
||||||
|
|
||||||
// set your board USER BUTTON pin here - decommissioning only
|
// set your board USER BUTTON pin here - decommissioning only
|
||||||
const uint8_t buttonPin = BOOT_PIN; // Set your pin here. Using BOOT Button.
|
const uint8_t buttonPin = BOOT_PIN; // Set your pin here. Using BOOT Button.
|
||||||
|
|
@ -52,6 +58,8 @@ void setup() {
|
||||||
|
|
||||||
Serial.begin(115200);
|
Serial.begin(115200);
|
||||||
|
|
||||||
|
// CONFIG_ENABLE_CHIPOBLE is enabled when BLE is used to commission the Matter Network
|
||||||
|
#if !CONFIG_ENABLE_CHIPOBLE
|
||||||
// Manually connect to WiFi
|
// Manually connect to WiFi
|
||||||
WiFi.begin(ssid, password);
|
WiFi.begin(ssid, password);
|
||||||
// Wait for connection
|
// Wait for connection
|
||||||
|
|
@ -60,6 +68,7 @@ void setup() {
|
||||||
Serial.print(".");
|
Serial.print(".");
|
||||||
}
|
}
|
||||||
Serial.println();
|
Serial.println();
|
||||||
|
#endif
|
||||||
|
|
||||||
// set initial occupancy sensor state as false and connected to a PIR sensor type (default)
|
// set initial occupancy sensor state as false and connected to a PIR sensor type (default)
|
||||||
OccupancySensor.begin();
|
OccupancySensor.begin();
|
||||||
|
|
@ -83,7 +92,7 @@ void setup() {
|
||||||
Serial.println("Matter Node not commissioned yet. Waiting for commissioning.");
|
Serial.println("Matter Node not commissioned yet. Waiting for commissioning.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Serial.println("Matter Node is commissioned and connected to Wi-Fi. Ready for use.");
|
Serial.println("Matter Node is commissioned and connected to the network. Ready for use.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2024 Espressif Systems (Shanghai) PTE LTD
|
// Copyright 2025 Espressif Systems (Shanghai) PTE LTD
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
|
|
@ -26,15 +26,21 @@
|
||||||
|
|
||||||
// Matter Manager
|
// Matter Manager
|
||||||
#include <Matter.h>
|
#include <Matter.h>
|
||||||
|
#if !CONFIG_ENABLE_CHIPOBLE
|
||||||
|
// if the device can be commissioned using BLE, WiFi is not used - save flash space
|
||||||
#include <WiFi.h>
|
#include <WiFi.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
// List of Matter Endpoints for this Node
|
// List of Matter Endpoints for this Node
|
||||||
// Single On/Off Light Endpoint - at least one per node
|
// Single On/Off Light Endpoint - at least one per node
|
||||||
MatterOnOffLight OnOffLight;
|
MatterOnOffLight OnOffLight;
|
||||||
|
|
||||||
|
// CONFIG_ENABLE_CHIPOBLE is enabled when BLE is used to commission the Matter Network
|
||||||
|
#if !CONFIG_ENABLE_CHIPOBLE
|
||||||
// WiFi is manually set and started
|
// WiFi is manually set and started
|
||||||
const char *ssid = "your-ssid"; // Change this to your WiFi SSID
|
const char *ssid = "your-ssid"; // Change this to your WiFi SSID
|
||||||
const char *password = "your-password"; // Change this to your WiFi password
|
const char *password = "your-password"; // Change this to your WiFi password
|
||||||
|
#endif
|
||||||
|
|
||||||
// Light GPIO that can be controlled by Matter APP
|
// Light GPIO that can be controlled by Matter APP
|
||||||
#ifdef LED_BUILTIN
|
#ifdef LED_BUILTIN
|
||||||
|
|
@ -88,6 +94,8 @@ void setup() {
|
||||||
|
|
||||||
Serial.begin(115200);
|
Serial.begin(115200);
|
||||||
|
|
||||||
|
// CONFIG_ENABLE_CHIPOBLE is enabled when BLE is used to commission the Matter Network
|
||||||
|
#if !CONFIG_ENABLE_CHIPOBLE
|
||||||
// Manually connect to WiFi
|
// Manually connect to WiFi
|
||||||
WiFi.begin(ssid, password);
|
WiFi.begin(ssid, password);
|
||||||
// Wait for connection
|
// Wait for connection
|
||||||
|
|
@ -96,6 +104,7 @@ void setup() {
|
||||||
Serial.print(".");
|
Serial.print(".");
|
||||||
}
|
}
|
||||||
Serial.println();
|
Serial.println();
|
||||||
|
#endif
|
||||||
|
|
||||||
// Initialize at least one Matter EndPoint
|
// Initialize at least one Matter EndPoint
|
||||||
OnOffLight.begin();
|
OnOffLight.begin();
|
||||||
|
|
@ -125,7 +134,7 @@ void setup() {
|
||||||
Serial.println("Matter Node not commissioned yet. Waiting for commissioning.");
|
Serial.println("Matter Node not commissioned yet. Waiting for commissioning.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Serial.println("Matter Node is commissioned and connected to Wi-Fi. Ready for use.");
|
Serial.println("Matter Node is commissioned and connected to the network. Ready for use.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2024 Espressif Systems (Shanghai) PTE LTD
|
// Copyright 2025 Espressif Systems (Shanghai) PTE LTD
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
|
|
@ -14,12 +14,18 @@
|
||||||
|
|
||||||
// Matter Manager
|
// Matter Manager
|
||||||
#include <Matter.h>
|
#include <Matter.h>
|
||||||
|
#if !CONFIG_ENABLE_CHIPOBLE
|
||||||
|
// if the device can be commissioned using BLE, WiFi is not used - save flash space
|
||||||
#include <WiFi.h>
|
#include <WiFi.h>
|
||||||
|
#endif
|
||||||
#include <Preferences.h>
|
#include <Preferences.h>
|
||||||
|
|
||||||
|
// CONFIG_ENABLE_CHIPOBLE is enabled when BLE is used to commission the Matter Network
|
||||||
|
#if !CONFIG_ENABLE_CHIPOBLE
|
||||||
// WiFi is manually set and started
|
// WiFi is manually set and started
|
||||||
const char *ssid = "your-ssid"; // Change this to your WiFi SSID
|
const char *ssid = "your-ssid"; // Change this to your WiFi SSID
|
||||||
const char *password = "your-password"; // Change this to your WiFi password
|
const char *password = "your-password"; // Change this to your WiFi password
|
||||||
|
#endif
|
||||||
|
|
||||||
// List of Matter Endpoints for this Node
|
// List of Matter Endpoints for this Node
|
||||||
// On/Off Light Endpoint
|
// On/Off Light Endpoint
|
||||||
|
|
@ -68,6 +74,8 @@ void setup() {
|
||||||
|
|
||||||
Serial.begin(115200);
|
Serial.begin(115200);
|
||||||
|
|
||||||
|
// CONFIG_ENABLE_CHIPOBLE is enabled when BLE is used to commission the Matter Network
|
||||||
|
#if !CONFIG_ENABLE_CHIPOBLE
|
||||||
// We start by connecting to a WiFi network
|
// We start by connecting to a WiFi network
|
||||||
Serial.print("Connecting to ");
|
Serial.print("Connecting to ");
|
||||||
Serial.println(ssid);
|
Serial.println(ssid);
|
||||||
|
|
@ -82,6 +90,7 @@ void setup() {
|
||||||
Serial.println("IP address: ");
|
Serial.println("IP address: ");
|
||||||
Serial.println(WiFi.localIP());
|
Serial.println(WiFi.localIP());
|
||||||
delay(500);
|
delay(500);
|
||||||
|
#endif
|
||||||
|
|
||||||
// Initialize Matter EndPoint
|
// Initialize Matter EndPoint
|
||||||
matterPref.begin("MatterPrefs", false);
|
matterPref.begin("MatterPrefs", false);
|
||||||
|
|
@ -93,7 +102,7 @@ void setup() {
|
||||||
Matter.begin();
|
Matter.begin();
|
||||||
// This may be a restart of a already commissioned Matter accessory
|
// This may be a restart of a already commissioned Matter accessory
|
||||||
if (Matter.isDeviceCommissioned()) {
|
if (Matter.isDeviceCommissioned()) {
|
||||||
Serial.println("Matter Node is commissioned and connected to Wi-Fi. Ready for use.");
|
Serial.println("Matter Node is commissioned and connected to the network. Ready for use.");
|
||||||
Serial.printf("Initial state: %s\r\n", OnOffLight.getOnOff() ? "ON" : "OFF");
|
Serial.printf("Initial state: %s\r\n", OnOffLight.getOnOff() ? "ON" : "OFF");
|
||||||
OnOffLight.updateAccessory(); // configure the Light based on initial state
|
OnOffLight.updateAccessory(); // configure the Light based on initial state
|
||||||
}
|
}
|
||||||
|
|
@ -118,7 +127,7 @@ void loop() {
|
||||||
}
|
}
|
||||||
Serial.printf("Initial state: %s\r\n", OnOffLight.getOnOff() ? "ON" : "OFF");
|
Serial.printf("Initial state: %s\r\n", OnOffLight.getOnOff() ? "ON" : "OFF");
|
||||||
OnOffLight.updateAccessory(); // configure the Light based on initial state
|
OnOffLight.updateAccessory(); // configure the Light based on initial state
|
||||||
Serial.println("Matter Node is commissioned and connected to Wi-Fi. Ready for use.");
|
Serial.println("Matter Node is commissioned and connected to the network. Ready for use.");
|
||||||
}
|
}
|
||||||
|
|
||||||
// A button is also used to control the light
|
// A button is also used to control the light
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2024 Espressif Systems (Shanghai) PTE LTD
|
// Copyright 2025 Espressif Systems (Shanghai) PTE LTD
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
|
|
@ -14,16 +14,22 @@
|
||||||
|
|
||||||
// Matter Manager
|
// Matter Manager
|
||||||
#include <Matter.h>
|
#include <Matter.h>
|
||||||
|
#if !CONFIG_ENABLE_CHIPOBLE
|
||||||
|
// if the device can be commissioned using BLE, WiFi is not used - save flash space
|
||||||
#include <WiFi.h>
|
#include <WiFi.h>
|
||||||
|
#endif
|
||||||
#include <Preferences.h>
|
#include <Preferences.h>
|
||||||
|
|
||||||
// List of Matter Endpoints for this Node
|
// List of Matter Endpoints for this Node
|
||||||
// On/Off Plugin Endpoint
|
// On/Off Plugin Endpoint
|
||||||
MatterOnOffPlugin OnOffPlugin;
|
MatterOnOffPlugin OnOffPlugin;
|
||||||
|
|
||||||
|
// CONFIG_ENABLE_CHIPOBLE is enabled when BLE is used to commission the Matter Network
|
||||||
|
#if !CONFIG_ENABLE_CHIPOBLE
|
||||||
// WiFi is manually set and started
|
// WiFi is manually set and started
|
||||||
const char *ssid = "your-ssid"; // Change this to your WiFi SSID
|
const char *ssid = "your-ssid"; // Change this to your WiFi SSID
|
||||||
const char *password = "your-password"; // Change this to your WiFi password
|
const char *password = "your-password"; // Change this to your WiFi password
|
||||||
|
#endif
|
||||||
|
|
||||||
// it will keep last OnOff state stored, using Preferences
|
// it will keep last OnOff state stored, using Preferences
|
||||||
Preferences matterPref;
|
Preferences matterPref;
|
||||||
|
|
@ -67,6 +73,8 @@ void setup() {
|
||||||
|
|
||||||
Serial.begin(115200);
|
Serial.begin(115200);
|
||||||
|
|
||||||
|
// CONFIG_ENABLE_CHIPOBLE is enabled when BLE is used to commission the Matter Network
|
||||||
|
#if !CONFIG_ENABLE_CHIPOBLE
|
||||||
// We start by connecting to a WiFi network
|
// We start by connecting to a WiFi network
|
||||||
Serial.print("Connecting to ");
|
Serial.print("Connecting to ");
|
||||||
Serial.println(ssid);
|
Serial.println(ssid);
|
||||||
|
|
@ -80,6 +88,7 @@ void setup() {
|
||||||
Serial.println("IP address: ");
|
Serial.println("IP address: ");
|
||||||
Serial.println(WiFi.localIP());
|
Serial.println(WiFi.localIP());
|
||||||
delay(500);
|
delay(500);
|
||||||
|
#endif
|
||||||
|
|
||||||
// Initialize Matter EndPoint
|
// Initialize Matter EndPoint
|
||||||
matterPref.begin("MatterPrefs", false);
|
matterPref.begin("MatterPrefs", false);
|
||||||
|
|
@ -91,7 +100,7 @@ void setup() {
|
||||||
Matter.begin();
|
Matter.begin();
|
||||||
// This may be a restart of a already commissioned Matter accessory
|
// This may be a restart of a already commissioned Matter accessory
|
||||||
if (Matter.isDeviceCommissioned()) {
|
if (Matter.isDeviceCommissioned()) {
|
||||||
Serial.println("Matter Node is commissioned and connected to Wi-Fi. Ready for use.");
|
Serial.println("Matter Node is commissioned and connected to the network. Ready for use.");
|
||||||
Serial.printf("Initial state: %s\r\n", OnOffPlugin.getOnOff() ? "ON" : "OFF");
|
Serial.printf("Initial state: %s\r\n", OnOffPlugin.getOnOff() ? "ON" : "OFF");
|
||||||
OnOffPlugin.updateAccessory(); // configure the Plugin based on initial state
|
OnOffPlugin.updateAccessory(); // configure the Plugin based on initial state
|
||||||
}
|
}
|
||||||
|
|
@ -116,7 +125,7 @@ void loop() {
|
||||||
}
|
}
|
||||||
Serial.printf("Initial state: %s\r\n", OnOffPlugin.getOnOff() ? "ON" : "OFF");
|
Serial.printf("Initial state: %s\r\n", OnOffPlugin.getOnOff() ? "ON" : "OFF");
|
||||||
OnOffPlugin.updateAccessory(); // configure the Plugin based on initial state
|
OnOffPlugin.updateAccessory(); // configure the Plugin based on initial state
|
||||||
Serial.println("Matter Node is commissioned and connected to Wi-Fi. Ready for use.");
|
Serial.println("Matter Node is commissioned and connected to the network. Ready for use.");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if the button has been pressed
|
// Check if the button has been pressed
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2024 Espressif Systems (Shanghai) PTE LTD
|
// Copyright 2025 Espressif Systems (Shanghai) PTE LTD
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
|
|
@ -21,15 +21,21 @@
|
||||||
|
|
||||||
// Matter Manager
|
// Matter Manager
|
||||||
#include <Matter.h>
|
#include <Matter.h>
|
||||||
|
#if !CONFIG_ENABLE_CHIPOBLE
|
||||||
|
// if the device can be commissioned using BLE, WiFi is not used - save flash space
|
||||||
#include <WiFi.h>
|
#include <WiFi.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
// List of Matter Endpoints for this Node
|
// List of Matter Endpoints for this Node
|
||||||
// Matter Pressure Sensor Endpoint
|
// Matter Pressure Sensor Endpoint
|
||||||
MatterPressureSensor SimulatedPressureSensor;
|
MatterPressureSensor SimulatedPressureSensor;
|
||||||
|
|
||||||
|
// CONFIG_ENABLE_CHIPOBLE is enabled when BLE is used to commission the Matter Network
|
||||||
|
#if !CONFIG_ENABLE_CHIPOBLE
|
||||||
// WiFi is manually set and started
|
// WiFi is manually set and started
|
||||||
const char *ssid = "your-ssid"; // Change this to your WiFi SSID
|
const char *ssid = "your-ssid"; // Change this to your WiFi SSID
|
||||||
const char *password = "your-password"; // Change this to your WiFi password
|
const char *password = "your-password"; // Change this to your WiFi password
|
||||||
|
#endif
|
||||||
|
|
||||||
// set your board USER BUTTON pin here - decommissioning button
|
// set your board USER BUTTON pin here - decommissioning button
|
||||||
const uint8_t buttonPin = BOOT_PIN; // Set your pin here. Using BOOT Button.
|
const uint8_t buttonPin = BOOT_PIN; // Set your pin here. Using BOOT Button.
|
||||||
|
|
@ -60,6 +66,8 @@ void setup() {
|
||||||
|
|
||||||
Serial.begin(115200);
|
Serial.begin(115200);
|
||||||
|
|
||||||
|
// CONFIG_ENABLE_CHIPOBLE is enabled when BLE is used to commission the Matter Network
|
||||||
|
#if !CONFIG_ENABLE_CHIPOBLE
|
||||||
// Manually connect to WiFi
|
// Manually connect to WiFi
|
||||||
WiFi.begin(ssid, password);
|
WiFi.begin(ssid, password);
|
||||||
// Wait for connection
|
// Wait for connection
|
||||||
|
|
@ -68,6 +76,7 @@ void setup() {
|
||||||
Serial.print(".");
|
Serial.print(".");
|
||||||
}
|
}
|
||||||
Serial.println();
|
Serial.println();
|
||||||
|
#endif
|
||||||
|
|
||||||
// set initial pressure sensor measurement
|
// set initial pressure sensor measurement
|
||||||
// Simulated Sensor - it shall initially print 900hPa and then move to the 950 to 1100 hPa as pressure range
|
// Simulated Sensor - it shall initially print 900hPa and then move to the 950 to 1100 hPa as pressure range
|
||||||
|
|
@ -92,7 +101,7 @@ void setup() {
|
||||||
Serial.println("Matter Node not commissioned yet. Waiting for commissioning.");
|
Serial.println("Matter Node not commissioned yet. Waiting for commissioning.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Serial.println("Matter Node is commissioned and connected to Wi-Fi. Ready for use.");
|
Serial.println("Matter Node is commissioned and connected to the network. Ready for use.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2024 Espressif Systems (Shanghai) PTE LTD
|
// Copyright 2025 Espressif Systems (Shanghai) PTE LTD
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
|
|
@ -14,15 +14,21 @@
|
||||||
|
|
||||||
// Matter Manager
|
// Matter Manager
|
||||||
#include <Matter.h>
|
#include <Matter.h>
|
||||||
|
#if !CONFIG_ENABLE_CHIPOBLE
|
||||||
|
// if the device can be commissioned using BLE, WiFi is not used - save flash space
|
||||||
#include <WiFi.h>
|
#include <WiFi.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
// List of Matter Endpoints for this Node
|
// List of Matter Endpoints for this Node
|
||||||
// Generic Switch Endpoint - works as a smart button with a single click
|
// Generic Switch Endpoint - works as a smart button with a single click
|
||||||
MatterGenericSwitch SmartButton;
|
MatterGenericSwitch SmartButton;
|
||||||
|
|
||||||
|
// CONFIG_ENABLE_CHIPOBLE is enabled when BLE is used to commission the Matter Network
|
||||||
|
#if !CONFIG_ENABLE_CHIPOBLE
|
||||||
// WiFi is manually set and started
|
// WiFi is manually set and started
|
||||||
const char *ssid = "your-ssid"; // Change this to your WiFi SSID
|
const char *ssid = "your-ssid"; // Change this to your WiFi SSID
|
||||||
const char *password = "your-password"; // Change this to your WiFi password
|
const char *password = "your-password"; // Change this to your WiFi password
|
||||||
|
#endif
|
||||||
|
|
||||||
// set your board USER BUTTON pin here
|
// set your board USER BUTTON pin here
|
||||||
const uint8_t buttonPin = BOOT_PIN; // Set your pin here. Using BOOT Button.
|
const uint8_t buttonPin = BOOT_PIN; // Set your pin here. Using BOOT Button.
|
||||||
|
|
@ -43,6 +49,8 @@ void setup() {
|
||||||
Serial.print("Connecting to ");
|
Serial.print("Connecting to ");
|
||||||
Serial.println(ssid);
|
Serial.println(ssid);
|
||||||
|
|
||||||
|
// CONFIG_ENABLE_CHIPOBLE is enabled when BLE is used to commission the Matter Network
|
||||||
|
#if !CONFIG_ENABLE_CHIPOBLE
|
||||||
// Manually connect to WiFi
|
// Manually connect to WiFi
|
||||||
WiFi.begin(ssid, password);
|
WiFi.begin(ssid, password);
|
||||||
// Wait for connection
|
// Wait for connection
|
||||||
|
|
@ -54,6 +62,7 @@ void setup() {
|
||||||
Serial.println("IP address: ");
|
Serial.println("IP address: ");
|
||||||
Serial.println(WiFi.localIP());
|
Serial.println(WiFi.localIP());
|
||||||
delay(500);
|
delay(500);
|
||||||
|
#endif
|
||||||
|
|
||||||
// Initialize the Matter EndPoint
|
// Initialize the Matter EndPoint
|
||||||
SmartButton.begin();
|
SmartButton.begin();
|
||||||
|
|
@ -62,7 +71,7 @@ void setup() {
|
||||||
Matter.begin();
|
Matter.begin();
|
||||||
// This may be a restart of a already commissioned Matter accessory
|
// This may be a restart of a already commissioned Matter accessory
|
||||||
if (Matter.isDeviceCommissioned()) {
|
if (Matter.isDeviceCommissioned()) {
|
||||||
Serial.println("Matter Node is commissioned and connected to Wi-Fi. Ready for use.");
|
Serial.println("Matter Node is commissioned and connected to the network. Ready for use.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -83,7 +92,7 @@ void loop() {
|
||||||
Serial.println("Matter Node not commissioned yet. Waiting for commissioning.");
|
Serial.println("Matter Node not commissioned yet. Waiting for commissioning.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Serial.println("Matter Node is commissioned and connected to Wi-Fi. Ready for use.");
|
Serial.println("Matter Node is commissioned and connected to the network. Ready for use.");
|
||||||
}
|
}
|
||||||
|
|
||||||
// A builtin button is used to trigger a command to the Matter Controller
|
// A builtin button is used to trigger a command to the Matter Controller
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2024 Espressif Systems (Shanghai) PTE LTD
|
// Copyright 2025 Espressif Systems (Shanghai) PTE LTD
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
|
|
@ -14,16 +14,22 @@
|
||||||
|
|
||||||
// Matter Manager
|
// Matter Manager
|
||||||
#include <Matter.h>
|
#include <Matter.h>
|
||||||
|
#if !CONFIG_ENABLE_CHIPOBLE
|
||||||
|
// if the device can be commissioned using BLE, WiFi is not used - save flash space
|
||||||
#include <WiFi.h>
|
#include <WiFi.h>
|
||||||
|
#endif
|
||||||
#include <Preferences.h>
|
#include <Preferences.h>
|
||||||
|
|
||||||
// List of Matter Endpoints for this Node
|
// List of Matter Endpoints for this Node
|
||||||
// Color Temperature CW/WW Light Endpoint
|
// Color Temperature CW/WW Light Endpoint
|
||||||
MatterColorTemperatureLight CW_WW_Light;
|
MatterColorTemperatureLight CW_WW_Light;
|
||||||
|
|
||||||
|
// CONFIG_ENABLE_CHIPOBLE is enabled when BLE is used to commission the Matter Network
|
||||||
|
#if !CONFIG_ENABLE_CHIPOBLE
|
||||||
// WiFi is manually set and started
|
// WiFi is manually set and started
|
||||||
const char *ssid = "your-ssid"; // Change this to your WiFi SSID
|
const char *ssid = "your-ssid"; // Change this to your WiFi SSID
|
||||||
const char *password = "your-password"; // Change this to your WiFi password
|
const char *password = "your-password"; // Change this to your WiFi password
|
||||||
|
#endif
|
||||||
|
|
||||||
// it will keep last OnOff & Brightness state stored, using Preferences
|
// it will keep last OnOff & Brightness state stored, using Preferences
|
||||||
Preferences matterPref;
|
Preferences matterPref;
|
||||||
|
|
@ -88,6 +94,8 @@ void setup() {
|
||||||
|
|
||||||
Serial.begin(115200);
|
Serial.begin(115200);
|
||||||
|
|
||||||
|
// CONFIG_ENABLE_CHIPOBLE is enabled when BLE is used to commission the Matter Network
|
||||||
|
#if !CONFIG_ENABLE_CHIPOBLE
|
||||||
// We start by connecting to a WiFi network
|
// We start by connecting to a WiFi network
|
||||||
Serial.print("Connecting to ");
|
Serial.print("Connecting to ");
|
||||||
Serial.println(ssid);
|
Serial.println(ssid);
|
||||||
|
|
@ -102,6 +110,7 @@ void setup() {
|
||||||
Serial.println("IP address: ");
|
Serial.println("IP address: ");
|
||||||
Serial.println(WiFi.localIP());
|
Serial.println(WiFi.localIP());
|
||||||
delay(500);
|
delay(500);
|
||||||
|
#endif
|
||||||
|
|
||||||
// Initialize Matter EndPoint
|
// Initialize Matter EndPoint
|
||||||
matterPref.begin("MatterPrefs", false);
|
matterPref.begin("MatterPrefs", false);
|
||||||
|
|
@ -133,7 +142,7 @@ void setup() {
|
||||||
Matter.begin();
|
Matter.begin();
|
||||||
// This may be a restart of a already commissioned Matter accessory
|
// This may be a restart of a already commissioned Matter accessory
|
||||||
if (Matter.isDeviceCommissioned()) {
|
if (Matter.isDeviceCommissioned()) {
|
||||||
Serial.println("Matter Node is commissioned and connected to Wi-Fi. Ready for use.");
|
Serial.println("Matter Node is commissioned and connected to the network. Ready for use.");
|
||||||
Serial.printf(
|
Serial.printf(
|
||||||
"Initial state: %s | brightness: %d | Color Temperature: %d mireds \r\n", CW_WW_Light ? "ON" : "OFF", CW_WW_Light.getBrightness(),
|
"Initial state: %s | brightness: %d | Color Temperature: %d mireds \r\n", CW_WW_Light ? "ON" : "OFF", CW_WW_Light.getBrightness(),
|
||||||
CW_WW_Light.getColorTemperature()
|
CW_WW_Light.getColorTemperature()
|
||||||
|
|
@ -166,7 +175,7 @@ void loop() {
|
||||||
);
|
);
|
||||||
// configure the Light based on initial on-off state and brightness
|
// configure the Light based on initial on-off state and brightness
|
||||||
CW_WW_Light.updateAccessory();
|
CW_WW_Light.updateAccessory();
|
||||||
Serial.println("Matter Node is commissioned and connected to Wi-Fi. Ready for use.");
|
Serial.println("Matter Node is commissioned and connected to the network. Ready for use.");
|
||||||
}
|
}
|
||||||
|
|
||||||
// A button is also used to control the light
|
// A button is also used to control the light
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2024 Espressif Systems (Shanghai) PTE LTD
|
// Copyright 2025 Espressif Systems (Shanghai) PTE LTD
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
|
|
@ -21,15 +21,21 @@
|
||||||
|
|
||||||
// Matter Manager
|
// Matter Manager
|
||||||
#include <Matter.h>
|
#include <Matter.h>
|
||||||
|
#if !CONFIG_ENABLE_CHIPOBLE
|
||||||
|
// if the device can be commissioned using BLE, WiFi is not used - save flash space
|
||||||
#include <WiFi.h>
|
#include <WiFi.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
// List of Matter Endpoints for this Node
|
// List of Matter Endpoints for this Node
|
||||||
// Matter Temperature Sensor Endpoint
|
// Matter Temperature Sensor Endpoint
|
||||||
MatterTemperatureSensor SimulatedTemperatureSensor;
|
MatterTemperatureSensor SimulatedTemperatureSensor;
|
||||||
|
|
||||||
|
// CONFIG_ENABLE_CHIPOBLE is enabled when BLE is used to commission the Matter Network
|
||||||
|
#if !CONFIG_ENABLE_CHIPOBLE
|
||||||
// WiFi is manually set and started
|
// WiFi is manually set and started
|
||||||
const char *ssid = "your-ssid"; // Change this to your WiFi SSID
|
const char *ssid = "your-ssid"; // Change this to your WiFi SSID
|
||||||
const char *password = "your-password"; // Change this to your WiFi password
|
const char *password = "your-password"; // Change this to your WiFi password
|
||||||
|
#endif
|
||||||
|
|
||||||
// set your board USER BUTTON pin here - decommissioning button
|
// set your board USER BUTTON pin here - decommissioning button
|
||||||
const uint8_t buttonPin = BOOT_PIN; // Set your pin here. Using BOOT Button.
|
const uint8_t buttonPin = BOOT_PIN; // Set your pin here. Using BOOT Button.
|
||||||
|
|
@ -60,6 +66,8 @@ void setup() {
|
||||||
|
|
||||||
Serial.begin(115200);
|
Serial.begin(115200);
|
||||||
|
|
||||||
|
// CONFIG_ENABLE_CHIPOBLE is enabled when BLE is used to commission the Matter Network
|
||||||
|
#if !CONFIG_ENABLE_CHIPOBLE
|
||||||
// Manually connect to WiFi
|
// Manually connect to WiFi
|
||||||
WiFi.begin(ssid, password);
|
WiFi.begin(ssid, password);
|
||||||
// Wait for connection
|
// Wait for connection
|
||||||
|
|
@ -68,6 +76,7 @@ void setup() {
|
||||||
Serial.print(".");
|
Serial.print(".");
|
||||||
}
|
}
|
||||||
Serial.println();
|
Serial.println();
|
||||||
|
#endif
|
||||||
|
|
||||||
// set initial temperature sensor measurement
|
// set initial temperature sensor measurement
|
||||||
// Simulated Sensor - it shall initially print -25C and then move to the -10C to 10C range
|
// Simulated Sensor - it shall initially print -25C and then move to the -10C to 10C range
|
||||||
|
|
@ -92,7 +101,7 @@ void setup() {
|
||||||
Serial.println("Matter Node not commissioned yet. Waiting for commissioning.");
|
Serial.println("Matter Node not commissioned yet. Waiting for commissioning.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Serial.println("Matter Node is commissioned and connected to Wi-Fi. Ready for use.");
|
Serial.println("Matter Node is commissioned and connected to the network. Ready for use.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2024 Espressif Systems (Shanghai) PTE LTD
|
// Copyright 2025 Espressif Systems (Shanghai) PTE LTD
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
|
|
@ -21,15 +21,21 @@
|
||||||
|
|
||||||
// Matter Manager
|
// Matter Manager
|
||||||
#include <Matter.h>
|
#include <Matter.h>
|
||||||
|
#if !CONFIG_ENABLE_CHIPOBLE
|
||||||
|
// if the device can be commissioned using BLE, WiFi is not used - save flash space
|
||||||
#include <WiFi.h>
|
#include <WiFi.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
// List of Matter Endpoints for this Node
|
// List of Matter Endpoints for this Node
|
||||||
// Matter Thermostat Endpoint
|
// Matter Thermostat Endpoint
|
||||||
MatterThermostat SimulatedThermostat;
|
MatterThermostat SimulatedThermostat;
|
||||||
|
|
||||||
|
// CONFIG_ENABLE_CHIPOBLE is enabled when BLE is used to commission the Matter Network
|
||||||
|
#if !CONFIG_ENABLE_CHIPOBLE
|
||||||
// WiFi is manually set and started
|
// WiFi is manually set and started
|
||||||
const char *ssid = "your-ssid"; // Change this to your WiFi SSID
|
const char *ssid = "your-ssid"; // Change this to your WiFi SSID
|
||||||
const char *password = "your-password"; // Change this to your WiFi password
|
const char *password = "your-password"; // Change this to your WiFi password
|
||||||
|
#endif
|
||||||
|
|
||||||
// set your board USER BUTTON pin here - decommissioning button
|
// set your board USER BUTTON pin here - decommissioning button
|
||||||
const uint8_t buttonPin = BOOT_PIN; // Set your pin here. Using BOOT Button.
|
const uint8_t buttonPin = BOOT_PIN; // Set your pin here. Using BOOT Button.
|
||||||
|
|
@ -62,6 +68,8 @@ void setup() {
|
||||||
|
|
||||||
Serial.begin(115200);
|
Serial.begin(115200);
|
||||||
|
|
||||||
|
// CONFIG_ENABLE_CHIPOBLE is enabled when BLE is used to commission the Matter Network
|
||||||
|
#if !CONFIG_ENABLE_CHIPOBLE
|
||||||
// Manually connect to WiFi
|
// Manually connect to WiFi
|
||||||
WiFi.begin(ssid, password);
|
WiFi.begin(ssid, password);
|
||||||
// Wait for connection
|
// Wait for connection
|
||||||
|
|
@ -70,6 +78,7 @@ void setup() {
|
||||||
Serial.print(".");
|
Serial.print(".");
|
||||||
}
|
}
|
||||||
Serial.println();
|
Serial.println();
|
||||||
|
#endif
|
||||||
|
|
||||||
// Simulated Thermostat in COOLING and HEATING mode with Auto Mode to keep the temperature between setpoints
|
// Simulated Thermostat in COOLING and HEATING mode with Auto Mode to keep the temperature between setpoints
|
||||||
// Auto Mode can only be used when the control sequence of operation is Cooling & Heating
|
// Auto Mode can only be used when the control sequence of operation is Cooling & Heating
|
||||||
|
|
@ -94,7 +103,7 @@ void setup() {
|
||||||
Serial.println("Matter Node not commissioned yet. Waiting for commissioning.");
|
Serial.println("Matter Node not commissioned yet. Waiting for commissioning.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Serial.println("Matter Node is commissioned and connected to Wi-Fi. Ready for use.");
|
Serial.println("Matter Node is commissioned and connected to the network. Ready for use.");
|
||||||
|
|
||||||
// after commissioning, set initial thermostat parameters
|
// after commissioning, set initial thermostat parameters
|
||||||
// start the thermostat in AUTO mode
|
// start the thermostat in AUTO mode
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2024 Espressif Systems (Shanghai) PTE LTD
|
// Copyright 2025 Espressif Systems (Shanghai) PTE LTD
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
|
|
@ -17,6 +17,10 @@
|
||||||
|
|
||||||
#include <Matter.h>
|
#include <Matter.h>
|
||||||
#include <app/server/Server.h>
|
#include <app/server/Server.h>
|
||||||
|
#if CONFIG_ENABLE_MATTER_OVER_THREAD
|
||||||
|
#include "esp_openthread_types.h"
|
||||||
|
#include "platform/ESP32/OpenthreadLauncher.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
using namespace esp_matter;
|
using namespace esp_matter;
|
||||||
using namespace esp_matter::attribute;
|
using namespace esp_matter::attribute;
|
||||||
|
|
@ -151,6 +155,18 @@ void ArduinoMatter::begin() {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if CONFIG_ENABLE_MATTER_OVER_THREAD
|
||||||
|
// Set OpenThread platform config
|
||||||
|
esp_openthread_platform_config_t config;
|
||||||
|
memset(&config, 0, sizeof(esp_openthread_platform_config_t));
|
||||||
|
config.radio_config.radio_mode = RADIO_MODE_NATIVE;
|
||||||
|
config.host_config.host_connection_mode = HOST_CONNECTION_MODE_NONE;
|
||||||
|
config.port_config.storage_partition_name = "nvs";
|
||||||
|
config.port_config.netif_queue_size = 10;
|
||||||
|
config.port_config.task_queue_size = 10;
|
||||||
|
set_openthread_platform_config(&config);
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Matter start */
|
/* Matter start */
|
||||||
esp_err_t err = esp_matter::start(app_event_cb);
|
esp_err_t err = esp_matter::start(app_event_cb);
|
||||||
if (err != ESP_OK) {
|
if (err != ESP_OK) {
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2024 Espressif Systems (Shanghai) PTE LTD
|
// Copyright 2025 Espressif Systems (Shanghai) PTE LTD
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
|
|
|
||||||
139
libraries/Matter/src/MatterEndPoint.cpp
Normal file
139
libraries/Matter/src/MatterEndPoint.cpp
Normal file
|
|
@ -0,0 +1,139 @@
|
||||||
|
// Copyright 2025 Espressif Systems (Shanghai) PTE LTD
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
#include <sdkconfig.h>
|
||||||
|
#ifdef CONFIG_ESP_MATTER_ENABLE_DATA_MODEL
|
||||||
|
|
||||||
|
#include <MatterEndPoint.h>
|
||||||
|
|
||||||
|
uint16_t MatterEndPoint::secondary_network_endpoint_id = 0;
|
||||||
|
|
||||||
|
// This function is called to create a secondary network interface endpoint.
|
||||||
|
// It can be used for devices that support multiple network interfaces,
|
||||||
|
// such as Ethernet, Thread and Wi-Fi.
|
||||||
|
bool MatterEndPoint::createSecondaryNetworkInterface() {
|
||||||
|
if (secondary_network_endpoint_id != 0) {
|
||||||
|
log_v("Secondary network interface endpoint already exists with ID %d", secondary_network_endpoint_id);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// Create a secondary network interface endpoint
|
||||||
|
endpoint::secondary_network_interface::config_t secondary_network_interface_config;
|
||||||
|
secondary_network_interface_config.network_commissioning.feature_map = chip::to_underlying(
|
||||||
|
//chip::app::Clusters::NetworkCommissioning::Feature::kWiFiNetworkInterface) |
|
||||||
|
chip::app::Clusters::NetworkCommissioning::Feature::kThreadNetworkInterface
|
||||||
|
);
|
||||||
|
endpoint_t *endpoint = endpoint::secondary_network_interface::create(node::get(), &secondary_network_interface_config, ENDPOINT_FLAG_NONE, nullptr);
|
||||||
|
if (endpoint == nullptr) {
|
||||||
|
log_e("Failed to create secondary network interface endpoint");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
secondary_network_endpoint_id = endpoint::get_id(endpoint);
|
||||||
|
log_i("Secondary Network Interface created with endpoint_id %d", secondary_network_endpoint_id);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16_t MatterEndPoint::getSecondaryNetworkEndPointId() {
|
||||||
|
return secondary_network_endpoint_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16_t MatterEndPoint::getEndPointId() {
|
||||||
|
return endpoint_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
void MatterEndPoint::setEndPointId(uint16_t ep) {
|
||||||
|
if (ep == 0) {
|
||||||
|
log_e("Invalid endpoint ID");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
log_v("Endpoint ID set to %d", ep);
|
||||||
|
|
||||||
|
endpoint_id = ep;
|
||||||
|
}
|
||||||
|
|
||||||
|
// helper functions for attribute manipulation
|
||||||
|
esp_matter::attribute_t *MatterEndPoint::getAttribute(uint32_t cluster_id, uint32_t attribute_id) {
|
||||||
|
if (endpoint_id == 0) {
|
||||||
|
log_e("Endpoint ID is not set");
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
endpoint_t *endpoint = endpoint::get(node::get(), endpoint_id);
|
||||||
|
if (endpoint == nullptr) {
|
||||||
|
log_e("Endpoint [%d] not found", endpoint_id);
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
cluster_t *cluster = cluster::get(endpoint, cluster_id);
|
||||||
|
if (cluster == nullptr) {
|
||||||
|
log_e("Cluster [%d] not found", cluster_id);
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
esp_matter::attribute_t *attribute = attribute::get(cluster, attribute_id);
|
||||||
|
if (attribute == nullptr) {
|
||||||
|
log_e("Attribute [%d] not found", attribute_id);
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
return attribute;
|
||||||
|
}
|
||||||
|
|
||||||
|
// get the value of an attribute from its cluster id and attribute it
|
||||||
|
bool MatterEndPoint::getAttributeVal(uint32_t cluster_id, uint32_t attribute_id, esp_matter_attr_val_t *attrVal) {
|
||||||
|
esp_matter::attribute_t *attribute = getAttribute(cluster_id, attribute_id);
|
||||||
|
if (attribute == nullptr) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (attribute::get_val(attribute, attrVal) == ESP_OK) {
|
||||||
|
log_v("GET_VAL Success for cluster %d, attribute %d with value %d", cluster_id, attribute_id, attrVal->val.u32);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
log_e("GET_VAL FAILED! for cluster %d, attribute %d with value %d", cluster_id, attribute_id, attrVal->val.u32);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// set the value of an attribute from its cluster id and attribute it
|
||||||
|
bool MatterEndPoint::setAttributeVal(uint32_t cluster_id, uint32_t attribute_id, esp_matter_attr_val_t *attrVal) {
|
||||||
|
esp_matter::attribute_t *attribute = getAttribute(cluster_id, attribute_id);
|
||||||
|
if (attribute == nullptr) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (attribute::set_val(attribute, attrVal) == ESP_OK) {
|
||||||
|
log_v("SET_VAL Success for cluster %d, attribute %d with value %d", cluster_id, attribute_id, attrVal->val.u32);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
log_e("SET_VAL FAILED! for cluster %d, attribute %d with value %d", cluster_id, attribute_id, attrVal->val.u32);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// update the value of an attribute from its cluster id and attribute it
|
||||||
|
bool MatterEndPoint::updateAttributeVal(uint32_t cluster_id, uint32_t attribute_id, esp_matter_attr_val_t *attrVal) {
|
||||||
|
if (attribute::update(endpoint_id, cluster_id, attribute_id, attrVal) == ESP_OK) {
|
||||||
|
log_v("Update Success for cluster %d, attribute %d with value %d", cluster_id, attribute_id, attrVal->val.u32);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
log_e("Update FAILED! for cluster %d, attribute %d with value %d", cluster_id, attribute_id, attrVal->val.u32);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// This callback is invoked when clients interact with the Identify Cluster of an specific endpoint.
|
||||||
|
bool MatterEndPoint::endpointIdentifyCB(uint16_t endpoint_id, bool identifyIsEnabled) {
|
||||||
|
if (_onEndPointIdentifyCB) {
|
||||||
|
return _onEndPointIdentifyCB(identifyIsEnabled);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// User callback for the Identify Cluster functionality
|
||||||
|
void MatterEndPoint::onIdentify(EndPointIdentifyCB onEndPointIdentifyCB) {
|
||||||
|
_onEndPointIdentifyCB = onEndPointIdentifyCB;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* CONFIG_ESP_MATTER_ENABLE_DATA_MODEL */
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2024 Espressif Systems (Shanghai) PTE LTD
|
// Copyright 2025 Espressif Systems (Shanghai) PTE LTD
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
|
|
@ -16,7 +16,8 @@
|
||||||
#include <sdkconfig.h>
|
#include <sdkconfig.h>
|
||||||
#ifdef CONFIG_ESP_MATTER_ENABLE_DATA_MODEL
|
#ifdef CONFIG_ESP_MATTER_ENABLE_DATA_MODEL
|
||||||
|
|
||||||
#include <Matter.h>
|
#include <Arduino.h>
|
||||||
|
#include <esp_matter.h>
|
||||||
#include <functional>
|
#include <functional>
|
||||||
|
|
||||||
using namespace esp_matter;
|
using namespace esp_matter;
|
||||||
|
|
@ -29,93 +30,47 @@ public:
|
||||||
ATTR_UPDATE = true
|
ATTR_UPDATE = true
|
||||||
};
|
};
|
||||||
|
|
||||||
uint16_t getEndPointId() {
|
using EndPointIdentifyCB = std::function<bool(bool)>;
|
||||||
return endpoint_id;
|
|
||||||
}
|
|
||||||
|
|
||||||
void setEndPointId(uint16_t ep) {
|
|
||||||
endpoint_id = ep;
|
|
||||||
}
|
|
||||||
|
|
||||||
// helper functions for attribute manipulation
|
|
||||||
esp_matter::attribute_t *getAttribute(uint32_t cluster_id, uint32_t attribute_id) {
|
|
||||||
if (endpoint_id == 0) {
|
|
||||||
log_e("Endpoint ID is not set");
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
endpoint_t *endpoint = endpoint::get(node::get(), endpoint_id);
|
|
||||||
if (endpoint == nullptr) {
|
|
||||||
log_e("Endpoint [%d] not found", endpoint_id);
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
cluster_t *cluster = cluster::get(endpoint, cluster_id);
|
|
||||||
if (cluster == nullptr) {
|
|
||||||
log_e("Cluster [%d] not found", cluster_id);
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
esp_matter::attribute_t *attribute = attribute::get(cluster, attribute_id);
|
|
||||||
if (attribute == nullptr) {
|
|
||||||
log_e("Attribute [%d] not found", attribute_id);
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
return attribute;
|
|
||||||
}
|
|
||||||
|
|
||||||
// get the value of an attribute from its cluster id and attribute it
|
|
||||||
bool getAttributeVal(uint32_t cluster_id, uint32_t attribute_id, esp_matter_attr_val_t *attrVal) {
|
|
||||||
esp_matter::attribute_t *attribute = getAttribute(cluster_id, attribute_id);
|
|
||||||
if (attribute == nullptr) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (attribute::get_val(attribute, attrVal) == ESP_OK) {
|
|
||||||
log_v("GET_VAL Success for cluster %d, attribute %d with value %d", cluster_id, attribute_id, attrVal->val.u32);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
log_e("GET_VAL FAILED! for cluster %d, attribute %d with value %d", cluster_id, attribute_id, attrVal->val.u32);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// set the value of an attribute from its cluster id and attribute it
|
|
||||||
bool setAttributeVal(uint32_t cluster_id, uint32_t attribute_id, esp_matter_attr_val_t *attrVal) {
|
|
||||||
esp_matter::attribute_t *attribute = getAttribute(cluster_id, attribute_id);
|
|
||||||
if (attribute == nullptr) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (attribute::set_val(attribute, attrVal) == ESP_OK) {
|
|
||||||
log_v("SET_VAL Success for cluster %d, attribute %d with value %d", cluster_id, attribute_id, attrVal->val.u32);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
log_e("SET_VAL FAILED! for cluster %d, attribute %d with value %d", cluster_id, attribute_id, attrVal->val.u32);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// update the value of an attribute from its cluster id and attribute it
|
|
||||||
bool updateAttributeVal(uint32_t cluster_id, uint32_t attribute_id, esp_matter_attr_val_t *attrVal) {
|
|
||||||
if (attribute::update(endpoint_id, cluster_id, attribute_id, attrVal) == ESP_OK) {
|
|
||||||
log_v("Update Success for cluster %d, attribute %d with value %d", cluster_id, attribute_id, attrVal->val.u32);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
log_e("Update FAILED! for cluster %d, attribute %d with value %d", cluster_id, attribute_id, attrVal->val.u32);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// this function is called by Matter internal event processor. It could be overwritten by the application, if necessary.
|
// this function is called by Matter internal event processor. It could be overwritten by the application, if necessary.
|
||||||
virtual bool attributeChangeCB(uint16_t endpoint_id, uint32_t cluster_id, uint32_t attribute_id, esp_matter_attr_val_t *val) = 0;
|
virtual bool attributeChangeCB(uint16_t endpoint_id, uint32_t cluster_id, uint32_t attribute_id, esp_matter_attr_val_t *val) = 0;
|
||||||
|
|
||||||
|
// This function is called to create a secondary network interface endpoint.
|
||||||
|
// It can be used for devices that support multiple network interfaces,
|
||||||
|
// such as Ethernet, Thread and Wi-Fi.
|
||||||
|
bool createSecondaryNetworkInterface();
|
||||||
|
|
||||||
|
// This function is called to get the secondary network interface endpoint ID.
|
||||||
|
uint16_t getSecondaryNetworkEndPointId();
|
||||||
|
|
||||||
|
// This function is called to get the current Matter Accessory endpoint ID.
|
||||||
|
uint16_t getEndPointId();
|
||||||
|
|
||||||
|
// This function is called to set the current Matter Accessory endpoint ID.
|
||||||
|
void setEndPointId(uint16_t ep);
|
||||||
|
|
||||||
|
// helper functions for attribute manipulation
|
||||||
|
esp_matter::attribute_t *getAttribute(uint32_t cluster_id, uint32_t attribute_id);
|
||||||
|
|
||||||
|
// get the value of an attribute from its cluster id and
|
||||||
|
bool getAttributeVal(uint32_t cluster_id, uint32_t attribute_id, esp_matter_attr_val_t *attrVal);
|
||||||
|
|
||||||
|
// set the value of an attribute from its cluster id and
|
||||||
|
bool setAttributeVal(uint32_t cluster_id, uint32_t attribute_id, esp_matter_attr_val_t *attrVal);
|
||||||
|
|
||||||
|
// update the value of an attribute from its cluster id
|
||||||
|
bool updateAttributeVal(uint32_t cluster_id, uint32_t attribute_id, esp_matter_attr_val_t *attrVal);
|
||||||
|
|
||||||
// This callback is invoked when clients interact with the Identify Cluster of an specific endpoint.
|
// This callback is invoked when clients interact with the Identify Cluster of an specific endpoint.
|
||||||
bool endpointIdentifyCB(uint16_t endpoint_id, bool identifyIsEnabled) {
|
bool endpointIdentifyCB(uint16_t endpoint_id, bool identifyIsEnabled);
|
||||||
if (_onEndPointIdentifyCB) {
|
|
||||||
return _onEndPointIdentifyCB(identifyIsEnabled);
|
// User callback for the Identify Cluster functionality
|
||||||
}
|
void onIdentify(EndPointIdentifyCB onEndPointIdentifyCB);
|
||||||
return true;
|
|
||||||
}
|
|
||||||
// User callaback for the Identify Cluster functionality
|
|
||||||
using EndPointIdentifyCB = std::function<bool(bool)>;
|
|
||||||
void onIdentify(EndPointIdentifyCB onEndPointIdentifyCB) {
|
|
||||||
_onEndPointIdentifyCB = onEndPointIdentifyCB;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
// used for secondary network interface endpoints
|
||||||
|
static uint16_t secondary_network_endpoint_id;
|
||||||
|
// main endpoint ID
|
||||||
uint16_t endpoint_id = 0;
|
uint16_t endpoint_id = 0;
|
||||||
EndPointIdentifyCB _onEndPointIdentifyCB = nullptr;
|
EndPointIdentifyCB _onEndPointIdentifyCB = nullptr;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2024 Espressif Systems (Shanghai) PTE LTD
|
// Copyright 2025 Espressif Systems (Shanghai) PTE LTD
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2024 Espressif Systems (Shanghai) PTE LTD
|
// Copyright 2025 Espressif Systems (Shanghai) PTE LTD
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2024 Espressif Systems (Shanghai) PTE LTD
|
// Copyright 2025 Espressif Systems (Shanghai) PTE LTD
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2024 Espressif Systems (Shanghai) PTE LTD
|
// Copyright 2025 Espressif Systems (Shanghai) PTE LTD
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2024 Espressif Systems (Shanghai) PTE LTD
|
// Copyright 2025 Espressif Systems (Shanghai) PTE LTD
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
|
|
@ -60,6 +60,7 @@ bool MatterContactSensor::begin(bool _contactState) {
|
||||||
contactState = _contactState;
|
contactState = _contactState;
|
||||||
setEndPointId(endpoint::get_id(endpoint));
|
setEndPointId(endpoint::get_id(endpoint));
|
||||||
log_i("Contact Sensor created with endpoint_id %d", getEndPointId());
|
log_i("Contact Sensor created with endpoint_id %d", getEndPointId());
|
||||||
|
|
||||||
started = true;
|
started = true;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2024 Espressif Systems (Shanghai) PTE LTD
|
// Copyright 2025 Espressif Systems (Shanghai) PTE LTD
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2024 Espressif Systems (Shanghai) PTE LTD
|
// Copyright 2025 Espressif Systems (Shanghai) PTE LTD
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2024 Espressif Systems (Shanghai) PTE LTD
|
// Copyright 2025 Espressif Systems (Shanghai) PTE LTD
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2024 Espressif Systems (Shanghai) PTE LTD
|
// Copyright 2025 Espressif Systems (Shanghai) PTE LTD
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2024 Espressif Systems (Shanghai) PTE LTD
|
// Copyright 2025 Espressif Systems (Shanghai) PTE LTD
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2024 Espressif Systems (Shanghai) PTE LTD
|
// Copyright 2025 Espressif Systems (Shanghai) PTE LTD
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
|
|
@ -110,6 +110,7 @@ bool MatterFan::begin(uint8_t percent, FanMode_t fanMode, FanModeSequence_t fanM
|
||||||
|
|
||||||
setEndPointId(endpoint::get_id(endpoint));
|
setEndPointId(endpoint::get_id(endpoint));
|
||||||
log_i("Fan created with endpoint_id %d", getEndPointId());
|
log_i("Fan created with endpoint_id %d", getEndPointId());
|
||||||
|
|
||||||
started = true;
|
started = true;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2024 Espressif Systems (Shanghai) PTE LTD
|
// Copyright 2025 Espressif Systems (Shanghai) PTE LTD
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2024 Espressif Systems (Shanghai) PTE LTD
|
// Copyright 2025 Espressif Systems (Shanghai) PTE LTD
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
|
|
@ -79,6 +79,7 @@ bool MatterGenericSwitch::begin() {
|
||||||
|
|
||||||
setEndPointId(endpoint::get_id(endpoint));
|
setEndPointId(endpoint::get_id(endpoint));
|
||||||
log_i("Generic Switch created with endpoint_id %d", getEndPointId());
|
log_i("Generic Switch created with endpoint_id %d", getEndPointId());
|
||||||
|
|
||||||
started = true;
|
started = true;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2024 Espressif Systems (Shanghai) PTE LTD
|
// Copyright 2025 Espressif Systems (Shanghai) PTE LTD
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2024 Espressif Systems (Shanghai) PTE LTD
|
// Copyright 2025 Espressif Systems (Shanghai) PTE LTD
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
|
|
@ -68,6 +68,7 @@ bool MatterHumiditySensor::begin(uint16_t _rawHumidity) {
|
||||||
rawHumidity = _rawHumidity;
|
rawHumidity = _rawHumidity;
|
||||||
setEndPointId(endpoint::get_id(endpoint));
|
setEndPointId(endpoint::get_id(endpoint));
|
||||||
log_i("Humidity Sensor created with endpoint_id %d", getEndPointId());
|
log_i("Humidity Sensor created with endpoint_id %d", getEndPointId());
|
||||||
|
|
||||||
started = true;
|
started = true;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2024 Espressif Systems (Shanghai) PTE LTD
|
// Copyright 2025 Espressif Systems (Shanghai) PTE LTD
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2024 Espressif Systems (Shanghai) PTE LTD
|
// Copyright 2025 Espressif Systems (Shanghai) PTE LTD
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
|
|
@ -71,6 +71,7 @@ bool MatterOccupancySensor::begin(bool _occupancyState, OccupancySensorType_t _o
|
||||||
occupancyState = _occupancyState;
|
occupancyState = _occupancyState;
|
||||||
setEndPointId(endpoint::get_id(endpoint));
|
setEndPointId(endpoint::get_id(endpoint));
|
||||||
log_i("Occupancy Sensor created with endpoint_id %d", getEndPointId());
|
log_i("Occupancy Sensor created with endpoint_id %d", getEndPointId());
|
||||||
|
|
||||||
started = true;
|
started = true;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2024 Espressif Systems (Shanghai) PTE LTD
|
// Copyright 2025 Espressif Systems (Shanghai) PTE LTD
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2024 Espressif Systems (Shanghai) PTE LTD
|
// Copyright 2025 Espressif Systems (Shanghai) PTE LTD
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
|
|
@ -79,6 +79,7 @@ bool MatterOnOffLight::begin(bool initialState) {
|
||||||
|
|
||||||
setEndPointId(endpoint::get_id(endpoint));
|
setEndPointId(endpoint::get_id(endpoint));
|
||||||
log_i("On-Off Light created with endpoint_id %d", getEndPointId());
|
log_i("On-Off Light created with endpoint_id %d", getEndPointId());
|
||||||
|
|
||||||
started = true;
|
started = true;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2024 Espressif Systems (Shanghai) PTE LTD
|
// Copyright 2025 Espressif Systems (Shanghai) PTE LTD
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2024 Espressif Systems (Shanghai) PTE LTD
|
// Copyright 2025 Espressif Systems (Shanghai) PTE LTD
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
|
|
@ -78,6 +78,7 @@ bool MatterOnOffPlugin::begin(bool initialState) {
|
||||||
onOffState = initialState;
|
onOffState = initialState;
|
||||||
setEndPointId(endpoint::get_id(endpoint));
|
setEndPointId(endpoint::get_id(endpoint));
|
||||||
log_i("On-Off Plugin created with endpoint_id %d", getEndPointId());
|
log_i("On-Off Plugin created with endpoint_id %d", getEndPointId());
|
||||||
|
|
||||||
started = true;
|
started = true;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2024 Espressif Systems (Shanghai) PTE LTD
|
// Copyright 2025 Espressif Systems (Shanghai) PTE LTD
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2024 Espressif Systems (Shanghai) PTE LTD
|
// Copyright 2025 Espressif Systems (Shanghai) PTE LTD
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
|
|
@ -61,6 +61,7 @@ bool MatterPressureSensor::begin(int16_t _rawPressure) {
|
||||||
rawPressure = _rawPressure;
|
rawPressure = _rawPressure;
|
||||||
setEndPointId(endpoint::get_id(endpoint));
|
setEndPointId(endpoint::get_id(endpoint));
|
||||||
log_i("Pressure Sensor created with endpoint_id %d", getEndPointId());
|
log_i("Pressure Sensor created with endpoint_id %d", getEndPointId());
|
||||||
|
|
||||||
started = true;
|
started = true;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2024 Espressif Systems (Shanghai) PTE LTD
|
// Copyright 2025 Espressif Systems (Shanghai) PTE LTD
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2024 Espressif Systems (Shanghai) PTE LTD
|
// Copyright 2025 Espressif Systems (Shanghai) PTE LTD
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
|
|
@ -61,6 +61,7 @@ bool MatterTemperatureSensor::begin(int16_t _rawTemperature) {
|
||||||
rawTemperature = _rawTemperature;
|
rawTemperature = _rawTemperature;
|
||||||
setEndPointId(endpoint::get_id(endpoint));
|
setEndPointId(endpoint::get_id(endpoint));
|
||||||
log_i("Temperature Sensor created with endpoint_id %d", getEndPointId());
|
log_i("Temperature Sensor created with endpoint_id %d", getEndPointId());
|
||||||
|
|
||||||
started = true;
|
started = true;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2024 Espressif Systems (Shanghai) PTE LTD
|
// Copyright 2025 Espressif Systems (Shanghai) PTE LTD
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2024 Espressif Systems (Shanghai) PTE LTD
|
// Copyright 2025 Espressif Systems (Shanghai) PTE LTD
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
|
|
@ -202,6 +202,7 @@ bool MatterThermostat::begin(ControlSequenceOfOperation_t _controlSequence, Ther
|
||||||
|
|
||||||
setEndPointId(endpoint::get_id(endpoint));
|
setEndPointId(endpoint::get_id(endpoint));
|
||||||
log_i("Thermostat created with endpoint_id %d", getEndPointId());
|
log_i("Thermostat created with endpoint_id %d", getEndPointId());
|
||||||
|
|
||||||
started = true;
|
started = true;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2024 Espressif Systems (Shanghai) PTE LTD
|
// Copyright 2025 Espressif Systems (Shanghai) PTE LTD
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue