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

 找回密码
 立即注册
查看: 2897|回复: 11

[经验分享] 斐讯 悟空M1 完美接入homekit修改方法

[复制链接]

2

主题

28

帖子

182

积分

注册会员

Rank: 2

积分
182
金钱
154
HASS币
0
发表于 2024-2-26 09:47:46 | 显示全部楼层 |阅读模式
昨天购入了M1 检测家里的空气质量,搜了一圈没找到完美的接入方式,自己改了一下代码,匹配了一下单位。现在可以正常显示了

homeassistant:
  customize:
      friendly_name: 书房空气检测仪 甲醛
      device_class: nitrogen_dioxide

device_class 必须为 nitrogen_dioxide

修改homeassistant/components/homekit/type_sensors.py
寻找@TYPES.register("NitrogenDioxideSensor")

修改为一下代码:
@TYPES.register("NitrogenDioxideSensor")
#这里需要转换单位
class NitrogenDioxideSensor(AirQualitySensor):
    """Generate a NitrogenDioxideSensor accessory as NO2 sensor."""

    def create_services(self) -> None:
        """Override the init function for PM 2.5 Sensor."""
        serv_air_quality = self.add_preload_service(
            SERV_AIR_QUALITY_SENSOR, [CHAR_NITROGEN_DIOXIDE_DENSITY]
        )
        self.char_quality = serv_air_quality.configure_char(CHAR_AIR_QUALITY, value=0)
        self.char_density = serv_air_quality.configure_char(
            CHAR_NITROGEN_DIOXIDE_DENSITY, value=0
        )

    @callback
    def async_update_state(self, new_state: State) -> None:
        """Update accessory after state change."""
        # 将新状态的值(假设以 mg/m3 为单位)转换为浮点数
        density_mg = convert_to_float(new_state.state)
        if density_mg is None:
            return
        density_ug = density_mg * 1000  # 转换公式:1 mg/m3 = 1000 µg/m3

        if self.char_density.value != density_ug:
            self.char_density.set_value(density_ug)
            _LOGGER.debug("%s: Set density to %d", self.entity_id, density_ug)
        air_quality = density_to_air_quality_nitrogen_dioxide(density_ug)
        if self.char_quality.value != air_quality:
            self.char_quality.set_value(air_quality)
            _LOGGER.debug("%s: Set air_quality to %d", self.entity_id, air_quality)

IMG_7696.PNG



回复

使用道具 举报

2

主题

28

帖子

182

积分

注册会员

Rank: 2

积分
182
金钱
154
HASS币
0
 楼主| 发表于 2024-2-26 09:48:49 | 显示全部楼层
质量的显示可以修改同目录下的
util.py文件

def density_to_air_quality_nitrogen_dioxide(density: float) -> int:
    """Map nitrogen dioxide µg/m3 to HomeKit AirQuality level."""
    if density <= 30:
        return 1
    if density <= 60:
        return 2
    if density <= 80:
        return 3
    if density <= 90:
        return 4
    return 5
回复

使用道具 举报

33

主题

2196

帖子

5838

积分

论坛元老

Rank: 8Rank: 8

积分
5838
金钱
3642
HASS币
60
QQ
发表于 2024-2-27 00:46:40 | 显示全部楼层
厉害。
我是刷机走的mqtt
我不生产技术,我只是技术的搬运工。
回复

使用道具 举报

2

主题

28

帖子

182

积分

注册会员

Rank: 2

积分
182
金钱
154
HASS币
0
 楼主| 发表于 2024-2-27 10:25:52 | 显示全部楼层
zxyny1989 发表于 2024-2-27 00:46
厉害。
我是刷机走的mqtt

我也是刷机走的mqtt,但是在homekit中显示不了tvoc,就修改了一下
回复

使用道具 举报

27

主题

228

帖子

1765

积分

金牌会员

Rank: 6Rank: 6

积分
1765
金钱
1537
HASS币
0
发表于 2024-2-27 10:26:59 | 显示全部楼层
扔github吧
回复

使用道具 举报

0

主题

24

帖子

110

积分

注册会员

Rank: 2

积分
110
金钱
86
HASS币
0
发表于 2024-2-27 20:32:05 | 显示全部楼层
有没有bilibili视频学习下
回复

使用道具 举报

16

主题

178

帖子

930

积分

高级会员

Rank: 4

积分
930
金钱
752
HASS币
0
发表于 2024-3-2 10:35:11 | 显示全部楼层
额,甲醛传感器不会过期的吗?M1这么远古的产品
回复

使用道具 举报

0

主题

44

帖子

222

积分

中级会员

Rank: 3Rank: 3

积分
222
金钱
178
HASS币
0
发表于 2024-3-2 13:38:54 | 显示全部楼层
我的M1又可以复活了?搞起来
回复

使用道具 举报

2

主题

28

帖子

182

积分

注册会员

Rank: 2

积分
182
金钱
154
HASS币
0
 楼主| 发表于 2024-3-2 16:19:33 | 显示全部楼层
leung 发表于 2024-3-2 10:35
额,甲醛传感器不会过期的吗?M1这么远古的产品

会有老化和精度缺失的问题
回复

使用道具 举报

2

主题

140

帖子

1692

积分

金牌会员

Rank: 6Rank: 6

积分
1692
金钱
1552
HASS币
0
发表于 2024-3-3 20:20:40 | 显示全部楼层
佩服,一直没有弄进Homekit,试下,不过,甲醛和二氧化氮其实没有什么关系。
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-24 15:45 , Processed in 0.120992 second(s), 35 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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