简介
ESP32通过阿里云IoT平台进行物联网通信
实现温湿度采集、AD采样、继电器控制
阈值温度监测:微信报警、钉钉报警、QQ报警
APP/WEB可视化控制,自建API控制
WEB 可视化页面
预览地址:iot.suroy.cn
APP
实物展示
通知提醒
Arduino 开发 ESP32 需要用到的库:
PubSubClient : 发送和接收MQTT消息
ArduinoJson : Json字符串转换库
AliyunMqttArduino: 阿里云相关
否则将会导致设备无法连上阿里云IoT平台
Arduino代码
报警业务逻辑
通过“设备触发” 含阿里云官方钉钉报警、及自建微信、QQ报警
# -*- coding: UTF-8 -*-
# @autho Suroy
# @param {Object} payload 上一节点的输出
# @param {Object} node 指定某个节点的输出
# @param {Object} query 第一个节点的输出
# @param {Object} context { appKey, appSecret }
#默认格式
def main(payload, node, query, context):
print 'payload =', payload
print 'node =', node
print 'query =', query
print 'context =', context
#触发节点
nodeDevice = node.get('node_ab6ca5d0') #node.get().get('pageNum')
#默认格式
cur_t=nodeDevice["props"]["IndoorTemperature"]["value"] if nodeDevice["props"]["IndoorTemperature"] else 0
# CurrentTemperature换成自己的属性标识符,cur_t自己定义的变量
#取得报警温度值
for v in payload["data"]:
print(v)
if v["attribute"] == "tempAlarm":
tempAlarmValue = v["value"]
break
#风扇开关,自定义布尔变量
power_s=0
ding_msg="Hi, Suroy"
#字符串变量,自定义
if(cur_t>tempAlarmValue):
power_s=1
ding_msg="当前温度"+str(cur_t)+"打开空调"
ding_msg = "温度是{{node.node_ab6ca5d0.props.IndoorTemperature.value}}°c,湿度是{{node.node_ab6ca5d0.props.RoomHumidity.value}}%,模拟采样值是{{node.node_ab6ca5d0.props.analog.value}}"
payload["p_s"]=power_s
payload["d_m"]=ding_msg
return payload
自建API的业务逻辑
通过阿里云IoT的HTTP请求触发,使用自建API将数据转发到云平台实现物联网设备的数据采集及控制。
进一步优化,可以实现AI控制
Comments | NOTHING