GatewayH2 Unit
这个库是 Unit Gateway H2 的驱动,该模块使用 UART 通信。
支持以下产品:
备注
When using this unit, you need to flash the NCP firmware to the unit. For details, refer to the ESP Zigbee NCP documentation.
UiFlow2 应用示例
开关控制
备注
要使用此示例,您还需要 ESP32C6 或类似模块,作为灯节点设备。详情请查看 HA_on_off_light
在 UiFlow2 上打开 cores3_switch_endpoint_example.m5f2 项目。
示例程序演示通过 Gateway H2 模块的 SwitchEndpoint 对灯节点进开关控制。
UiFlow2 代码块:
示例输出:
无
MicroPython 应用示例
开关控制
示例程序演示通过 Gateway H2 模块的 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")
示例输出:
无
API应用
GatewayH2Unit
- class unit.gateway_h2.GatewayH2Unit
创建一个 GatewayH2Unit 对象。
- 参数:
id (int) – 与 GatewayH2 单元通信所使用的 UART 编号,可以为 1 或 2。
port – 一个包含用于 UART 通信的 TX 和 RX 引脚的列表或元组。
UiFlow2 代码块:

MicroPython 代码块:
from unit import GatewayH2Unit gateway_h2_unit = GatewayH2Unit(2, port=(1, 2))
- create_switch_endpoint()
创建 Switch Endpoint。
- Returns SwitchEndpoint:
zigbee 开关节点对象。
- Return type:
SwitchEndpoint
UiFlow2 代码块:

MicroPython 代码块:
h2_switch_endpoint = gateway_h2_unit.create_switch_endpoint()
请参阅 SwitchEndpoint 了解 SwitchEndpoint 的详细信息。

