Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 017f2df

Browse filesBrowse files
committed
fix(matter): ci codespell
1 parent 1ef603a commit 017f2df
Copy full SHA for 017f2df

File tree

Expand file treeCollapse file tree

1 file changed

+167
-0
lines changed
Filter options
Expand file treeCollapse file tree

1 file changed

+167
-0
lines changed

‎libraries/Matter/examples/MatterOnIdentify/MatterOnIdentify.ino

Copy file name to clipboardExpand all lines: libraries/Matter/examples/MatterOnIdentify/MatterOnIdentify.ino
+167Lines changed: 167 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
<<<<<<< Updated upstream
12
// Copyright 2024 Espressif Systems (Shanghai) PTE LTD
23
//
34
// Licensed under the Apache License, Version 2.0 (the "License");
@@ -162,3 +163,169 @@ void loop() {
162163

163164
delay(500); // works as a debounce for the button and also for the LED blink
164165
}
166+
=======
167+
// Copyright 2024 Espressif Systems (Shanghai) PTE LTD
168+
//
169+
// Licensed under the Apache License, Version 2.0 (the "License");
170+
// you may not use this file except in compliance with the License.
171+
// You may obtain a copy of the License at
172+
173+
// http://www.apache.org/licenses/LICENSE-2.0
174+
//
175+
// Unless required by applicable law or agreed to in writing, software
176+
// distributed under the License is distributed on an "AS IS" BASIS,
177+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
178+
// See the License for the specific language governing permissions and
179+
// limitations under the License.
180+
181+
/*
182+
* This example is the smallest code that will create a Matter Device which can be
183+
* commissioned and controlled from a Matter Environment APP.
184+
* It controls a GPIO that could be attached to a LED for visualization.
185+
* Additionally the ESP32 will send debug messages indicating the Matter activity.
186+
* Turning DEBUG Level ON may be useful to following Matter Accessory and Controller messages.
187+
*
188+
* This example is a simple Matter On/Off Light that can be controlled by a Matter Controller.
189+
* It demonstrates how to use On Identify callback when the Identify Cluster is called.
190+
* The Matter user APP can be used to request the device to identify itself by blinking the LED.
191+
*/
192+
193+
// Matter Manager
194+
#include <Matter.h>
195+
#include <WiFi.h>
196+
197+
// List of Matter Endpoints for this Node
198+
// Single On/Off Light Endpoint - at least one per node
199+
MatterOnOffLight OnOffLight;
200+
201+
// WiFi is manually set and started
202+
const char *ssid = "your-ssid"; // Change this to your WiFi SSID
203+
const char *password = "your-password"; // Change this to your WiFi password
204+
205+
// Light GPIO that can be controlled by Matter APP
206+
#ifdef LED_BUILTIN
207+
const uint8_t ledPin = LED_BUILTIN;
208+
#else
209+
const uint8_t ledPin = 2; // Set your pin here if your board has not defined LED_BUILTIN
210+
#endif
211+
212+
// set your board USER BUTTON pin here - decommissioning button
213+
const uint8_t buttonPin = BOOT_PIN; // Set your pin here. Using BOOT Button.
214+
215+
// Button control - decommision the Matter Node
216+
uint32_t button_time_stamp = 0; // debouncing control
217+
bool button_state = false; // false = released | true = pressed
218+
const uint32_t decommissioningTimeout = 5000; // keep the button pressed for 5s, or longer, to decommission
219+
220+
// Identify Flag and blink time - Blink the LED
221+
const uint8_t identifyLedPin = ledPin; // uses the same LED as the Light - change if needed
222+
volatile bool identifyFlag = false; // Flag to start the Blink when in Identify state
223+
bool identifyBlink = false; // Blink state when in Identify state
224+
225+
// Matter Protocol Endpoint (On/OFF Light) Callback
226+
bool onOffLightCallback(bool state) {
227+
digitalWrite(ledPin, state ? HIGH : LOW);
228+
// This callback must return the success state to Matter core
229+
return true;
230+
}
231+
232+
// Identification shall be done by Blink in Red or just the GPIO when no LED_BUILTIN is not defined
233+
bool onIdentifyLightCallback(bool identifyIsActive) {
234+
Serial.printf("Identify Cluster is %s\r\n", identifyIsActive ? "Active" : "Inactive");
235+
if (identifyIsActive) {
236+
// Start Blinking the light in loop()
237+
identifyFlag = true;
238+
identifyBlink = !OnOffLight; // Start with the inverted light state
239+
} else {
240+
// Stop Blinking and restore the light to the its last state
241+
identifyFlag = false;
242+
// force returning to the original state by toggling the light twice
243+
OnOffLight.toggle();
244+
OnOffLight.toggle();
245+
}
246+
return true;
247+
}
248+
249+
void setup() {
250+
// Initialize the USER BUTTON (Boot button) that will be used to decommission the Matter Node
251+
pinMode(buttonPin, INPUT_PULLUP);
252+
// Initialize the LED GPIO
253+
pinMode(ledPin, OUTPUT);
254+
255+
Serial.begin(115200);
256+
257+
// Manually connect to WiFi
258+
WiFi.begin(ssid, password);
259+
// Wait for connection
260+
while (WiFi.status() != WL_CONNECTED) {
261+
delay(500);
262+
Serial.print(".");
263+
}
264+
Serial.println();
265+
266+
// Initialize at least one Matter EndPoint
267+
OnOffLight.begin();
268+
269+
// On Identify Callback - Blink the LED
270+
OnOffLight.onIdentify(onIdentifyLightCallback);
271+
272+
// Associate a callback to the Matter Controller
273+
OnOffLight.onChange(onOffLightCallback);
274+
275+
// Matter beginning - Last step, after all EndPoints are initialized
276+
Matter.begin();
277+
278+
// Check Matter Accessory Commissioning state, which may change during execution of loop()
279+
if (!Matter.isDeviceCommissioned()) {
280+
Serial.println("");
281+
Serial.println("Matter Node is not commissioned yet.");
282+
Serial.println("Initiate the device discovery in your Matter environment.");
283+
Serial.println("Commission it to your Matter hub with the manual pairing code or QR code");
284+
Serial.printf("Manual pairing code: %s\r\n", Matter.getManualPairingCode().c_str());
285+
Serial.printf("QR code URL: %s\r\n", Matter.getOnboardingQRCodeUrl().c_str());
286+
// waits for Matter Occupancy Sensor Commissioning.
287+
uint32_t timeCount = 0;
288+
while (!Matter.isDeviceCommissioned()) {
289+
delay(100);
290+
if ((timeCount++ % 50) == 0) { // 50*100ms = 5 sec
291+
Serial.println("Matter Node not commissioned yet. Waiting for commissioning.");
292+
}
293+
}
294+
Serial.println("Matter Node is commissioned and connected to Wi-Fi. Ready for use.");
295+
}
296+
}
297+
298+
void loop() {
299+
// check if the Light is in identify state and blink it every 500ms (delay loop time)
300+
if (identifyFlag) {
301+
#ifdef LED_BUILTIN
302+
uint8_t brightness = 32 * identifyBlink;
303+
rgbLedWrite(identifyLedPin, brightness, 0, 0);
304+
#else
305+
digitalWrite(identifyLedPin, identifyBlink ? HIGH : LOW);
306+
#endif
307+
identifyBlink = !identifyBlink;
308+
}
309+
310+
// Check if the button has been pressed
311+
if (digitalRead(buttonPin) == LOW && !button_state) {
312+
// deals with button debouncing
313+
button_time_stamp = millis(); // record the time while the button is pressed.
314+
button_state = true; // pressed.
315+
}
316+
317+
if (digitalRead(buttonPin) == HIGH && button_state) {
318+
button_state = false; // released
319+
}
320+
321+
// Onboard User Button is kept pressed for longer than 5 seconds in order to decommission matter node
322+
uint32_t time_diff = millis() - button_time_stamp;
323+
if (button_state && time_diff > decommissioningTimeout) {
324+
Serial.println("Decommissioning the Light Matter Accessory. It shall be commissioned again.");
325+
Matter.decommission();
326+
button_time_stamp = millis(); // avoid running decommissining again, reboot takes a second or so
327+
}
328+
329+
delay(500); // works as a debounce for the button and also for the LED blink
330+
}
331+
>>>>>>> Stashed changes

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.