#include <Arduino.h>
#include <Matter.h>
using namespace chip;
using namespace chip::app::Clusters;
using namespace esp_matter;
using namespace esp_matter::endpoint;
// using namespace esp_matter::Matter;
// Define your custom cluster ID (choose a unique value)
constexpr uint16_t kCustomClusterId = 0x1234;
// Define custom attributes for the air cooler cluster
constexpr uint16_t kFanSpeedAttributeId = 0x0001; // Fan speed attribute
// Custom cluster handler
class AirCoolerClusterHandler : public Matter::ClusterHandler {
public:
AirCoolerClusterHandler() : Matter::ClusterHandler(kCustomClusterId) {}
// Handle read requests for custom attributes
void handleReadAttribute(Matter::AttributeContext &ctx) override {
if (ctx.attributeId == kFanSpeedAttributeId) {
// Return the current fan speed (you can replace this with actual data)
ctx.respondWithValue(static_cast<uint8_t>(currentFanSpeed));
}
}
// Handle write requests for custom attributes
void handleWriteAttribute(Matter::AttributeContext &ctx) override {
if (ctx.attributeId == kFanSpeedAttributeId) {
// Update the fan speed (you can implement your logic here)
currentFanSpeed = ctx.value.asUint8();
ctx.respondSuccess();
}
}
private:
uint8_t currentFanSpeed = 0; // Initialize with default fan speed
};
// Create an instance of your custom cluster handler
AirCoolerClusterHandler airCoolerCluster;
void setup() {
// Initialize Matter stack
Matter::init();
// Register your custom cluster handler
Matter::registerClusterHandler(&airCoolerCluster);
// Start Matter stack
Matter::start();
}
void loop() {
// Run Matter stack loop
Matter::loop();
}
Here is the code, when I am compiling the code I am getting these errors –
C:UserssuvamOneDriveDocumentsArduinosketch_may22a_matterClustersketch_may22a_matterCluster.ino:17:40: error: ‘Matter’ has not been declared
class AirCoolerClusterHandler : public Matter::ClusterHandler {
^~~~~~
C:UserssuvamOneDriveDocumentsArduinosketch_may22a_matterClustersketch_may22a_matterCluster.ino:17:48: error: expected ‘{‘ before ‘ClusterHandler’
class AirCoolerClusterHandler : public Matter::ClusterHandler {
^~~~~~~~~~~~~~
C:UserssuvamOneDriveDocumentsArduinosketch_may22a_matterClustersketch_may22a_matterCluster.ino:18:1: error: expected primary-expression before ‘public’
public:
^~~~~~
C:UserssuvamOneDriveDocumentsArduinosketch_may22a_matterClustersketch_may22a_matterCluster.ino:18:1: error: expected ‘}’ before ‘public’
C:UserssuvamOneDriveDocumentsArduinosketch_may22a_matterClustersketch_may22a_matterCluster.ino:17:63: note: to match this ‘{‘
class AirCoolerClusterHandler : public Matter::ClusterHandler {
^
C:UserssuvamOneDriveDocumentsArduinosketch_may22a_matterClustersketch_may22a_matterCluster.ino:22:30: error: variable or field ‘handleReadAttribute’ declared void
void handleReadAttribute(Matter::AttributeContext &ctx) override {
^~~~~~
C:UserssuvamOneDriveDocumentsArduinosketch_may22a_matterClustersketch_may22a_matterCluster.ino:22:30: error: ‘Matter’ has not been declared
C:UserssuvamOneDriveDocumentsArduinosketch_may22a_matterClustersketch_may22a_matterCluster.ino:22:56: error: ‘ctx’ was not declared in this scope
void handleReadAttribute(Matter::AttributeContext &ctx) override {
^~~
C:UserssuvamOneDriveDocumentsArduinosketch_may22a_matterClustersketch_may22a_matterCluster.ino:22:56: note: maximum limit of 1000 namespaces searched for ‘ctx’
C:UserssuvamOneDriveDocumentsArduinosketch_may22a_matterClustersketch_may22a_matterCluster.ino:30:31: error: variable or field ‘handleWriteAttribute’ declared void
void handleWriteAttribute(Matter::AttributeContext &ctx) override {
^~~~~~
C:UserssuvamOneDriveDocumentsArduinosketch_may22a_matterClustersketch_may22a_matterCluster.ino:30:31: error: ‘Matter’ has not been declared
C:UserssuvamOneDriveDocumentsArduinosketch_may22a_matterClustersketch_may22a_matterCluster.ino:30:57: error: ‘ctx’ was not declared in this scope
void handleWriteAttribute(Matter::AttributeContext &ctx) override {
^~~
C:UserssuvamOneDriveDocumentsArduinosketch_may22a_matterClustersketch_may22a_matterCluster.ino:30:57: note: maximum limit of 1000 namespaces searched for ‘ctx’
C:UserssuvamOneDriveDocumentsArduinosketch_may22a_matterClustersketch_may22a_matterCluster.ino:38:1: error: expected unqualified-id before ‘private’
private:
^~~~~~~
C:UserssuvamOneDriveDocumentsArduinosketch_may22a_matterClustersketch_may22a_matterCluster.ino:40:1: error: expected declaration before ‘}’ token
};
^exit status 1
Compilation error: ‘Matter’ has not been declared
I have tried to create a new cluster for ESP32 Matter for an air cooler, but it is failing.