misLia 发表于 2024-4-18 13:42:04

gateway3 4.0.3的converters怎么用?

本帖最后由 misLia 于 2024-4-18 13:54 编辑

更新了gateway3到4.0.3,结果一个易来的人体存在传感器用不了了。人体存在状态变成Switch了,光照数据,距离都没了。这个易来的人体存在传感器和领普的那个一模一样。3.3.6以前的gateway3,我把devices.py里领普的人体存在的那段代码找出来,改成易来的名字写在xiaomi_gateway3.py,放在config文件下,就能正常工作了。更新4.0.3后,用同样的方法却不行了。有大大神能指点指点吗?目前多模网关2固件号还是1.0.3。难道是固件的问题?该死的小米多模网关,固件升级还失败。小米客服让我恢复出厂设置,这恢复出厂设置,我HASS里那些自动化,岂不是得全部重写?这TMD得多大个坑啊?from custom_components.xiaomi_gateway3.core.converters.devices import *

DEVICES = [{
    17160: ["yeelight", "occupancy-sensor", "0000A0BF", "yeelink.sensor_occupy.a"],
    "spec": [
      # main sensors
      BoolConv("occupancy", "binary_sensor", mi="2.p.1"),
      MathConv("distance", "sensor", mi="3.p.3"),
      BaseConv("illuminance", "sensor", mi="2.p.5"),
      MapConv("action", "sensor", mi="3.e.1.p.1", map={0: "stop", 1: "approach", 2: "away"}),
      # other sensors
      MathConv("occupancy_duration", "sensor", mi="2.p.3", entity={"category": "diagnostic", "enabled": False, "units": UNIT_MINUTES}),
      MathConv("not_occupancy_duration", "sensor", mi="2.p.4", entity={"category": "diagnostic", "enabled": False, "units": UNIT_MINUTES}),
      # occupancy settings
      MathConv("occupancy_timeout", "number", mi="2.p.2", min=3, max=10000, entity={"category": "config", "enabled": False, "units": UNIT_SECONDS}),
      InductionRange("induction_range", "text", mi="3.p.2", entity=ENTITY_CONFIG),
      MathConv("approach_distance", "number", mi="3.p.4", min=1, max=5, entity={"category": "config", "units": UNIT_METERS}),
      BaseConv("led", "switch", mi="4.p.1"),# bool, config
    ],
}] + DEVICES



昨晚折腾了一晚上,都不行。我尝试着把下面这段代码直接写在devices.py中领普人体存在设备信息的代码前。这会产品信息,人在状态对了,但是光照和action依旧没有。17160: ["yeelight", "occupancy-sensor", "0000A0BF, yeelink.sensor_occupy.a"],另外再问下这个代码里类似mi=“2.p.1”是什么意思?

misLia 发表于 2024-4-18 16:21:08

怎么都只看,不回复啊?顶下。

dscao 发表于 2024-4-18 19:40:02

https://github.com/AlexxIT/XiaomiGateway3/wiki/Converters

第一句已经改为:

from custom_components.xiaomi_gateway3.core.devices import *

论坛第一时间有就大佬发了帖子提醒了这一点。

大部分基本正常,但京鱼座插座无法开关操作了,其它状态或功率电量的都正常。只能改用Z2m接入了。

misLia 发表于 2024-4-18 20:30:51

dscao 发表于 2024-4-18 19:40
https://github.com/AlexxIT/XiaomiGateway3/wiki/Converters

第一句已经改为:


谢谢大佬。没有注意细节。搞定了。
话说大佬能解答下,另外一个问题吗?mi=“2.p.1”这段是什么意思?

dscao 发表于 2024-4-18 21:47:11

misLia 发表于 2024-4-18 20:30
谢谢大佬。没有注意细节。搞定了。
话说大佬能解答下,另外一个问题吗?mi=“2.p.1”这段是什么意思? ...

这个是由小米设备协议来定的,具体看miot文档中就有。
比如:
https://home.miot-spec.com/spec/giot.switch.v54ksm

SIID和PIID

{
    # https://home.miot-spec.com/spec/giot.switch.v54ksm
    13141: ["GranwinIoT", "Four-Button Switch (Mesh) V5", "giot.switch.v54ksm"],
    "spec": [
      BaseConv("channel_1", "switch", mi="2.p.1"),
      BaseConv("channel_2", "switch", mi="3.p.1"),
      BaseConv("channel_3", "switch", mi="4.p.1"),
      BaseConv("channel_4", "switch", mi="5.p.1"),
      BaseConv("switch_status_1", "switch", mi="11.p.1"),
      BaseConv("switch_status_2", "switch", mi="12.p.1"),
      BaseConv("switch_status_3", "switch", mi="13.p.1"),
      BaseConv("switch_status_4", "switch", mi="14.p.1"),
      MapConv("mode_1", "select", mi="2.p.2", map={0: "normal_switch", 1: "wireless_switch", 2: "smart_switch", 3: "toggle_switch"}),# config
      MapConv("mode_2", "select", mi="3.p.2", map={0: "normal_switch", 1: "wireless_switch", 2: "smart_switch", 3: "toggle_switch"}),# config
      MapConv("mode_3", "select", mi="4.p.2", map={0: "normal_switch", 1: "wireless_switch", 2: "smart_switch", 3: "toggle_switch"}),# config
      MapConv("mode_4", "select", mi="5.p.2", map={0: "normal_switch", 1: "wireless_switch", 2: "smart_switch", 3: "toggle_switch"}),# config
    ]
}

好久没研究这个了,都快忘记了具体的了。

misLia 发表于 2024-4-18 22:08:38

dscao 发表于 2024-4-18 21:47
这个是由小米设备协议来定的,具体看miot文档中就有。
比如:
https://home.miot-spec.com/spec/giot.swi ...

谢谢。大佬,知道怎么看了。
页: [1]
查看完整版本: gateway3 4.0.3的converters怎么用?