智慧农业接入复合式树莓派网关(二)

本文档详细介绍了如何在涂鸦IoT开发平台上创建并配置网关及485、LORA子设备,包括产品创建、功能定义、SDK获取与设备注册。同时,阐述了程序设计逻辑,涉及Python与LORA模块通信、数据上报与接收、子设备数据处理等。在调试与编译执行环节,提供了相关步骤与注意事项,帮助开发者实现设备与涂鸦云的顺利对接。
摘要由CSDN通过智能技术生成

五、产品创建

​ 需要在涂鸦 IoT 开发平台创建产品,获取授权信息,然后将产品和授权相关信息写入到代码中,实现接入涂鸦云,详细步骤如下:

1、网关设备的创建

  • 登录涂鸦 IoT 工作台后,单击 创建产品 并选择 行业解决方案>智慧工业>工业网关品类。

  • image-20211208185731565

    image-20211208185524599

  • 选择TuyaLink自定义方案,输入产品名称,设备类型选择网关设备,数据协议选择涂鸦标准协议,通讯协议选择以太网,点击创建产品。

    image-20211208190037377

  • 功能定义 界面,单击 添加功能 并填写相关参数,完成产品功能定义。(根据要实现的设备功能,创建好DP功能点)

    image-20211227145350576

    image-20211227145438481

  • 设备开发 界面,选择并下载 SDK 方案,单击 下一步 进入激活信息获取页面。

    image-20211208190641894

  • 涂鸦提供免费的授权码供测试使用,您可以免费领取 2 个激活码,领取成功后,点击注册设备,即完成设备注册,设备相应信息会显示在下方

  • TuyaLink SDK V1.0

    TuyaLink SDK V1.0

  • 将注册的设备信息,填写到 examples/data_model_basic_demo/data_model_basic_demo.c 文件中,编译并运行 Demo 即可连接涂鸦云,关于编译的具体流程,请参考下文 编译执行 章节内容。

    TuyaLink SDK V1.0

    改之前:
    const char productId[] = "3jbcpefnn1jxxxxx";
    const char deviceId[] = "6ced2aa564727c01xxxxx";
    const char deviceSecret[] = "ac5d367db39xxxxx";
    改之后:
    const char productId[] = "t1tlm6p13aouheta";
    const char deviceId[] = "6cf918e90b12f7b1ffwiuz";
    const char deviceSecret[] = "a5f23a3fb341edbd";
    注意:根据自己创建的网关产品PID,设备ID,设备密钥进行更改。
    

2、485子设备的创建

  • 子设备的创建同上,只有操作到如下图的步骤时,按照下图圈出来的更改即可。

    image-20211208194648196

3、LORA子设备的创建 image-20211227144900850

  • 子设备创建完成后如下图,在网关设备创建的时候,DP点已经创建,这里不需要再创建。

    LORA子设备:

    image-20211227175804786

485子设备:

image-20211208194853505

image-20211208195141182

image-20211208195201331

六、程序设计

1、程序设计简单概述

(1)485子设备通信

​树莓派和485子设备通信采用python语言来编写的。demo下载地址 ,参考文档树莓派如何与物联网平台交互

(2)LORA通信(发送部分)

​LORA通信发送部分采用的是WPG公司的LLCC68的芯片。该芯片和SX1268管脚兼容。此次设计没有使用开关芯片来进行发送与接收模式的切换,直接使用双天线,采用半双工的通信方式。demo下载地址,文档参考Lora智慧农业系统

(3)LORA通信(接收部分)

LORA通信接收部分采用的是WPG公司的SX1268模块。树莓派通过SPI和此模块进行交互 。demo下载地址

2、程序设计逻辑分析

​ 在平台上创建网关设备时,下载“C TuyaLink SDK”开发包,在此demo上移植自己想要实现的功能。
​ 在data_model_basic_demo.c实现整个控制逻辑。sx126x_v01.c为LORA模块的驱动。

image-20211227163020068

3、程序函数功能解析

data_model_basic_demo.c文件:

  • 下面是在平台上创建网关设备时候的参数,填入对应的位置即可。

image-20211227164605062

  • 在main函数里面实例化和初始化一个设备对象 tuya_mqtt_context_t,用来初始化产品 ID 和授权信息等配置参数以及循环接收数据包,并处理客户端保持连接。

image-20211227164635397

启动 TuyaOS SDK 服务。

ret = tuya_mqtt_connect(client);
//TuyaOS SDK 服务任务,数据接收处理,设备在线保活等任务处理:

循环调用将当前线程产生给底层的 Link SDK 客户端。

tuya_mqtt_loop(client);
  • 定义应用层事件回调,on_messages回调函数用于应用层接收 SDK 事件通知,如数据功能点(DP)下发,云端连接状态通知。平台下发指令在此函数中实现。

image-20211227164722343

  • THING_TYPE_ACTION_EXECUTE主题中,树莓派网关从平台上获取的指令(json格式)存入文件中,供python端调用(python端处理后控制继电器动作)。树莓派网关同时从相应文件中读取设备数据值(python端获取设备值,处理成json格式存入文件中供c端调用),C端处理成json格式的字符串上报到云端。

image-20211227161700386

  • 网关发现子设备,请求云端激活子设备并建立topo关系。适用于设备无法预先在云端注册,也无法烧录,网关发现子设备后,请求云端注册并绑定到当前网关下。在mqtt连接成功回调函数里面绑定了三个子设备,子设备的productId从平台上获取;nodeId是设备的节点id(至少保证网关下唯一,可以是子设备的地址);clientId是设备端唯一id(子设备硬件的唯一标示,可以是设备的 uuid、mac、sn等,至少保证产品下唯一)。

image-20211227161027184

注意:当在平台上创建新的子设备的时候,绑定之后要上线一下,不然会显示离线。可以参考上面注释的语句。

  • 在mqtt连接成功回调函数中创建了两个子线程。一个线程用来上报和处理485子设备的数据,另外一个线程用来和LORA设备通信以及处理接收到的数据。

image-20211227161346308

线程1函数具体实现功能:用于不断获取温湿度的数据以及门磁状态的数据,同时上报到云端。

image-20211227162057225

线程2函数具体实现功能:用于不断获取LORA模块接收到的数据。

image-20211227161919808
image-20211227161953896

  • 与LORA模块连接的IO口初始化:

image-20211227165112807

  • 在中断函数里面接收数据以及调用OnRxDone函数来处理数据以及上报到云端。

image-20211227163245091

  • 下面是读文件函数,主要用于读取python端获取子设备的数据值,然后放于数组 return_data中。read_file函数传入了两个参数,一个是num,用于区分读取的文件(三个文件分别存入三个不同设备的数据值);另外一个是数组return_data,用于存储读取文件的数据(供c端调用)。

image-20211227163540906

  • 下面是写文件函数,主要存储从云端获取的指令,然后供python端调用。

image-20211227163658560

sx126x_v01.c文件:

  • 写数据到缓存区。

image-20211227163952377

  • 从缓存区读取数据。

image-20211227164114168

  • 写命令函数。

image-20211227164154065

  • 读命令函数。

image-20211227164229730

  • 向寄存器写入数值。

image-20211227164307330

  • 读取寄存器里面的数据。

image-20211227164356405

4、调试过程中注意点

  • 如果调试过程中报段错误,首先应该想到段错误的定义,从它出发考虑引发错误的原因。

image-20211209144721838

a.在使用指针时,定义了指针后记得初始化指针,在使用的时候记得判断是否为NULL。

b.在使用数组时,注意数组是否被初始化,数组下标是否越界,数组元素是否存在等。

c.在访问变量时,注意变量所占地址空间是否已经被程序释放掉。

d.在处理变量时,注意变量的格式控制是否合理等。

  • 在调试的过程中由于没有对打开文件为空时进行处理,导致出现了段错误,如下图修改解决了此问题。

image-20211209165347827

七、编译执行(linux)

1、安装 make 等相关环境依赖。

sudo apt-get install make cmake 

2、新建一个文件夹开始编译。

mkdir build && cd build
cmake ..
make

image-20211208195738638

3、运行 Demo。

./bin/data_model_basic_demo

image-20211208195909755

4、在设备端查看运行接口。
以下日志显示设备与 Tuya 云连接成功。
TuyaLink SDK V1.0

5、设备成功连接到涂鸦云平台后,单击进行刷新,设备状态会显示为在线。

TuyaLink SDK V1.0

八、在线调试

1、在平台上查看上报的消息及对设备下发相应指令

image-20211227174322155

2、温湿度值上报云端(属性)(485子设备获取的温湿度值)

image-20211208200251823

温湿度值上报云端(属性)(LORA子设备设备获取的温湿度值)

image-20211227181514959

数据有没有上报成功,看code值:

image-20211208200957163

3、门磁设备上报数据到云端(事件)

image-20211208200736346

数据有没有上报成功,看code值:

image-20211208201138277

5、云端下发指令,继电器动作(动作)

image-20211208201758791

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值