LoRaWAN-X Unit

Unit LoRaWAN-X 是一款基于 LoRa 技术的 LoRaWAN 通信模块,专为这些频段设计。该模块采用 STM32WLE5 方案,支持低功耗、长距离通信,并具备高灵敏度特性。模块内置 LoRaWAN 协议栈,支持 Class A、Class B 和 Class C 三种工作模式。同时支持点对点(P2P)通信模式,并使用 UART 通信接口(通过 AT command set 控制)实现灵活配置。

支持以下产品:

LoRaWAN-CN470

LoRaWAN-AS923

LoRaWAN-EU868

LoRaWAN-US915

MicroPython LoRaWAN-CN470 LoRaWAN OTAA 模式应用示例:

 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 LoRaWANUnit_RUI3
 9import time
10
11
12title0 = None
13label2 = None
14label0 = None
15label1 = None
16lorawancn470_0 = None
17
18
19def setup():
20    global title0, label2, label0, label1, lorawancn470_0
21
22    M5.begin()
23    Widgets.fillScreen(0x222222)
24    title0 = Widgets.Title(
25        "LoRaWAN OTAA CoreS3 Example", 3, 0xFFFFFF, 0x0000FF, Widgets.FONTS.DejaVu18
26    )
27    label2 = Widgets.Label(
28        "LoRa Message Rec:", 1, 172, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18
29    )
30    label0 = Widgets.Label(
31        "LoRa Network Join status:", 1, 68, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18
32    )
33    label1 = Widgets.Label(
34        "LoRa Message Send status:", 1, 121, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18
35    )
36
37    lorawancn470_0 = LoRaWANUnit_RUI3(2, port=(1, 2))
38    lorawancn470_0.set_network_mode(1)
39    lorawancn470_0.set_otaa_config("xxxxx", "xxxxx", "xxxxx")
40    lorawancn470_0.set_channel_mask("0400")
41    lorawancn470_0.set_rx_delay_on_window1(1)
42    lorawancn470_0.set_rx_delay_on_window2(2)
43    lorawancn470_0.set_rx_data_rate_on_windows2(0)
44    lorawancn470_0.set_lorawan_node_class("C")
45    lorawancn470_0.join_network(0)
46
47
48def loop():
49    global title0, label2, label0, label1, lorawancn470_0
50    M5.update()
51    label0.setText(
52        str((str("LoRa Network Join status:") + str((lorawancn470_0.get_join_state()))))
53    )
54    if lorawancn470_0.get_join_state():
55        label1.setText(
56            str(
57                (
58                    str("LoRa Message Send status:")
59                    + str((lorawancn470_0.send_data(1, "aabbcc", 6000)))
60                )
61            )
62        )
63        label2.setText(str((str("LoRa Message Rec:") + str((lorawancn470_0.get_last_receive())))))
64    time.sleep(6)
65
66
67if __name__ == "__main__":
68    try:
69        setup()
70        while True:
71            loop()
72    except (Exception, KeyboardInterrupt) as e:
73        try:
74            from utility import print_error_msg
75
76            print_error_msg(e)
77        except ImportError:
78            print("please update to latest firmware")

MicroPython LoRaWAN-CN470 P2P 模式 TX 应用示例:

 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 LoRaWANUnit_RUI3
 9import time
10
11
12title0 = None
13label0 = None
14lorawancn470_0 = None
15
16
17def setup():
18    global title0, label0, lorawancn470_0
19
20    M5.begin()
21    Widgets.fillScreen(0x222222)
22    title0 = Widgets.Title(
23        "LoRaWAN P2P Send CoreS3 e.g.", 3, 0xFFFFFF, 0x0000FF, Widgets.FONTS.DejaVu18
24    )
25    label0 = Widgets.Label(
26        "P2P Message Send State:", 3, 115, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18
27    )
28
29    lorawancn470_0 = LoRaWANUnit_RUI3(2, port=(1, 2))
30    lorawancn470_0.set_network_mode(0)
31    lorawancn470_0.set_p2p_frequency(470000000)
32    lorawancn470_0.set_p2p_spreading_factor(7)
33    lorawancn470_0.set_p2p_bandwidth(0)
34    lorawancn470_0.set_p2p_tx_power(14)
35    lorawancn470_0.set_p2p_code_rate(0)
36    lorawancn470_0.set_p2p_preamble_length(8)
37    lorawancn470_0.set_p2p_sync_word(0xFFFF)
38
39
40def loop():
41    global title0, label0, lorawancn470_0
42    M5.update()
43    label0.setText(
44        str(
45            (
46                str("P2P Message Send State:")
47                + str((lorawancn470_0.send_p2p_data("M5", timeout=1000, to_hex=True)))
48            )
49        )
50    )
51    time.sleep(3.5)
52
53
54if __name__ == "__main__":
55    try:
56        setup()
57        while True:
58            loop()
59    except (Exception, KeyboardInterrupt) as e:
60        try:
61            from utility import print_error_msg
62
63            print_error_msg(e)
64        except ImportError:
65            print("please update to latest firmware")

MicroPython LoRaWAN-CN470 P2P 模式 RX 应用示例:

 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 LoRaWANUnit_RUI3
 9import time
10
11
12title0 = None
13label0 = None
14lorawancn470_0 = None
15
16
17def setup():
18    global title0, label0, lorawancn470_0
19
20    M5.begin()
21    Widgets.fillScreen(0x222222)
22    title0 = Widgets.Title(
23        "LoRaWAN P2P Rec CoreS3 e.g.", 3, 0xFFFFFF, 0x0000FF, Widgets.FONTS.DejaVu18
24    )
25    label0 = Widgets.Label(
26        "P2P Message Rec:", 3, 115, 1.0, 0xFFFFFF, 0x222222, Widgets.FONTS.DejaVu18
27    )
28
29    lorawancn470_0 = LoRaWANUnit_RUI3(2, port=(1, 2))
30    lorawancn470_0.set_network_mode(0)
31    lorawancn470_0.set_p2p_frequency(470000000)
32    lorawancn470_0.set_p2p_spreading_factor(7)
33    lorawancn470_0.set_p2p_bandwidth(0)
34    lorawancn470_0.set_p2p_tx_power(14)
35    lorawancn470_0.set_p2p_code_rate(0)
36    lorawancn470_0.set_p2p_preamble_length(8)
37    lorawancn470_0.set_p2p_sync_word(0xFFFF)
38
39
40def loop():
41    global title0, label0, lorawancn470_0
42    M5.update()
43    label0.setText(
44        str((str("P2P Message Rec:") + str((lorawancn470_0.get_p2p_receive_data(3000, True)))))
45    )
46    time.sleep(3.5)
47
48
49if __name__ == "__main__":
50    try:
51        setup()
52        while True:
53            loop()
54    except (Exception, KeyboardInterrupt) as e:
55        try:
56            from utility import print_error_msg
57
58            print_error_msg(e)
59        except ImportError:
60            print("please update to latest firmware")

UIFLOW2 LoRaWAN-CN470 LoRaWAN OTAA 模式示例:

UIFLOW2 LoRaWAN-CN470 P2P 模式 TX 应用示例:

UIFLOW2 LoRaWAN-CN470 P2P 模式 RX 应用示例:

class LoRaWAN_X

Constructors

class LoRaWAN_X(id, tx, rx, debug)

通过使用指定参数配置 UART 通信来初始化 LoRaWAN_X 模块。

参数:
  • id – 用于通信的 UART ID。

  • tx – UART TX 引脚。

  • rx – UART RX 引脚。

  • debug (bool) – 启用调试模式以记录更多详细信息,默认值为 False。

UIFLOW2:

init.png

Methods

LoRaWAN_X.set_abp_config(dev_addr, apps_key, nwks_key)

使用提供的设备地址、应用会话密钥和网络会话密钥,将设备配置为 ABP(Activation By Personalization)模式。

参数:
  • dev_addr (str) – ABP 配置的设备地址。

  • apps_key (str) – 用于加密的应用会话密钥。

  • nwks_key (str) – 用于通信的网络会话密钥。

UIFLOW2:

set_abp_config.png

LoRaWAN_X.get_abp_config()

检索当前 ABP 配置,包括设备地址、应用会话密钥和网络会话密钥。

返回:

一个包含设备地址、应用会话密钥和网络会话密钥的元组。对于缺失或无效的配置,返回 None 或 False。

UIFLOW2:

get_abp_config.png

LoRaWAN_X.set_otaa_config(device_eui, app_eui, app_key)

使用提供的设备 EUI、应用 EUI 和应用密钥将设备配置为 OTAA(空中激活)模式。

参数:
  • device_eui – 用于 OTAA 配置的设备 EUI。

  • app_eui – 用于 OTAA 配置的应用程序 EUI。

  • app_key – 用于加密的应用密钥。

UIFLOW2:

set_otaa_config.png

LoRaWAN_X.get_otaa_config()

检索当前 OTAA 配置,包括设备 EUI、应用密钥和应用 EUI。

返回:

包含设备 EUI、应用密钥和应用 EUI 的元组。

UIFLOW2:

get_otaa_config.png

LoRaWAN_X.send_cmd(cmd, have_return, is_single, async_event, timeout)

向模块发送 AT 命令,并可选读取响应。

参数:
  • cmd – 要发送的 AT 命令字符串。

  • have_return (bool) – 指定是否从模块读取响应。

  • is_single (bool) – 指示该命令是否期望单行响应。

  • async_event (bool) – 指定是否处理异步事件。

  • timeout (int) – 接收响应的超时时长(单位:毫秒),默认值为 100 ms。

返回:

模块处理后的响应;如果不需要响应,则为 None。

LoRaWAN_X.read_response(cmd, is_single, async_event, timeout)

读取并处理模块对 AT 命令的响应。

参数:
  • cmd – 发送到模块的 AT 命令。

  • is_single (bool) – 指示是否期望单行响应。

  • async_event (bool) – 指定是否处理异步事件。

  • timeout (int) – 接收响应的超时时长,单位为毫秒。

返回:

  • 如果响应有效并符合单行预期,则为 True。

  • 当接收到 CMD+RESPONSE 时的已处理响应字符串。

  • 如果启用了 async_event 并检测到事件,则返回事件响应字符串。

  • 如果未收到有效响应或发生错误,则返回 False。

LoRaWAN_X.get_commuinication_state()

通过发送 AT 命令并等待响应来检查通信状态。

返回:

模块返回的响应,用于指示通信状态。

LoRaWAN_X.reset_module()

使用 ATZ 命令重置模块。

LoRaWAN_X.reset_module_to_default()

使用 ATR 命令将模块重置为默认设置,并等待重置过程完成。

UIFLOW2:

reset_module_to_default.png

LoRaWAN_X.get_serial_number()

获取模块的序列号。

返回:

序列号字符串。

LoRaWAN_X.get_fireware_version()

获取模块的固件版本。

返回:

固件版本字符串。

LoRaWAN_X.get_at_version()

获取模块支持的 AT 命令版本。

返回:

AT 命令版本字符串。

LoRaWAN_X.get_hardware_version()

获取模块的硬件版本。

返回:

硬件版本的字符串。

LoRaWAN_X.get_hardware_id()

获取模块的硬件 ID。

返回:

硬件 ID 字符串。

LoRaWAN_X.get_ble_mac()

获取模块的 Bluetooth MAC 地址。

返回:

BLE MAC 地址字符串。

LoRaWAN_X.set_sleep_time(time)

配置模块的休眠时间。如果未提供时间,模块将进入休眠模式。

参数:

time – 以秒为单位的睡眠时长。如果为 None,则触发睡眠模式但不指定时长。

返回:

如果命令成功发送则为 True,否则为 False。

LoRaWAN_X.get_low_power_mode()

检查模块是否处于低功耗模式。

返回:

如果启用了低功耗模式,则为 True,否则为 False。

LoRaWAN_X.set_low_power_mode(mode)

设置模块低功耗模式。

参数:

mode (bool) – 一个布尔值,用于指示是否启用 (True) 或禁用 (False) 低功耗模式。

返回:

如果命令成功发送则为 True,否则为 False。

LoRaWAN_X.set_baud_rate(rate)

设置 UART 通信的波特率。

参数:

rate – 所需的波特率值。

返回:

如果命令成功发送则为 True,否则为 False。

LoRaWAN_X.get_baud_rate()

获取当前 UART 波特率设置。

返回:

波特率,类型为整数。

LoRaWAN_X.get_device_eui()

获取 OTAA(Over-The-Air Activation)模式的 Device EUI。

返回:

以字符串形式的 Device EUI。

LoRaWAN_X.set_device_eui(eui)

配置 OTAA 模式的 Device EUI。

参数:

eui (str) – 要设置的 Device EUI,字符串类型。

返回:

如果命令成功发送则为 True,否则为 False。

LoRaWAN_X.get_app_eui()

获取 OTAA 模式的 Application EUI。

返回:

Application EUI(字符串形式)。

LoRaWAN_X.set_app_eui(eui)

为 OTAA 模式配置 Application EUI。

参数:

eui (str) – 要设置的 Application EUI,以字符串形式表示。

返回:

如果命令成功发送则为 True,否则为 False。

LoRaWAN_X.get_app_key()

获取 OTAA 模式的 Application Key。

返回:

应用密钥(Application Key),字符串形式。

LoRaWAN_X.set_app_key(key)

配置 OTAA 模式的应用密钥。

参数:

key (str) – 要设置的应用密钥(Application Key),以字符串形式。

返回:

如果命令成功发送则为 True,否则为 False。

LoRaWAN_X.get_device_address()

获取设备地址。

返回:

设备地址字符串。

LoRaWAN_X.set_device_address(address)

设置设备地址。

参数:

address (str) – 要设置的设备地址,以字符串形式提供。

返回:

应用会话密钥,类型为字符串。

LoRaWAN_X.get_apps_key()

获取应用会话密钥。

返回:

AT 命令执行结果

LoRaWAN_X.set_apps_key(key)

设置应用会话密钥。此操作仅适用于 ABP 模式。

参数:

key (str) – 要设置的应用会话密钥,以字符串形式提供。

返回:

作为字符串形式的网络会话密钥。

LoRaWAN_X.get_networks_key()

获取网络会话密钥。

返回:

AT 命令执行结果

LoRaWAN_X.set_networks_key(key)

设置网络会话密钥。该操作仅适用于 ABP 模式。

参数:

key (str) – 要设置的网络会话密钥,以字符串形式提供。

返回:

AT 命令执行结果

LoRaWAN_X.set_network_id(id)

设置网络 ID。

参数:

id (str) – 要设置的网络 ID,以字符串形式提供。

返回:

网络 ID(字符串形式)。

LoRaWAN_X.get_network_id()

获取网络 ID。

返回:

组播根密钥的字符串形式。

LoRaWAN_X.get_mc_root_key()

获取组播根密钥。

返回:

如果启用确认模式,则为 True;否则为 False。

LoRaWAN_X.get_confirm_mode()

获取确认模式。

返回:

AT 命令执行结果

LoRaWAN_X.set_confirm_mode(mode)

设置确认模式。

参数:

mode (bool) – 一个布尔值,用于指示是否启用(True)或禁用(False)确认模式。

返回:

如果上次确认的上行链路成功,则为 True;否则为 False。

LoRaWAN_X.get_confirm_state()

获取最后一次已确认上行链路的状态。

返回:

包含 state、auto_join、retry_interval 和 max_retry(均为整数)的元组;如果获取失败,则返回 False。

LoRaWAN_X.get_join_config()

获取 LoRa 当前的 join 配置。

返回:

如果模块成功加入网络,则为 True,否则为 False

LoRaWAN_X.set_join_config(state, auto_join, retry_interval, max_retry, timeout)

配置 LoRa 的入网参数。该配置不确认网络入网是否成功。

返回:

如果命令设置成功则返回 True,否则返回 False。

参数:
  • state (int) – 要配置的加入状态,使用整数表示。

  • auto_join (int) – 自动加入标志,以整数形式表示。

  • retry_interval (int) – 加入重试之间的时间间隔,默认值为 8 秒。

  • max_retry (int) – 最大重试次数,默认值为 0(无限制)。

  • timeout (int) – 命令的超时持续时间(单位:毫秒),默认值为 8000 ms。

返回:

加入模式的整数值(ABP 为 0,OTAA 为 1)。

UIFLOW2:

set_join_config.png

LoRaWAN_X.join_network(timeout)

使用预定义的 join 参数加入 LoRa 网络。

参数:

timeout (int) – 加入(join)命令的超时时间(单位:毫秒),默认值为 8000 ms。

返回:

如果命令设置成功则返回 True,否则返回 False。

UIFLOW2:

join_network.png

join_network_return.png

LoRaWAN_X.get_join_mode()

获取当前入网模式。0 表示 ABP 模式,1 表示 OTAA 模式。

返回:

如果已加入则为 True,否则为 False。

LoRaWAN_X.set_join_mode(mode)

设置 LoRa 模块的入网模式。

参数:

mode (int) – 要设置的入网模式:0 表示 ABP,1 表示 OTAA。

返回:

接收到的数据,字符串形式。

UIFLOW2:

set_join_mode.png

LoRaWAN_X.get_join_state()

检查模块是否已成功加入网络。1 表示已加入,0 表示未加入。

返回:

如果数据发送成功则为 True,否则为 False。

UIFLOW2:

get_join_state.png

LoRaWAN_X.get_last_receive()

获取最后一次接收到的消息中的数据。

返回:

如果数据发送成功则为 True,否则为 False。

UIFLOW2:

get_last_receive.png

LoRaWAN_X.send_data(port, data, timeout)

通过指定端口发送数据。

参数:
  • port (int) – 用于发送数据的端口号。

  • data (bytes) – 要发送的数据,以 bytes 形式提供。

  • timeout (int) – 发送命令的超时时长,单位为毫秒,默认值为 600 ms。

返回:

如果命令设置成功则返回 True,否则返回 False。

UIFLOW2:

send_data.png

send_data_return.png

LoRaWAN_X.send_long_data(port, ack, data, timeout)

通过指定端口发送长数据,并可选择启用确认应答。

参数:
  • port (int) – 用于发送数据的端口号。

  • ack (bool) – 指示是否需要确认(True 或 False)。

  • data (bytes) – 要发送的长数据,以 bytes 形式提供。

  • timeout (int) – 发送命令的超时时长,单位为毫秒,默认值为 500 ms。

返回:

重试周期值,类型为整数。

LoRaWAN_X.set_retry(retry)

配置传输的重试周期。

参数:

retry (int) – 重试周期值范围为 0 至 7,默认值为 0。

返回:

如果命令设置成功则返回 True,否则返回 False。

LoRaWAN_X.get_retry()

获取当前重试周期配置。

返回:

重试周期值,类型为整数。

LoRaWAN_X.get_adaptive_rate_state()

检查是否启用了自适应数据速率(ADR)。1 表示启用,0 表示禁用。

返回:

如果启用了 ADR,则为 True,否则为 False。

LoRaWAN_X.set_adaptive_rate_state(state)

配置自适应数据速率(ADR)状态。

参数:

state (bool) – 一个布尔值,用于指示是否启用(True)或禁用(False)ADR。

返回:

如果命令设置成功则返回 True,否则返回 False。

LoRaWAN_X.get_lorawan_node_class()

获取当前 LoRaWAN 节点类别。

返回:

LoRaWAN 节点类(字符串)。

LoRaWAN_X.set_lorawan_node_class(node_class)

设置 LoRaWAN 节点类别。

参数:

node_class (str) – 要设置的节点类,以字符串形式提供

返回:

如果命令设置成功则返回 True,否则返回 False。

LoRaWAN_X.get_duty_cycle_state()

检查是否启用 ETSI duty cycle。1 表示启用,0 表示禁用。

返回:

如果占空比已启用,则返回 True;否则返回 False。

LoRaWAN_X.set_duty_cycle_state(state)

设置 ETSI 占空比状态,可根据地区启用或禁用。

参数:

state (bool) – 一个布尔值,用于指示是否启用(True)或禁用(False)占空比。

返回:

AT 命令执行结果。

LoRaWAN_X.get_data_rate()

获取当前数据速率配置。

返回:

数据速率(整数)。

LoRaWAN_X.set_data_rate(rate)

设置通信的数据传输速率。

参数:

rate (int) – 要设置的数据率,以整数形式提供。

返回:

AT 命令执行结果。

LoRaWAN_X.get_join_delay_on_window1()

获取加入流程在窗口 1 上的延迟。

返回:

窗口 1 的 join 延迟(整数)。

LoRaWAN_X.set_join_delay_on_window1(delay)

设置窗口 1 的加入延迟。

参数:

delay (int) – 为窗口 1 设置的入网延迟,类型为整数。

返回:

AT 命令执行结果。

LoRaWAN_X.get_join_delay_on_window2()

获取窗口 2 上加入流程的延迟。

返回:

窗口 2 的加入延迟(整数)。

LoRaWAN_X.set_join_delay_on_window2(delay)

设置 window 2 的加入延迟。

参数:

delay (int) – 为窗口 2 设置的加入延迟(整数)。

返回:

AT 命令执行结果。

LoRaWAN_X.get_public_network_mode()

获取公网模式(启用或禁用)。

返回:

如果启用了公共网络模式,则为 True,否则为 False。

LoRaWAN_X.set_public_network_mode(mode)

设置公用网络模式为启用或禁用。

参数:

mode (bool) – 一个布尔值,用于指示是否启用 (True) 或禁用 (False) 公共网络模式。

返回:

AT 命令执行结果。

LoRaWAN_X.get_rx_delay_on_window1()

获取接收窗口 1 延迟。

返回:

接收窗口 1 的延迟,类型为整数。

LoRaWAN_X.set_rx_delay_on_window1(delay)

设置窗口 1 的接收延迟。

参数:

delay (int) – 为接收窗口 1 设置的延迟时间,类型为整数。

返回:

AT 命令执行结果。

LoRaWAN_X.get_rx_delay_on_window2()

获取接收窗口 2 延迟。

返回:

接收窗口 2 延迟,整数类型。

LoRaWAN_X.set_rx_delay_on_window2(delay)

设置窗口 2 的接收延迟。

参数:

delay (int) – 为接收窗口 2 设置的延迟,范围为 2 到 16。

返回:

AT 命令执行结果。

LoRaWAN_X.get_rx_data_rate_on_windows2()

获取窗口 2 的接收数据速率。

返回:

窗口 2 的接收数据速率,以整数表示。

LoRaWAN_X.set_rx_data_rate_on_windows2(rate)

设置窗口 2 的接收数据速率。

参数:

rate (int) – 设置用于窗口 2 的数据速率。

返回:

AT 命令执行结果。

LoRaWAN_X.get_rx_frequency_on_windows2()

根据区域频率设置,获取窗口 2 的接收频率。

返回:

窗口 2 的接收频率(整数)。

LoRaWAN_X.get_tx_power()

获取当前的发射功率设置。

返回:

发射功率设置,类型为整数。

LoRaWAN_X.set_tx_power(power)

设置发射功率。

参数:

power (int) – 要设置的发射功率。

返回:

AT 命令执行结果。

获取网络链路状态。

返回:

网络链接状态的字符串。

参数:

state (int) – 设置设备的网络链路状态。0 - 禁用链路检查 1 - 在下一次有效载荷上行时执行一次链路检查 2 - 在每次有效载荷上行后自动执行链路检查

返回:

AT 命令执行结果。

LoRaWAN_X.get_listen_before_talk()

获取 Listen Before Talk (LBT) 状态。

返回:

如果启用了 LBT,则为 True;否则为 False。

LoRaWAN_X.set_listen_before_talk(state)

设置 Listen Before Talk (LBT) 状态。

参数:

state (bool) – 为 LBT 设置的状态(True 表示启用,False 表示禁用)。

返回:

AT 命令执行结果。

LoRaWAN_X.set_listen_before_talk_rssi(rssi)

设置 Listen Before Talk (LBT) 的 RSSI 阈值。

参数:

rssi (int) – 设置用于 LBT 的 RSSI 阈值。

返回:

AT 命令执行结果。

LoRaWAN_X.get_listen_before_talk_rssi()

获取 Listen Before Talk (LBT) 的 RSSI 阈值。

返回:

RSSI 阈值(整数)。

LoRaWAN_X.get_listen_before_talk_scan_time()

获取 Listen Before Talk (LBT) 的扫描时间。

返回:

LBT 的扫描时间(整数)。

LoRaWAN_X.set_listen_before_talk_scan_time(time)

设置 Listen Before Talk (LBT) 的扫描时间。

参数:

time (int) – 用于设置 LBT 的扫描时间。

返回:

AT 命令执行结果。

LoRaWAN_X.get_time_request()

获取时间请求状态。

返回:

时间请求状态(整数)。

LoRaWAN_X.set_time_request(state)

设置时间请求状态。

参数:

state (bool) – 设置时间请求的状态(True 为启用,False 为禁用)。

返回:

AT 命令执行结果。

LoRaWAN_X.get_location_time()

获取 UTC+0 的位置时间。

返回:

以字符串形式表示的 UTC+0 时区位置时间。

LoRaWAN_X.get_unicast_ping_interval()

获取 Class B 模式下的单播 ping 间隔。

返回:

单播 ping 间隔(整数)。

LoRaWAN_X.set_unicast_ping_interval(interval)

设置设备的单播 ping 间隔。

参数:

interval (int) – 设置单播 ping 的间隔(0 到 7)。0 表示在 beacon 窗口期间大约每秒一次,7 表示每 128 秒一次(最大 ping 周期)。

返回:

AT 命令执行结果。

LoRaWAN_X.get_beacon_frequency()

获取信标频率。

返回:

作为整数的信标频率。

LoRaWAN_X.get_beacon_time()

获取信标时间。

返回:

信标时间,整数。

LoRaWAN_X.get_beacon_gateway_gps()

获取 beacon 网关的 GPS 位置信息。

返回:

以字符串形式返回 beacon gateway 的 GPS 信息。

LoRaWAN_X.get_rssi()

获取接收信号强度指示(RSSI)。

返回:

RSSI 值的字符串。

LoRaWAN_X.get_all_rssi()

检索所有通道的 RSSI 值。

返回:

所有通道的 RSSI 值字符串。

LoRaWAN_X.get_signal_noise_ratio()

获取信噪比 (SNR)。

返回:

以字符串形式表示的 SNR 值。

LoRaWAN_X.get_channel_mask()

获取信道掩码(仅适用于 US915、AU915、CN470)。

返回:

通道掩码(channel mask),以字符串形式表示。

LoRaWAN_X.set_channel_mask(mask)

设置通道掩码,用于开启或关闭指定通道(仅适用于 US915、AU915、CN470)。

参数:

mask (str) – 通道掩码,以 4 位长度的十六进制字符串表示。

返回:

AT 命令执行结果。

LoRaWAN_X.get_eight_channel_mode_state()

获取八通道模式的状态。

返回:

八通道模式的状态(以字符串形式)。

LoRaWAN_X.set_eight_channel_mode_state(max_group)

设置八通道模式的状态,组号范围为 1 到 12。

参数:

max_group (int) – 最大分组编号(1 到 12)。

返回:

如果 AT 命令执行成功则返回 True,否则返回 False。

LoRaWAN_X.get_single_channel_mode()

获取单通道模式。

返回:

单通道模式的字符串。

LoRaWAN_X.set_single_channel_mode()

设置单通道模式。

返回:

AT 命令执行结果。

LoRaWAN_X.get_active_region()

获取设备的活动区域。

返回:

活动区域的字符串。

LoRaWAN_X.set_active_region(region)
参数:

region (int) – 设置设备的活动区域。

返回:

AT 命令执行结果。- EU433:0 - CN470:1 - RU864:2 - IN865:3 - EU868:4 - US915:5 - AU915,:6 - KR920,:7 - AS923-1:8 - AS923-2:9 - AS923-3:10 - AS923-4:11 - LA915:12

LoRaWAN_X.add_multicast_group(Class, DevAddr, NwkSKey, AppSKey, Frequency, Datarate, Periodicit)

将一个多播组添加到设备中。

参数:
  • Class (str) – 组播组的类别。

  • DevAddr – 设备地址。

  • NwkSKey – 网络会话密钥。

  • AppSKey – 应用程序会话密钥。

  • Frequency – 组播组的频率。

  • Datarate – 组播组的数据速率。

  • Periodicit – 多播组的周期性。

返回:

AT 命令执行结果。

LoRaWAN_X.remove_multicast_group(DevAddr)

通过指定的设备地址移除一个多播组。

参数:

DevAddr – 要移除的组播组设备地址。

返回:

AT 命令执行结果。

LoRaWAN_X.get_multicast_list()

获取多播组列表。

返回:

以字符串形式表示的多播组列表。

LoRaWAN_X.get_network_mode()

获取当前网络模式。

返回:

当前网络模式,以整数表示 - P2P_LORA: 0 - LoRaWAN: 1 - P2P_FSK: 2

LoRaWAN_X.set_network_mode(mode)

设置设备的网络模式。

参数:

mode (int) – 用于设置 get_network_id 的模式。

返回:

AT 命令执行结果。

UIFLOW2:

set_network_mode.png

LoRaWAN_X.get_p2p_frequency()

获取当前 P2P 频率。

返回:

当前 P2P 频率(整数)。

UIFLOW2:

get_p2p_frequency.png

LoRaWAN_X.set_p2p_frequency(frequency)

设置设备的 P2P 频率。

参数:

frequency (int) – 用于设置 P2P 通信的频率。

返回:

AT 命令执行结果。

UIFLOW2:

set_p2p_frequency.png

LoRaWAN_X.get_p2p_spreading_factor()

获取当前 P2P 扩频因子。

返回:

当前 P2P 扩频因子,以整数形式表示。

UIFLOW2:

get_p2p_spreading_factor.png

LoRaWAN_X.set_p2p_spreading_factor(spreading_factor)

设置 P2P 扩频因子。

参数:

spreading_factor (int) – 用于设置 P2P 通信的扩频因子。默认值为 7,范围为 5 到 12。

返回:

AT 命令执行结果。

UIFLOW2:

set_p2p_spreading_factor.png

LoRaWAN_X.get_p2p_bandwidth()

获取当前 P2P 带宽。

返回:

当前 P2P 带宽,以整数表示。

UIFLOW2:

get_p2p_bandwidth.png

LoRaWAN_X.set_p2p_bandwidth(bandwidth)
参数:

bandwidth (int)

返回:

AT 命令执行结果。

UIFLOW2:

set_p2p_fsk_bandwidth.png

set_p2p_lora_bandwidth.png

LoRaWAN_X.get_p2p_code_rate()

获取当前 P2P 码率。

返回:

当前 P2P 代码速率(整数)。

UIFLOW2:

get_p2p_code_rate.png

LoRaWAN_X.set_p2p_code_rate(code_rate)

设置 P2P 码率。

参数:

code_rate (int) – 用于设置 P2P 通信的编码率。默认值为 0,范围为 0 到 3。0 = 4/5,1 = 4/6,2 = 4/7,3 = 4/8。

返回:

AT 命令执行结果。

UIFLOW2:

set_p2p_code_rate.png

LoRaWAN_X.get_p2p_preamble_length()

获取当前 P2P 前导码长度。

返回:

当前 P2P 前导码长度,类型为整数。

UIFLOW2:

get_p2p_preamble_length.png

LoRaWAN_X.set_p2p_preamble_length(length)

设置 P2P 前导码长度。

参数:

length (int) – 用于设置 P2P 通信的前导码长度。默认值为 8,范围为 5 到 65535。

返回:

AT 命令执行结果。

UIFLOW2:

set_p2p_preamble_length.png

LoRaWAN_X.get_p2p_tx_power()

获取当前 P2P 传输功率。

返回:

当前 P2P 发射功率(整数)。

UIFLOW2:

get_p2p_tx_power.png

LoRaWAN_X.set_p2p_tx_power(power)

设置 P2P 传输功率。

参数:

power (int) – 用于设置 P2P 通信的发射功率。默认值为 14 dBm,范围为 5 到 22 dBm。

返回:

AT 命令执行结果。

UIFLOW2:

set_p2p_tx_power.png

LoRaWAN_X.get_p2p_fsk_bitrate()

获取当前 P2P FSK 比特率。

返回:

当前 P2P FSK 比特率,以整数表示。

UIFLOW2:

get_p2p_fsk_bitrate.png

LoRaWAN_X.set_p2p_fsk_bitrate(bitrate)

设置 P2P FSK 比特率。

参数:

bitrate (int) – 用于设置 P2P FSK 通信的比特率。范围为 600 到 300000 b/s。

返回:

AT 命令执行结果。

UIFLOW2:

set_p2p_fsk_bitrate.png

LoRaWAN_X.get_p2p_fsk_frequency_deviation()

获取当前 P2P FSK 频偏。

返回:

当前 P2P FSK 频率偏移量(整数)。

LoRaWAN_X.set_p2p_fsk_frequency_deviation(deviation)

设置 P2P FSK 频率偏移。

参数:

deviation (int) – 用于设置 P2P FSK 通信的频率偏差。范围为 600 到 200000 Hz。

返回:

AT 命令执行结果。

LoRaWAN_X.send_p2p_data(payload, timeout, to_hex=False)

发送带有指定 payload 的 P2P 数据。

参数:
  • payload (str) – 要发送的有效负载,长度为 2 到 500 个字符,必须是由 0-9、a-f、A-F 组成的偶数个字符,表示 1 到 256 个十六进制值。

  • timeout (int) – 数据传输的超时时间,默认值为 1000 ms。

  • to_hex (bool) – 一个布尔值,用于指示是否将 payload 转换为十六进制格式。

返回:

如果数据发送成功(“TXFSK DONE” 或 “TXP2P DONE”),则为 True;否则为 False。

UIFLOW2:

send_p2p_data.png

send_p2p_data_return.png

LoRaWAN_X.get_p2p_channel_activity()

获取 P2P 模式下当前信道活动状态。

返回:

通道活动状态,类型为整数(0 或 1)。

LoRaWAN_X.set_p2p_channel_activity(state)

在 P2P 模式下启用或禁用通道活动。

参数:

state (bool) – 0 表示禁用,1 表示启用通道活动。

返回:

命令执行的响应。

LoRaWAN_X.get_p2p_receive_data(timeout=500, to_str=False)
参数:
  • timeout (int) – P2P LoRa 数据包监听超时时间。有效值为 1~65535,并包含用于持续监听和无超时的特殊情况。

  • to_str (bool) – 一个布尔值,用于指示是否将 payload 转换为字符串。

返回:

如果接收到数据,则返回一个元组 (RSSI, SNR, Payload);如果未接收到数据,则返回 False。

UIFLOW2:

get_p2p_receive_data.png

LoRaWAN_X.get_p2p_encryption_state()

获取 P2P 模式下的当前加密状态。

返回:

加密状态,以整数表示(0 或 1)。

LoRaWAN_X.set_p2p_encryption_state(state)

在 P2P 模式下启用或禁用加密。

参数:

state (bool) – 0 表示禁用,1 表示启用加密。

返回:

命令执行的响应。

LoRaWAN_X.get_p2p_encryption_key()

获取 P2P 模式下的当前加密密钥。

返回:

作为字符串的加密密钥。

LoRaWAN_X.set_p2p_encryption_key(key)

在 P2P 模式下设置加密密钥。

参数:

key (str) – 加密密钥,以 16 个字符的十六进制字符串表示。

返回:

命令执行的响应。

LoRaWAN_X.get_p2p_crypt_state()

获取 P2P 模式下的当前加密状态(RAK3172 不支持)。

返回:

加密状态,表示为整数(0 或 1)。

LoRaWAN_X.set_p2p_crypt_state(state)

在 P2P 模式下启用或禁用加密状态(RAK3172 不支持)。

参数:

state (bool) – 0 表示禁用,1 表示启用加密状态。

返回:

命令执行的响应。

LoRaWAN_X.get_p2p_crypt_key()

在 P2P 模式下获取加密密钥(RAK3172 不支持)。

返回:

加密密钥(字符串)。

LoRaWAN_X.set_p2p_crypt_key(key)

在 P2P 模式下设置加密密钥(RAK3172 不支持)。

参数:

key – 加密密钥,以 8 字符的十六进制字符串表示。

返回:

命令执行的响应。

LoRaWAN_X.get_p2p_encryption_iv()

获取 P2P 模式下的加密 IV。

返回:

加密 IV 的字符串。

LoRaWAN_X.set_p2p_encryption_iv(iv)

在 P2P 模式下设置加密 IV。

参数:

iv (str) – 加密 IV,以 8 字符的十六进制字符串表示。

返回:

命令执行的响应。

LoRaWAN_X.get_p2p_parameters()

获取当前 P2P 参数。

返回:

当前 P2P 参数的字符串。

LoRaWAN_X.set_p2p_parameters(frequency, spreading_factor, bandwidth, code_rate, preamble_length, tx_power)

设置 P2P LoRa 参数,包括频率、扩频因子、带宽、编码率、前导码长度和发射功率。

参数:
  • frequency (int) – 用于通信的频率,范围为 150000000-960000000。

  • spreading_factor (int) – 扩频因子,其取值可以为 {6, 7, 8, 9, 10, 11, 12}。

  • bandwidth (int) – 带宽,可取值为 {125, 250, 500}。

  • code_rate (int) – 编码率,可选值为 {4/5=0, 4/6=1, 4/7=2, 4/8=3}。

  • preamble_length (int) – 前导码的长度,范围为 2 到 65535。

  • tx_power (int) – 发射功率,范围为 {5-22}。

返回:

命令执行的响应。

LoRaWAN_X.get_p2p_iq_inversion()

获取 P2P 模式下当前的 IQ 反转状态。

返回:

IQ 反转状态,以整数表示(0 或 1)。

LoRaWAN_X.set_p2p_iq_inversion(state)

在 P2P 模式下启用或禁用 IQ 反转。

参数:

state (bool) – 0 表示禁用,1 表示启用 IQ inversion。

返回:

命令执行的响应。

LoRaWAN_X.get_p2p_sync_word()

获取 P2P 模式下当前的同步字。

返回:

同步字(sync word)字符串。

UIFLOW2:

get_p2p_sync_word.png

LoRaWAN_X.set_p2p_sync_word(sync_word)

在 P2P 模式下设置同步字。

参数:

sync_word (int) – 同步字值,应在 0x0000 到 0xFFFF 的范围内。

返回:

命令执行的响应。

UIFLOW2:

set_p2p_sync_word.png

LoRaWAN_X.get_p2p_symbol_timeout()

获取 P2P 模式下当前的符号超时时间。

返回:

timeout 符号为整数。

LoRaWAN_X.set_p2p_symbol_timeout(timeout)

在 P2P 模式下设置符号超时时间。

参数:

timeout (bool) – 超时值,范围应为 0-248。

返回:

命令执行的响应。

LoRaWAN_X.get_p2p_fix_length_payload_state()

获取 P2P 模式下当前固定长度负载状态。

返回:

固定长度的 payload 状态,以整数表示(0 或 1)。

LoRaWAN_X.set_p2p_fix_length_payload_state(state)

在 P2P 模式下启用或禁用固定长度有效负载。

参数:

state (bool) – 0 表示禁用,1 表示启用固定长度 payload。

返回:

命令执行的响应。