实现USR-LG206设备和USR-LG210网关LORA通讯并以Python读取温湿度变送器(RS485)数据

前言

为做农业项目,学习使用LORA通讯方式,特点:距离远、无线
在这里插入图片描述

这里以组网模式进行配置

一、LG210网关设置

配置LG210网关软件下载地址:https://www.usr.cn/Product/347.html

打开软件
打开软件
···
连接设备:使用网线对LG210网关进行配置
1、点击连接设备的下拉,选择网络连接
2、点击搜索设备,出现在线设备信息;
3、点击选中对应设备信息;
4、点击选择设备在这里插入图片描述
···
读取参数、设置参数、重启
粘贴复制网关ID(Hex),填写到LG206配置软件中
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
···
···

二、LG206设备设置

配置LG206设备软件下载地址:https://www.usr.cn/Product/295.html

通过USB转232线将电脑与LG206进行串口通讯连接,并进行设备配置

读取参数、设置参数、重启
在这里插入图片描述
···

  • 实现电脑端向LG210网关发送读命令,LG210网关与LG206设备进行LORA通讯,将读命令传给LG206,LG206再将读命令发送给温湿度变送器,至此电脑端接收到温度、湿度数据
    在这里插入图片描述

三、Python代码测试

需要注意:
1、port = 1883res = '192.168.1.58',与LG210软件设置对应,并且确定勾选了TCP client
2、温湿度变送器设置的是轮训不是监听波特率设置与LG210、LG206相同,都是115200,变送器地址位最好不要设置默认的01,我这里设为03
3、以上全部设置好后,记得断开连接再进行代码测试。

# -*- coding:utf-8 -*-
import datetime
import socket
import struct
import time
import traceback
import os


def calc_crc(string):
    data = bytearray.fromhex(string)
    # print(data)
    crc = 0xFFFF  # 初始值
    for pos in data:
        crc ^= pos  # 每次两位16进制和crc低8位异或
        for i in range(8):  # 右移八次
            if (crc & 1) != 0:  # 如果移出去的不是0(即移出去的是1)则右移1位且和A001异或。否则为0直接右移1位不作其他处理
                crc >>= 1
                crc ^= 0xA001
            else:
                crc >>= 1
    ret = hex(((crc & 0xff) << 8) + (crc >> 8))[2:]  # 高低8位对调。
    if len(ret) != 4:
        ret = '0' * (4 - len(ret)) + ret
    return ret


soc = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
port = 1883
res = '192.168.1.58'
soc.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)  # 端口复用
soc.bind((res, port))
soc.listen(128)  # 半连接池,限制的是请求数

resv_list = ''
is_first_sample = True
time_start = datetime.datetime.now()
t = True
while t:
    _ = (datetime.datetime.now() - time_start).total_seconds()
    # print(_)
    if _ < 120:
        try:
            if is_first_sample:
                print('start....')
            # soc.settimeout(30)
            # conn, client_addr = soc.accept()
            # conn.settimeout(30)
            if is_first_sample:
                soc.settimeout(30)
                conn, client_addr = soc.accept()
                conn.settimeout(30)
                print('已经有一个连接建立成功', client_addr)
                is_first_sample = False

            conn.send(bytes.fromhex('03 04 00 00 00 02 70 29 '))
            print('发送:03 04 00 00 00 02 70 29 ')
            recv = conn.recv(128)
            recv = str(recv.hex())
            # 数据CRC校验
            if calc_crc(recv[:-4]) != recv[-4:]:
                continue
            print('CRC校验正常', datetime.datetime.now(), recv)
            time.sleep(3)

        except Exception as e:
            print(e)
            print(traceback.print_exc())
    else:
        t = False

    # time.sleep(1)
    # break

···
在这里插入图片描述

技术细节

前提是配置好相关硬件设备,使之相互连接;
再者是通过代码通讯,即TCP Server、TCP Client通信原理

小结

刚开始接触新设备、新通讯规则,难免有一丢丢抵制心理,但坚持看完说明文档,一步步操作,会有新发现,实在解决不了的,可以问有人物联网的售后技术人工客服,这里非常感谢有人售后技术支持,给出关键性思路解决问题。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿伟io呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值