1
- // Matter Manager
2
- #include < Matter.h>
3
- #include < WiFi.h>
4
-
5
- // List of Matter Endpoints for this Node
6
- // There will be 3 On/Off Light Endpoints in the same Node
7
- #include < MatterOnOffLight.h>
8
- MatterOnOffLight OnOffLight1;
9
- MatterOnOffLight OnOffLight2;
10
- MatterOnOffLight OnOffLight3;
11
-
12
- // Matter Protocol Endpoint Callback for each Light Accessory
13
- bool setLightOnOff1 (bool state) {
14
- Serial.printf (" CB-Light1 changed state to: %s\r\n " , state ? " ON" : " OFF" );
15
- return true ;
16
- }
17
-
18
- bool setLightOnOff2 (bool state) {
19
- Serial.printf (" CB-Light2 changed state to: %s\r\n " , state ? " ON" : " OFF" );
20
- return true ;
21
- }
22
-
23
- bool setLightOnOff3 (bool state) {
24
- Serial.printf (" CB-Light3 changed state to: %s\r\n " , state ? " ON" : " OFF" );
25
- return true ;
26
- }
27
-
28
- // WiFi is manually set and started
29
-
30
- const char *ssid = " your-ssid" ; // Change this to your WiFi SSID
31
- const char *password = " your-password" ; // Change this to your WiFi password
32
-
33
- void setup () {
34
- Serial.begin (115200 );
35
- while (!Serial) {
36
- delay (100 );
37
- }
38
-
39
- // We start by connecting to a WiFi network
40
- Serial.print (" Connecting to " );
41
- Serial.println (ssid);
42
- // enable IPv6
43
- WiFi.enableIPv6 (true );
44
- // Manually connect to WiFi
45
- WiFi.begin (ssid, password);
46
- // Wait for connection
47
- while (WiFi.status () != WL_CONNECTED) {
48
- delay (500 );
49
- Serial.print (" ." );
50
- }
51
- Serial.println (" \r\n WiFi connected" );
52
- Serial.println (" IP address: " );
53
- Serial.println (WiFi.localIP ());
54
- delay (500 );
55
-
56
- // Initialize all 3 Matter EndPoints
57
- OnOffLight1.begin ();
58
- OnOffLight2.begin ();
59
- OnOffLight3.begin ();
60
- OnOffLight1.onChangeOnOff (setLightOnOff1);
61
- OnOffLight2.onChangeOnOff (setLightOnOff2);
62
- OnOffLight3.onChangeOnOff (setLightOnOff3);
63
-
64
- // Matter begining - Last step, after all EndPoints are initialized
65
- Matter.begin ();
66
- }
67
-
68
- void loop () {
69
- // Check Matter Light Commissioning state
70
- if (!Matter.isDeviceCommissioned ()) {
71
- Serial.println (" " );
72
- Serial.println (" Matter Node is not commissioned yet." );
73
- Serial.println (" Initiate the device discovery in your Matter environment." );
74
- Serial.println (" Commission it to your Matter hub with the manual pairing code or QR code" );
75
- Serial.printf (" Manual pairing code: %s\r\n " , Matter.getManualPairingCode ().c_str ());
76
- Serial.printf (" QR code URL: %s\r\n " , Matter.getOnboardingQRCodeUrl ().c_str ());
77
- // waits for Matter Light Commissioning.
78
- uint32_t timeCount = 0 ;
79
- while (!Matter.isDeviceCommissioned ()) {
80
- delay (100 );
81
- if ((timeCount++ % 50 ) == 0 ) { // 50*100ms = 5 sec
82
- Serial.println (" Matter Node not commissioned yet. Waiting for commissioning." );
83
- }
84
- }
85
- Serial.println (" Matter Node is commissioned and connected to Wi-Fi. Ready for use." );
86
- }
87
-
88
- // displays the Light state every 3 seconds
89
- Serial.println (" ======================" );
90
- Serial.printf (" Matter Light #1 is %s\r\n " , OnOffLight1.getOnOff () ? " ON" : " OFF" );
91
- Serial.printf (" Matter Light #2 is %s\r\n " , OnOffLight2.getOnOff () ? " ON" : " OFF" );
92
- Serial.printf (" Matter Light #3 is %s\r\n " , OnOffLight3.getOnOff () ? " ON" : " OFF" );
93
- delay (3000 );
94
- }
1
+ // Matter Manager
2
+ #include < Matter.h>
3
+ #include < WiFi.h>
4
+
5
+ // List of Matter Endpoints for this Node
6
+ // There will be 3 On/Off Light Endpoints in the same Node
7
+ #include < MatterOnOffLight.h>
8
+ MatterOnOffLight OnOffLight1;
9
+ MatterOnOffLight OnOffLight2;
10
+ MatterOnOffLight OnOffLight3;
11
+
12
+ // Matter Protocol Endpoint Callback for each Light Accessory
13
+ bool setLightOnOff1 (bool state) {
14
+ Serial.printf (" CB-Light1 changed state to: %s\r\n " , state ? " ON" : " OFF" );
15
+ return true ;
16
+ }
17
+
18
+ bool setLightOnOff2 (bool state) {
19
+ Serial.printf (" CB-Light2 changed state to: %s\r\n " , state ? " ON" : " OFF" );
20
+ return true ;
21
+ }
22
+
23
+ bool setLightOnOff3 (bool state) {
24
+ Serial.printf (" CB-Light3 changed state to: %s\r\n " , state ? " ON" : " OFF" );
25
+ return true ;
26
+ }
27
+
28
+ // WiFi is manually set and started
29
+
30
+ const char *ssid = " your-ssid" ; // Change this to your WiFi SSID
31
+ const char *password = " your-password" ; // Change this to your WiFi password
32
+
33
+ void setup () {
34
+ Serial.begin (115200 );
35
+ while (!Serial) {
36
+ delay (100 );
37
+ }
38
+
39
+ // We start by connecting to a WiFi network
40
+ Serial.print (" Connecting to " );
41
+ Serial.println (ssid);
42
+ // enable IPv6
43
+ WiFi.enableIPv6 (true );
44
+ // Manually connect to WiFi
45
+ WiFi.begin (ssid, password);
46
+ // Wait for connection
47
+ while (WiFi.status () != WL_CONNECTED) {
48
+ delay (500 );
49
+ Serial.print (" ." );
50
+ }
51
+ Serial.println (" \r\n WiFi connected" );
52
+ Serial.println (" IP address: " );
53
+ Serial.println (WiFi.localIP ());
54
+ delay (500 );
55
+
56
+ // Initialize all 3 Matter EndPoints
57
+ OnOffLight1.begin ();
58
+ OnOffLight2.begin ();
59
+ OnOffLight3.begin ();
60
+ OnOffLight1.onChangeOnOff (setLightOnOff1);
61
+ OnOffLight2.onChangeOnOff (setLightOnOff2);
62
+ OnOffLight3.onChangeOnOff (setLightOnOff3);
63
+
64
+ // Matter beginning - Last step, after all EndPoints are initialized
65
+ Matter.begin ();
66
+ }
67
+
68
+ void loop () {
69
+ // Check Matter Light Commissioning state
70
+ if (!Matter.isDeviceCommissioned ()) {
71
+ Serial.println (" " );
72
+ Serial.println (" Matter Node is not commissioned yet." );
73
+ Serial.println (" Initiate the device discovery in your Matter environment." );
74
+ Serial.println (" Commission it to your Matter hub with the manual pairing code or QR code" );
75
+ Serial.printf (" Manual pairing code: %s\r\n " , Matter.getManualPairingCode ().c_str ());
76
+ Serial.printf (" QR code URL: %s\r\n " , Matter.getOnboardingQRCodeUrl ().c_str ());
77
+ // waits for Matter Light Commissioning.
78
+ uint32_t timeCount = 0 ;
79
+ while (!Matter.isDeviceCommissioned ()) {
80
+ delay (100 );
81
+ if ((timeCount++ % 50 ) == 0 ) { // 50*100ms = 5 sec
82
+ Serial.println (" Matter Node not commissioned yet. Waiting for commissioning." );
83
+ }
84
+ }
85
+ Serial.println (" Matter Node is commissioned and connected to Wi-Fi. Ready for use." );
86
+ }
87
+
88
+ // displays the Light state every 3 seconds
89
+ Serial.println (" ======================" );
90
+ Serial.printf (" Matter Light #1 is %s\r\n " , OnOffLight1.getOnOff () ? " ON" : " OFF" );
91
+ Serial.printf (" Matter Light #2 is %s\r\n " , OnOffLight2.getOnOff () ? " ON" : " OFF" );
92
+ Serial.printf (" Matter Light #3 is %s\r\n " , OnOffLight3.getOnOff () ? " ON" : " OFF" );
93
+ delay (3000 );
94
+ }
0 commit comments