[Device Support Request] Integrating a motion, temperature & humidity sensor in ZHA model NAS-PD07 manufactured by NEO
See original GitHub issueHi all,
I want to integrate a motion sensor manufactured by NEO in ZHA. Here is the description : https://zigbee.blakadder.com/Neo_NAS-PD07.html
When I try to integrate it with ZHA, there is no entity found.
I tried the quirks (Tuya/ts0601_motion.py : https://github.com/zigpy/zha-device-handlers/blob/5228c54d70d5eee0be09ff6ca2eeb81a538eefa1/zhaquirks/tuya/ts0601_motion.py ==> but nothing.
I modified the ts0601_motion.py file adding a new class NeoMotion with the right signature and import the clusters to use (inspired by ts0601_trv.py) found in the same repo. I have the motion sensor entity but didn’t work (always clear)
Here is the zigbee signature :
{
"node_descriptor": "NodeDescriptor(logical_type=<LogicalType.EndDevice: 2>, complex_descriptor_available=0, user_descriptor_available=0, reserved=0, aps_flags=0, frequency_band=<FrequencyBand.Freq2400MHz: 8>, mac_capability_flags=<MACCapabilityFlags.AllocateAddress: 128>, manufacturer_code=4098, maximum_buffer_size=82, maximum_incoming_transfer_size=82, server_mask=11264, maximum_outgoing_transfer_size=82, descriptor_capability_field=<DescriptorCapability.NONE: 0>, *allocate_address=True, *is_alternate_pan_coordinator=False, *is_coordinator=False, *is_end_device=True, *is_full_function_device=False, *is_mains_powered=False, *is_receiver_on_when_idle=False, *is_router=False, *is_security_capable=False)",
"endpoints": {
"1": {
"profile_id": 260,
"device_type": "0x0051",
"in_clusters": [
"0x0000",
"0x0004",
"0x0005",
"0xef00"
],
"out_clusters": [
"0x000a",
"0x0019"
]
}
},
"manufacturer": "_TZE200_7hfcudw5",
"model": "TS0601",
"class": "zigpy.device.Device"
}
and here is my ts0601_motion.py modified :
"""BlitzWolf IS-3/Tuya motion rechargeable occupancy sensor."""
from typing import Optional, Tuple, Union
from zigpy.profiles import zha
from zigpy.quirks import CustomDevice
import zigpy.types as t
from zigpy.zcl import foundation
from zigpy.zcl.clusters.general import Basic, Identify, Ota
from zigpy.zcl.clusters.security import IasZone
from zhaquirks import Bus, LocalDataCluster, MotionOnEvent
from zhaquirks import Bus, LocalDataCluster
from zhaquirks.const import (
DEVICE_TYPE,
ENDPOINTS,
INPUT_CLUSTERS,
MODELS_INFO,
OUTPUT_CLUSTERS,
PROFILE_ID,
)
from zhaquirks.tuya import (
TuyaManufClusterAttributes,
TuyaPowerConfigurationCluster,
TuyaUserInterfaceCluster,
)
from zigpy.profiles import zha
from zigpy.zcl import foundation
from zigpy.zcl.clusters.general import (
AnalogOutput,
Basic,
Groups,
Identify,
OnOff,
Ota,
Scenes,
Time,
)
ZONE_TYPE = 0x0001
class MotionCluster(LocalDataCluster, MotionOnEvent):
"""Tuya Motion Sensor."""
_CONSTANT_ATTRIBUTES = {ZONE_TYPE: IasZone.ZoneType.Motion_Sensor}
reset_s = 15
class TuyaManufacturerClusterMotion(TuyaManufClusterAttributes):
"""Manufacturer Specific Cluster of the Motion device."""
def handle_cluster_request(
self,
hdr: foundation.ZCLHeader,
args: Tuple[TuyaManufClusterAttributes.Command],
*,
dst_addressing: Optional[
Union[t.Addressing.Group, t.Addressing.IEEE, t.Addressing.NWK]
] = None,
) -> None:
"""Handle cluster request."""
tuya_cmd = args[0]
if hdr.command_id == 0x0001 and tuya_cmd.command_id == 1027:
self.endpoint.device.motion_bus.listener_event(MOTION_EVENT)
class TuyaMotion(CustomDevice):
"""BW-IS3 occupancy sensor."""
def __init__(self, *args, **kwargs):
"""Init device."""
self.motion_bus = Bus()
super().__init__(*args, **kwargs)
signature = {
# endpoint=1 profile=260 device_type=0 device_version=0 input_clusters=[0, 3]
# output_clusters=[3, 25]>
MODELS_INFO: [
("_TYST11_i5j6ifxj", "5j6ifxj"),
("_TYST11_7hfcudw5", "hfcudw5"),
],
ENDPOINTS: {
1: {
PROFILE_ID: zha.PROFILE_ID,
DEVICE_TYPE: zha.DeviceType.ON_OFF_SWITCH,
INPUT_CLUSTERS: [Basic.cluster_id, Identify.cluster_id],
OUTPUT_CLUSTERS: [Identify.cluster_id, Ota.cluster_id],
}
},
}
replacement = {
ENDPOINTS: {
1: {
PROFILE_ID: zha.PROFILE_ID,
DEVICE_TYPE: zha.DeviceType.OCCUPANCY_SENSOR,
INPUT_CLUSTERS: [
Basic.cluster_id,
Identify.cluster_id,
MotionCluster,
TuyaManufacturerClusterMotion,
],
OUTPUT_CLUSTERS: [Identify.cluster_id, Ota.cluster_id],
}
}
}
class NeoMotion(CustomDevice):
"""NAS-PD07 occupancy sensor."""
def __init__(self, *args, **kwargs):
"""Init device."""
self.motion_bus = Bus()
super().__init__(*args, **kwargs)
signature = {
# endpoint=1 profile=260 device_type=81 device_version=0 input_clusters=[0, 4, 5, 61184]
# output_clusters=[10, 25]>
MODELS_INFO: [
("_TZE200_7hfcudw5", "TS0601"),
],
ENDPOINTS: {
1: {
PROFILE_ID: zha.PROFILE_ID,
DEVICE_TYPE: zha.DeviceType.SMART_PLUG,
INPUT_CLUSTERS: [
Basic.cluster_id,
Groups.cluster_id,
Scenes.cluster_id,
TuyaManufClusterAttributes.cluster_id,
],
OUTPUT_CLUSTERS: [Time.cluster_id, Ota.cluster_id],
}
},
}
replacement = {
ENDPOINTS: {
1: {
PROFILE_ID: zha.PROFILE_ID,
DEVICE_TYPE: zha.DeviceType.OCCUPANCY_SENSOR,
INPUT_CLUSTERS: [
Basic.cluster_id,
Groups.cluster_id,
Scenes.cluster_id,
TuyaManufClusterAttributes.cluster_id,
MotionCluster,
TuyaManufacturerClusterMotion,
],
OUTPUT_CLUSTERS: [Time.cluster_id, Ota.cluster_id],
}
}
}
Thank you for your help 🙏
Issue Analytics
- State:
- Created 2 years ago
- Comments:38
Top Results From Across the Web
Integrating a motion, temperature & humidity sensor in ZHA ...
I want to integrate a motion sensor manufactured by NEO in ZHA. Here is the description : Neo Motion, Temperature & Humidity Sensor...
Read more >Neo Motion, Temperature & Humidity Sensor NAS-PD07 ...
If the device is following Zigbee standards it is possible it will work with other gateway solutions, it is just not confirmed as...
Read more >Neo NAS-PD07 Homebridge/HomeKit integration
Add HomeKit support to your Neo NAS-PD07, using Homebridge, Zigbee2MQTT and homebridge-z2m. ... Neo NAS-PD07. Motion, temperature & humidity sensor ...
Read more >Xiaomi / Aqara ZigBee device drivers (possibly may no longer ...
Unlike with the Temperature/Humidity Sensors, there needs to be separate device drivers for the two motion sensor models, because the Aqara ...
Read more >Neo NAS-PD07 control via MQTT | Zigbee2MQTT
Model, NAS-PD07. Vendor, Neo. Description, Motion, temperature & humidity sensor. Exposes, occupancy, humidity, temperature, tamper, battery_low, ...
Read more >Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start FreeTop Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Top GitHub Comments
Hi @javicalle ,
I made some modifications on the quirk and i think it’s ok now. I have to verify how the values evolve along this day.
here is the modification :
Hi there, I have tested the quirk with the latest modifications yesterday, with and without the USB plugged, and I have the same results as @sassiahmed. So thank you for your great support on this.