From 46f55887cd3f11dfc16b7afc13c2195df44c6ab9 Mon Sep 17 00:00:00 2001 From: SuGlider Date: Sat, 13 Dec 2025 14:36:54 -0300 Subject: [PATCH 01/19] feat(matter): adds ways to check matter features in execution time --- libraries/Matter/src/Matter.cpp | 60 ++++++++++++++++++++++++++++++++- libraries/Matter/src/Matter.h | 8 +++++ 2 files changed, 67 insertions(+), 1 deletion(-) diff --git a/libraries/Matter/src/Matter.cpp b/libraries/Matter/src/Matter.cpp index 5ddacc1622c..c486599532e 100644 --- a/libraries/Matter/src/Matter.cpp +++ b/libraries/Matter/src/Matter.cpp @@ -175,9 +175,67 @@ void ArduinoMatter::begin() { } } +// Network and Commissioning Capability Queries +bool ArduinoMatter::isWiFiStationEnabled() { + // Check hardware support (SOC capabilities) AND Matter configuration +#ifdef SOC_WIFI_SUPPORTED + #if CHIP_DEVICE_CONFIG_ENABLE_WIFI_STATION + return true; + #else + return false; + #endif +#else + return false; +#endif +} + +bool ArduinoMatter::isWiFiAccessPointEnabled() { + // Check hardware support (SOC capabilities) AND Matter configuration +#ifdef SOC_WIFI_SUPPORTED + #if CHIP_DEVICE_CONFIG_ENABLE_WIFI_AP + return true; + #else + return false; + #endif +#else + return false; +#endif +} + +bool ArduinoMatter::isThreadEnabled() { + // Check hardware support (SOC capabilities) AND Matter configuration + // Thread requires IEEE 802.15.4 radio support (ESP32-H2, ESP32-C6, ESP32-C5) + // For now, we check Matter configuration as hardware detection is complex +#if CONFIG_ENABLE_MATTER_OVER_THREAD || CHIP_DEVICE_CONFIG_ENABLE_THREAD + return true; +#else + return false; +#endif +} + +bool ArduinoMatter::isBLECommissioningEnabled() { + // Check hardware support (SOC capabilities) AND Matter/ESP configuration + // BLE commissioning requires: SOC BLE support AND (CHIPoBLE or NimBLE enabled) +#ifdef SOC_BLE_SUPPORTED + #if CONFIG_NETWORK_LAYER_BLE || CONFIG_ENABLE_CHIPOBLE + return true; + #else + // Also check if BLE stack is enabled (Bluedroid or NimBLE) + #if defined(CONFIG_BLUEDROID_ENABLED) || defined(CONFIG_NIMBLE_ENABLED) + return true; + #else + return false; + #endif + #endif +#else + return false; +#endif +} + + #if CHIP_DEVICE_CONFIG_ENABLE_THREAD bool ArduinoMatter::isThreadConnected() { - return false; // Thread Network TBD + return chip::DeviceLayer::ConnectivityMgr().IsThreadAttached(); } #endif diff --git a/libraries/Matter/src/Matter.h b/libraries/Matter/src/Matter.h index 73b3b35de62..8672e4ba785 100644 --- a/libraries/Matter/src/Matter.h +++ b/libraries/Matter/src/Matter.h @@ -179,6 +179,14 @@ class ArduinoMatter { return String("https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT:Y.K9042C00KA0648G00"); } static void begin(); + + // Network and Commissioning Capability Queries + // These methods check both hardware support (SOC capabilities) and Matter configuration + static bool isWiFiStationEnabled(); // Check if WiFi Station mode is supported and enabled + static bool isWiFiAccessPointEnabled(); // Check if WiFi AP mode is supported and enabled + static bool isThreadEnabled(); // Check if Thread network is supported and enabled + static bool isBLECommissioningEnabled(); // Check if BLE commissioning is supported and enabled + static bool isDeviceCommissioned(); #if CHIP_DEVICE_CONFIG_ENABLE_WIFI_STATION static bool isWiFiConnected(); From cc06c3e5e1c3d80cf3355687300f5263477f198d Mon Sep 17 00:00:00 2001 From: SuGlider Date: Sun, 14 Dec 2025 17:20:24 -0300 Subject: [PATCH 02/19] feat(matter): necesary IDE options to build matter --- docs/_static/matter_erase_flash.png | Bin 0 -> 1493 bytes docs/_static/matter_partition_scheme.png | Bin 0 -> 3329 bytes docs/en/matter/matter.rst | 73 +++++++++++++++++++++++ 3 files changed, 73 insertions(+) create mode 100644 docs/_static/matter_erase_flash.png create mode 100644 docs/_static/matter_partition_scheme.png diff --git a/docs/_static/matter_erase_flash.png b/docs/_static/matter_erase_flash.png new file mode 100644 index 0000000000000000000000000000000000000000..621fbe9a5b2fb1c2b38e6a60af4c6ab00adc07a4 GIT binary patch literal 1493 zcmb8v`8yN{7zgkfE5@~rSV`<0*^pt(7K);oMy?Dwa$l`$6pApE=5R637QifwdFd7C1CxNSV{y*rkiHRNM zMb&h$AYojv8*aSE1oo)YLN0NZVXQ50&JM~|?1_rix;ZW|F*kD3OHAV3oipasKB;i` zt_bam1i1-nyLU)to}$348};~z#r~dz@ys;^Rj(Y|mI6F(gvWI?5M>-|U_}tOQ-!ux zrh5N$G1s=Y=a5LGh|N|qGf~r(8*G1Uh_K;zKOaV5FB_C)nO}^$AgBkAMk{3879>$g zn}JCh-_K`J3$j!{O`>YQ_aHdoY%X!<9k_NZ9?XUulT{R+hd?0W$w`0ZB0fKuKv3?t zpX2EH|GHpwkMU3XH8scQ-4)ad>m_wxt0#t~oM&LvtN1lzn2pd~8% znn~nr;uSNOP5Ku{iD6<-XI`#9i{`9J>AuN6Q__0N%@Q;?v1?K1{oR4b5-UwZ`Mrya zWz9_H3WviXHk&Vz+}tT2r}8DNz1|uEpT<1doElD!^RLofNv_K!TXB&obuK>Z!An%9 z^d8}cuJO0yk|1}>&7$33rSw&ilr-5UxdiRo7oDdEn*NA3u9Zues2#T|Ykpmzs0`Qn z85RZ-jY7gtmNS3hd#S$>HzG=p@`BKTj6wk#O07ye9Fz=fwp%7DL$2!A%t{p);&W~1 z?mH~e*F?)tPMT-c*Bd9s$H!AK0eVw@K>?7^yCOZr%`nr%B z@*=6?Yb(*<0+6T#r`x9ux!xrRZ5-(m`m&OBc&_1TE-Lc@ko6dTCJ0%>s zYY7_?&?L;>V&q5eNwh2VK^jt<`s_N5FuB9XvZ` zv=p&(VzGFa!5f}R(a7NnOEkV9aMx&{B?CU$sG17aI179MbyWc8JbRDopD%`P*<(oL z!|<>?vej7KFoSS!Gr$1CR{A^M!<~}SNMHUFSty7;SP6bKk3I3_zQ2@k%Mp#TUa2!D2<(Seo|;yY#As+#Ua5ay{#?N(#fx)fHKAS^x9gg zBgd^N_mXL^u6Ea#Egbh$$1{;K+1*#hh3m2`y%2~nEfb$g+#1xY{ zSNHPLiI~wnoSo|IHS8o-cPadQ8#rB?*Nem!s!iCKT4Lkk8Wqiy>Q}WQ4{nn@&2Eve zbY49h*~_c7BRFizad2d9)xbO7`iM4l{LL}}FGjabo_pC8Rq@wG#rW&Iyx&^wi<3NO z19qw^=Eqdu@`HW%+|Z-QO7SVoi|>NGm<6oz5K|A#Ss3w|JDpz{U}k;|S}KBg$Os|t z{cs@Rcp*6BbSehh`3en#2TPGD=}!9s!2+DLu_Q3Yi2Pp=OQeP1-$kA6Ir!56YYQBf If$>ZE7lLuXh5!Hn literal 0 HcmV?d00001 diff --git a/docs/_static/matter_partition_scheme.png b/docs/_static/matter_partition_scheme.png new file mode 100644 index 0000000000000000000000000000000000000000..f835e8b72685bc33430ae84e794d77a83c87c140 GIT binary patch literal 3329 zcma)9cT`h(77mKi!3av1P!y380t1B5q?bSd0fB);0tr<}NCF8+8L5i2p*LYHj9BO> z-5^~f1Q3v-A~IBm5&?nGHq3fvchA{9Xa9Kb-S6J}`|f?;AMbqcwjIKpk6Vlz008h= zT9{k`0NC!aVmZ!}tUKs_yd>+vM!aHf1gPkjSY!cqA43~M0H8XJXAgaXg}Lw+u0#NU zzvJj)>%o;_SO*gQ99>8*Hr6mNT%ZaXgY(3yPy+F+ZU8{nfPzPR1z<@aPppq$ke>W% zGgThshtZRF*052v!5d?J{Vc)>Sch5D`Yv zllhAn#)^;9U>SW~0>&G5#l-AK2Mg)R_>xF?7#K_@lU2y-Dma1<7^1DM4OUeHtEnlo zI+TfFK_oOqIfy9xgTMq!^dk7-Nq)E>&=Dcp6Bk0#lL-m&!@#`J-Wr}5jE1r&S{ApzkDM;}Xpw(gO#h!5*1NKzzm++X>2GzhK`cqhEbWxC@^}CMp5vA#hK>}} za-r=VadWZ65{80wqWcTUUd?;*>0Tg7yARhqNVgS1ZY73-l7D29h4MaV9v{7qcwjua zF6ympp)I__v+)ds?bW~(3~+TyT7cN4d<6Cn(|(${?Tyu3Jq{~-;)rzmxPPz|IW;u8 zv$LZe1LBOSVhbAPVK+R*J{=u@EBz<|F^Oa0xD;s_InEf+bzYz}tBUrz#mU9$7dJMs zIK^%_CL&|RLhaqBfTvl_nhF2ys3V2(#k6%{!sP*H*TT)%8B7TqtfD^5(zCCP0of#| zlr_s#pA(vq^1aGuFnauCba>3yj_uWFB5DtufrTriUq_Ygn%)UP0KD?Dx#I)zA}xF4g`VLfK9!Ri z>?!)5b-0C48n#QlB~L7TSvaAN?zEZP^I1nPuXIMhxII3Fs&~2P>=IPDFlAhf4&^a! zUlYNWQu%prc*Pz*tZoN%PV`7@2G_T3PeKuZ8=F_F-kpe?__L$PcZ}^tQqA2z50rk- zYZh>0S2bJxbhBq_erxc6;rci#ZQNB8+|c~gLHed|aRxkJ<|qsZXS+CRitXoQTW|=P(DC?Sza7S>*`x^ zo~)g3vXM?cUiZ{)w&rxsqlJPpg? z+8AZiTFKlZP09{(*}vgzROFxPhW%yk4O% z%HO%26(v5F4(KxDLz?X_(;Xx4UfQZ3zMzJ5#8xT1=u5rrJGP~Eq3xmo&A(q@=sCU> zZpNz{lp?@Ye5M;Vs&6)~#OIeMxYB4Gq?NGxWm%Hoqs5br)H?equz~y)4V-v7qNkmr z&GBJcHY-GMa{+j1{aGA$CG`MywW$hPeg@Mc08Ky~Zk*XEn&C=9$)ecYp zHTYGMe$rZd`kK@h6lJ{_`beq0s!`GXYA&~3noM1-T>)Y-z9cOIYGHKD!K|pR)h_1? zw8)VDc(#@|%KSl%ovi}<*e6`_xj!GxN~58%1YckM_W55_dGi}(VTkm%21StKhs{ea znI!u-#fr1v^9N}0ayuIrHZ=n~7Yu83Z09}$Q`F#*ulB6uPAV}}%1z>P!~>$+#{$%| z6EcCyW-!R77syMmJ0qp|Q@?)smD?<8o$qG;5YC;@UzSxnv^R_(^buaR~NZt;@_?c26PyIEoOrKX55 z*pghpM|FvhA#Qt5I=?d0m<4XDFzA66T(8N+;14`qmRxX2Vu-eGQ2JpIUD*pSjdWWA z`lL;-G*6c5+Q(p{+jN=4m!sEG#I=I(Gu@k(Cfx;!YX9EwIdfCkOwOO=6f%qC~AoLxWO8reAZq6Vb?6|E*Xy(Wpb<&Qz0ee}BJA zS!Lt%pXhS#ol?@^Xpm>;}lCsv-+#YhQNmeE}eWPx&A0v@|(@`xp(Q zhQX@$7I#n9g|b zj6iYj6Ye47F)kE;j(67FPWZ&MaUI>#TN~M(=k;8w5K5aT%-u3L znz+HJmd|Tz>DQw7vl*1PZn#z_T+LP1*H*a`m>~1PBL?0Ti#ogwi9t6oNFbzqaLZ-tQ_Zr!I$lnTA<1Jt4!JGJK|Wa>(g z8+W>HCS;_?p$QpD2|akH42BOP{e~hf?8Mx^fH(yd!%ZZ&0!|@o0q2M zi0WO-lOv~2)EflO$)?alaoL=5#opD6aQ)Y(#rp#|PNTTrd#$eVlas%U#v7z@Z8*3$ zt7M;~X3QjCEJ<-QfHV=-1SKA3McUN?xc9*qQrl|Bu92HrK(s>Uy z%JGD%5Cqv2b?*&t&n60}xX$wnTicwS2+nvg3T}*ik!7B>I*}>yuDa%%gH>1R!Tq)5 zcv$iD-1I}{y?FRQ!`#y08~5zD+uEtIwNle_=Gn@_uY}&wDx^H-ryFQ*E6*m;s&pO6 zLj*^r|5zyS=jWWTG*+(k2@i&N)j z-r4&7Z)X|1#_gx= z@gh^wYZa%&ny>P{6#QJie&~59FA{xu_?on5^m)&|mH9P#qW?15V45x~Bj;}YOq3*( zQ2ASR+U75apX4H*58G3)w+5S~fRW6|JM|Y@xLNM6T!b1?)J!8uH~Sl&8cqA*_$m%P mj%*}I$?*R-hX2b`9-hE?2|v`_5IXwV0a%(MOe%~#V*UXHk00Ft literal 0 HcmV?d00001 diff --git a/docs/en/matter/matter.rst b/docs/en/matter/matter.rst index 69bcf10603c..4c72b3d00e0 100644 --- a/docs/en/matter/matter.rst +++ b/docs/en/matter/matter.rst @@ -16,6 +16,26 @@ The Matter library provides support for creating Matter-compatible devices inclu The Matter library is built on top of `ESP Matter SDK `_ and provides a high-level Arduino-style interface for creating Matter devices. +Building and Flashing Matter Examples +-------------------------------------- + +Before uploading any Matter example sketch, it is necessary to configure the Arduino IDE with the following settings: + +1. **Partition Scheme**: Select **"Huge APP (3MB No OTA/1MB SPIFFS)"** from **Tools > Partition Scheme** menu. + + .. image:: ../_static/matter_partition_scheme.png + :alt: "Partition Scheme: Huge APP (3MB No OTA/1MB SPIFFS)"" Arduino IDE menu option + +2. **Erase Flash**: Enable **"Erase All Flash Before Sketch Upload"** option from **Tools** menu. + + .. image:: ../_static/matter_erase_flash.png + :alt: Erase All Flash Before Sketch Upload: Enabled" Arduino IDE menu option + +These settings are required for the following reasons: + +* **Partition Scheme**: Matter firmware requires a large application partition (3MB) to accommodate the Matter stack and application code. +* **Erase Flash**: Erasing flash is necessary to remove any leftover WiFi or Matter configuration from the NVS (Non-Volatile Storage) partition. Without erasing, previous network credentials, Matter fabric information, or device commissioning data may interfere with the new firmware, causing commissioning failures or connectivity issues. + Matter Protocol Overview ************************ @@ -86,6 +106,10 @@ The ``Matter`` class provides the following key methods: * ``isWi-FiConnected()``: Checks Wi-Fi connection status (if Wi-Fi is enabled) * ``isThreadConnected()``: Checks Thread connection status (if Thread is enabled) * ``isDeviceConnected()``: Checks overall device connectivity +* ``isWiFiStationEnabled()``: Checks if WiFi Station mode is supported and enabled +* ``isWiFiAccessPointEnabled()``: Checks if WiFi AP mode is supported and enabled +* ``isThreadEnabled()``: Checks if Thread network is supported and enabled +* ``isBLECommissioningEnabled()``: Checks if BLE commissioning is supported and enabled * ``decommission()``: Factory resets the device * ``getManualPairingCode()``: Gets the manual pairing code for commissioning * ``getOnboardingQRCodeUrl()``: Gets the QR code URL for commissioning @@ -148,6 +172,55 @@ The library provides specialized endpoint classes for different device types. Ea ep_* +Matter Examples +--------------- + +The Matter library includes a comprehensive set of examples demonstrating various device types and use cases. All examples are available in the `ESP Arduino GitHub repository `_. + +**Basic Examples:** + +* **Matter Minimum** - The smallest code required to create a Matter-compatible device. Ideal starting point for understanding Matter basics. `View on GitHub `_ +* **Matter Status** - Demonstrates how to check enabled Matter features and connectivity status. Implements a basic on/off light and periodically reports capability and connection status. `View on GitHub `_ +* **Matter Events** - Shows how to monitor and handle Matter events. Provides a comprehensive view of all Matter events during device operation. `View on GitHub `_ +* **Matter Commission Test** - Tests Matter commissioning functionality with automatic decommissioning after a 30-second delay for continuous testing cycles. `View on GitHub `_ + +**Lighting Examples:** + +* **Matter On/Off Light** - Creates a Matter-compatible on/off light device with commissioning, device control via smart home ecosystems, and manual control using a physical button with state persistence. `View on GitHub `_ +* **Matter Dimmable Light** - Creates a Matter-compatible dimmable light device with brightness control. `View on GitHub `_ +* **Matter Color Temperature Light** - Creates a Matter-compatible color temperature light device with adjustable color temperature control. `View on GitHub `_ +* **Matter Color Light** - Creates a Matter-compatible color light device with RGB color control (HSV color model). `View on GitHub `_ +* **Matter Enhanced Color Light** - Creates a Matter-compatible enhanced color light with color temperature and brightness control. `View on GitHub `_ +* **Matter Composed Lights** - Creates a Matter node with multiple light endpoints (On/Off Light, Dimmable Light, and Color Light) in a single node. `View on GitHub `_ +* **Matter On Identify** - Implements the Matter Identify cluster callback for an on/off light device, making the LED blink when the device is identified from a Matter app. `View on GitHub `_ + +**Sensor Examples:** + +* **Matter Temperature Sensor** - Creates a Matter-compatible temperature sensor device with sensor data reporting to smart home ecosystems. `View on GitHub `_ +* **Matter Humidity Sensor** - Creates a Matter-compatible humidity sensor device with sensor data reporting. `View on GitHub `_ +* **Matter Pressure Sensor** - Creates a Matter-compatible pressure sensor device with automatic simulation of pressure readings. `View on GitHub `_ +* **Matter Contact Sensor** - Creates a Matter-compatible contact sensor device (open/closed state). `View on GitHub `_ +* **Matter Occupancy Sensor** - Creates a Matter-compatible occupancy sensor device with automatic simulation of occupancy state changes. `View on GitHub `_ +* **Matter Water Leak Detector** - Creates a Matter-compatible water leak detector device with automatic simulation of water leak detection state changes. `View on GitHub `_ +* **Matter Water Freeze Detector** - Creates a Matter-compatible water freeze detector device with automatic simulation of water freeze detection state changes. `View on GitHub `_ +* **Matter Rain Sensor** - Creates a Matter-compatible rain sensor device with automatic simulation of rain detection state changes. `View on GitHub `_ + +**Control Examples:** + +* **Matter Fan** - Creates a Matter-compatible fan device with speed and mode control. `View on GitHub `_ +* **Matter Thermostat** - Creates a Matter-compatible thermostat device with temperature setpoint management and simulated heating/cooling systems with automatic temperature regulation. `View on GitHub `_ +* **Matter Temperature Controlled Cabinet** - Creates a Matter-compatible temperature controlled cabinet device with precise temperature setpoint control with min/max limits (temperature_number mode). `View on GitHub `_ +* **Matter Temperature Controlled Cabinet Levels** - Creates a Matter-compatible temperature controlled cabinet device using predefined temperature levels (temperature_level mode). `View on GitHub `_ +* **Matter On/Off Plugin** - Creates a Matter-compatible on/off plugin unit (power relay) device with state persistence for power control applications. `View on GitHub `_ +* **Matter Dimmable Plugin** - Creates a Matter-compatible dimmable plugin unit (power outlet with level control) device with state persistence for dimmable power control applications. `View on GitHub `_ +* **Matter Smart Button** - Creates a Matter-compatible smart button (generic switch) device that sends button click events to smart home ecosystems and triggers automations. `View on GitHub `_ +* **Matter Window Covering** - Creates a Matter-compatible window covering device with lift and tilt control (blinds, shades) with manual control using a physical button. `View on GitHub `_ +* **Matter Simple Window Blinds** - A minimal example that only controls lift percentage using a single onGoToLiftPercentage() callback. `View on GitHub `_ + +**Advanced Examples:** + +* **Matter Lambda Single Callback Many Endpoints** - Demonstrates how to create multiple Matter endpoints in a single node using a shared lambda function callback with capture for efficient callback handling. `View on GitHub `_ + Common Problems and Issues -------------------------- From b305fb90beb7dafbd200b8369faee6f9e4ccf08a Mon Sep 17 00:00:00 2001 From: SuGlider Date: Sun, 14 Dec 2025 17:21:54 -0300 Subject: [PATCH 03/19] feat(matter): implements Thread connected function and add feature enabled functions --- libraries/Matter/keywords.txt | 8 ++++++-- libraries/Matter/src/Matter.cpp | 21 +++++---------------- libraries/Matter/src/Matter.h | 4 ---- 3 files changed, 11 insertions(+), 22 deletions(-) diff --git a/libraries/Matter/keywords.txt b/libraries/Matter/keywords.txt index 4baaf54f17f..9d1d44f5e04 100644 --- a/libraries/Matter/keywords.txt +++ b/libraries/Matter/keywords.txt @@ -63,10 +63,14 @@ begin KEYWORD2 end KEYWORD2 getManualPairingCode KEYWORD2 getOnboardingQRCodeUrl KEYWORD2 +isBLECommissioningEnabled KEYWORD2 isDeviceCommissioned KEYWORD2 -isWiFiConnected KEYWORD2 -isThreadConnected KEYWORD2 isDeviceConnected KEYWORD2 +isThreadConnected KEYWORD2 +isThreadEnabled KEYWORD2 +isWiFiAccessPointEnabled KEYWORD2 +isWiFiConnected KEYWORD2 +isWiFiStationEnabled KEYWORD2 decommission KEYWORD2 attributeChangeCB KEYWORD2 setOnOff KEYWORD2 diff --git a/libraries/Matter/src/Matter.cpp b/libraries/Matter/src/Matter.cpp index c486599532e..6106e37e331 100644 --- a/libraries/Matter/src/Matter.cpp +++ b/libraries/Matter/src/Matter.cpp @@ -233,31 +233,20 @@ bool ArduinoMatter::isBLECommissioningEnabled() { } -#if CHIP_DEVICE_CONFIG_ENABLE_THREAD -bool ArduinoMatter::isThreadConnected() { - return chip::DeviceLayer::ConnectivityMgr().IsThreadAttached(); -} -#endif - bool ArduinoMatter::isDeviceCommissioned() { return chip::Server::GetInstance().GetFabricTable().FabricCount() > 0; } -#if CHIP_DEVICE_CONFIG_ENABLE_WIFI_STATION bool ArduinoMatter::isWiFiConnected() { return chip::DeviceLayer::ConnectivityMgr().IsWiFiStationConnected(); } -#endif + +bool ArduinoMatter::isThreadConnected() { + return chip::DeviceLayer::ConnectivityMgr().IsThreadAttached(); +} bool ArduinoMatter::isDeviceConnected() { - bool retCode = false; -#if CHIP_DEVICE_CONFIG_ENABLE_THREAD - retCode |= ArduinoMatter::isThreadConnected(); -#endif -#if CHIP_DEVICE_CONFIG_ENABLE_WIFI_STATION - retCode |= ArduinoMatter::isWiFiConnected(); -#endif - return retCode; + return ArduinoMatter::isWiFiConnected() || ArduinoMatter::isThreadConnected(); } void ArduinoMatter::decommission() { diff --git a/libraries/Matter/src/Matter.h b/libraries/Matter/src/Matter.h index 8672e4ba785..83211a8d317 100644 --- a/libraries/Matter/src/Matter.h +++ b/libraries/Matter/src/Matter.h @@ -188,12 +188,8 @@ class ArduinoMatter { static bool isBLECommissioningEnabled(); // Check if BLE commissioning is supported and enabled static bool isDeviceCommissioned(); -#if CHIP_DEVICE_CONFIG_ENABLE_WIFI_STATION static bool isWiFiConnected(); -#endif -#if CHIP_DEVICE_CONFIG_ENABLE_THREAD static bool isThreadConnected(); -#endif static bool isDeviceConnected(); static void decommission(); From 2440c13fea6386d85b8a2807eb2302d7334f9e0e Mon Sep 17 00:00:00 2001 From: SuGlider Date: Sun, 14 Dec 2025 17:24:36 -0300 Subject: [PATCH 04/19] feat(matter): adds Matter Status example and documentation --- .../examples/MatterStatus/MatterStatus.ino | 119 ++++++++++ .../Matter/examples/MatterStatus/README.md | 203 ++++++++++++++++++ libraries/Matter/examples/MatterStatus/ci.yml | 5 + 3 files changed, 327 insertions(+) create mode 100644 libraries/Matter/examples/MatterStatus/MatterStatus.ino create mode 100644 libraries/Matter/examples/MatterStatus/README.md create mode 100644 libraries/Matter/examples/MatterStatus/ci.yml diff --git a/libraries/Matter/examples/MatterStatus/MatterStatus.ino b/libraries/Matter/examples/MatterStatus/MatterStatus.ino new file mode 100644 index 00000000000..715da8b3ae9 --- /dev/null +++ b/libraries/Matter/examples/MatterStatus/MatterStatus.ino @@ -0,0 +1,119 @@ +// 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. + +// Matter Status Example +// This example demonstrates how to check enabled Matter features and connectivity status +// It implements a basic on/off light and reports capability and connection status + +#include +// CONFIG_ENABLE_CHIPOBLE is enabled when BLE is used to commission the Matter Network +#if !CONFIG_ENABLE_CHIPOBLE // ESP32 and ESP32-S2 do not support BLE commissioning +// if the device can be commissioned using BLE, WiFi is not used - save flash space +#include +// WiFi is manually set and started +const char *ssid = "your-ssid"; // Change this to your WiFi SSID +const char *password = "your-password"; // Change this to your WiFi password +#endif + +// List of Matter Endpoints for this Node +// On/Off Light Endpoint +MatterOnOffLight OnOffLight; + +// set your board LED pin here +#ifdef LED_BUILTIN +const uint8_t ledPin = LED_BUILTIN; +#else +const uint8_t ledPin = 2; // Set your pin here if your board has not defined LED_BUILTIN +#warning "Do not forget to set the LED pin" +#endif + +// Matter Protocol Endpoint Callback +bool setLightOnOff(bool state) { + Serial.printf("User Callback :: New Light State = %s\r\n", state ? "ON" : "OFF"); + if (state) { + digitalWrite(ledPin, HIGH); + } else { + digitalWrite(ledPin, LOW); + } + // This callback must return the success state to Matter core + return true; +} + +void setup() { + // Initialize the LED (light) GPIO + pinMode(ledPin, OUTPUT); + digitalWrite(ledPin, LOW); // Start with light OFF + + Serial.begin(115200); + delay(1000); + Serial.println("\n========================================"); + Serial.println("Matter Status Example"); + Serial.println("========================================\n"); + + // Report enabled features + Serial.println("=== Enabled Features ==="); + Serial.printf("WiFi Station Enabled: %s\r\n", Matter.isWiFiStationEnabled() ? "YES" : "NO"); + Serial.printf("WiFi Access Point Enabled: %s\r\n", Matter.isWiFiAccessPointEnabled() ? "YES" : "NO"); + Serial.printf("Thread Enabled: %s\r\n", Matter.isThreadEnabled() ? "YES" : "NO"); + Serial.printf("BLE Commissioning Enabled: %s\r\n", Matter.isBLECommissioningEnabled() ? "YES" : "NO"); + Serial.println(); + +// 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 + if (Matter.isWiFiStationEnabled()) { + Serial.print("Connecting to "); + Serial.println(ssid); + WiFi.mode(WIFI_STA); + WiFi.begin(ssid, password); + while (WiFi.status() != WL_CONNECTED) { + delay(500); + Serial.print("."); + } + Serial.println(""); + Serial.println("WiFi connected"); + Serial.print("IP address: "); + Serial.println(WiFi.localIP()); + } +#endif + + // Initialize On/Off Light endpoint + OnOffLight.begin(false); // Start with light OFF + OnOffLight.onChange(setLightOnOff); + + // Start Matter + Matter.begin(); + Serial.println("Matter started"); + Serial.println(); + + // Print commissioning information + Serial.println("========================================"); + Serial.println("Matter Node is not commissioned yet."); + Serial.println("Initiate the device discovery in your Matter environment."); + Serial.println("Commission it to your Matter hub with the manual pairing code or QR code"); + Serial.printf("Manual pairing code: %s\r\n", Matter.getManualPairingCode().c_str()); + Serial.printf("QR code URL: %s\r\n", Matter.getOnboardingQRCodeUrl().c_str()); + Serial.println("========================================\n"); +} + +void loop() { + // Report connection status every 10 seconds + Serial.println("=== Connection Status ==="); + Serial.printf("WiFi Connected: %s\r\n", Matter.isWiFiConnected() ? "YES" : "NO"); + Serial.printf("Thread Connected: %s\r\n", Matter.isThreadConnected() ? "YES" : "NO"); + Serial.printf("Device Connected: %s\r\n", Matter.isDeviceConnected() ? "YES" : "NO"); + Serial.printf("Device Commissioned: %s\r\n", Matter.isDeviceCommissioned() ? "YES" : "NO"); + Serial.println(); + delay(10000); +} \ No newline at end of file diff --git a/libraries/Matter/examples/MatterStatus/README.md b/libraries/Matter/examples/MatterStatus/README.md new file mode 100644 index 00000000000..45320428c7c --- /dev/null +++ b/libraries/Matter/examples/MatterStatus/README.md @@ -0,0 +1,203 @@ +# Matter Status Example + +This example demonstrates how to check enabled Matter features and connectivity status using the Matter library's capability query functions. It implements a basic on/off light device and periodically reports the status of enabled features and network connections. + +## Supported Targets + +| SoC | Wi-Fi | Thread | BLE Commissioning | LED | Status | +| --- | ---- | ------ | ----------------- | --- | ------ | +| ESP32 | ✅ | ❌ | ❌ | Required | Fully supported | +| ESP32-S2 | ✅ | ❌ | ❌ | Required | Fully supported | +| ESP32-S3 | ✅ | ❌ | ✅ | Required | Fully supported | +| ESP32-C3 | ✅ | ❌ | ✅ | Required | Fully supported | +| ESP32-C5 | ✅ | ❌ | ✅ | Required | Fully supported | +| ESP32-C6 | ✅ | ❌ | ✅ | Required | Fully supported | +| ESP32-H2 | ❌ | ✅ | ✅ | Required | Supported (Thread only) | + +### Note on Commissioning: + +- **ESP32 & ESP32-S2** do not support commissioning over Bluetooth LE. For these chips, you must provide Wi-Fi credentials directly in the sketch code so they can connect to your network manually. +- **ESP32-C6** Although it has Thread support, the ESP32 Arduino Matter Library has been precompiled using Wi-Fi only. In order to configure it for Thread-only operation it is necessary to build the project as an ESP-IDF component and to disable the Matter Wi-Fi station feature. +- **ESP32-C5** Although it has Thread support, the ESP32 Arduino Matter Library has been precompiled using Wi-Fi only. In order to configure it for Thread-only operation it is necessary to build the project as an ESP-IDF component and to disable the Matter Wi-Fi station feature. + +## Features + +- Matter protocol implementation for an on/off light device +- **Capability reporting**: Checks and reports enabled Matter features at startup + - `isWiFiStationEnabled()`: Checks if WiFi Station mode is supported and enabled + - `isWiFiAccessPointEnabled()`: Checks if WiFi AP mode is supported and enabled + - `isThreadEnabled()`: Checks if Thread network is supported and enabled + - `isBLECommissioningEnabled()`: Checks if BLE commissioning is supported and enabled +- **Connection status monitoring**: Reports connection status every 10 seconds + - `isWiFiConnected()`: Checks WiFi connection status (if WiFi Station is enabled) + - `isThreadConnected()`: Checks Thread connection status (if Thread is enabled) + - `isDeviceConnected()`: Checks overall device connectivity (WiFi or Thread) + - `isDeviceCommissioned()`: Checks if the device is commissioned to a Matter fabric +- Simple on/off light control +- Matter commissioning via QR code or manual pairing code +- Integration with Apple HomeKit, Amazon Alexa, and Google Home + +## Hardware Requirements + +- ESP32 compatible development board (see supported targets table) +- LED connected to GPIO pin (or using built-in LED) for visual feedback + +## Pin Configuration + +- **LED**: Uses `LED_BUILTIN` if defined, otherwise pin 2 + +## Software Setup + +### Prerequisites + +1. Install the Arduino IDE (2.0 or newer recommended) +2. Install ESP32 Arduino Core with Matter support +3. ESP32 Arduino libraries: + - `Matter` + - `Wi-Fi` (only for ESP32 and ESP32-S2) + +### Configuration + +Before uploading the sketch, configure the following: + +1. **Wi-Fi Credentials** (for ESP32 and ESP32-S2 only): + ```cpp + const char *ssid = "your-ssid"; + const char *password = "your-password"; + ``` + +2. **LED pin configuration** (if not using built-in LED): + ```cpp + const uint8_t ledPin = 2; // Set your LED pin here + ``` + +## Building and Flashing + +1. Open the `MatterStatus.ino` sketch in the Arduino IDE. +2. Select your ESP32 board from the **Tools > Board** menu. +3. Select **"Huge APP (3MB No OTA/1MB SPIFFS)"** from **Tools > Partition Scheme** menu. +4. Enable **"Erase All Flash Before Sketch Upload"** option from **Tools** menu. +5. Connect your ESP32 board to your computer via USB. +6. Click the **Upload** button to compile and flash the sketch. + +## Expected Output + +Once the sketch is running, open the Serial Monitor at a baud rate of **115200**. You should see output similar to the following: + +``` +======================================== +Matter Status Example +======================================== + +=== Enabled Features === +WiFi Station Enabled: YES +WiFi Access Point Enabled: NO +Thread Enabled: NO +BLE Commissioning Enabled: NO + +Connecting to your-ssid +....... +WiFi connected +IP address: 192.168.1.100 +Matter started + +======================================== +Matter Node is not commissioned yet. +Initiate the device discovery in your Matter environment. +Commission it to your Matter hub with the manual pairing code or QR code +Manual pairing code: 34970112332 +QR code URL: https://project-chip.github.io/connectedhomeip/qrcode.html?data=MT:Y.K9042C00KA0648G00 +======================================== + +=== Connection Status === +WiFi Connected: YES +Thread Connected: NO +Device Connected: YES +Device Commissioned: NO + +=== Connection Status === +WiFi Connected: YES +Thread Connected: NO +Device Connected: YES +Device Commissioned: NO + +... (reports every 10 seconds) + +User Callback :: New Light State = ON +=== Connection Status === +WiFi Connected: YES +Thread Connected: NO +Device Connected: YES +Device Commissioned: YES + +... (reports every 10 seconds) +``` + +## Usage + +### Capability Queries + +The example demonstrates the use of capability query functions that check both hardware support (SOC capabilities) and Matter configuration: + +- **`Matter.isWiFiStationEnabled()`**: Returns `true` if the device supports WiFi Station mode and it's enabled in Matter configuration +- **`Matter.isWiFiAccessPointEnabled()`**: Returns `true` if the device supports WiFi AP mode and it's enabled in Matter configuration +- **`Matter.isThreadEnabled()`**: Returns `true` if the device supports Thread networking and it's enabled in Matter configuration +- **`Matter.isBLECommissioningEnabled()`**: Returns `true` if the device supports BLE and BLE commissioning is enabled + +These functions are useful for: +- Determining which features are available on the current device +- Adapting application behavior based on available capabilities +- Debugging configuration issues + +### Connection Status Monitoring + +The example periodically reports connection status every 10 seconds: + +- **`Matter.isWiFiConnected()`**: Returns `true` if WiFi Station is connected (only available if WiFi Station is enabled) +- **`Matter.isThreadConnected()`**: Returns `true` if Thread is attached to a network (only available if Thread is enabled) +- **`Matter.isDeviceConnected()`**: Returns `true` if the device is connected via WiFi or Thread (overall connectivity status) +- **`Matter.isDeviceCommissioned()`**: Returns `true` if the device has been commissioned to a Matter fabric + +### Smart Home Integration + +Use a Matter-compatible hub (like an Apple HomePod, Google Nest Hub, or Amazon Echo) to commission the device. Once commissioned, you can control the light from your smart home app. + +## Code Structure + +- **`setup()`**: + - Initializes hardware (LED) + - Reports enabled features using capability query functions + - Connects to WiFi (if needed and enabled) + - Initializes On/Off Light endpoint + - Starts Matter stack + - Prints commissioning information + +- **`loop()`**: + - Reports connection status every 10 seconds + - All light control is handled via Matter callbacks + +- **Callbacks**: + - `setLightOnOff()`: Controls the physical LED based on the on/off state and prints the state change to Serial Monitor + +## Troubleshooting + +1. **Device not discoverable**: Ensure Wi-Fi is connected (for ESP32/ESP32-S2) or BLE is enabled (for other chips). + +2. **Capability queries return unexpected values**: These functions check both hardware support and Matter configuration. Verify that the features are enabled in your Matter build configuration. + +3. **Connection status not updating**: The status is reported every 10 seconds. Check Serial Monitor output to see the periodic reports. + +4. **LED not responding**: Verify pin configurations and connections. + +5. **Failed to commission**: Try factory resetting the device by calling `Matter.decommission()`. Other option would be to erase the SoC Flash Memory by using `Arduino IDE Menu` -> `Tools` -> `Erase All Flash Before Sketch Upload: "Enabled"` or directly with `esptool.py --port erase_flash` + +## Related Documentation + +- [Matter Overview](https://docs.espressif.com/projects/arduino-esp32/en/latest/matter/matter.html) +- [Matter Endpoint Base Class](https://docs.espressif.com/projects/arduino-esp32/en/latest/matter/matter_ep.html) +- [Matter On/Off Light Endpoint](https://docs.espressif.com/projects/arduino-esp32/en/latest/matter/ep_on_off_light.html) + +## License + +This example is licensed under the Apache License, Version 2.0. + diff --git a/libraries/Matter/examples/MatterStatus/ci.yml b/libraries/Matter/examples/MatterStatus/ci.yml new file mode 100644 index 00000000000..1cbd404d6ed --- /dev/null +++ b/libraries/Matter/examples/MatterStatus/ci.yml @@ -0,0 +1,5 @@ +fqbn_append: PartitionScheme=huge_app + +requires: + - CONFIG_ESP_MATTER_ENABLE_DATA_MODEL=y + From 87955b7f4a6b01a06d12d570d193ab8651599b14 Mon Sep 17 00:00:00 2001 From: SuGlider Date: Sun, 14 Dec 2025 17:25:32 -0300 Subject: [PATCH 05/19] feat(matter): adds necessary Arduino IDE options to all README files --- libraries/Matter/examples/MatterColorLight/README.md | 6 ++++-- libraries/Matter/examples/MatterCommissionTest/README.md | 6 ++++-- libraries/Matter/examples/MatterComposedLights/README.md | 6 ++++-- libraries/Matter/examples/MatterContactSensor/README.md | 6 ++++-- libraries/Matter/examples/MatterDimmableLight/README.md | 6 ++++-- libraries/Matter/examples/MatterDimmablePlugin/README.md | 6 ++++-- .../Matter/examples/MatterEnhancedColorLight/README.md | 6 ++++-- libraries/Matter/examples/MatterEvents/README.md | 6 ++++-- libraries/Matter/examples/MatterFan/README.md | 6 ++++-- libraries/Matter/examples/MatterHumiditySensor/README.md | 6 ++++-- .../examples/MatterLambdaSingleCallbackManyEPs/README.md | 6 ++++-- libraries/Matter/examples/MatterMinimum/README.md | 6 ++++-- .../Matter/examples/MatterOccupancySensor/README.md | 6 ++++-- libraries/Matter/examples/MatterOnIdentify/README.md | 6 ++++-- libraries/Matter/examples/MatterOnOffLight/README.md | 6 ++++-- libraries/Matter/examples/MatterOnOffPlugin/README.md | 6 ++++-- libraries/Matter/examples/MatterPressureSensor/README.md | 6 ++++-- libraries/Matter/examples/MatterRainSensor/README.md | 6 ++++-- .../Matter/examples/MatterSimpleWidowsBlind/README.md | 9 +++++++++ libraries/Matter/examples/MatterSmartButton/README.md | 6 ++++-- .../MatterTemperatureControlledCabinet/README.md | 6 ++++-- .../MatterTemperatureControlledCabinetLevels/README.md | 6 ++++-- .../Matter/examples/MatterTemperatureLight/README.md | 6 ++++-- .../Matter/examples/MatterTemperatureSensor/README.md | 6 ++++-- libraries/Matter/examples/MatterThermostat/README.md | 6 ++++-- .../Matter/examples/MatterWaterFreezeDetector/README.md | 6 ++++-- .../Matter/examples/MatterWaterLeakDetector/README.md | 6 ++++-- libraries/Matter/examples/MatterWindowCovering/README.md | 6 ++++-- 28 files changed, 117 insertions(+), 54 deletions(-) diff --git a/libraries/Matter/examples/MatterColorLight/README.md b/libraries/Matter/examples/MatterColorLight/README.md index 4d9e39e4f75..4f18233cb21 100644 --- a/libraries/Matter/examples/MatterColorLight/README.md +++ b/libraries/Matter/examples/MatterColorLight/README.md @@ -78,8 +78,10 @@ Before uploading the sketch, configure the following: 1. Open the `MatterColorLight.ino` sketch in the Arduino IDE. 2. Select your ESP32 board from the **Tools > Board** menu. -3. Connect your ESP32 board to your computer via USB. -4. Click the **Upload** button to compile and flash the sketch. +3. Select **"Huge APP (3MB No OTA/1MB SPIFFS)"** from **Tools > Partition Scheme** menu. +4. Enable **"Erase All Flash Before Sketch Upload"** option from **Tools** menu. +5. Connect your ESP32 board to your computer via USB. +6. Click the **Upload** button to compile and flash the sketch. ## Expected Output diff --git a/libraries/Matter/examples/MatterCommissionTest/README.md b/libraries/Matter/examples/MatterCommissionTest/README.md index db5d0e158ea..86bab465b22 100644 --- a/libraries/Matter/examples/MatterCommissionTest/README.md +++ b/libraries/Matter/examples/MatterCommissionTest/README.md @@ -59,8 +59,10 @@ Before uploading the sketch, configure the following: 1. Open the `MatterCommissionTest.ino` sketch in the Arduino IDE. 2. Select your ESP32 board from the **Tools > Board** menu. -3. Connect your ESP32 board to your computer via USB. -4. Click the **Upload** button to compile and flash the sketch. +3. Select **"Huge APP (3MB No OTA/1MB SPIFFS)"** from **Tools > Partition Scheme** menu. +4. Enable **"Erase All Flash Before Sketch Upload"** option from **Tools** menu. +5. Connect your ESP32 board to your computer via USB. +6. Click the **Upload** button to compile and flash the sketch. ## Expected Output diff --git a/libraries/Matter/examples/MatterComposedLights/README.md b/libraries/Matter/examples/MatterComposedLights/README.md index 96446810f9f..5dc1e3839a7 100644 --- a/libraries/Matter/examples/MatterComposedLights/README.md +++ b/libraries/Matter/examples/MatterComposedLights/README.md @@ -74,8 +74,10 @@ Before uploading the sketch, configure the following: 1. Open the `MatterComposedLights.ino` sketch in the Arduino IDE. 2. Select your ESP32 board from the **Tools > Board** menu. -3. Connect your ESP32 board to your computer via USB. -4. Click the **Upload** button to compile and flash the sketch. +3. Select **"Huge APP (3MB No OTA/1MB SPIFFS)"** from **Tools > Partition Scheme** menu. +4. Enable **"Erase All Flash Before Sketch Upload"** option from **Tools** menu. +5. Connect your ESP32 board to your computer via USB. +6. Click the **Upload** button to compile and flash the sketch. ## Expected Output diff --git a/libraries/Matter/examples/MatterContactSensor/README.md b/libraries/Matter/examples/MatterContactSensor/README.md index 0f54a8f0010..91729a3c4a1 100644 --- a/libraries/Matter/examples/MatterContactSensor/README.md +++ b/libraries/Matter/examples/MatterContactSensor/README.md @@ -78,8 +78,10 @@ Before uploading the sketch, configure the following: 1. Open the `MatterContactSensor.ino` sketch in the Arduino IDE. 2. Select your ESP32 board from the **Tools > Board** menu. -3. Connect your ESP32 board to your computer via USB. -4. Click the **Upload** button to compile and flash the sketch. +3. Select **"Huge APP (3MB No OTA/1MB SPIFFS)"** from **Tools > Partition Scheme** menu. +4. Enable **"Erase All Flash Before Sketch Upload"** option from **Tools** menu. +5. Connect your ESP32 board to your computer via USB. +6. Click the **Upload** button to compile and flash the sketch. ## Expected Output diff --git a/libraries/Matter/examples/MatterDimmableLight/README.md b/libraries/Matter/examples/MatterDimmableLight/README.md index f1381b2641c..071c3ae689a 100644 --- a/libraries/Matter/examples/MatterDimmableLight/README.md +++ b/libraries/Matter/examples/MatterDimmableLight/README.md @@ -79,8 +79,10 @@ Before uploading the sketch, configure the following: 1. Open the `MatterDimmableLight.ino` sketch in the Arduino IDE. 2. Select your ESP32 board from the **Tools > Board** menu. -3. Connect your ESP32 board to your computer via USB. -4. Click the **Upload** button to compile and flash the sketch. +3. Select **"Huge APP (3MB No OTA/1MB SPIFFS)"** from **Tools > Partition Scheme** menu. +4. Enable **"Erase All Flash Before Sketch Upload"** option from **Tools** menu. +5. Connect your ESP32 board to your computer via USB. +6. Click the **Upload** button to compile and flash the sketch. ## Expected Output diff --git a/libraries/Matter/examples/MatterDimmablePlugin/README.md b/libraries/Matter/examples/MatterDimmablePlugin/README.md index d823c5c1ca7..6104d520b8f 100644 --- a/libraries/Matter/examples/MatterDimmablePlugin/README.md +++ b/libraries/Matter/examples/MatterDimmablePlugin/README.md @@ -82,8 +82,10 @@ Before uploading the sketch, configure the following: 1. Open the `MatterDimmablePlugin.ino` sketch in the Arduino IDE. 2. Select your ESP32 board from the **Tools > Board** menu. -3. Connect your ESP32 board to your computer via USB. -4. Click the **Upload** button to compile and flash the sketch. +3. Select **"Huge APP (3MB No OTA/1MB SPIFFS)"** from **Tools > Partition Scheme** menu. +4. Enable **"Erase All Flash Before Sketch Upload"** option from **Tools** menu. +5. Connect your ESP32 board to your computer via USB. +6. Click the **Upload** button to compile and flash the sketch. ## Expected Output diff --git a/libraries/Matter/examples/MatterEnhancedColorLight/README.md b/libraries/Matter/examples/MatterEnhancedColorLight/README.md index 100c216cedf..5485fb33b2c 100644 --- a/libraries/Matter/examples/MatterEnhancedColorLight/README.md +++ b/libraries/Matter/examples/MatterEnhancedColorLight/README.md @@ -81,8 +81,10 @@ Before uploading the sketch, configure the following: 1. Open the `MatterEnhancedColorLight.ino` sketch in the Arduino IDE. 2. Select your ESP32 board from the **Tools > Board** menu. -3. Connect your ESP32 board to your computer via USB. -4. Click the **Upload** button to compile and flash the sketch. +3. Select **"Huge APP (3MB No OTA/1MB SPIFFS)"** from **Tools > Partition Scheme** menu. +4. Enable **"Erase All Flash Before Sketch Upload"** option from **Tools** menu. +5. Connect your ESP32 board to your computer via USB. +6. Click the **Upload** button to compile and flash the sketch. ## Expected Output diff --git a/libraries/Matter/examples/MatterEvents/README.md b/libraries/Matter/examples/MatterEvents/README.md index 985fb8748e5..ab902f477da 100644 --- a/libraries/Matter/examples/MatterEvents/README.md +++ b/libraries/Matter/examples/MatterEvents/README.md @@ -62,8 +62,10 @@ Before uploading the sketch, configure the following: 1. Open the `MatterEvents.ino` sketch in the Arduino IDE. 2. Select your ESP32 board from the **Tools > Board** menu. -3. Connect your ESP32 board to your computer via USB. -4. Click the **Upload** button to compile and flash the sketch. +3. Select **"Huge APP (3MB No OTA/1MB SPIFFS)"** from **Tools > Partition Scheme** menu. +4. Enable **"Erase All Flash Before Sketch Upload"** option from **Tools** menu. +5. Connect your ESP32 board to your computer via USB. +6. Click the **Upload** button to compile and flash the sketch. ## Expected Output diff --git a/libraries/Matter/examples/MatterFan/README.md b/libraries/Matter/examples/MatterFan/README.md index cae9e15ba5f..9bd63e63279 100644 --- a/libraries/Matter/examples/MatterFan/README.md +++ b/libraries/Matter/examples/MatterFan/README.md @@ -89,8 +89,10 @@ Before uploading the sketch, configure the following: 1. Open the `MatterFan.ino` sketch in the Arduino IDE. 2. Select your ESP32 board from the **Tools > Board** menu. -3. Connect your ESP32 board to your computer via USB. -4. Click the **Upload** button to compile and flash the sketch. +3. Select **"Huge APP (3MB No OTA/1MB SPIFFS)"** from **Tools > Partition Scheme** menu. +4. Enable **"Erase All Flash Before Sketch Upload"** option from **Tools** menu. +5. Connect your ESP32 board to your computer via USB. +6. Click the **Upload** button to compile and flash the sketch. ## Expected Output diff --git a/libraries/Matter/examples/MatterHumiditySensor/README.md b/libraries/Matter/examples/MatterHumiditySensor/README.md index 838073093cf..1a40efaad1a 100644 --- a/libraries/Matter/examples/MatterHumiditySensor/README.md +++ b/libraries/Matter/examples/MatterHumiditySensor/README.md @@ -76,8 +76,10 @@ Before uploading the sketch, configure the following: 1. Open the `MatterHumiditySensor.ino` sketch in the Arduino IDE. 2. Select your ESP32 board from the **Tools > Board** menu. -3. Connect your ESP32 board to your computer via USB. -4. Click the **Upload** button to compile and flash the sketch. +3. Select **"Huge APP (3MB No OTA/1MB SPIFFS)"** from **Tools > Partition Scheme** menu. +4. Enable **"Erase All Flash Before Sketch Upload"** option from **Tools** menu. +5. Connect your ESP32 board to your computer via USB. +6. Click the **Upload** button to compile and flash the sketch. ## Expected Output diff --git a/libraries/Matter/examples/MatterLambdaSingleCallbackManyEPs/README.md b/libraries/Matter/examples/MatterLambdaSingleCallbackManyEPs/README.md index 62c923e3655..150d475d431 100644 --- a/libraries/Matter/examples/MatterLambdaSingleCallbackManyEPs/README.md +++ b/libraries/Matter/examples/MatterLambdaSingleCallbackManyEPs/README.md @@ -98,8 +98,10 @@ Before uploading the sketch, configure the following: 1. Open the `MatterLambdaSingleCallbackManyEPs.ino` sketch in the Arduino IDE. 2. Select your ESP32 board from the **Tools > Board** menu. -3. Connect your ESP32 board to your computer via USB. -4. Click the **Upload** button to compile and flash the sketch. +3. Select **"Huge APP (3MB No OTA/1MB SPIFFS)"** from **Tools > Partition Scheme** menu. +4. Enable **"Erase All Flash Before Sketch Upload"** option from **Tools** menu. +5. Connect your ESP32 board to your computer via USB. +6. Click the **Upload** button to compile and flash the sketch. ## Expected Output diff --git a/libraries/Matter/examples/MatterMinimum/README.md b/libraries/Matter/examples/MatterMinimum/README.md index b3687718543..aaf0420a82d 100644 --- a/libraries/Matter/examples/MatterMinimum/README.md +++ b/libraries/Matter/examples/MatterMinimum/README.md @@ -78,8 +78,10 @@ Before uploading the sketch, configure the following: 1. Open the `MatterMinimum.ino` sketch in the Arduino IDE. 2. Select your ESP32 board from the **Tools > Board** menu. -3. Connect your ESP32 board to your computer via USB. -4. Click the **Upload** button to compile and flash the sketch. +3. Select **"Huge APP (3MB No OTA/1MB SPIFFS)"** from **Tools > Partition Scheme** menu. +4. Enable **"Erase All Flash Before Sketch Upload"** option from **Tools** menu. +5. Connect your ESP32 board to your computer via USB. +6. Click the **Upload** button to compile and flash the sketch. ## Expected Output diff --git a/libraries/Matter/examples/MatterOccupancySensor/README.md b/libraries/Matter/examples/MatterOccupancySensor/README.md index cb38c63ac6a..aa780625218 100644 --- a/libraries/Matter/examples/MatterOccupancySensor/README.md +++ b/libraries/Matter/examples/MatterOccupancySensor/README.md @@ -79,8 +79,10 @@ Before uploading the sketch, configure the following: 1. Open the `MatterOccupancySensor.ino` sketch in the Arduino IDE. 2. Select your ESP32 board from the **Tools > Board** menu. -3. Connect your ESP32 board to your computer via USB. -4. Click the **Upload** button to compile and flash the sketch. +3. Select **"Huge APP (3MB No OTA/1MB SPIFFS)"** from **Tools > Partition Scheme** menu. +4. Enable **"Erase All Flash Before Sketch Upload"** option from **Tools** menu. +5. Connect your ESP32 board to your computer via USB. +6. Click the **Upload** button to compile and flash the sketch. ## Expected Output diff --git a/libraries/Matter/examples/MatterOnIdentify/README.md b/libraries/Matter/examples/MatterOnIdentify/README.md index ce873f9397f..57e32fc5440 100644 --- a/libraries/Matter/examples/MatterOnIdentify/README.md +++ b/libraries/Matter/examples/MatterOnIdentify/README.md @@ -79,8 +79,10 @@ Before uploading the sketch, configure the following: 1. Open the `MatterOnIdentify.ino` sketch in the Arduino IDE. 2. Select your ESP32 board from the **Tools > Board** menu. -3. Connect your ESP32 board to your computer via USB. -4. Click the **Upload** button to compile and flash the sketch. +3. Select **"Huge APP (3MB No OTA/1MB SPIFFS)"** from **Tools > Partition Scheme** menu. +4. Enable **"Erase All Flash Before Sketch Upload"** option from **Tools** menu. +5. Connect your ESP32 board to your computer via USB. +6. Click the **Upload** button to compile and flash the sketch. ## Expected Output diff --git a/libraries/Matter/examples/MatterOnOffLight/README.md b/libraries/Matter/examples/MatterOnOffLight/README.md index b973302129a..04341b7bd69 100644 --- a/libraries/Matter/examples/MatterOnOffLight/README.md +++ b/libraries/Matter/examples/MatterOnOffLight/README.md @@ -79,8 +79,10 @@ Before uploading the sketch, configure the following: 1. Open the `MatterOnOffLight.ino` sketch in the Arduino IDE. 2. Select your ESP32 board from the **Tools > Board** menu. -3. Connect your ESP32 board to your computer via USB. -4. Click the **Upload** button to compile and flash the sketch. +3. Select **"Huge APP (3MB No OTA/1MB SPIFFS)"** from **Tools > Partition Scheme** menu. +4. Enable **"Erase All Flash Before Sketch Upload"** option from **Tools** menu. +5. Connect your ESP32 board to your computer via USB. +6. Click the **Upload** button to compile and flash the sketch. ## Expected Output diff --git a/libraries/Matter/examples/MatterOnOffPlugin/README.md b/libraries/Matter/examples/MatterOnOffPlugin/README.md index 2603961353c..f69ae65ed93 100644 --- a/libraries/Matter/examples/MatterOnOffPlugin/README.md +++ b/libraries/Matter/examples/MatterOnOffPlugin/README.md @@ -80,8 +80,10 @@ Before uploading the sketch, configure the following: 1. Open the `MatterOnOffPlugin.ino` sketch in the Arduino IDE. 2. Select your ESP32 board from the **Tools > Board** menu. -3. Connect your ESP32 board to your computer via USB. -4. Click the **Upload** button to compile and flash the sketch. +3. Select **"Huge APP (3MB No OTA/1MB SPIFFS)"** from **Tools > Partition Scheme** menu. +4. Enable **"Erase All Flash Before Sketch Upload"** option from **Tools** menu. +5. Connect your ESP32 board to your computer via USB. +6. Click the **Upload** button to compile and flash the sketch. ## Expected Output diff --git a/libraries/Matter/examples/MatterPressureSensor/README.md b/libraries/Matter/examples/MatterPressureSensor/README.md index 2f0665067ac..49d70d7cf07 100644 --- a/libraries/Matter/examples/MatterPressureSensor/README.md +++ b/libraries/Matter/examples/MatterPressureSensor/README.md @@ -76,8 +76,10 @@ Before uploading the sketch, configure the following: 1. Open the `MatterPressureSensor.ino` sketch in the Arduino IDE. 2. Select your ESP32 board from the **Tools > Board** menu. -3. Connect your ESP32 board to your computer via USB. -4. Click the **Upload** button to compile and flash the sketch. +3. Select **"Huge APP (3MB No OTA/1MB SPIFFS)"** from **Tools > Partition Scheme** menu. +4. Enable **"Erase All Flash Before Sketch Upload"** option from **Tools** menu. +5. Connect your ESP32 board to your computer via USB. +6. Click the **Upload** button to compile and flash the sketch. ## Expected Output diff --git a/libraries/Matter/examples/MatterRainSensor/README.md b/libraries/Matter/examples/MatterRainSensor/README.md index 1e81b3ea3c9..12d6228cf07 100644 --- a/libraries/Matter/examples/MatterRainSensor/README.md +++ b/libraries/Matter/examples/MatterRainSensor/README.md @@ -78,8 +78,10 @@ Before uploading the sketch, configure the following: 1. Open the `MatterRainSensor.ino` sketch in the Arduino IDE. 2. Select your ESP32 board from the **Tools > Board** menu. -3. Connect your ESP32 board to your computer via USB. -4. Click the **Upload** button to compile and flash the sketch. +3. Select **"Huge APP (3MB No OTA/1MB SPIFFS)"** from **Tools > Partition Scheme** menu. +4. Enable **"Erase All Flash Before Sketch Upload"** option from **Tools** menu. +5. Connect your ESP32 board to your computer via USB. +6. Click the **Upload** button to compile and flash the sketch. ## Expected Output diff --git a/libraries/Matter/examples/MatterSimpleWidowsBlind/README.md b/libraries/Matter/examples/MatterSimpleWidowsBlind/README.md index 637d2a4b398..dd670a91de5 100644 --- a/libraries/Matter/examples/MatterSimpleWidowsBlind/README.md +++ b/libraries/Matter/examples/MatterSimpleWidowsBlind/README.md @@ -53,6 +53,15 @@ Before uploading the sketch, configure the following: const char *password = "your-password"; ``` +## Building and Flashing + +1. Open the `MatterSimpleWidowsBlind.ino` sketch in the Arduino IDE. +2. Select your ESP32 board from the **Tools > Board** menu. +3. Select **"Huge APP (3MB No OTA/1MB SPIFFS)"** from **Tools > Partition Scheme** menu. +4. Enable **"Erase All Flash Before Sketch Upload"** option from **Tools** menu. +5. Connect your ESP32 board to your computer via USB. +6. Click the **Upload** button to compile and flash the sketch. + ## Expected Output ``` diff --git a/libraries/Matter/examples/MatterSmartButton/README.md b/libraries/Matter/examples/MatterSmartButton/README.md index e7290ba40b3..08aa6ee35f5 100644 --- a/libraries/Matter/examples/MatterSmartButton/README.md +++ b/libraries/Matter/examples/MatterSmartButton/README.md @@ -71,8 +71,10 @@ Before uploading the sketch, configure the following: 1. Open the `MatterSmartButton.ino` sketch in the Arduino IDE. 2. Select your ESP32 board from the **Tools > Board** menu. -3. Connect your ESP32 board to your computer via USB. -4. Click the **Upload** button to compile and flash the sketch. +3. Select **"Huge APP (3MB No OTA/1MB SPIFFS)"** from **Tools > Partition Scheme** menu. +4. Enable **"Erase All Flash Before Sketch Upload"** option from **Tools** menu. +5. Connect your ESP32 board to your computer via USB. +6. Click the **Upload** button to compile and flash the sketch. ## Expected Output diff --git a/libraries/Matter/examples/MatterTemperatureControlledCabinet/README.md b/libraries/Matter/examples/MatterTemperatureControlledCabinet/README.md index 8ed6c69454a..be60edb6ceb 100644 --- a/libraries/Matter/examples/MatterTemperatureControlledCabinet/README.md +++ b/libraries/Matter/examples/MatterTemperatureControlledCabinet/README.md @@ -86,8 +86,10 @@ Before uploading the sketch, configure the following: 1. Open the `MatterTemperatureControlledCabinet.ino` sketch in the Arduino IDE. 2. Select your ESP32 board from the **Tools > Board** menu. -3. Connect your ESP32 board to your computer via USB. -4. Click the **Upload** button to compile and flash the sketch. +3. Select **"Huge APP (3MB No OTA/1MB SPIFFS)"** from **Tools > Partition Scheme** menu. +4. Enable **"Erase All Flash Before Sketch Upload"** option from **Tools** menu. +5. Connect your ESP32 board to your computer via USB. +6. Click the **Upload** button to compile and flash the sketch. ## Expected Output diff --git a/libraries/Matter/examples/MatterTemperatureControlledCabinetLevels/README.md b/libraries/Matter/examples/MatterTemperatureControlledCabinetLevels/README.md index 88f74a634bd..626d85aaddb 100644 --- a/libraries/Matter/examples/MatterTemperatureControlledCabinetLevels/README.md +++ b/libraries/Matter/examples/MatterTemperatureControlledCabinetLevels/README.md @@ -87,8 +87,10 @@ Before uploading the sketch, configure the following: 1. Open the `MatterTemperatureControlledCabinetLevels.ino` sketch in the Arduino IDE. 2. Select your ESP32 board from the **Tools > Board** menu. -3. Connect your ESP32 board to your computer via USB. -4. Click the **Upload** button to compile and flash the sketch. +3. Select **"Huge APP (3MB No OTA/1MB SPIFFS)"** from **Tools > Partition Scheme** menu. +4. Enable **"Erase All Flash Before Sketch Upload"** option from **Tools** menu. +5. Connect your ESP32 board to your computer via USB. +6. Click the **Upload** button to compile and flash the sketch. ## Expected Output diff --git a/libraries/Matter/examples/MatterTemperatureLight/README.md b/libraries/Matter/examples/MatterTemperatureLight/README.md index 4eb9432400b..264f9136b2c 100644 --- a/libraries/Matter/examples/MatterTemperatureLight/README.md +++ b/libraries/Matter/examples/MatterTemperatureLight/README.md @@ -82,8 +82,10 @@ Before uploading the sketch, configure the following: 1. Open the `MatterTemperatureLight.ino` sketch in the Arduino IDE. 2. Select your ESP32 board from the **Tools > Board** menu. -3. Connect your ESP32 board to your computer via USB. -4. Click the **Upload** button to compile and flash the sketch. +3. Select **"Huge APP (3MB No OTA/1MB SPIFFS)"** from **Tools > Partition Scheme** menu. +4. Enable **"Erase All Flash Before Sketch Upload"** option from **Tools** menu. +5. Connect your ESP32 board to your computer via USB. +6. Click the **Upload** button to compile and flash the sketch. ## Expected Output diff --git a/libraries/Matter/examples/MatterTemperatureSensor/README.md b/libraries/Matter/examples/MatterTemperatureSensor/README.md index 9a494aec932..696b61168ea 100644 --- a/libraries/Matter/examples/MatterTemperatureSensor/README.md +++ b/libraries/Matter/examples/MatterTemperatureSensor/README.md @@ -76,8 +76,10 @@ Before uploading the sketch, configure the following: 1. Open the `MatterTemperatureSensor.ino` sketch in the Arduino IDE. 2. Select your ESP32 board from the **Tools > Board** menu. -3. Connect your ESP32 board to your computer via USB. -4. Click the **Upload** button to compile and flash the sketch. +3. Select **"Huge APP (3MB No OTA/1MB SPIFFS)"** from **Tools > Partition Scheme** menu. +4. Enable **"Erase All Flash Before Sketch Upload"** option from **Tools** menu. +5. Connect your ESP32 board to your computer via USB. +6. Click the **Upload** button to compile and flash the sketch. ## Expected Output diff --git a/libraries/Matter/examples/MatterThermostat/README.md b/libraries/Matter/examples/MatterThermostat/README.md index 2a87f4d93af..6a567da0690 100644 --- a/libraries/Matter/examples/MatterThermostat/README.md +++ b/libraries/Matter/examples/MatterThermostat/README.md @@ -78,8 +78,10 @@ Before uploading the sketch, configure the following: 1. Open the `MatterThermostat.ino` sketch in the Arduino IDE. 2. Select your ESP32 board from the **Tools > Board** menu. -3. Connect your ESP32 board to your computer via USB. -4. Click the **Upload** button to compile and flash the sketch. +3. Select **"Huge APP (3MB No OTA/1MB SPIFFS)"** from **Tools > Partition Scheme** menu. +4. Enable **"Erase All Flash Before Sketch Upload"** option from **Tools** menu. +5. Connect your ESP32 board to your computer via USB. +6. Click the **Upload** button to compile and flash the sketch. ## Expected Output diff --git a/libraries/Matter/examples/MatterWaterFreezeDetector/README.md b/libraries/Matter/examples/MatterWaterFreezeDetector/README.md index 0701a5af979..f2783df8476 100644 --- a/libraries/Matter/examples/MatterWaterFreezeDetector/README.md +++ b/libraries/Matter/examples/MatterWaterFreezeDetector/README.md @@ -78,8 +78,10 @@ Before uploading the sketch, configure the following: 1. Open the `MatterWaterFreezeDetector.ino` sketch in the Arduino IDE. 2. Select your ESP32 board from the **Tools > Board** menu. -3. Connect your ESP32 board to your computer via USB. -4. Click the **Upload** button to compile and flash the sketch. +3. Select **"Huge APP (3MB No OTA/1MB SPIFFS)"** from **Tools > Partition Scheme** menu. +4. Enable **"Erase All Flash Before Sketch Upload"** option from **Tools** menu. +5. Connect your ESP32 board to your computer via USB. +6. Click the **Upload** button to compile and flash the sketch. ## Expected Output diff --git a/libraries/Matter/examples/MatterWaterLeakDetector/README.md b/libraries/Matter/examples/MatterWaterLeakDetector/README.md index 3dcf2f2e9f7..ae7d44d29df 100644 --- a/libraries/Matter/examples/MatterWaterLeakDetector/README.md +++ b/libraries/Matter/examples/MatterWaterLeakDetector/README.md @@ -78,8 +78,10 @@ Before uploading the sketch, configure the following: 1. Open the `MatterWaterLeakDetector.ino` sketch in the Arduino IDE. 2. Select your ESP32 board from the **Tools > Board** menu. -3. Connect your ESP32 board to your computer via USB. -4. Click the **Upload** button to compile and flash the sketch. +3. Select **"Huge APP (3MB No OTA/1MB SPIFFS)"** from **Tools > Partition Scheme** menu. +4. Enable **"Erase All Flash Before Sketch Upload"** option from **Tools** menu. +5. Connect your ESP32 board to your computer via USB. +6. Click the **Upload** button to compile and flash the sketch. ## Expected Output diff --git a/libraries/Matter/examples/MatterWindowCovering/README.md b/libraries/Matter/examples/MatterWindowCovering/README.md index 8e18539c65a..f802f3d0cc1 100644 --- a/libraries/Matter/examples/MatterWindowCovering/README.md +++ b/libraries/Matter/examples/MatterWindowCovering/README.md @@ -82,8 +82,10 @@ Before uploading the sketch, configure the following: 1. Open the `MatterWindowCovering.ino` sketch in the Arduino IDE. 2. Select your ESP32 board from the **Tools > Board** menu. -3. Connect your ESP32 board to your computer via USB. -4. Click the **Upload** button to compile and flash the sketch. +3. Select **"Huge APP (3MB No OTA/1MB SPIFFS)"** from **Tools > Partition Scheme** menu. +4. Enable **"Erase All Flash Before Sketch Upload"** option from **Tools** menu. +5. Connect your ESP32 board to your computer via USB. +6. Click the **Upload** button to compile and flash the sketch. ## Expected Output From 091d334d5f8dc6de11815d4687daff44e300263e Mon Sep 17 00:00:00 2001 From: SuGlider Date: Sun, 14 Dec 2025 17:52:48 -0300 Subject: [PATCH 06/19] feat(matter): creates individual exmaple link/URL set in documentation --- docs/en/matter/matter.rst | 58 +++++++++++++++++++-------------------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/docs/en/matter/matter.rst b/docs/en/matter/matter.rst index 4c72b3d00e0..e9060b037e0 100644 --- a/docs/en/matter/matter.rst +++ b/docs/en/matter/matter.rst @@ -179,47 +179,47 @@ The Matter library includes a comprehensive set of examples demonstrating variou **Basic Examples:** -* **Matter Minimum** - The smallest code required to create a Matter-compatible device. Ideal starting point for understanding Matter basics. `View on GitHub `_ -* **Matter Status** - Demonstrates how to check enabled Matter features and connectivity status. Implements a basic on/off light and periodically reports capability and connection status. `View on GitHub `_ -* **Matter Events** - Shows how to monitor and handle Matter events. Provides a comprehensive view of all Matter events during device operation. `View on GitHub `_ -* **Matter Commission Test** - Tests Matter commissioning functionality with automatic decommissioning after a 30-second delay for continuous testing cycles. `View on GitHub `_ +* **Matter Minimum** - The smallest code required to create a Matter-compatible device. Ideal starting point for understanding Matter basics. `View Matter Minimum code on GitHub `_ +* **Matter Status** - Demonstrates how to check enabled Matter features and connectivity status. Implements a basic on/off light and periodically reports capability and connection status. `View Matter Status code on GitHub `_ +* **Matter Events** - Shows how to monitor and handle Matter events. Provides a comprehensive view of all Matter events during device operation. `View Matter Events code on GitHub `_ +* **Matter Commission Test** - Tests Matter commissioning functionality with automatic decommissioning after a 30-second delay for continuous testing cycles. `View Matter Commission Test code on GitHub `_ **Lighting Examples:** -* **Matter On/Off Light** - Creates a Matter-compatible on/off light device with commissioning, device control via smart home ecosystems, and manual control using a physical button with state persistence. `View on GitHub `_ -* **Matter Dimmable Light** - Creates a Matter-compatible dimmable light device with brightness control. `View on GitHub `_ -* **Matter Color Temperature Light** - Creates a Matter-compatible color temperature light device with adjustable color temperature control. `View on GitHub `_ -* **Matter Color Light** - Creates a Matter-compatible color light device with RGB color control (HSV color model). `View on GitHub `_ -* **Matter Enhanced Color Light** - Creates a Matter-compatible enhanced color light with color temperature and brightness control. `View on GitHub `_ -* **Matter Composed Lights** - Creates a Matter node with multiple light endpoints (On/Off Light, Dimmable Light, and Color Light) in a single node. `View on GitHub `_ -* **Matter On Identify** - Implements the Matter Identify cluster callback for an on/off light device, making the LED blink when the device is identified from a Matter app. `View on GitHub `_ +* **Matter On/Off Light** - Creates a Matter-compatible on/off light device with commissioning, device control via smart home ecosystems, and manual control using a physical button with state persistence. `View Matter On/Off Light code on GitHub `_ +* **Matter Dimmable Light** - Creates a Matter-compatible dimmable light device with brightness control. `View Matter Dimmable Light code on GitHub `_ +* **Matter Color Temperature Light** - Creates a Matter-compatible color temperature light device with adjustable color temperature control. `View Matter Color Temperature Light code on GitHub `_ +* **Matter Color Light** - Creates a Matter-compatible color light device with RGB color control (HSV color model). `View Matter Color Light code on GitHub `_ +* **Matter Enhanced Color Light** - Creates a Matter-compatible enhanced color light with color temperature and brightness control. `View Matter Enhanced Color Light code on GitHub `_ +* **Matter Composed Lights** - Creates a Matter node with multiple light endpoints (On/Off Light, Dimmable Light, and Color Light) in a single node. `View Matter Composed Lights code on GitHub `_ +* **Matter On Identify** - Implements the Matter Identify cluster callback for an on/off light device, making the LED blink when the device is identified from a Matter app. `View Matter On Identify code on GitHub `_ **Sensor Examples:** -* **Matter Temperature Sensor** - Creates a Matter-compatible temperature sensor device with sensor data reporting to smart home ecosystems. `View on GitHub `_ -* **Matter Humidity Sensor** - Creates a Matter-compatible humidity sensor device with sensor data reporting. `View on GitHub `_ -* **Matter Pressure Sensor** - Creates a Matter-compatible pressure sensor device with automatic simulation of pressure readings. `View on GitHub `_ -* **Matter Contact Sensor** - Creates a Matter-compatible contact sensor device (open/closed state). `View on GitHub `_ -* **Matter Occupancy Sensor** - Creates a Matter-compatible occupancy sensor device with automatic simulation of occupancy state changes. `View on GitHub `_ -* **Matter Water Leak Detector** - Creates a Matter-compatible water leak detector device with automatic simulation of water leak detection state changes. `View on GitHub `_ -* **Matter Water Freeze Detector** - Creates a Matter-compatible water freeze detector device with automatic simulation of water freeze detection state changes. `View on GitHub `_ -* **Matter Rain Sensor** - Creates a Matter-compatible rain sensor device with automatic simulation of rain detection state changes. `View on GitHub `_ +* **Matter Temperature Sensor** - Creates a Matter-compatible temperature sensor device with sensor data reporting to smart home ecosystems. `View Matter Temperature Sensor code on GitHub `_ +* **Matter Humidity Sensor** - Creates a Matter-compatible humidity sensor device with sensor data reporting. `View Matter Humidity Sensor code on GitHub `_ +* **Matter Pressure Sensor** - Creates a Matter-compatible pressure sensor device with automatic simulation of pressure readings. `View Matter Pressure Sensor code on GitHub `_ +* **Matter Contact Sensor** - Creates a Matter-compatible contact sensor device (open/closed state). `View Matter Contact Sensor code on GitHub `_ +* **Matter Occupancy Sensor** - Creates a Matter-compatible occupancy sensor device with automatic simulation of occupancy state changes. `View Matter Occupancy Sensor code on GitHub `_ +* **Matter Water Leak Detector** - Creates a Matter-compatible water leak detector device with automatic simulation of water leak detection state changes. `View Matter Water Leak Detector code on GitHub `_ +* **Matter Water Freeze Detector** - Creates a Matter-compatible water freeze detector device with automatic simulation of water freeze detection state changes. `View Matter Water Freeze Detector code on GitHub `_ +* **Matter Rain Sensor** - Creates a Matter-compatible rain sensor device with automatic simulation of rain detection state changes. `View Matter Rain Sensor code on GitHub `_ **Control Examples:** -* **Matter Fan** - Creates a Matter-compatible fan device with speed and mode control. `View on GitHub `_ -* **Matter Thermostat** - Creates a Matter-compatible thermostat device with temperature setpoint management and simulated heating/cooling systems with automatic temperature regulation. `View on GitHub `_ -* **Matter Temperature Controlled Cabinet** - Creates a Matter-compatible temperature controlled cabinet device with precise temperature setpoint control with min/max limits (temperature_number mode). `View on GitHub `_ -* **Matter Temperature Controlled Cabinet Levels** - Creates a Matter-compatible temperature controlled cabinet device using predefined temperature levels (temperature_level mode). `View on GitHub `_ -* **Matter On/Off Plugin** - Creates a Matter-compatible on/off plugin unit (power relay) device with state persistence for power control applications. `View on GitHub `_ -* **Matter Dimmable Plugin** - Creates a Matter-compatible dimmable plugin unit (power outlet with level control) device with state persistence for dimmable power control applications. `View on GitHub `_ -* **Matter Smart Button** - Creates a Matter-compatible smart button (generic switch) device that sends button click events to smart home ecosystems and triggers automations. `View on GitHub `_ -* **Matter Window Covering** - Creates a Matter-compatible window covering device with lift and tilt control (blinds, shades) with manual control using a physical button. `View on GitHub `_ -* **Matter Simple Window Blinds** - A minimal example that only controls lift percentage using a single onGoToLiftPercentage() callback. `View on GitHub `_ +* **Matter Fan** - Creates a Matter-compatible fan device with speed and mode control. `View Matter Fan code on GitHub `_ +* **Matter Thermostat** - Creates a Matter-compatible thermostat device with temperature setpoint management and simulated heating/cooling systems with automatic temperature regulation. `View Matter Thermostat code on GitHub `_ +* **Matter Temperature Controlled Cabinet** - Creates a Matter-compatible temperature controlled cabinet device with precise temperature setpoint control with min/max limits (temperature_number mode). `View Matter Temperature Controlled Cabinet code on GitHub `_ +* **Matter Temperature Controlled Cabinet Levels** - Creates a Matter-compatible temperature controlled cabinet device using predefined temperature levels (temperature_level mode). `View Matter Temperature Controlled Cabinet Levels code on GitHub `_ +* **Matter On/Off Plugin** - Creates a Matter-compatible on/off plugin unit (power relay) device with state persistence for power control applications. `View Matter On/Off Plugin code on GitHub `_ +* **Matter Dimmable Plugin** - Creates a Matter-compatible dimmable plugin unit (power outlet with level control) device with state persistence for dimmable power control applications. `View Matter Dimmable Plugin code on GitHub `_ +* **Matter Smart Button** - Creates a Matter-compatible smart button (generic switch) device that sends button click events to smart home ecosystems and triggers automations. `View Matter Smart Button code on GitHub `_ +* **Matter Window Covering** - Creates a Matter-compatible window covering device with lift and tilt control (blinds, shades) with manual control using a physical button. `View Matter Window Covering code on GitHub `_ +* **Matter Simple Window Blinds** - A minimal example that only controls lift percentage using a single onGoToLiftPercentage() callback. `View Matter Simple Window Blinds code on GitHub `_ **Advanced Examples:** -* **Matter Lambda Single Callback Many Endpoints** - Demonstrates how to create multiple Matter endpoints in a single node using a shared lambda function callback with capture for efficient callback handling. `View on GitHub `_ +* **Matter Lambda Single Callback Many Endpoints** - Demonstrates how to create multiple Matter endpoints in a single node using a shared lambda function callback with capture for efficient callback handling. `View Matter Lambda Single Callback Many Endpoints code on GitHub `_ Common Problems and Issues -------------------------- From f4e5055b9b2dc3503884e98fbf2eea8e67521bf7 Mon Sep 17 00:00:00 2001 From: SuGlider Date: Sun, 14 Dec 2025 18:14:54 -0300 Subject: [PATCH 07/19] feat(matter): fixes IDE tools option images in documentation --- docs/en/matter/matter.rst | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/en/matter/matter.rst b/docs/en/matter/matter.rst index e9060b037e0..4e8c2f7db2a 100644 --- a/docs/en/matter/matter.rst +++ b/docs/en/matter/matter.rst @@ -23,13 +23,17 @@ Before uploading any Matter example sketch, it is necessary to configure the Ard 1. **Partition Scheme**: Select **"Huge APP (3MB No OTA/1MB SPIFFS)"** from **Tools > Partition Scheme** menu. - .. image:: ../_static/matter_partition_scheme.png + .. figure:: ../../_static/matter_partition_scheme.png + :align: center :alt: "Partition Scheme: Huge APP (3MB No OTA/1MB SPIFFS)"" Arduino IDE menu option + :figclass: align-center 2. **Erase Flash**: Enable **"Erase All Flash Before Sketch Upload"** option from **Tools** menu. - .. image:: ../_static/matter_erase_flash.png + .. figure:: ../../_static/matter_erase_flash.png + :align: center :alt: Erase All Flash Before Sketch Upload: Enabled" Arduino IDE menu option + :figclass: align-center These settings are required for the following reasons: From 8d2ba4474526eaa4f09df4bcccaea5f0c20b5a79 Mon Sep 17 00:00:00 2001 From: Sugar Glider Date: Sun, 14 Dec 2025 18:59:15 -0300 Subject: [PATCH 08/19] fix(matter_docs): typo Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- docs/en/matter/matter.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/matter/matter.rst b/docs/en/matter/matter.rst index 4e8c2f7db2a..70f80e8a076 100644 --- a/docs/en/matter/matter.rst +++ b/docs/en/matter/matter.rst @@ -25,7 +25,7 @@ Before uploading any Matter example sketch, it is necessary to configure the Ard .. figure:: ../../_static/matter_partition_scheme.png :align: center - :alt: "Partition Scheme: Huge APP (3MB No OTA/1MB SPIFFS)"" Arduino IDE menu option + :alt: "Partition Scheme: Huge APP (3MB No OTA/1MB SPIFFS)" Arduino IDE menu option :figclass: align-center 2. **Erase Flash**: Enable **"Erase All Flash Before Sketch Upload"** option from **Tools** menu. From a18b800246f083e9e3b3eb3cbc8f241dd8beff95 Mon Sep 17 00:00:00 2001 From: Sugar Glider Date: Sun, 14 Dec 2025 18:59:41 -0300 Subject: [PATCH 09/19] fix(matter_docs): typo Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- docs/en/matter/matter.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/matter/matter.rst b/docs/en/matter/matter.rst index 70f80e8a076..fc650b4fd13 100644 --- a/docs/en/matter/matter.rst +++ b/docs/en/matter/matter.rst @@ -32,7 +32,7 @@ Before uploading any Matter example sketch, it is necessary to configure the Ard .. figure:: ../../_static/matter_erase_flash.png :align: center - :alt: Erase All Flash Before Sketch Upload: Enabled" Arduino IDE menu option + :alt: "Erase All Flash Before Sketch Upload: Enabled" Arduino IDE menu option :figclass: align-center These settings are required for the following reasons: From 94118c25b2b3770b2da5170ff3b1d2832be1c41f Mon Sep 17 00:00:00 2001 From: Sugar Glider Date: Sun, 14 Dec 2025 19:00:12 -0300 Subject: [PATCH 10/19] fix(matter): typo Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- docs/en/matter/matter.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/matter/matter.rst b/docs/en/matter/matter.rst index fc650b4fd13..29640ac3960 100644 --- a/docs/en/matter/matter.rst +++ b/docs/en/matter/matter.rst @@ -107,7 +107,7 @@ The ``Matter`` class provides the following key methods: * ``begin()``: Initializes the Matter stack * ``isDeviceCommissioned()``: Checks if the device is commissioned -* ``isWi-FiConnected()``: Checks Wi-Fi connection status (if Wi-Fi is enabled) +* ``isWiFiConnected()``: Checks Wi-Fi connection status (if Wi-Fi is enabled) * ``isThreadConnected()``: Checks Thread connection status (if Thread is enabled) * ``isDeviceConnected()``: Checks overall device connectivity * ``isWiFiStationEnabled()``: Checks if WiFi Station mode is supported and enabled From 78e96564f69a5e8c2f26e28a34d942039121be9b Mon Sep 17 00:00:00 2001 From: Sugar Glider Date: Sun, 14 Dec 2025 19:03:01 -0300 Subject: [PATCH 11/19] fix(matter): leftover commentary --- libraries/Matter/src/Matter.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/libraries/Matter/src/Matter.cpp b/libraries/Matter/src/Matter.cpp index 6106e37e331..b004a079b7f 100644 --- a/libraries/Matter/src/Matter.cpp +++ b/libraries/Matter/src/Matter.cpp @@ -204,8 +204,6 @@ bool ArduinoMatter::isWiFiAccessPointEnabled() { bool ArduinoMatter::isThreadEnabled() { // Check hardware support (SOC capabilities) AND Matter configuration - // Thread requires IEEE 802.15.4 radio support (ESP32-H2, ESP32-C6, ESP32-C5) - // For now, we check Matter configuration as hardware detection is complex #if CONFIG_ENABLE_MATTER_OVER_THREAD || CHIP_DEVICE_CONFIG_ENABLE_THREAD return true; #else From 1a501edc628ee78ac9f15c54ad00ea7d3441dad6 Mon Sep 17 00:00:00 2001 From: SuGlider Date: Sun, 14 Dec 2025 19:21:43 -0300 Subject: [PATCH 12/19] fix(matter): fixes window blind terms --- docs/en/matter/matter.rst | 2 +- .../MatterSimpleBlinds.ino} | 4 ++-- .../README.md | 6 +++--- .../{MatterSimpleWidowsBlind => MatterSimpleBlinds}/ci.yml | 0 4 files changed, 6 insertions(+), 6 deletions(-) rename libraries/Matter/examples/{MatterSimpleWidowsBlind/MatterSimpleWidowsBlind.ino => MatterSimpleBlinds/MatterSimpleBlinds.ino} (97%) rename libraries/Matter/examples/{MatterSimpleWidowsBlind => MatterSimpleBlinds}/README.md (98%) rename libraries/Matter/examples/{MatterSimpleWidowsBlind => MatterSimpleBlinds}/ci.yml (100%) diff --git a/docs/en/matter/matter.rst b/docs/en/matter/matter.rst index 29640ac3960..5f2f799d1d1 100644 --- a/docs/en/matter/matter.rst +++ b/docs/en/matter/matter.rst @@ -219,7 +219,7 @@ The Matter library includes a comprehensive set of examples demonstrating variou * **Matter Dimmable Plugin** - Creates a Matter-compatible dimmable plugin unit (power outlet with level control) device with state persistence for dimmable power control applications. `View Matter Dimmable Plugin code on GitHub `_ * **Matter Smart Button** - Creates a Matter-compatible smart button (generic switch) device that sends button click events to smart home ecosystems and triggers automations. `View Matter Smart Button code on GitHub `_ * **Matter Window Covering** - Creates a Matter-compatible window covering device with lift and tilt control (blinds, shades) with manual control using a physical button. `View Matter Window Covering code on GitHub `_ -* **Matter Simple Window Blinds** - A minimal example that only controls lift percentage using a single onGoToLiftPercentage() callback. `View Matter Simple Window Blinds code on GitHub `_ +* **Matter Simple Blinds** - A minimal example that only controls lift percentage using a single onGoToLiftPercentage() callback. `View Matter Simple Blinds code on GitHub `_ **Advanced Examples:** diff --git a/libraries/Matter/examples/MatterSimpleWidowsBlind/MatterSimpleWidowsBlind.ino b/libraries/Matter/examples/MatterSimpleBlinds/MatterSimpleBlinds.ino similarity index 97% rename from libraries/Matter/examples/MatterSimpleWidowsBlind/MatterSimpleWidowsBlind.ino rename to libraries/Matter/examples/MatterSimpleBlinds/MatterSimpleBlinds.ino index 51c4192d7f2..adcb68d7d1c 100644 --- a/libraries/Matter/examples/MatterSimpleWidowsBlind/MatterSimpleWidowsBlind.ino +++ b/libraries/Matter/examples/MatterSimpleBlinds/MatterSimpleBlinds.ino @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -// Matter Simple Window Blinds Example +// Matter Simple Blind Example // This is a minimal example that only controls Lift percentage using a single onGoToLiftPercentage() callback #include @@ -45,7 +45,7 @@ void setup() { Serial.begin(115200); delay(1000); Serial.println("\n========================================"); - Serial.println("Matter Simple Window Blinds Example"); + Serial.println("Matter Simple Blinds Example"); Serial.println("========================================\n"); // CONFIG_ENABLE_CHIPOBLE is enabled when BLE is used to commission the Matter Network diff --git a/libraries/Matter/examples/MatterSimpleWidowsBlind/README.md b/libraries/Matter/examples/MatterSimpleBlinds/README.md similarity index 98% rename from libraries/Matter/examples/MatterSimpleWidowsBlind/README.md rename to libraries/Matter/examples/MatterSimpleBlinds/README.md index dd670a91de5..1e902650240 100644 --- a/libraries/Matter/examples/MatterSimpleWidowsBlind/README.md +++ b/libraries/Matter/examples/MatterSimpleBlinds/README.md @@ -1,4 +1,4 @@ -# Matter Simple Window Blinds Example +# Matter Simple Blinds Example This is a minimal example demonstrating how to create a Matter-compatible window covering device with lift control only. This example uses a single `onGoToLiftPercentage()` callback to handle all window covering lift changes, making it ideal for simple implementations. @@ -55,7 +55,7 @@ Before uploading the sketch, configure the following: ## Building and Flashing -1. Open the `MatterSimpleWidowsBlind.ino` sketch in the Arduino IDE. +1. Open the `MatterSimpleWindowBlind.ino` sketch in the Arduino IDE. 2. Select your ESP32 board from the **Tools > Board** menu. 3. Select **"Huge APP (3MB No OTA/1MB SPIFFS)"** from **Tools > Partition Scheme** menu. 4. Enable **"Erase All Flash Before Sketch Upload"** option from **Tools** menu. @@ -66,7 +66,7 @@ Before uploading the sketch, configure the following: ``` ======================================== -Matter Simple Window Blinds Example +Matter Simple Blinds Example ======================================== Connecting to your-ssid diff --git a/libraries/Matter/examples/MatterSimpleWidowsBlind/ci.yml b/libraries/Matter/examples/MatterSimpleBlinds/ci.yml similarity index 100% rename from libraries/Matter/examples/MatterSimpleWidowsBlind/ci.yml rename to libraries/Matter/examples/MatterSimpleBlinds/ci.yml From 74426232a79cb22e87e836e6b6973c4f24b678d7 Mon Sep 17 00:00:00 2001 From: SuGlider Date: Sun, 14 Dec 2025 19:24:07 -0300 Subject: [PATCH 13/19] fix(matter): fixes window blind terms in code and readme file --- .../MatterSimpleBlinds/MatterSimpleBlinds.ino | 10 +++++----- .../Matter/examples/MatterSimpleBlinds/README.md | 14 +++++++------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/libraries/Matter/examples/MatterSimpleBlinds/MatterSimpleBlinds.ino b/libraries/Matter/examples/MatterSimpleBlinds/MatterSimpleBlinds.ino index adcb68d7d1c..a2f21d1e9aa 100644 --- a/libraries/Matter/examples/MatterSimpleBlinds/MatterSimpleBlinds.ino +++ b/libraries/Matter/examples/MatterSimpleBlinds/MatterSimpleBlinds.ino @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -// Matter Simple Blind Example +// Matter Simple Blinds Example // This is a minimal example that only controls Lift percentage using a single onGoToLiftPercentage() callback #include @@ -33,7 +33,7 @@ const char *password = "your-password"; // Change this to your WiFi password #endif // Simple callback - handles window Lift change request -bool onBlindLift(uint8_t liftPercent) { +bool onBlindsLift(uint8_t liftPercent) { // This example only uses lift Serial.printf("Window Covering change request: Lift=%d%%\r\n", liftPercent); @@ -44,9 +44,9 @@ bool onBlindLift(uint8_t liftPercent) { void setup() { Serial.begin(115200); delay(1000); - Serial.println("\n========================================"); + Serial.println("\n============================"); Serial.println("Matter Simple Blinds Example"); - Serial.println("========================================\n"); + Serial.println("============================\n"); // CONFIG_ENABLE_CHIPOBLE is enabled when BLE is used to commission the Matter Network #if !CONFIG_ENABLE_CHIPOBLE @@ -70,7 +70,7 @@ void setup() { WindowBlinds.begin(100, 0, MatterWindowCovering::ROLLERSHADE); // Set up the onGoToLiftPercentage callback - this handles all window covering changes requested by the Matter Controller - WindowBlinds.onGoToLiftPercentage(onBlindLift); + WindowBlinds.onGoToLiftPercentage(onBlindsLift); // Start Matter Matter.begin(); diff --git a/libraries/Matter/examples/MatterSimpleBlinds/README.md b/libraries/Matter/examples/MatterSimpleBlinds/README.md index 1e902650240..f029b4e314e 100644 --- a/libraries/Matter/examples/MatterSimpleBlinds/README.md +++ b/libraries/Matter/examples/MatterSimpleBlinds/README.md @@ -55,7 +55,7 @@ Before uploading the sketch, configure the following: ## Building and Flashing -1. Open the `MatterSimpleWindowBlind.ino` sketch in the Arduino IDE. +1. Open the `MatterSimpleBlinds.ino` sketch in the Arduino IDE. 2. Select your ESP32 board from the **Tools > Board** menu. 3. Select **"Huge APP (3MB No OTA/1MB SPIFFS)"** from **Tools > Partition Scheme** menu. 4. Enable **"Erase All Flash Before Sketch Upload"** option from **Tools** menu. @@ -65,9 +65,9 @@ Before uploading the sketch, configure the following: ## Expected Output ``` -======================================== +============================ Matter Simple Blinds Example -======================================== +============================ Connecting to your-ssid WiFi connected @@ -96,7 +96,7 @@ Window Covering change request: Lift=50% ## Code Structure -- **`onBlindLift()`**: Callback function that handles window covering lift changes. This is registered with `WindowBlinds.onGoToLiftPercentage()` and is triggered when `TargetPositionLiftPercent100ths` changes. The callback receives the target lift percentage (0-100%). +- **`onBlindsLift()`**: Callback function that handles window covering lift changes. This is registered with `WindowBlinds.onGoToLiftPercentage()` and is triggered when `TargetPositionLiftPercent100ths` changes. The callback receives the target lift percentage (0-100%). - **`setup()`**: Initializes Wi-Fi (if needed), Window Covering endpoint with `ROLLERSHADE` type, registers the callback, and starts Matter. - **`loop()`**: Empty - all control is handled via Matter callbacks. @@ -104,10 +104,10 @@ Window Covering change request: Lift=50% ### Adding Motor Control -In the `onBlindLift()` callback, replace the simulation code with actual motor control: +In the `onBlindsLift()` callback, replace the simulation code with actual motor control: ```cpp -bool onBlindLift(uint8_t liftPercent) { +bool onBlindsLift(uint8_t liftPercent) { Serial.printf("Moving window covering to %d%%\r\n", liftPercent); // Here you would control your actual motor/actuator @@ -131,7 +131,7 @@ bool onBlindLift(uint8_t liftPercent) { 3. **Commands not working**: Ensure the callback returns `true` to accept the command. If it returns `false`, the command will be rejected. -4. **Motor not responding**: Replace the simulation code in `onBlindLift()` with your actual motor control implementation. Remember to update `CurrentPosition` and set `OperationalState` to `STALL` when movement is complete. +4. **Motor not responding**: Replace the simulation code in `onBlindsLift()` with your actual motor control implementation. Remember to update `CurrentPosition` and set `OperationalState` to `STALL` when movement is complete. ## Notes From 520eafc86081bca863a6512e022cfa766a8893b0 Mon Sep 17 00:00:00 2001 From: Sugar Glider Date: Sun, 14 Dec 2025 19:50:09 -0300 Subject: [PATCH 14/19] fix(matter): removes not existing MACRO --- libraries/Matter/src/Matter.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/Matter/src/Matter.cpp b/libraries/Matter/src/Matter.cpp index b004a079b7f..384658a682c 100644 --- a/libraries/Matter/src/Matter.cpp +++ b/libraries/Matter/src/Matter.cpp @@ -215,7 +215,7 @@ bool ArduinoMatter::isBLECommissioningEnabled() { // Check hardware support (SOC capabilities) AND Matter/ESP configuration // BLE commissioning requires: SOC BLE support AND (CHIPoBLE or NimBLE enabled) #ifdef SOC_BLE_SUPPORTED - #if CONFIG_NETWORK_LAYER_BLE || CONFIG_ENABLE_CHIPOBLE + #if CONFIG_ENABLE_CHIPOBLE return true; #else // Also check if BLE stack is enabled (Bluedroid or NimBLE) From f1b900d8d96c8445b665c39a6b742ef555d20c43 Mon Sep 17 00:00:00 2001 From: Sugar Glider Date: Sun, 14 Dec 2025 19:51:56 -0300 Subject: [PATCH 15/19] fix(matter): if CHIPoBLE is not defined, it doesn't support it --- libraries/Matter/src/Matter.cpp | 5 ----- 1 file changed, 5 deletions(-) diff --git a/libraries/Matter/src/Matter.cpp b/libraries/Matter/src/Matter.cpp index 384658a682c..42004e696a8 100644 --- a/libraries/Matter/src/Matter.cpp +++ b/libraries/Matter/src/Matter.cpp @@ -218,12 +218,7 @@ bool ArduinoMatter::isBLECommissioningEnabled() { #if CONFIG_ENABLE_CHIPOBLE return true; #else - // Also check if BLE stack is enabled (Bluedroid or NimBLE) - #if defined(CONFIG_BLUEDROID_ENABLED) || defined(CONFIG_NIMBLE_ENABLED) - return true; - #else return false; - #endif #endif #else return false; From 3f967a00032be19e0940138e49e73954dbe5238f Mon Sep 17 00:00:00 2001 From: Sugar Glider Date: Sun, 14 Dec 2025 19:55:31 -0300 Subject: [PATCH 16/19] fix(matter): fix commentary --- libraries/Matter/src/Matter.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/Matter/src/Matter.cpp b/libraries/Matter/src/Matter.cpp index 42004e696a8..35f150600f4 100644 --- a/libraries/Matter/src/Matter.cpp +++ b/libraries/Matter/src/Matter.cpp @@ -203,7 +203,7 @@ bool ArduinoMatter::isWiFiAccessPointEnabled() { } bool ArduinoMatter::isThreadEnabled() { - // Check hardware support (SOC capabilities) AND Matter configuration + // Check Matter configuration only #if CONFIG_ENABLE_MATTER_OVER_THREAD || CHIP_DEVICE_CONFIG_ENABLE_THREAD return true; #else From 97df1e7bb155528051d1b1504593bff2db8ea8cf Mon Sep 17 00:00:00 2001 From: Sugar Glider Date: Sun, 14 Dec 2025 20:47:02 -0300 Subject: [PATCH 17/19] fix(matter): better commentary Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- docs/en/matter/matter.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/en/matter/matter.rst b/docs/en/matter/matter.rst index 5f2f799d1d1..4c4ed4a5a18 100644 --- a/docs/en/matter/matter.rst +++ b/docs/en/matter/matter.rst @@ -107,8 +107,8 @@ The ``Matter`` class provides the following key methods: * ``begin()``: Initializes the Matter stack * ``isDeviceCommissioned()``: Checks if the device is commissioned -* ``isWiFiConnected()``: Checks Wi-Fi connection status (if Wi-Fi is enabled) -* ``isThreadConnected()``: Checks Thread connection status (if Thread is enabled) +* ``isWiFiConnected()``: Checks Wi-Fi connection status +* ``isThreadConnected()``: Checks Thread connection status * ``isDeviceConnected()``: Checks overall device connectivity * ``isWiFiStationEnabled()``: Checks if WiFi Station mode is supported and enabled * ``isWiFiAccessPointEnabled()``: Checks if WiFi AP mode is supported and enabled From 8da6fc006396ff06d0d5339e6cddecaf2d42ab4d Mon Sep 17 00:00:00 2001 From: Sugar Glider Date: Sun, 14 Dec 2025 20:48:03 -0300 Subject: [PATCH 18/19] fix(matter): better commentary Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- libraries/Matter/examples/MatterStatus/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/Matter/examples/MatterStatus/README.md b/libraries/Matter/examples/MatterStatus/README.md index 45320428c7c..90732233f26 100644 --- a/libraries/Matter/examples/MatterStatus/README.md +++ b/libraries/Matter/examples/MatterStatus/README.md @@ -153,8 +153,8 @@ These functions are useful for: The example periodically reports connection status every 10 seconds: -- **`Matter.isWiFiConnected()`**: Returns `true` if WiFi Station is connected (only available if WiFi Station is enabled) -- **`Matter.isThreadConnected()`**: Returns `true` if Thread is attached to a network (only available if Thread is enabled) +- **`Matter.isWiFiConnected()`**: Returns `true` if WiFi Station is connected. If WiFi Station is not enabled, always returns `false`. +- **`Matter.isThreadConnected()`**: Returns `true` if Thread is attached to a network. If Thread is not enabled, always returns `false`. - **`Matter.isDeviceConnected()`**: Returns `true` if the device is connected via WiFi or Thread (overall connectivity status) - **`Matter.isDeviceCommissioned()`**: Returns `true` if the device has been commissioned to a Matter fabric From 7ca27fd6951e82e664e7ae0f2516346932f10f9f Mon Sep 17 00:00:00 2001 From: Sugar Glider Date: Sun, 14 Dec 2025 20:49:01 -0300 Subject: [PATCH 19/19] fix(matter): identation --- libraries/Matter/src/Matter.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/Matter/src/Matter.cpp b/libraries/Matter/src/Matter.cpp index 35f150600f4..5900ab573b7 100644 --- a/libraries/Matter/src/Matter.cpp +++ b/libraries/Matter/src/Matter.cpp @@ -218,7 +218,7 @@ bool ArduinoMatter::isBLECommissioningEnabled() { #if CONFIG_ENABLE_CHIPOBLE return true; #else - return false; + return false; #endif #else return false;