『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 2174|回复: 20

[已解决] 请问立新电表zigbee版没有涂鸦网关怎么接入ha?

[复制链接]

9

主题

178

帖子

1367

积分

金牌会员

Rank: 6Rank: 6

积分
1367
金钱
1189
HASS币
0
发表于 2022-11-14 08:31:45 来自手机 | 显示全部楼层 |阅读模式
本帖最后由 astang 于 2022-12-4 22:19 编辑

2022年12月04日更新根据大佬提供的链接,以及该链接中其他人的回答(zha-device-handlers/ts0601_din_power.py at 975e32025167981cd39dd94cbba062cdaeeadafc · zigpy/zha-device-handlers · GitHub),目前问题已解决,再次感谢。


原求助内容:
老马家买了个立新电表zigbee版,因为原来一直用的sonoff dongle E的网关,所以没有涂鸦的zigbee网关,ha用的是ZH A集成接入的,现在电表能连上HA,但是没有电量啊、电压啊这些传感器,一个都没有,请问怎么能接入啊?
回复

使用道具 举报

54

主题

891

帖子

3826

积分

论坛元老

Rank: 8Rank: 8

积分
3826
金钱
2935
HASS币
0
发表于 2022-11-14 10:18:31 | 显示全部楼层
用zigbee2mqtt试试
回复

使用道具 举报

9

主题

178

帖子

1367

积分

金牌会员

Rank: 6Rank: 6

积分
1367
金钱
1189
HASS币
0
 楼主| 发表于 2022-11-14 12:08:04 | 显示全部楼层

还有好的别的设备,重新配置太麻烦了啊,不知道能不能有别的方法
回复

使用道具 举报

76

主题

1357

帖子

1万

积分

元老级技术达人

积分
18388
金钱
16991
HASS币
290
发表于 2022-11-14 14:22:51 | 显示全部楼层
这款电表 ZHA方式也支持的,我之前试过。有些型号如果默认的不能出现实体,就需要修改一点点代码。可以参考:
https://community.home-assistant.io/t/dds238-2-zigbee/474076/5

评分

参与人数 1金钱 +8 收起 理由
zelotoj + 8 感谢分享,我也去买了这款电表,按照你给的.

查看全部评分

回复

使用道具 举报

9

主题

178

帖子

1367

积分

金牌会员

Rank: 6Rank: 6

积分
1367
金钱
1189
HASS币
0
 楼主| 发表于 2022-11-14 17:42:39 | 显示全部楼层
本帖最后由 astang 于 2022-11-14 17:52 编辑
dscao 发表于 2022-11-14 14:22
这款电表 ZHA方式也支持的,我之前试过。有些型号如果默认的不能出现实体,就需要修改一点点代码。可以参考 ...

非常感谢,重启了已经显示电源开关了(但是开关无效,不会断电)、功率因数、频率、电流(显示为0)、电压、功率这些,就是不知道为什么开关和电流会有问题
回复

使用道具 举报

0

主题

64

帖子

839

积分

高级会员

Rank: 4

积分
839
金钱
775
HASS币
0
发表于 2022-11-23 18:50:45 | 显示全部楼层
astang 发表于 2022-11-14 17:42
非常感谢,重启了已经显示电源开关了(但是开关无效,不会断电)、功率因数、频率、电流(显示为0)、电压 ...

我也去买了这款电表,ZHA配对的,按照上面的链接修改了以后,开关和功率都正常,你是不是接错线了?检查下线路和删除重新配对呢?

在我这边都是正常的…
回复

使用道具 举报

9

主题

178

帖子

1367

积分

金牌会员

Rank: 6Rank: 6

积分
1367
金钱
1189
HASS币
0
 楼主| 发表于 2022-11-24 09:12:34 | 显示全部楼层
zelotoj 发表于 2022-11-23 18:50
我也去买了这款电表,ZHA配对的,按照上面的链接修改了以后,开关和功率都正常,你是不是接错线了?检查 ...

线也没接错啊,别的都正常。我看链接里提供代码的那哥们也说的开关不能用,但是没说电流的问题
回复

使用道具 举报

0

主题

16

帖子

120

积分

注册会员

Rank: 2

积分
120
金钱
104
HASS币
0
发表于 2022-11-24 18:25:10 | 显示全部楼层
本帖最后由 hacafe 于 2022-11-24 18:33 编辑

这个电表对网关有要求吗,都哪些网关支持呢?
回复

使用道具 举报

0

主题

64

帖子

839

积分

高级会员

Rank: 4

积分
839
金钱
775
HASS币
0
发表于 2022-11-24 20:14:12 | 显示全部楼层
同款电表,专门去买的,ZHA接入,在/config/zha_quirks/里面添加一个文件ts0601_din_power.py
内容:
"""Tuya Din Power Meter."""
from zigpy.profiles import zha
import zigpy.types as t
from zigpy.zcl.clusters.general import Basic, Groups, Ota, Scenes, Time
from zigpy.zcl.clusters.homeautomation import ElectricalMeasurement
from zigpy.zcl.clusters.smartenergy import Metering

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, TuyaOnOff, TuyaSwitch

TUYA_TOTAL_ENERGY_ATTR = 0x0201
TUYA_CURRENT_ATTR = 0x0266
TUYA_FREQ_ATTR = 0x0269
TUYA_POWER_ATTR = 0x0267
TUYA_VOLTAGE_ATTR = 0x0006
TUYA_DIN_SWITCH_ATTR = 0x0210
TUYA_PFACT_ATTR = 0x026F

SWITCH_EVENT = "switch_event"


class TuyaManufClusterDinPower(TuyaManufClusterAttributes):
    """Manufacturer Specific Cluster of the Tuya Power Meter device."""

    attributes = {
        TUYA_TOTAL_ENERGY_ATTR: ("energy", t.uint16_t),
        TUYA_CURRENT_ATTR: ("current", t.int16s),
        TUYA_FREQ_ATTR: ("freq", t.uint16_t),
        TUYA_PFACT_ATTR: ("pfact", t.int16s),
        TUYA_POWER_ATTR: ("power", t.uint16_t),
        TUYA_VOLTAGE_ATTR: ("voltage", t.uint16_t),
        TUYA_DIN_SWITCH_ATTR: ("switch", t.uint8_t),
    }

    def _update_attribute(self, attrid, value):
        super()._update_attribute(attrid, value)
        if attrid == TUYA_TOTAL_ENERGY_ATTR:
            self.endpoint.smartenergy_metering.energy_reported(value / 100)
        elif attrid == TUYA_CURRENT_ATTR:
            self.endpoint.electrical_measurement.current_reported(value)
        elif attrid == TUYA_FREQ_ATTR:
            self.endpoint.electrical_measurement.freq_reported(value / 100)
        elif attrid == TUYA_POWER_ATTR:
            self.endpoint.electrical_measurement.power_reported(value)
        elif attrid == TUYA_PFACT_ATTR:
            self.endpoint.electrical_measurement.pfact_reported(value / 10)
        elif attrid == TUYA_VOLTAGE_ATTR:
            self.endpoint.electrical_measurement.voltage_reported(value / 10)
        elif attrid == TUYA_DIN_SWITCH_ATTR:
            self.endpoint.device.switch_bus.listener_event(
                SWITCH_EVENT, self.endpoint.endpoint_id, value
            )


class TuyaPowerMeasurement(LocalDataCluster, ElectricalMeasurement):
    """Custom class for power, voltage and current measurement."""

    cluster_id = ElectricalMeasurement.cluster_id

    POWER_ID = 0x050B
    VOLTAGE_ID = 0x0505
    CURRENT_ID = 0x0508
    FREQ_ID = 0x0300
    PFACT_ID = 0x0510

    AC_CURRENT_MULTIPLIER = 0x0602
    AC_CURRENT_DIVISOR = 0x0603
    AC_FREQ_MULTIPLIER = 0x0400
    AC_FREQ_DIVISOR = 0x0401

    _CONSTANT_ATTRIBUTES = {AC_CURRENT_MULTIPLIER: 1, AC_CURRENT_DIVISOR: 1000}

    def voltage_reported(self, value):
        """Voltage reported."""
        self._update_attribute(self.VOLTAGE_ID, value)

    def power_reported(self, value):
        """Power reported."""
        self._update_attribute(self.POWER_ID, value)

    def current_reported(self, value):
        """Ampers reported."""
        self._update_attribute(self.CURRENT_ID, value)
        
    def freq_reported(self, value):
        """Freq reported."""
        self._update_attribute(self.FREQ_ID, value)
        
    def pfact_reported(self, value):
        """Power factor reported."""
        self._update_attribute(self.PFACT_ID, value)


class TuyaElectricalMeasurement(LocalDataCluster, Metering):
    """Custom class for total energy measurement."""

    cluster_id = Metering.cluster_id
    CURRENT_ID = 0x0000
    POWER_WATT = 0x0000

    """Setting unit of measurement."""
    _CONSTANT_ATTRIBUTES = {0x0300: POWER_WATT}

    def energy_reported(self, value):
        """Summation Energy reported."""
        self._update_attribute(self.CURRENT_ID, value)


class TuyaPowerMeter(TuyaSwitch):
    """Tuya power meter device."""

    def __init__(self, *args, **kwargs):
        """Init device."""
        self.switch_bus = Bus()
        super().__init__(*args, **kwargs)

    signature = {
        # "node_descriptor": "<NodeDescriptor byte1=1 byte2=64 mac_capability_flags=142 manufacturer_code=4098
        #                       maximum_buffer_size=82 maximum_incoming_transfer_size=82 server_mask=11264
        #                       maximum_outgoing_transfer_size=82 descriptor_capability_field=0>",
        # device_version=1
        # input_clusters=[0x0000, 0x0004, 0x0005, 0xef00]
        # output_clusters=[0x000a, 0x0019]
        MODELS_INFO: [
            ("_TZE200_bkkmqmyo", "TS0601"),
        ],
        ENDPOINTS: {
            # <SimpleDescriptor endpoint=1 profile=260 device_type=51
            # device_version=1
            # input_clusters=[0, 4, 5, 61184]
            # output_clusters=[10, 25]>
            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.SMART_PLUG,
                INPUT_CLUSTERS: [
                    Basic.cluster_id,
                    Groups.cluster_id,
                    Scenes.cluster_id,
                    TuyaManufClusterDinPower,
                    TuyaPowerMeasurement,
                    TuyaElectricalMeasurement,
                    TuyaOnOff,
                ],
                OUTPUT_CLUSTERS: [Time.cluster_id, Ota.cluster_id],
            }
        }
    }
    
回复

使用道具 举报

0

主题

64

帖子

839

积分

高级会员

Rank: 4

积分
839
金钱
775
HASS币
0
发表于 2022-11-24 20:27:26 | 显示全部楼层
hacafe 发表于 2022-11-24 18:25
这个电表对网关有要求吗,都哪些网关支持呢?

额,不是用的网关,是用ZHA…就是插一个USB的Zigbee收发器,HA来管理Zigbee设备,不经过网关…我家有的Aqara Zigbee都接入了,然后这个电表是涂鸦的,也接入了…
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-4-29 06:45 , Processed in 3.607650 second(s), 34 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表