物联网读代码2

ICACHE_RAM_ATTR void INTERRUPT_PEO()
{ 
  Serial.println("进入中断"); 
  char param[32];
  char jsonBuf[128];
  peo = digitalRead(D2);
  sprintf(param, "{\"TEMP\":%d,\"HUMI\":%d,\"SMOKE\":%d,\"PEOPLE\":%d}",temp_sum/count,humi_sum/count,MQ2,peo);
  sprintf(jsonBuf, ALINK_BODY_FORMAT, param);
  Serial.println(jsonBuf);
  boolean d = client.publish(ALINK_TOPIC_PROP_POST, jsonBuf);
  if(d){
     Serial.println("中断程序成功"); 
  }else{
     Serial.println("中断程序失败"); 
   } 
 
}  

这是刚才的中断程序代码

当引脚由低电平变化为高电平的时候会触发该函数。相应的是红外检测的功能。

主要功能是构建json信息。具体方式如下

1.先定义了两个数组。长度为32的param和长度为128的jsonbuf(这个数组来缓冲)

2.

  • MQ2_sum/count > 750 ? MQ2 = 1:MQ2 = 0;这部分是个条件表达式,如果MQ2的平均值大于750,则将MQ2设置为1(表示有烟雾),否则设为0。(给MQ2赋值)

3.

  • sprintf(param, "{\"TEMP\":%d,\"HUMI\":%d,\"SMOKE\":%d}",temp_sum/count,humi_sum/count,MQ2);这行代码将三个计算后的值(温度、湿度和MQ2状态)作为占位符 的整数值插入到 中,形成一个JSON对象的格式,如,其中xx是对应传感器读数。%dparam{"TEMP":xx,"HUMI":xx,"SMOKE":xx}
  • 接下来,使用另一个预先定义好的格式字符串,将数组的内容插入到中,构造完整的JSON消息体。sprintf(jsonBuf, ALINK_BODY_FORMAT, param)ALINK_BODY_FORMATparamjsonBuf
  • 这两步完成了数据到json数据的转化

 4.

  • 最后,这个函数将生成的JSON消息通过发送到指定的主题上,并打印发布结果信息。client.publish()ALINK_TOPIC_PROP_POST

总结一下,这个中断函数主要功能是将烟雾传感器的数据转换成json数据上传。

最后一步:检测是否上传成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值