ESP32+SX1302=目前市场上最低成本LORAWAN网关=成本低于300元

项目介绍
本项目是 ESP32+SX1302 ,做成 LoRaWAN 多通道 GW ,支持 packet-forward
开发环境
IDF V5.2.1
IDE VSCode+ESP-IDF 插件
PCBA 示意图
固件烧录
接线
1. 烧录程序时接这个口, ESP32 烧程序是先让设备进入烧录模式 ( 先按住 BOOT0 按键,然后按下 EN
键,此时 ESP32 重启,进入烧录模式,然后松开 BOOT0 按键, ESP32 停留在烧录模式 )
Note
1. 如果使用 ESP-PROG ,板上带有自动进入 boot 模式的功能,烧录时可以不用按按键进入 boot 模式
烧录软件
1. 下载 flash_download_tool_3.9.6_2
2.选择芯片和下载方式
3. 配置下载地址和 bin 文件,点击 start 开始下载
配置
WEB 配置
设备上电会进入 AP 模式
设备内置一个 web 端,可用于对设备进行配置
设备首次上电 WIFI 会进入 AP 模块, AP 模式下设备配置如下
# AP 模式下 WIFI 配置
SSID:LoRaGW-xxxxxx
password:loragwwifi
xxxxxx SN 的后 6
WEB 端地址: 192.168.4.1 用户需要再配置网关的区域、频点、网关 ID packet-forward 转发地址,网关 ID 默认会根据 MAC 地址自
动生成,可以不用修改
网关的频点是通过修改 radio0 radio1 来实现的, 8 个频点和 radio0 radio1 的映射,不同地区会不一样
命令行配置
设备支持命令行进行配置,请使用 putty XSHELL 进行
串口配置为 115200,8,N,1
CN470( 通常 radio0 radio1 相差 800KHZ ,默认 radio=470600000Hz,radio1=471400000Hz)
freq0 = RADIO0-300KHz, 默认为 470.3MHz
freq1 = RADIO0-100KHz, 默认为 470.5MHz
freq2 = RADIO0+100KHz, 默认为 470.7MHz
freq3 = RADIO0+300KHz, 默认为 470.9MHz
freq4 = RADIO1-300KHz, 默认为 471.1MHz
freq5 = RADIO1-100KHz, 默认为 471.3MHz
freq6 = RADIO1+100KHz, 默认为 471.5MHz
freq7 = RADIO1+300KHz, 默认为 471.7MHz
EU868( 默认 radio=867500000Hz,radio1=868500000Hz)
freq0 = RADIO1-400KHz 默认为 868.1MHz
freq1 = RADIO1-200KHz 默认为 868.3MHz
freq2 = RADIO1 默认为 868.5MHz
freq3 = RADIO0-400KHz 默认为 867.1MHz
freq4 = RADIO0-200KHz 默认为 867.3MHz
freq5 = RADIO0 默认为 867.5MHz
freq6 = RADIO0+200KHz 默认为 867.7MHz
freq7 = RADIO0+400KHz 默认为 867.9MHz
US915( 默认 radio=904300000Hz,radio1=905000000Hz) //US915_1
freq0 = RADIO0-400KHz 默认为 903.9MHz
freq1 = RADIO0-200KHz 默认为 904.1MHz
freq2 = RADIO0 默认为 904.3MHz
freq3 = RADIO0+200KHz 默认为 904.5MHz
freq4 = RADIO1-300KHz 默认为 904.7MHz
freq5 = RADIO1-100KHz 默认为 904.9MHz
freq6 = RADIO1+100KHz 默认为 905.1MHz
freq7 = RADIO1+300KHz 默认为 905.3MHz
chan_LoRa_Std = radio0+300Khz, 默认为 904.6MHz
命令行配置
设备支持命令行进行配置,请使用 putty XSHELL 进行
串口配置为 115200,8,N,1
ESXP1302_GW>
ESXP1302_GW> help
pkt_fwd [-h] [--restore] [--host=<UDP Host>] [--port=<UDP Port>] [--gwid=
<gateway id>]
ESP32 packet forwarder based on sx1302_hal
--restore clean NVS config
-h, --help print help
--host=<UDP Host> UDP Host
--port=<UDP Port> UDP Port
--gwid=<gateway id> Gateway Id
ifconfig 如上,可通过设备 pkt_fwd 命令进行设置
pkt_fwd, 用于配置设备 pkt_fwd 相关的信息
ifconfig, 用于查看所有网卡的信息
reboot, 用于设备重启
help, 查看帮助说明
LoRaWAN NS
测试用 NS ,域名: lora.ansitw.com IP 106.52.124.231
WEB 端地址: 106.52.124.231:8080
包转发地址:
printf network status
reboot
reboot the system
help [<string>]
Print the summary of all registered commands if no arguments are given,
otherwise print summary of given command.
<string> Name of command
如上,可通过设备 pkt_fwd 命令进行设置
pkt_fwd, 用于配置设备 pkt_fwd 相关的信息
ifconfig, 用于查看所有网卡的信息
ESXP1302_GW>
ESXP1302_GW> ifconfig
========= ifconfig ===========
--------if :ppp prio:20--------
link: NET_UP
ip: 10 .145.122.176
mask: 255 .255.255.255
gw: 10 .64.64.64
dns1: 218 .85.157.99
dns2: 218 .85.157.99
IMEI: 860761079936981
IMSI: 460115210945489
ICCID: 89860322245923849833
CSQ/BER: 23 /0
--------if :eth prio:50--------
link: LINK_DOWN/NET_DOWN
MAC: 66 :e8:33:49:ba:47
ip: 0 .0.0.0
mask: 0 .0.0.0
gw: 0 .0.0.0
dns1: 218 .85.157.99
dns2: 218 .85.157.99
--------if :ap prio:10--------
MAC: 64 :e8:33:49:ba:45
ip: 192 .168.4.1
ssid: esp32
pswd: esp32wifi
========= ifconfig end ===========
reboot, 用于设备重启
help, 查看帮助说明
LoRaWAN NS
测试用 NS ,域名: lora.ansitw.com IP 106.52.124.231
WEB 端地址: 106.52.124.231:8080
包转发地址:
printf network status
reboot
reboot the system
help [<string>]
Print the summary of all registered commands if no arguments are given,
otherwise print summary of given command.
<string> Name of command
ESXP1302_GW>
ESXP1302_GW> ifconfig
========= ifconfig ===========
--------if :ppp prio:20--------
link: NET_UP
ip: 10 .145.122.176
mask: 255 .255.255.255
gw: 10 .64.64.64
dns1: 218 .85.157.99
dns2: 218 .85.157.99
IMEI: 860761079936981
IMSI: 460115210945489
ICCID: 89860322245923849833
CSQ/BER: 23 /0
--------if :eth prio:50--------
link: LINK_DOWN/NET_DOWN
MAC: 66 :e8:33:49:ba:47
ip: 0 .0.0.0
mask: 0 .0.0.0
gw: 0 .0.0.0
dns1: 218 .85.157.99
dns2: 218 .85.157.99
--------if :ap prio:10--------
MAC: 64 :e8:33:49:ba:45
ip: 192 .168.4.1
ssid: esp32
pswd: esp32wifi
========= ifconfig end =========== CN470 :106.52.124.231:1700
EU868 :106.52.124.231:1701
US915_0 :106.52.124.231:1702
US915_1 :106.52.124.231:1703
网关测试
发送测试
test_hal_tx -r 1250 -f 506.5 -s 12 --pwid 22 -n 10
-r: 指定射频前端芯片为 1250
-f: 发送的频点 (MHz)
-s:SF
--pwid 22:
接收测试
test_hal_rx -r 1250 -a 475.5 -b 476.5
WEB 配置
总体概述
GW Info ,网关信息查看
Configuration ,网关配置查看和修改
Maintenance ,维护页 ( 设备升级、恢复出厂设备 )
配置
WIFI STA, 支持 WIFI 接入点方式连接网络
Management MQTT, 用来配置管理通道的 MQTT 参数
支持 ThingsBoard
支持标准 MQTT
验收测试方法
1. 烧录程序,可正常烧录
2. 烧录后,重新上电, RUN 指示灯, 0.5s 间隔闪烁
3. 连接设备的 WIFI 热点 (ssid:LoRaGW-xxxxxx 密码: loragwwifi) ,浏览器输入 ( http://192.168.4.1 ),
可看到设备的配置页面
4. 测试以太网,将设备接入路由器,设备能以 DHCP 方式获取到 IP ,说明以太网功能正常
5. 设备联网后, SX1302 GNSS 模块启动,将设备的 GWID(GWID 默认为 SN) 录入到 NS 服务器,可在
NS 服务器上看到网关上线,说明 SX1302 功能正常
6. 插入 4G SIM ,拔掉网线, 4G 正常获取到 IP 地址,说明 4G 功能正常
7. GNSS 放到室外有 GNSS 信号的地方,可以获取到经纬度和海拔,说明 GNSS 功能正常
8. 至此,各硬件功能都验证完成,测试通过
网关配置通道
标准 MQTT 通道
配置通道通过 MQTT 进行数据交互,其中设备发往服务器的通道称为上行通道,服务器发往设备的通道
称为下行通道
其中:
上行 Topic up/gw/{SN}/0
下行 Topic dn/gw/{SN}/0
例如网关的 SN 64e833fffe5909d8 ,那么上下行通道分别为
上行 Topic up/gw/64e833fffe5909d8/0
下行 Topic dn/gw/64e833fffe5909d8/0
网关会周期性地通过上行通道发送周期心跳包
服务器也可以通过下行通道,向网关下发数据 周期包
{
"pkt" : "periodUplink" ,
"GWInfo" : {
"SN" : "64e833fffe5909d8" ,
"SoftwareVersion" : "V1.0.1" ,
"HardwareVersion" : "V1.0.0"
},
"Staus" : {
"GPSValid" : true ,
"Latitude" : 24.000000 ,
"Longitude" : 120.000000 ,
"Altitude" : 0.000000 ,
"Cellular" : {},
"Ethernet" : {},
"WIFI" : {
"Link" : "NET_UP" ,
"IPMode" : "DHCP" ,
"MAC" : "64:e8:33:59:09:d8" ,
"IP" : "192.169.4.12" ,
"Mask" : "255.255.255.0" ,
"GW" : "192.169.4.1" ,
"DNS1" : "192.169.4.1" ,
"DNS2" : "192.169.4.1"
}
},
"Configuration" : {
"STA" : {
"Enable" : false ,
"SSID" : "" ,
"Password" : ""
},
"Management" : {
"MQTT" : {
"Enable" : true ,
"URL" : "mqtt://broker.emqx.io" ,
"ClientID" : "64e833fffe5909d8" ,
"UplinkTopic" : "up/gw/64e833fffe5909d8/0" ,
"DownlinkTopic" : "dn/gw/64e833fffe5909d8/0"
}
},
"LoRaWAN" : {
"Region" : "cn470" ,
"Radio0" : "470600000" ,
"Radio1" : "enable" ,
"NsHost" : "lora.ansitw.com" ,
"NsPort" : "1700" ,
"GatewayID" : "64e833fffe5909d8"
}
}
} 更改网关配置
直接修改 Configuration 中的内容,下发下来即可
{
"pkt" : "downlink" ,
"Configuration" : {
"STA" : {
"Enable" : false ,
"SSID" : "" ,
"Password" : ""
},
"Management" : {
"MQTT" : {
"Enable" : true ,
"URL" : "mqtt://broker.emqx.io" ,
"ClientID" : "64e833fffe5909d8" ,
"UplinkTopic" : "up/gw/64e833fffe5909d8/0" ,
"DownlinkTopic" : "dn/gw/64e833fffe5909d8/0"
}
},
"LoRaWAN" : {
"Region" : "cn470" ,
"Radio0" : "470600000" ,
"Radio1" : "enable" ,
"NsHost" : "lora.ansitw.com" ,
"NsPort" : "1700" ,
"GatewayID" : "64e833fffe5909d8"
}
}
}
回复:
{
"pkt" : "downlinkRespone" ,
“result” : "success"
}
重启
{
"pkt" : "downlink" ,
"cmd" : {
"reboot" : true
}
}
回复
{
"pkt" : "downlink" ,
"Configuration" : {
"STA" : {
"Enable" : false ,
"SSID" : "" ,
"Password" : ""
},
"Management" : {
"MQTT" : {
"Enable" : true ,
"URL" : "mqtt://broker.emqx.io" ,
"ClientID" : "64e833fffe5909d8" ,
"UplinkTopic" : "up/gw/64e833fffe5909d8/0" ,
"DownlinkTopic" : "dn/gw/64e833fffe5909d8/0"
}
},
"LoRaWAN" : {
"Region" : "cn470" ,
"Radio0" : "470600000" ,
"Radio1" : "enable" ,
"NsHost" : "lora.ansitw.com" ,
"NsPort" : "1700" ,
"GatewayID" : "64e833fffe5909d8"
}
}
}
{
"pkt" : "downlinkRespone" ,
“result” : "success"
}
{
"pkt" : "downlink" ,
"cmd" : {
"reboot" : true
}
} 升级
回复 ( 收到升级命令 )
ThingsBoard MQTT 通道
配置通道通过 MQTT 进行数据交互 , 网关发送数据给云平台称为 uplink ,云平台发送命令给网关称为
downlink
有两条链路:
1. 网关主动发送数据
telemetry_uplink
设备每隔一段时间会发送心跳包
设备在上电和配置信息更改时,会发送配置信息
2. 云平台发送命令给网关
request_downlink, 云平台发送命令给网关
respone_uplink ,网关回复数据给云平台
其中:
telemetry_uplink_topic v1/devices/me/telemetry // 支持修改,支持修改的字符
串中有 ${SN} ,例如: devices/${SN}/telemetry
request_downlink_topic v1/devices/me/rpc/request/${request_id} // 支持修改,支持修改
的字符串中有 ${SN} ,例如: devices/${SN}/rpc/request
respone_uplink_topic: v1/devices/me/rpc/response/${request_id} // 支持修改,支持修改
的字符串中有 ${SN} ,例如: devices/${SN}/rpc/response
例如网关本次消息的 request_id 10001 ,那么上下行通道分别为
telemetry_uplink_topic v1/devices/me/telemetry
request_downlink v1/devices/me/rpc/request/10001
respone_uplink: v1/devices/me/rpc/response/10001
{
"pkt" : "downlinkRespone" ,
“result” : "success"
}
{
"pkt" : "downlink" ,
"cmd" : {
"upgrade" : "http://192.169.4.53/esp32_sx1302.bin"
}
}
{
"pkt" : "downlinkRespone" ,
“result” : "success"
} 网关信息包
1. 设备在上电、配置被修改时发送
2. 设备每 1h ,发送一次
{
"ts" : 1451649600512 ,
"values" :
{
"pkt" : "gw_info" ,
"SN" : "64e833fffe5909d8" , // 设备序列号
"swver" : "V1.0.1" , // 软件版本
"hwver" : "V1.0.0" , // 硬件版本
"longitude" : "24.56789" , // 经度
"latitude" : "118.56789" , // 纬度
"altitude" : "78.965" , // 海拔
"stat_cell_link" : "" , //stat status 的缩写, stat 开头的都是只读的, cell
cellular 的缩写 , 这个是蜂窝的链路状态, NET_UP 表示连接成功, NET_DOWN 表示未连接上
"stat_cell_ip" : "" , // 蜂窝获取到的 IP
"stat_cell_IMEI" : "" , // 蜂窝模组的 IMEI
"stat_cell_IMSI" : "" , //SIM 卡的 IMSI
"stat_cell_ICCID" : "" , //SIM 卡的 ICCID
"stat_cell_CSQ" : "" , // 蜂窝信号强度
"stat_eth_link" : "" , //ETH ethernet 的缩写 , 这个是以太网的链路状态,样式
LINK_UP/NET_UP, 其中 LINK_UP 表示网线有插入, LINK_DOWN 表示网线未插入 ,NET_UP 表示连接成功,
NET_DOWN 表示未连接上
"stat_eth_mac" : "" , // 以太网的 MAC 地址
"stat_eth_ip" : "" , // 以太网的 IP
"stat_eth_mask" : "" , // 以太网的子网掩码
"stat_eth_gw" : "" , // 以太网的网关
"stat_eth_dns1" : "" , // 以太网的 DNS1
"stat_eth_dns2" : "" , // 以太网的 DNS2
"stat_sta_link" : "" , //STA wifi station 的缩写 , 是指设备以 station 方式接
WIFI AP ,这个是 WIFI 的链路状态, NET_UP 表示连接成功, NET_DOWN 表示未连接上
"stat_sta_mac" : "" , //WIFI MAC 地址
"stat_sta_ip" : "" , //WIFI IP
"stat_sta_mask" : "" , //WIFI 的子网掩码
"stat_sta_gw" : "" , //WIFI 的网关
"stat_sta_dns1" : "" , //WIFI DNS1
"stat_sta_dns2" : "" , //WIFI DNS2
"conf_sta_enable" : "" , //conf cofiguration 的缩写, sta station 的缩写,
sta_enable 表示是否启用 WIFI station true 表示启用, false 表示不启用
"conf_sta_ssid" : "" , // 配置的接入的 wifi ssid
"conf_sta_password" : "" , // 配置的接入的 wifi 的密码
"conf_lorawan_region" : "" , // 配置的 LoRaWAN region
"conf_lorawan_radio0" : "" , // 配置的 LoRaWAN radio0
"conf_lorawan_radio1" : "" , // 配置的 LoRaWAN radio1
"conf_lorawan_nshost" : "" , // 配置的 LoRaWAN NS host
"conf_lorawan_nsport" : "" , // 配置的 LoRaWAN NS port
"conf_lorawan_gatewayid" : "" , // 配置的 LoRaWAN gatewayid
"mang_mqtt_url" : "mqtt://thingsboard.com:6883" , //mang management 的缩写 ,
此项为管理通道的 MQTT URL ,格式为 mqtt://host:port
"mang_mqtt_clientid" : "64e833fffe5909d8" , // 此项为 MQTT clientID
"mang_mqtt_username" : "" , // 此项为 MQTT username
"mang_mqtt_password" : "" , // 此项为 MQTT password
"mang_mqtt_telemetry_topic" : "v1/devices/me/telemetry" , // 此项目
thingsBoard telemetry 主题 心跳包
更改网关配置
直接修改 Configuration 中的内容,下发下来即可
回复:
"mang_mqtt_request_topic" : "v1/devices/me/rpc/request" , // 此项为
thingsBoard RPC request 主题
"mang_mqtt_respone_topic" : "v1/devices/me/rpc/response" , // 此项为
thingsBoard RPC respone 主题,会再拼接 request_id
}
}
心跳包
{
"ts" : 1451649600512 ,
"values" :{
"pkt" : "heartbeat" ,
"SN" : "64e833fffe5909d8"
}
}
更改网关配置
直接修改 Configuration 中的内容,下发下来即可
{
"method" : "modify_configuration" , //gateway_reboot 是命令关键字
"params" : {
"sta_enable" : true ,
"sta_ssid" : "" ,
"sta_password" : "" ,
"mang_mqtt_url" : "mqtt://thingsboard.com:6883" ,
"mang_mqtt_clientid" : "64e833fffe5909d8" ,
"mang_mqtt_username" : "" ,
"mang_mqtt_password" : "" ,
"mang_mqtt_telemetry_topic" : "v1/devices/me/telemetry" ,
"mang_mqtt_request_topic" : "v1/devices/me/rpc/request" , // 此路径仅为
部分,实际发送时需要拼接一个 request_id
"mang_mqtt_respone_topic" : "v1/devices/me/rpc/response" , // 此路径仅为
部分,实际发送时需要拼接一个 request_id
"lorawan_region" : "cn470" ,
"lorawan_radio0" : "470600000" ,
"lorawan_radio1" : "471400000" ,
"lorawan_nshost" : "lora.ansitw.com" ,
"lorawan_nsport" : "1700" ,
"lorawan_gatewayid" : "471400000"
}
}
回复:
{
"result" : "success" ,
"resp" : { // 有返回结果的,放在此结构体里
"method" : "modify_configuration"
}
}
查询网关状态及配置
{
"method" : "query_gw_info" , //gateway_reboot 是命令关键字
"params" : { }
}
回复
{
"result" : "success" ,
"resp" : {
"method" : "query_gw_info" ,
"pkt" : "gw_info" ,
"SN" : "64e833fffe5909d8" , // 设备序列号
"swver" : "V1.0.1" , // 软件版本
"hwver" : "V1.0.0" , // 硬件版本
"longitude" : "24.56789" , // 经度
"latitude" : "118.56789" , // 纬度
"altitude" : "78.965" , // 海拔
"stat_cell_link" : "" , //stat status 的缩写, stat 开头的都是只读的, cell
cellular 的缩写 , 这个是蜂窝的链路状态, NET_UP 表示连接成功, NET_DOWN 表示未连接上
"stat_cell_ip" : "" , // 蜂窝获取到的 IP
"stat_cell_IMEI" : "" , // 蜂窝模组的 IMEI
"stat_cell_IMSI" : "" , //SIM 卡的 IMSI
"stat_cell_ICCID" : "" , //SIM 卡的 ICCID
"stat_cell_CSQ" : "" , // 蜂窝信号强度
"stat_eth_link" : "" , //ETH ethernet 的缩写 , 这个是以太网的链路状态,样式
LINK_UP/NET_UP, 其中 LINK_UP 表示网线有插入, LINK_DOWN 表示网线未插入 ,NET_UP 表示连接成功,
NET_DOWN 表示未连接上
"stat_eth_mac" : "" , // 以太网的 MAC 地址
"stat_eth_ip" : "" , // 以太网的 IP
"stat_eth_mask" : "" , // 以太网的子网掩码
"stat_eth_gw" : "" , // 以太网的网关
"stat_eth_dns1" : "" , // 以太网的 DNS1
"stat_eth_dns2" : "" , // 以太网的 DNS2
"stat_sta_link" : "" , //STA wifi station 的缩写 , 是指设备以 station 方式接
WIFI AP ,这个是 WIFI 的链路状态, NET_UP 表示连接成功, NET_DOWN 表示未连接上
"stat_sta_mac" : "" , //WIFI MAC 地址
"stat_sta_ip" : "" , //WIFI IP
"stat_sta_mask" : "" , //WIFI 的子网掩码
"stat_sta_gw" : "" , //WIFI 的网关
"stat_sta_dns1" : "" , //WIFI DNS1
"stat_sta_dns2" : "" , //WIFI DNS2
"conf_sta_enable" : "" , //conf cofiguration 的缩写, sta station 的缩写,
sta_enable 表示是否启用 WIFI station true 表示启用, false 表示不启用
"conf_sta_ssid" : "" , // 配置的接入的 wifi ssid
"conf_sta_password" : "" , // 配置的接入的 wifi 的密码
"conf_lorawan_region" : "" , // 配置的 LoRaWAN region
"conf_lorawan_radio0" : "" , // 配置的 LoRaWAN radio0
"conf_lorawan_radio1" : "" , // 配置的 LoRaWAN radio1
"conf_lorawan_nshost" : "" , // 配置的 LoRaWAN NS host
"conf_lorawan_nsport" : "" , // 配置的 LoRaWAN NS port
"conf_lorawan_gatewayid" : "" , // 配置的 LoRaWAN gatewayid
"mang_mqtt_url" : "mqtt://thingsboard.com:6883" , //mang management 的缩写 ,
此项为管理通道的 MQTT URL ,格式为 mqtt://host:port 重启
回复
恢复出厂设置
回复
升级
"mang_mqtt_clientid" : "64e833fffe5909d8" , // 此项为 MQTT clientID
"mang_mqtt_username" : "" , // 此项为 MQTT username
"mang_mqtt_password" : "" , // 此项为 MQTT password
"mang_mqtt_telemetry_topic" : "v1/devices/me/telemetry" , // 此项目
thingsBoard telemetry 主题
"mang_mqtt_request_topic" : "v1/devices/me/rpc/request" , // 此项为
thingsBoard RPC request 主题
"mang_mqtt_respone_topic" : "v1/devices/me/rpc/response" , // 此项为
thingsBoard RPC respone 主题,会再拼接 request_id
}
}
重启
{
"method" : "gw_reboot" , //gateway_reboot 是命令关键字
"params" : {}
}
回复
{
"result" : "success" ,
"resp" : { // 有返回结果的,放在此结构体里
"method" : "gw_reboot"
}
}
恢复出厂设置
{
"method" : "gw_restore" , //gw_restore 是命令关键字
"params" : {}
}
回复
{
"result" : "success" ,
"resp" : { // 有返回结果的,放在此结构体里
"method" : "gw_restore"
}
}
升级
{
"method" : "gw_upgrade" , //gateway_reboot 是命令关键字
"params" : {
"url" : "http://192.169.4.53/simple_ota.bin" // 设备只支持 HTTP URL
}
}
回复 ( 收到升级命令 )
{
"result" : "success" ,
"resp" : { // 有返回结果的,放在此结构体里
"method" : "gw_upgrade"
}
}
  • 14
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值