Python-树莓派-采集温度并上传云端

这篇博客介绍了如何使用树莓派作为网关,通过ZigBee协调器与路由器节点通信,采集温度数据,并将数据上传到云端平台OneNet的过程。内容涵盖数据采集、串口通信、线程间队列通信以及数据存储和上传。
摘要由CSDN通过智能技术生成

Python-树莓派-采集温度并上传云端

2019-2020上学期,终端与网关大作业

目的:用树莓派当网关,ZigBee协调器和路由器之间实现终端通信(无代码),采集终端温度数据,通过串口连接到树莓派上,树莓派与onenet之间实现数据的传输。
流程图:
在这里插入图片描述

1. 数据采集-路由器
路由器节点上电后触发发送温度事件
处理发送温度的事件函数

uint16 router_ProcessEvent( uint8 task_id, uint16 events )
{
   
  (void)task_id;  // Intentionally unreferenced parameter
  ................................
  /* 自定义事件入口 */
  if ( events & ROUTER_SEND_PERIODIC_MSG_EVT )
  {
   
    
      return (events ^ ROUTER_SEND_PERIODIC_MSG_EVT);
  }
    if(events & ROUTER_TPM_SEND_EVT)
  {
   
      unsigned char tmp[3];
      gettmperval(tmp);       /*采集温度*/
      NodeSendRFDate(&router_epDesc, tmp, 3, 0, afAddr16Bit, NODE_TMP_SEND_CLUSTERID);  /*温度发送*/
      osal_start_timerEx(  router_TaskID, ROUTER_TPM_SEND_EVT,
ROUTER_SEND_MSG_TIMEOUT );      
      return (events ^ ROUTER_TPM_SEND_EVT);
  }
  return 0;
}
#DS18B20GetTemperValue是采集DS18B20的数据

由路由器节点将温度传感器上的数据读出通过zigbee网络向协调器发送温度数据上,再由协调器将收到的数据打印到串口上。数据采集的代码烧到ZigBee实验箱上,路由器上插温度采集的硬件板子。其他代码烧到树莓派上。

2.数据采集-协调器

#协调器接收函数
static void _process_sys_event_wd_msg(afIncomingMSGPacket_t *msg_pack)
{
   
    uint16_t cluster_id = 0;
    uint8 *ReceiveData; 
    cluster_id = msg_pack->clusterId
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值