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