Open APCM-1 opened 10 months ago
Hello, i have those devices since a couple of days. I'm using Deconz (Phoscon) to add device to my zigbee network: devices are recognized as Lamp in Phoscon and i can only On and Off but without power measurement. So there is also no Power Measurement in Home Assistant (ZHA). What have you done to see power measurement please?
Hello,
I just paired modules to Home Assistant and they were recognized as a socket and the consumption information came automatically
Ok thanks. I finally removed DeconZ and i replaced it with ZHA. I have now "Commutateur", "Demande instantanée" and "Summation delivered" but not "Consommation chauffage". Is it usefull?
Oh yes sorry this one is a manual entry to know how much consumption I have each day
Great! Can you explain me how to do that please?
I'm also interested. It will be interesting to check if the device is the same with SIN-4-fp-21 because they are both made by nodon
Ce post m'intéresse aussi. Il serait intéressant de voir si un développement peut permettre de faire fonctionner la référence du fabricant Nodon: la sin-4-fp-21
Great! Can you explain me how to do that please?
Into parameters, in entries tab, create a new one, you need to choose a utiliy meter (water, electricity) in french its "Compteur de services publics (eau, gaz, électricité…)" and set the same parameters as the screenshot
I'm also interested. It will be interesting to check if the device is the same with SIN-4-fp-21 because they are both made by nodon
Ce post m'intéresse aussi. Il serait intéressant de voir si un développement peut permettre de faire fonctionner la référence du fabricant Nodon: la sin-4-fp-21
I think it's the same, I see somewhere else on github that people reference the SIN-4-FP-21 as the same device as the SIN-4-FP-21_EQU.
Great! Can you explain me how to do that please?
Into parameters, in entries tab, create a new one, you need to choose a utiliy meter (water, electricity) in french its "Compteur de services publics (eau, gaz, électricité…)" and set the same parameters as the screenshot
Thnaks!!
Any news on this ? Is everything working with ZHA ?
Any news on this ? Is everything working with ZHA ?
Hi,
I asked directly the manufecturer for information. For Z2M the integration will be available in late January but for ZHA it will be available later.
I flag here to follow. I have several of these modules on my heaters and I would like more that consumption and on/off. :)
hi, I am also interested in this integration under ZHA: the SIN-4-FP-21 boxes seem very good, I am waiting to be able to control my radiators with them.
Same issue here. added yesterday to HA through ZHA, it shows a switch toggle, and consumption, but no control to the heater. I aslo have to mention that the "switch" part of the module has no effect on y heater, which is kind of weird to me.
Hi i've asked to Nodon's support and they told me the ZHA intégration is on the pipe and it will be released in the coming weeks. Seb
Le ven. 1 mars 2024, 10:10, laur3nt95 @.***> a écrit :
Same issue here. added yesterday to HA through ZHA, it shows a switch toggle, and consumption, but no control to the heater. I aslo have to mention that the "switch" part of the module has no effect on y heater, which is kind of weird to me.
— Reply to this email directly, view it on GitHub https://github.com/zigpy/zha-device-handlers/issues/2777#issuecomment-1972799249, or unsubscribe https://github.com/notifications/unsubscribe-auth/A6BFTUPNNVFWJL37I4AENT3YWBAXHAVCNFSM6AAAAAA74GUVVWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSNZSG44TSMRUHE . You are receiving this because you are subscribed to this thread.Message ID: @.***>
Hi,
I have a SIN-4-FP-21
(the one from Nodon), and I am able to use it with ZHA, via zha_toolkit, with the help of https://github.com/Koenkk/zigbee2mqtt/issues/19169#issuecomment-1801181411 .
You can use zha_toolkit.scan_device
to scan your zigbee device for all its informations, and look at the "Manufacture specific" cluster_id:
"0xfc00": {
"cluster_id": "0xfc00",
"title": "Manufacturer Specific",
"name": "manufacturer_specific",
"attributes": {
"0x0000": {
"attribute_id": "0x0000",
"attribute_name": "0",
"value_type": [
"0x20",
"uint8_t",
"Analog"
],
"access": "READ|WRITE|REPORT",
"access_acl": 7,
"manf_id": 4747,
"attribute_value": 1
}
},
"commands_received": {},
"commands_generated": {}
}
Now you can send command to the module:
service: zha_toolkit.attr_write
data:
ieee: xx:xx:xx:xx:xx:xx # your sin-4-fp-21 module id
manf: 4747 # 0x128b, nodon
endpoint: 1
cluster: 64512 # 0xfc00
attribute: 0 # which attribute we want to write, only 0 / 0x0000 is available in this cluster
attr_val: "1" # 1: Confort, 2: Eco, 3: Hors Gel, see https://github.com/Koenkk/zigbee2mqtt/issues/19169#issuecomment-1801181411
Et voila©®, you can now integrate it in custom configuration in HA.
I hope this can help you, until Nodon/ZHA-device-handlers integrate this natively :)
They just changed their support page with devices compatibility... Bad news for SIN-4-FP-21, it seems that HA is through Z2M only...
Does anybody know if the information above can be used to write a Quirk for ZHA? This would avoid the need for installing zha_toolkit.
Btw. Thanks a lot @Skunnyk for finding this information!
I've posted a quirk in #3040 that may also support ADEO variant. Feel free to test.
Hello I made some adaptations of Nodon quirk in #3040 to make it working with Adeo device. Here is the code of custom quirk working for me:
"""Adeo SIN-4-FP-21_EQU pilot wire module."""
from typing import Any, Final
from zigpy.quirks import CustomCluster
from zigpy.quirks.v2 import QuirkBuilder, EntityType, EntityPlatform
from zigpy.zcl.foundation import (
BaseAttributeDefs,
BaseCommandDefs,
ZCLAttributeDef,
ZCLCommandDef,
WriteAttributesStatusRecord,
Status
)
from zigpy.zcl import ClusterType
import zigpy.types as t
import logging
_LOGGER = logging.getLogger(__name__)
class NodonPilotWireMode(t.enum16):
OFF = 0x00
COMFORT = 0x01
ECO = 0x02
FROST_PROTECTION = 0x03
COMFORT_MINUS_1 = 0x04
COMFORT_MINUS_2 = 0x05
NODON_PILOT_WIRE_CLUSTER_ID = 0xfc00 #64512
class NodonPilotWireCluster(CustomCluster):
"""NodOn pilot wire manufacturer-specific cluster."""
cluster_id: Final = NODON_PILOT_WIRE_CLUSTER_ID
name: Final = "Pilot Wire"
ep_attribute: Final = "pilot_wire_cluster"
manufacturer_id_override: Final = 4747
class AttributeDefs(BaseAttributeDefs):
pilot_wire_mode: Final = ZCLAttributeDef(
id=0x0000,
type=NodonPilotWireMode,
access="r"
)
class ClientCommandDefs(BaseCommandDefs):
setMode: Final = ZCLCommandDef(
id=0x0000,
schema={"mode": NodonPilotWireMode},
direction=True,
is_manufacturer_specific=True
)
async def write_attributes(
self, attributes: dict[str | int, Any], manufacturer: int | None = None
) -> list:
"""Override writes to the pilot_wire_mode attribute."""
if "pilot_wire_mode" in attributes:
await self.client_command(0, attributes.get("pilot_wire_mode"), manufacturer=4747)
await self.read_attributes(attributes)
return [[WriteAttributesStatusRecord(Status.SUCCESS)]]
return await super().write_attributes(attributes, manufacturer=4747)
async def read_attributes(
self,
attributes: list[int | str],
allow_cache: bool = False,
only_cache: bool = False,
manufacturer: int | t.uint16_t | None = None,
) -> Any:
return await super().read_attributes(attributes, allow_cache=False, only_cache=False, manufacturer=4747)
(
QuirkBuilder("ADEO", "SIN-4-FP-21_EQU")
.also_applies_to("Adeo","SIN-4-FP-21_EQU")
.replaces(NodonPilotWireCluster)
.enum("pilot_wire_mode",NodonPilotWireMode,NODON_PILOT_WIRE_CLUSTER_ID,
ClusterType.Server,1,EntityType.STANDARD,EntityPlatform.SELECT,False,True)
.add_to_registry()
)
Will test it ASAP! THANKS!
Hello I made some adaptations of Nodon quirk in #3040 to make it working with Adeo device. Here is the code of custom quirk working for me:
"""Adeo SIN-4-FP-21_EQU pilot wire module.""" from typing import Any, Final from zigpy.quirks import CustomCluster from zigpy.quirks.v2 import QuirkBuilder, EntityType, EntityPlatform from zigpy.zcl.foundation import ( BaseAttributeDefs, BaseCommandDefs, ZCLAttributeDef, ZCLCommandDef, WriteAttributesStatusRecord, Status ) from zigpy.zcl import ClusterType import zigpy.types as t import logging _LOGGER = logging.getLogger(__name__) class NodonPilotWireMode(t.enum16): OFF = 0x00 COMFORT = 0x01 ECO = 0x02 FROST_PROTECTION = 0x03 COMFORT_MINUS_1 = 0x04 COMFORT_MINUS_2 = 0x05 NODON_PILOT_WIRE_CLUSTER_ID = 0xfc00 #64512 class NodonPilotWireCluster(CustomCluster): """NodOn pilot wire manufacturer-specific cluster.""" cluster_id: Final = NODON_PILOT_WIRE_CLUSTER_ID name: Final = "Pilot Wire" ep_attribute: Final = "pilot_wire_cluster" manufacturer_id_override: Final = 4747 class AttributeDefs(BaseAttributeDefs): pilot_wire_mode: Final = ZCLAttributeDef( id=0x0000, type=NodonPilotWireMode, access="r" ) class ClientCommandDefs(BaseCommandDefs): setMode: Final = ZCLCommandDef( id=0x0000, schema={"mode": NodonPilotWireMode}, direction=True, is_manufacturer_specific=True ) async def write_attributes( self, attributes: dict[str | int, Any], manufacturer: int | None = None ) -> list: """Override writes to the pilot_wire_mode attribute.""" if "pilot_wire_mode" in attributes: await self.client_command(0, attributes.get("pilot_wire_mode"), manufacturer=4747) await self.read_attributes(attributes) return [[WriteAttributesStatusRecord(Status.SUCCESS)]] return await super().write_attributes(attributes, manufacturer=4747) async def read_attributes( self, attributes: list[int | str], allow_cache: bool = False, only_cache: bool = False, manufacturer: int | t.uint16_t | None = None, ) -> Any: return await super().read_attributes(attributes, allow_cache=False, only_cache=False, manufacturer=4747) ( QuirkBuilder("ADEO", "SIN-4-FP-21_EQU") .also_applies_to("Adeo","SIN-4-FP-21_EQU") .replaces(NodonPilotWireCluster) .enum("pilot_wire_mode",NodonPilotWireMode,NODON_PILOT_WIRE_CLUSTER_ID, ClusterType.Server,1,EntityType.STANDARD,EntityPlatform.SELECT,False,True) .add_to_registry() )
Shouldn't the last part with "QuirkBuilder" be like this?
(
QuirkBuilder("ADEO", "SIN-4-FP-21_EQU")
.also_applies_to("NodOn","SIN-4-FP-21")
.replaces(NodonPilotWireCluster)
.enum("pilot_wire_mode",NodonPilotWireMode,NODON_PILOT_WIRE_CLUSTER_ID,
ClusterType.Server,1,EntityType.STANDARD,EntityPlatform.SELECT,False,True)
.add_to_registry()
)
I’m not sure the manufacturer override works for nodon device.
Furthermore the name of manufacturer in signature is Adeo
not ADEO
on my setup. I don’t it is always the case or not.
Problem description
I have a Pilot wire heating module (Leroy Merlin version) and I want to control it via ZHA.
Brand : ADEO Model : SIN-4-FP-21_EQU
At the moment we don't have mode handling, only On and Off (Hors Gel) with power measurement.
Some people seems to have handle this module with Z2M but not ZHA.
https://www.zigbee2mqtt.io/devices/SIN-4-FP-21_EQU.html
https://github.com/Koenkk/zigbee2mqtt/issues/19169
Solution description
We need to have mode handling. There are 6 modes : confort, confort -1, confort -2, eco, Hors Gel, Off.
Screenshots/Video
Screenshots/Video
![Capture d'écran 2023-11-27 161003](https://github.com/zigpy/zha-device-handlers/assets/141181269/6c43cb65-fdf5-4d3f-8730-e81db0959d95)Device signature
Device signature
```json { "node_descriptor": "NodeDescriptor(logical_type=Diagnostic information
Diagnostic information
```json { "home_assistant": { "installation_type": "Home Assistant Supervised", "version": "2023.11.3", "dev": false, "hassio": true, "virtualenv": false, "python_version": "3.11.6", "docker": true, "arch": "aarch64", "timezone": "Europe/Paris", "os_name": "Linux", "os_version": "6.1.24-v8+", "supervisor": "2023.11.3", "host_os": "Debian GNU/Linux 11 (bullseye)", "docker_version": "24.0.7", "chassis": "", "run_as_root": true }, "custom_components": { "hacs": { "version": "1.33.0", "requirements": [ "aiogithubapi>=22.10.1" ] } }, "integration_manifest": { "domain": "zha", "name": "Zigbee Home Automation", "after_dependencies": [ "onboarding", "usb" ], "codeowners": [ "@dmulcahey", "@adminiuga", "@puddly" ], "config_flow": true, "dependencies": [ "file_upload" ], "documentation": "https://www.home-assistant.io/integrations/zha", "iot_class": "local_polling", "loggers": [ "aiosqlite", "bellows", "crccheck", "pure_pcapy3", "zhaquirks", "zigpy", "zigpy_deconz", "zigpy_xbee", "zigpy_zigate", "zigpy_znp", "universal_silabs_flasher" ], "requirements": [ "bellows==0.36.8", "pyserial==3.5", "pyserial-asyncio==0.6", "zha-quirks==0.0.106", "zigpy-deconz==0.21.1", "zigpy==0.59.0", "zigpy-xbee==0.19.0", "zigpy-zigate==0.11.0", "zigpy-znp==0.11.6", "universal-silabs-flasher==0.0.14", "pyserial-asyncio-fast==0.11" ], "usb": [ { "vid": "10C4", "pid": "EA60", "description": "*2652*", "known_devices": [ "slae.sh cc2652rb stick" ] }, { "vid": "1A86", "pid": "55D4", "description": "*sonoff*plus*", "known_devices": [ "sonoff zigbee dongle plus v2" ] }, { "vid": "10C4", "pid": "EA60", "description": "*sonoff*plus*", "known_devices": [ "sonoff zigbee dongle plus" ] }, { "vid": "10C4", "pid": "EA60", "description": "*tubeszb*", "known_devices": [ "TubesZB Coordinator" ] }, { "vid": "1A86", "pid": "7523", "description": "*tubeszb*", "known_devices": [ "TubesZB Coordinator" ] }, { "vid": "1A86", "pid": "7523", "description": "*zigstar*", "known_devices": [ "ZigStar Coordinators" ] }, { "vid": "1CF1", "pid": "0030", "description": "*conbee*", "known_devices": [ "Conbee II" ] }, { "vid": "10C4", "pid": "8A2A", "description": "*zigbee*", "known_devices": [ "Nortek HUSBZB-1" ] }, { "vid": "0403", "pid": "6015", "description": "*zigate*", "known_devices": [ "ZiGate+" ] }, { "vid": "10C4", "pid": "EA60", "description": "*zigate*", "known_devices": [ "ZiGate" ] }, { "vid": "10C4", "pid": "8B34", "description": "*bv 2010/10*", "known_devices": [ "Bitron Video AV2010/10" ] } ], "zeroconf": [ { "type": "_esphomelib._tcp.local.", "name": "tube*" }, { "type": "_zigate-zigbee-gateway._tcp.local.", "name": "*zigate*" }, { "type": "_zigstar_gw._tcp.local.", "name": "*zigstar*" }, { "type": "_uzg-01._tcp.local.", "name": "uzg-01*" }, { "type": "_slzb-06._tcp.local.", "name": "slzb-06*" } ], "is_built_in": true }, "data": { "ieee": "**REDACTED**", "nwk": 41678, "manufacturer": "Adeo", "model": "SIN-4-FP-21_EQU", "name": "Adeo SIN-4-FP-21_EQU", "quirk_applied": false, "quirk_class": "zigpy.device.Device", "quirk_id": null, "manufacturer_code": 4727, "power_source": "Mains", "lqi": 176, "rssi": -56, "last_seen": "2023-11-27T16:20:28", "available": true, "device_type": "Router", "signature": { "node_descriptor": "NodeDescriptor(logical_type=Logs
Logs
```python [Paste the logs here] ```Custom quirk
Custom quirk
```python [Paste your custom quirk here] ```Additional information
No response