Matter - Enphase with the Matterbridge Plugin Factory

Hi,

I have solar panels with Enphase equipment without a battery and I want to participate in the integration. Currently, I have the following feedback.

There are the « Grid Consumption » values that I don’t find in my app and on HA.
Can you explain to me what needs to be exposed? Is it the « Mapping Matter » table in the GitHub issue? ([PLUGIN REQUEST] Enphase Envoy · Issue #31 · GladysAssistant/matterbridge-ai-plugin-factory · GitHub)

In Matterbridge, you have another device view that allows you to visualize the Matter clusters exposed by the plugin. Can you show us a screenshot of this view?

@pierre-gilles Are you talking about this view?

No, there is a more precise view where you can see all the available clusters.

Otherwise, on the Gladys side, you can download the JSON of the Matter nodes and that gives us the same list :slight_smile:

I sent you the JSON in a private message.

Thank you for the file!

Here’s what Matterbridge exposes, the clusters managed by Gladys, and those not managed by Gladys at the moment:

Clusters Already Managed by Gladys (Present in the File)

  • OnOff — outlets (#2, #3)
  • BooleanState — contact (#31)
  • TemperatureMeasurement — temperature (#30)
  • ElectricalPowerMeasurement / ElectricalEnergyMeasurement — energy (#28, #29)
  • PowerSource — battery/power supply (#28)
  • BridgedDeviceBasicInformation — metadata of bridged devices

Unmanaged Clusters

  1. PowerTopology (#28, #29)
    Describes how energy flows between endpoints (electrical topology). No Gladys mapping today.
  2. DeviceEnergyManagement (#28)
    Energy consumption management of the device (power limitation, etc.). No Gladys mapping.
  3. DeviceEnergyManagementMode (#28)
    Energy management modes derived from the Basic Mode cluster. No Gladys mapping.

These 3 clusters mainly concern the solar panel (#28) and partly the electric sensor (#29). The main measurements (power, cumulative energy) already pass through the ElectricalPowerMeasurement and ElectricalEnergyMeasurement clusters, which are already supported.

Here’s what I have in Gladys.

I don’t have anything else.

For information, I can’t select the « House » room and I only have that one.

How can I help you?

Weird, are you on the latest version of Gladys?

Can you download Gladys logs and send them to me in a PM?

I think you haven’t created any rooms on your instance, you need to create them in « Settings » → « House ».

I have version 4.81.0.

It’s done.

Yes, that’s true :slight_smile:

Thanks for the logs, there is a very clear error in the logs, now to see if it comes from the plugin, Gladys, or Matter.js:

[2m2026-07-08 20:56:15.582 WARN   �[0;1;90mExchangeManager      �[0;35m@1:1•81e2⇵5aac✉07bb95bf �[33mUnhandled error handling incoming message: �[31mCannot mix BigInt and other types, use explicit conversions
2026-07-08T18:56:15.732854580Z   �[2;39mat �[0m/src/server/services/matter/lib/matter.listenToStateChange.js�[2m:432:75
2026-07-08T18:56:15.732867500Z   at �[0m/src/server/services/matter/node_modules/@project-chip/matter.js/src/cluster/client/AttributeClient.ts�[2m:182:45
2026-07-08T18:56:15.732878854Z   at �[0mArray.forEach�[2m (<anonymous>)
2026-07-08T18:56:15.732889471Z   at <span style="color: default">SupportedAttributeClient.update</span><span style="color: gray"> (/src/server/services/matter/node_modules/@project-chip/matter.js/src/cluster/client/AttributeClient.ts:182:25)</span>
2026-07-08T18:56:15.732900478Z   at <span style="color: default">Object._triggerAttributeUpdate</span><span style="color: gray"> (/src/server/services/matter/node_modules/@project-chip/matter.js/src/cluster/client/ClusterClient.ts:281:52)</span>
2026-07-08T18:56:15.732911584Z   at <span style="color: default">PairedNode.#handleNodeChange</span><span style="color: gray"> (/src/server/services/matter/node_modules/@project-chip/matter.js/src/device/PairedNode.ts:665:58)</span>
2026-07-08T18:56:15.732922415Z   at <span style="color: default">BasicObservable.emit</span><span style="color: gray"> (/src/server/services/matter/node_modules/@matter/general/src/util/Observable.ts:309:26)</span>
2026-07-08T18:56:15.732933134Z   at <span style="color: default">CommissioningController.#handleNodeChange</span><span style="color: gray"> (/src/server/services/matter/node_modules/@project-chip/matter.js/src/CommissioningController.ts:848:23)</span>
2026-07-08T18:56:15.732944033Z   at <span style="color: default">BasicObservable.emit</span><span style="color: gray"> (/src/server/services/matter/node_modules/@matter/general/src/util/Observable.ts:309:26)</span>
2026-07-08T18:56:15.732955065Z   at <span style="color: default">ChangeNotificationService.broadcastUpdate</span><span style="color: gray"> (/src/server/services/matter/node_modules/@matter/node/src/node/integration/ChangeNotificationService.ts:51:22)</span>
2026-07-08T18:56:15.732966012Z   at <span style="color: default">ClientBehaviorBacking.broadcastChanges</span><span style="color: gray"> (/src/server/services/matter/node_modules/@matter/node/src/behavior/internal/BehaviorBacking.ts:365:30)</span>
2026-07-08T18:56:15.732977232Z   at <span style="color: default">ClientBehaviorBacking.broadcastChanges</span><span style="color: gray"> (/src/server/services/matter/node_modules/@matter/node/src/behavior/internal/ClientBehaviorBacking.ts:68:15)</span>
2026-07-08T18:56:15.732988378Z   at <span style="color: default">DatasourceImpl.integrateExternalChange</span><span style="color: gray"> (/src/server/services/matter/node_modules/@matter/node/src/behavior/state/managed/Datasource.ts:518:38)</span>
2026-07-08T18:56:15.733034338Z   at <span style="color: default">DatasourceCache.externalSet</span><span style="color: gray"> (/src/server/services/matter/node_modules/@matter/node/src/storage/client/DatasourceCache.ts:124:33)</span>
2026-07-08T18:56:15.733044460Z   at <span style="color: default">ClientStructure.#updateCluster</span><span style="color: gray"> (/src/server/services/matter/node_modules/@matter/node/src/node/client/ClientStructure.ts:487:29)</span>
2026-07-08T18:56:15.733052594Z   at <span style="color: default">ClientStructure.#mutateAttribute</span><span style="color: gray"> (/src/server/services/matter/node_modules/@matter/node/src/node/client/ClientStructure.ts:384:24)</span>
2026-07-08T18:56:15.733060637Z   at <span style="color: default">ClientStructure.mutate</span><span style="color: gray"> (/src/server/services/matter/node_modules/@matter/node/src/node/client/ClientStructure.ts:226:53)</span>
2026-07-08T18:56:15.733068713Z   at <span style="color: default">Object.updated</span><span style="color: gray"> (/src/server/services/matter/node_modules/@matter/node/src/behavior/system/network/NetworkClient.ts:144:38)</span>
2026-07-08T18:56:15.733076645Z   at <span style="color: default">Object.updated</span><span style="color: gray"> (/src/server/services/matter/node_modules/@matter/node/src/node/client/ClientNodeInteraction.ts:107:21)</span>
2026-07-08T18:56:15.733084570Z   at <span style="color: default">ClientSubscriptionHandler.#handleExchange</span><span style="color: gray"> (/src/server/services/matter/node_modules/@matter/protocol/src/action/client/subscription/ClientSubscriptionHandler.ts:124:21)</span>
2026-07-08T18:56:15.733092852Z   at <span style="color: default">ClientSubscriptionHandler.onNewExchange</span><span style="color: gray"> (/src/server/services/matter/node_modules/@matter/protocol/src/action/client/subscription/ClientSubscriptionHandler.ts:49:13)</span>
2026-07-08T18:56:15.733101026Z   at <span style="color: default">InteractionServer.onNewExchange</span><span style="color: gray"> (/src/server/services/matter/node_modules/@matter/node/src/node/server/InteractionServer.ts:193:20)</span>
2026-07-08T18:56:15.733108956Z   at <span style="color: default">ExchangeManager.#onMessage</span><span style="color: default"> (/src/server/services/matter/node_modules/@matter/protocol/src/protocol/ExchangeManager.ts:380:21)</span>
2026-07-08T18:56:15.734395009Z 2026-07-08T20:56:15+0200 <span style="color: green">info</span> device.newStateEvent.js:17 (DeviceManager.newStateEvent) DeviceFeature "matter:1:1:child_endpoint:28:144:power" not found (or not added to Gladys), skipping state update.
2026-07-08T18:56:41.061019372Z <span style="color: gray">2026-07-08 20:56:41.052 WARN   ExchangeManager      @1:1•81e2⇵5aad✉07bb95c0 Unhandled error handling incoming message: Cannot mix BigInt and other types, use explicit conversions</span>
2026-07-08T18:56:41.061101575Z   <span style="color: gray">at /src/server/services/matter/lib/matter.listenToStateChange.js:432:75</span>
2026-07-08T18:56:41.061117520Z   at <span style="color: default">/src/server/services/matter/node_modules/@project-chip/matter.js/src/cluster/client/AttributeClient.ts</span>:182:45
2026-07-08T18:56:41.061131412Z   at <span style="color: default">Array.forEach</span> <span style="color: default">(anonymous)</span>
2026-07-08T18:56:41.061144899Z   at <span style="color: default">SupportedAttributeClient.update</span><span style="color: gray"> (/src/server/services/matter/node_modules/@project-chip/matter.js/src/cluster/client/AttributeClient.ts:182:25)</span>
2026-07-08T18:56:41.061158676Z   at <span style="color: default">Object._triggerAttributeUpdate</span><span style="color: gray"> (/src/server/services/matter/node_modules/@project-chip/matter.js/src/cluster/client/ClusterClient.ts:281:52)</span>
2026-07-08T18:56:41.061171933Z   at <span style="color: default">PairedNode.#handleNodeChange</span><span style="color: gray"> (/src/server/services/matter/node_modules/@project-chip/matter.js/src/device/PairedNode.ts:665:58)</span>
2026-07-08T18:56:41.061229899Z   at <span style="color: default">BasicObservable.emit</span><span style="color: gray"> (/src/server/services/matter/node_modules/@matter/general/src/util/Observable.ts:309:26)</span>
2026-07-08T18:56:41.061245787Z   at <span style="color: default">CommissioningController.#handleNodeChange</span><span style="color: gray"> (/src/server/services/matter/node_modules/@project-chip/matter.js/src/CommissioningController.ts:848:23)</span>
2026-07-08T18:56:41.061259879Z   at <span style="color: default">BasicObservable.emit</span><span style="color: gray"> (/src/server/services/matter/node_modules/@matter/general/src/util/Observable.ts:309:26)</span>
2026-07-08T18:56:41.061272828Z   at <span style="color: default">ChangeNotificationService.broadcastUpdate</span><span style="color: gray"> (/src/server/services/matter/node_modules/@matter/node/src/node/integration/ChangeNotificationService.ts:51:22)</span>
2026-07-08T18:56:41.061286640Z   at <span style="color: default">ClientBehaviorBacking.broadcastChanges</span><span style="color: gray"> (/src/server/services/matter/node_modules/@matter/node/src/behavior/internal/BehaviorBacking.ts:365:30)</span>
2026-07-08T18:56:41.061300162Z   at <span style="color: default">ClientBehaviorBacking.broadcastChanges</span><span style="color: gray"> (/src/server/services/matter/node_modules/@matter/node/src/behavior/internal/ClientBehaviorBacking.ts:68:15)</span>
2026-07-08T18:56:41.061313330Z   at <span style="color: default">DatasourceImpl.integrateExternalChange</span><span style="color: gray"> (/src/server/services/matter/node_modules/@matter/node/src/behavior/state/managed/Datasource.ts:518:38)</span>
2026-07-08T18:56:41.061330762Z   at <span style="color: default">DatasourceCache.externalSet</span><span style="color: gray"> (/src/server/services/matter/node_modules/@matter/node/src/storage/client/DatasourceCache.ts:124:33)</span>
2026-07-08T18:56:41.061344755Z   at <span style="color: default">ClientStructure.#updateCluster</span><span style="color: gray"> (/src/server/services/matter/node_modules/@matter/node/src/node/client/ClientStructure.ts:487:29)</span>
2026-07-08T18:56:41.061358118Z   at <span style="color: default">ClientStructure.#mutateAttribute</span><span style="color: gray"> (/src/server/services/matter/node_modules/@matter/node/src/node/client/ClientStructure.ts:384:24)</span>
2026-07-08T18:56:41.061371639Z   at <span style="color: default">ClientStructure.mutate</span><span style="color: gray"> (/src/server/services/matter/node_modules/@matter/node/src/node/client/ClientStructure.ts:226:53)</span>
2026-07-08T18:56:41.061385419Z   at <span style="color: default">Object.updated</span><span style="color: gray"> (/src/server/services/matter/node_modules/@matter/node/src/behavior/system/network/NetworkClient.ts:144:38)</span>
2026-07-08T18:56:41.061398858Z   at <span style="color: default">Object.updated</span><span style="color: gray"> (/src/server/services/matter/node_modules/@matter/node/src/node/client/ClientNodeInteraction.ts:107:21)</span>
2026-07-08T18:56:41.061411726Z   at <span style="color: default">ClientSubscriptionHandler.#handleExchange</span><span style="color: gray"> (/src/server/services/matter/node_modules/@matter/protocol/src/action/client/subscription/ClientSubscriptionHandler.ts:124:21)</span>
2026-07-08T18:56:41.061425323Z   at <span style="color: default">ClientSubscriptionHandler.onNewExchange</span><span style="color: gray"> (/src/server/services/matter/node_modules/@matter/protocol/src/action/client/subscription/ClientSubscriptionHandler.ts:49:13)</span>
2026-07-08T18:56:41.061438864Z   at <span style="color: default">InteractionServer.onNewExchange</span><span style="color: gray"> (/src/server/services/matter/node_modules/@matter/node/src/node/server/InteractionServer.ts:193:20)</span>
2026-07-08T18:56:41.061451919Z   at <span style="color: default">ExchangeManager.#onMessage</span><span style="color: default"> (/src/server/services/matter/node_modules/@matter/protocol/src/protocol/ExchangeManager.ts:380:21)</span>

I created a ticket:

Ok thanks. While waiting for the fix, I’ll initialize Matter plugins for MyRenault and Wallbox to make progress on something else :slight_smile:

@ArMour85 it was a Gladys bug after all, this bug is fixed and will be included in the next version of Gladys :slight_smile:

Okay, I’ll test it in the next version.

The fix is live in Gladys Assistant 4.84

I’m going to create an external integration to manage Enphase.

I hope I’ll have enough free time :slight_smile:

More than free time, you need a Claude Code subscription :smiley:

After that, everything is done on mobile, on public transport, at the gym ^^

Yes, I agree, but you still need the means. What bothers me now, and it’s increasingly true in my work, is that for development you have to pay a subscription. This raises other issues about your dependence on a service that can close for political reasons, for example.

But I agree with you that you’ll be much faster.

I would understand the comment if there was a commitment.

But here, we’re talking about €20 (the price of a restaurant menu), no commitment, for access for a month to a senior software engineer available 24/7. If we compare this to the total employer cost of a senior developer in France in 2026 (salary, charges, equipment, etc.), we’re talking about a service that would represent €7-11k in value.

I have never seen such an asymmetry between the price paid and the value obtained in the history of software development.

And you talk about speed, I would talk more about quality. Today, I find that AI produces a better result than a human developer, not only on the code itself, but especially on the overall rigor of the project.

The PRs are complete: documentation, specifications, unit tests, linting, migration, etc. Communication is excellent: the title, description, and PR follow-up are updated as development progresses. The AI will also handle a multitude of small details that even a senior developer would often push back on due to lack of time or simply because these tasks are repetitive.

I was very skeptical in the early years because the models simply weren’t up to par. Today, I don’t see many reasons to write code by hand for classic development. In my opinion, this practice will become increasingly marginal.

Most of the companies I frequent already develop mostly with AI (in spec-driven-development).

My prediction is that, within one or two years, writing code entirely by hand will be considered a bad practice in many teams, a bit like we consider it abnormal today not to use a compiler, an IDE, or a version control system. I don’t know if it will be “forbidden,” but I think it will be strongly discouraged.

I completely agree with you but it depends on the field. I work in the space industry where clients don’t allow it or it’s very restrictive. For example, you can’t use online services so local for confidentiality and prove that the code doesn’t violate a software license. What a hassle :slightly_smiling_face:

Moreover, for now, LLMs are not capable of inventing and imagining; they regurgitate what they’ve learned and what they’re told. So on that side, they won’t write scientific publications from A to Z.

I use Cline because I can use it with Ollama and I just saw that Cline offers very powerful open models for €10 (ClinePass - Open Weights Models in Cline). I’m going to test it even if I have to code a lot myself.