GatewayH2 Unit

该库是 Unit Gateway H2 的驱动程序,该 Unit 通过 UART 进行通信。

支持以下产品:

Unit Gateway H2

备注

使用该 unit 时,需要将 NCP 固件烧录到 unit 中。详情请参考 ESP Zigbee NCP 文档。

UiFlow2 应用示例

开关控制

备注

要使用该示例,你需要将此程序烧录到 ESP32C6 或类似的设备上,作为 light node 设备。详情请参考 HA_on_off_light

在 UiFlow2 中打开 cores3_switch_endpoint_example.m5f2 项目。

该示例演示通过 Gateway H2 unit 的 SwitchEndpoint 对灯节点进行群组控制和指定设备操作。

UiFlow2 代码块:

cores3_switch_endpoint_example.png

示例输出:

None

MicroPython 应用示例

开关控制

该示例演示通过 Gateway H2 unit 的 SwitchEndpoint 对灯节点进行群组控制和指定设备操作。

MicroPython 代码块:

  1# SPDX-FileCopyrightText: 2024 M5Stack Technology CO LTD
  2#
  3# SPDX-License-Identifier: MIT
  4
  5import os, sys, io
  6import M5
  7from M5 import *
  8from unit import GatewayH2Unit
  9
 10
 11title0 = None
 12label0 = None
 13label1 = None
 14label2 = None
 15label_addr = None
 16gateway_h2_0 = None
 17gateway_h2_0_ep = None
 18device_addr = None
 19device_count = None
 20device_list = None
 21
 22
 23def first_index(my_list, elem):
 24    try:
 25        index = my_list.index(elem) + 1
 26    except:
 27        index = 0
 28    return index
 29
 30
 31def gateway_h2_0_ep_bind_event(addr):
 32    global \
 33        title0, \
 34        label0, \
 35        label1, \
 36        label2, \
 37        label_addr, \
 38        gateway_h2_0, \
 39        gateway_h2_0_ep, \
 40        device_addr, \
 41        device_count, \
 42        device_list
 43    device_addr = addr
 44    print(device_addr)
 45    if first_index(device_list, device_addr) == 0:
 46        device_list.append(device_addr)
 47        device_count = device_count + 1
 48        label_addr.setText(str((str("new device addr: ") + str(device_addr))))
 49        gateway_h2_0_ep.off(device_addr)
 50
 51
 52def btnPWR_wasClicked_event(state):
 53    global \
 54        title0, \
 55        label0, \
 56        label1, \
 57        label2, \
 58        label_addr, \
 59        gateway_h2_0, \
 60        gateway_h2_0_ep, \
 61        device_addr, \
 62        device_count, \
 63        device_list
 64    if not not len(device_list):
 65        gateway_h2_0_ep.toggle()
 66
 67
 68def setup():
 69    global \
 70        title0, \
 71        label0, \
 72        label1, \
 73        label2, \
 74        label_addr, \
 75        gateway_h2_0, \
 76        gateway_h2_0_ep, \
 77        device_addr, \
 78        device_count, \
 79        device_list
 80
 81    M5.begin()
 82    Widgets.fillScreen(0x222222)
 83    title0 = Widgets.Title("GatewayH2Unit Example", 3, 0xFFFFFF, 0x0000FF, Widgets.FONTS.DejaVu18)
 84    label0 = Widgets.Label(
 85        "if has device connect", 2, 26, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18
 86    )
 87    label1 = Widgets.Label(
 88        "press the power button toggle", 2, 50, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18
 89    )
 90    label2 = Widgets.Label(
 91        "connect device: ", 2, 90, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18
 92    )
 93    label_addr = Widgets.Label("None", 5, 115, 1.0, 0x00FF00, 0x222222, Widgets.FONTS.DejaVu18)
 94
 95    BtnPWR.setCallback(type=BtnPWR.CB_TYPE.WAS_CLICKED, cb=btnPWR_wasClicked_event)
 96
 97    gateway_h2_0 = GatewayH2Unit(1, port=(1, 2))
 98    gateway_h2_0_ep = gateway_h2_0.create_switch_ep()
 99    gateway_h2_0_ep.set_bind_callback(gateway_h2_0_ep_bind_event)
100    device_count = 0
101    device_list = []
102
103
104def loop():
105    global \
106        title0, \
107        label0, \
108        label1, \
109        label2, \
110        label_addr, \
111        gateway_h2_0, \
112        gateway_h2_0_ep, \
113        device_addr, \
114        device_count, \
115        device_list
116    M5.update()
117
118
119if __name__ == "__main__":
120    try:
121        setup()
122        while True:
123            loop()
124    except (Exception, KeyboardInterrupt) as e:
125        try:
126            from utility import print_error_msg
127
128            print_error_msg(e)
129        except ImportError:
130            print("please update to latest firmware")

示例输出:

None

API参考

GatewayH2Unit

class unit.gateway_h2.GatewayH2Unit

创建一个 GatewayH2Unit 对象。

参数:
  • id (int) – 与 GatewayH2 Unit 通信所使用的 UART ID。可为 1 或 2。

  • port – 包含用于 UART 通信的 TX 和 RX 引脚的列表或元组。

UiFlow2 代码块:

init.png

MicroPython 代码块:

from unit import GatewayH2Unit

gateway_h2_unit = GatewayH2Unit(2, port=(1, 2))
create_switch_endpoint()

创建 Switch 端点。

Returns SwitchEndpoint:

zigbee 开关 endpoint 对象。

Return type:

SwitchEndpoint

UiFlow2 代码块:

init.png

MicroPython 代码块:

h2_switch_endpoint = gateway_h2_unit.create_switch_endpoint()

请参阅 SwitchEndpoint 以了解有关 SwitchEndpoint 的更多详细信息。