GatewayH2 Unit
该库是 Unit Gateway H2 的驱动程序,该 Unit 通过 UART 进行通信。
支持以下产品:
备注
使用该 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 代码块:
示例输出:
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 代码块:

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 代码块:

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

