分析代码u8 Mqttaliyun_Savedata(u8 *t_payload,u8 temp,u8 humi) { unsigned short json_len; u16 light = 55,mq2 = 24,soil = 1; char json[]="{\"id\":\"26\",\"version\":\"1.0\",\"sys\":{\"ack\":0},\"params\":{\"temp\":{\"value\":%d},\"Humi\":{\"value\":%d},\ \"light\":{\"value\":%d},\"mq2\":{\"value\":%d},\"soil\":{\"value\":%d}},\"method\":\"thing.event.property.post\"}"; // char json[]="{\"datastreams\":[{\"id\":\"location\",\"datapoints\":[{\"value\":{\"lon\":%2.6f,\"lat\":%2.6f}}]}]}"; char t_json[200]; soil =(4095 - Get_Adc_Average(0,10))/20; mq2 = ( Get_Adc_Average(1,10)); light=read_BH1750(); if(soil > 99) soil = 99; if(temp > 30 || humi > 80|| mq2 > 3000 ||light > 1500 ||soil > 30) { beep = 0; } else { beep =1; } sprintf(t_json, json, temp, humi,light,mq2,soil); Uart1_SendStr(t_json); json_len = strlen(t_json)/sizeof(char); memcpy(t_payload, t_json, json_len); return json_len; }
时间: 2023-07-09 09:55:18 浏览: 152
tornado-6.4.1-cp38-abi3-musllinux_1_2_i686.whl
这段代码是一个函数,用于将传感器采集到的数据转换为JSON格式,并通过MQTT协议发送到阿里云平台。分析如下:
1. 定义了一个字符串类型的变量json,它包含了设备的ID、版本号、系统和参数等信息,并使用JSON格式进行了封装。
2. 定义了一个字符数组t_json,用于存储转换后的JSON格式数据。
3. 调用了一些传感器采集数据的函数,包括Get_Adc_Average()、read_BH1750()等函数,获取温度、湿度、光照、烟雾和土壤湿度等参数。
4. 对采集到的数据进行一些处理,比如将土壤湿度的数值限制在0-99之间,判断是否超过一些阈值,如果超过则会发出警报。
5. 使用sprintf()函数将采集到的数据按照json格式封装到t_json中。
6. 将封装好的JSON数据发送到阿里云平台。
7. 返回json数据的长度。
总的来说,这段代码是一个完整的采集传感器数据并发送到阿里云平台的过程,其中使用了JSON格式对数据进行了封装,使得数据更加易于处理和解析。
阅读全文