#include <HttpPacket.h>
#include <ESP8266WiFi.h>
#include <ArduinoJson.h>
#include "DHT.h"
#define DHTPIN D8 //温度
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
int LED = D1; //日光灯
int lightPin = A0; //光感选择模拟口
int buzzer = D10; //蜂鸣器
int relayPin = D2; //继电器引脚
int relayState = HIGH; //继电器初始状态
HttpPacketHead packet;
char OneNetServer[] = "api.heclouds.com"; //OneNetServer地址
const char ssid[] = "CT"; //修改为自己的路由器用户名 //Pineapple Plus
const char password[] = "12345678"; //修改为自己的路由器密码 //5678qwer
char device_id[] = "522764577"; //修改为自己的设备ID
char API_KEY[] = "k=Y1jqIQGLsHbocDrCHCp2h7YoI="; //修改为自己的API_KEY
char sensor_id1[] = "温度";
char sensor_id2[] = "状态";
void Wificonnect()
{
Serial.print("连接... " + *ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(".");
}
Serial.println("");
Serial.println("Connected");
Serial.println("");
digitalWrite(0, HIGH);
delay(1000);
digitalWrite(0, LOW);
delay(1000);
digitalWrite(0,HIGH);
}
//发送数据到云平台,绑定设备id,API_key
void postStringToOneNet(char* API_VALUE_temp, char* device_id_temp, char* sensor_id_temp, char* thisString)
{
WiFiClient client;
StaticJsonBuffer<250> jsonBuffer;
JsonObject& Json = jsonBuffer.createObject();
JsonArray& datastreams= Json.createNestedArray("datastreams");
JsonObject& id_datapoints = datastreams.createNestedObject();
id_datapoints["id"] = sensor_id_temp;
JsonArray& datapoints = id_datapoints.createNestedArray("datapoints");
JsonObject& value = datapoints.createNestedObject();
value["value"] =thisString;
char p[180];
Json.printTo(p, sizeof(p));
packet.setHostAddress(OneNetServer);
packet.setDevId(device_id_temp);
packet.setAccessKey(API_VALUE_temp);
/*create the http message about add datapoint */
packet.createCmdPacket(POST, TYPE_DATAPOINT, p);
if (strlen(packet.content)){
Serial.print(packet.content);
}
Serial.println(p);
char cmd[400];
memset(cmd, 0, 400);
strcpy(cmd, packet.content);
strcat(cmd, p);
if (client.connect(OneNetServer, 80)) {
Serial.println("WiFi Client connected ");
client.print(cmd);
delay(1000);
}
client.stop();
}
void setup() {
pinMode(lightPin,INPUT); // 光敏模块连输入
pinMode(LED,OUTPUT); // LED为输出模式
pinMode(buzzer, OUTPUT); // 蜂鸣器输出
pinMode(relayPin, OUTPUT); // 继电器输出
digitalWrite(relayPin,LOW); // 继电器状态默认为低电平
Wificonnect(); // 连接WiFi
Serial.begin(9600);
}
void loop() {
int t = dht.readTemperature();//读取温度
int val = analogRead(lightPin); //读取光照值
bool flag = true;
char Status[10]; //日光灯状态
char temp[10]; //需要发送的温度
if(t < 10){
for(int x=0;x<30;x++){
digitalWrite(buzzer,HIGH);
delay(500);
digitalWrite(buzzer,LOW);
}
}else{
digitalWrite(buzzer,LOW);
}
Serial.println(val); // 串口查看电压值的变化
if( t > 30){
for(int x=0;x<30;x++){
digitalWrite(buzzer,HIGH);
delay(500);
digitalWrite(buzzer,LOW);
}
}
else{
digitalWrite(buzzer,LOW);
}
if(val < 250){ //光照太低
Status = "开启";
digitalWrite(LED,HIGH);
}
else
{
Status = "关闭";
digitalWrite(LED,LOW);
}
if(flag == true){
digitalWrite(relayPin,HIGH);//继电器开启触发外部电路自动喂食
delay(1000);
flag = false;
}
else{
digitalWrite(relayPin,LOW);
delay(1000);
flag = true;
}
itoa(t,temp,10); //整型变量转换为字符串变量
postStringToOneNet(API_KEY, device_id, sensor_id1, temp); //发送温度
delay(100);
postStringToOneNet(API_KEY, device_id, sensor_id2, Status); //发送LED状态
delay(18000); //20秒一次循环
}
基于ESP8266的云平台监控智能鱼缸
猜你喜欢
转载自blog.csdn.net/qq_37504771/article/details/88363834
今日推荐
周排行