资讯详情

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

五、产品创造

需要在涂鸦 IoT 开发平台创建产品,获取授权信息,然后将产品和授权相关信息写入代码,实现涂鸦云的访问,具体步骤如下:

创建网关设备

  • 登录涂鸦 IoT 工作台后,单击 并选择 >>品类。

  • image-20211208185731565

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

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

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

  • 涂鸦为测试提供免费授权代码,您可以免费获得 2 获得激活码后,点击注册设备,即完成设备注册,并在下面显示设备的相应信息

  • 填写注册设备信息 examples/data_model_basic_demo/data_model_basic_demo.c 编译并运行文件 Demo 您可以连接涂鸦云。请参考以下编译过程 章节内容。

    改之前: 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,更改设备密钥。 

创建485子设备

  • 子设备的创建与上面相同,只有在操作到下图的步骤时,才能根据下图的变化。

3、LORA子设备的创建

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

六、程序设计

1.简单概述程序设计

(1)485子设备通信

树莓派和485子设备通信python写语言。demo下载地址 ,参考树莓派如何与物联网平台互动。

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

LORA通信发送部分采用公司的LLCC68芯片。SX1268管脚兼容。本设计不使用开关芯片切换发送和接收模式,直接使用双天线和半双工通信。demo下载地址,文档参考Lora智能农业系统。

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

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

2.编程逻辑分析

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

3.程序函数功能分析

  • 以下是在平台上创建网关设备时的参数,并填写相应的位置。

  • 在main设备对象的实例化和初始化 tuya_mqtt_context_t,用于初始化产品 ID 配置参数和循环接收数据包,并处理客户端的连接。

启动 TuyaOS SDK 服务。

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

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

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

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

注:在平台上创建新的子设备时,绑定后上线,否则会显示离线。请参考上面注释的句子。

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

线程1函数的具体实现功能:用于不断获取温湿度数据和门磁状态数据,并向云报告。

连续获取线程2函数的具体实现功能LORA模块接收到的数据。

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

  • 接收数据并调用中断函数OnRxDone处理数据并向云报告函数。

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

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

sx126x_v01.c文件:

  • 将数据写到缓存区。

  • 从缓存区读取数据。

  • 写命令函数。

  • 读命令函数。

  • 向寄存器写入数值。

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

4、调试过程中注意点

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

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

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

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

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

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

七、编译执行(linux)

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

sudo apt-get install make cmake 

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

mkdir build && cd build
cmake ..
make

3、运行 Demo。

./bin/data_model_basic_demo

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

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

八、在线调试

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

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

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

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

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

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

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

标签: cf7自启动继电器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台