esp8266 阿里云 加湿器 天猫精灵

news/2024/12/27 22:26:07/
#include <ESP8266WiFi.h>   //安装esp8266arduino开发环境
static WiFiClient espClient;
#include <DNSServer.h>
#include <ESP8266WebServer.h>
#include <CustomWiFiManager.h>
#include <ArduinoJson.h>
//引入 DHT 库
#include <DHT.h>
#include <AliyunIoTSDK.h>  //引入阿里云 IoT SDK,需要安装crypto库、PubSubClient库
AliyunIoTSDK iot;//设置产品和设备的信息,从阿里云设备信息里查看
#define PRODUCT_KEY "xxx"  //替换自己的PRODUCT_KEY
#define DEVICE_NAME "xxx"  //替换自己的DEVICE_NAME
#define DEVICE_SECRET "xxx"  //替换自己的DEVICE_SECRET
#define REGION_ID "cn-shanghai"  //默认cn-shanghaiunsigned long lastMsMain = 0;
int powerPin = 2; 
#define DHTPIN 3 //GPIO3 RXD
#define DHTTYPE DHT11   // DHT 11DHT dht(DHTPIN, DHTTYPE);bool waterShortage;//缺水状态
float targetHumidity;//目标湿度
enum FOGLEVEL{yidang = 1,erdang,sandang,sidang,wudang};//雾量档位
enum FOGLEVEL fogLevel;
enum MODE{zidong = 2,chushi = 13,shuimian = 14,zhienng = 32,putong = 39,biaozhun = 48};//模式
enum MODE mode;
int fog;//雾量
bool powerstate;//开关
float temperature;//温度// web配网页面自定义我的图标请随便使用一个图片转base64工具转换https://tool.css-js.com/base64.html, 64*64
const char Icon[] PROGMEM = "data:image/png;base64,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";void setup() {Serial.begin(115200);pinMode(LED_BUILTIN, OUTPUT);//digitalWrite(LED_BUILTIN, LOW);//开始连接WiFiWiFiManager wifiManager;//实例化WiFiManagerwifiManager.setHeadImgBase64(FPSTR(Icon)); //设置图标wifiManager.setPageTitle("ESP8266物联网设备WiFi配置页");  //设置页标题wifiManager.autoConnect("ESP8266-IoT");// AP模式,可以修改成你的ESP8266WiFi热点名称Serial.println("connected...恭喜!一切就绪。");//初始化 iot,需传入 wifi 的 client,和设备产品信息AliyunIoTSDK::begin(espClient, PRODUCT_KEY, DEVICE_NAME, DEVICE_SECRET, REGION_ID);dht.begin();//绑定一个设备属性回调,当远程修改此属性,会触发函数AliyunIoTSDK::bindData("powerstate", powerstate1);AliyunIoTSDK::bindData("targetHumidity", targetHumidity1);AliyunIoTSDK::bindData("waterShortage", waterShortage1);AliyunIoTSDK::bindData("fog", fog1);AliyunIoTSDK::bindData("fogLevel", fogLevel1);AliyunIoTSDK::bindData("mode", mode1);}
int test=0;
void loop() {powerstate  = !digitalRead(LED_BUILTIN);AliyunIoTSDK::loop(); //必要函数//发送数据的间隔,2秒发送一次,“云智能APP”上电源按钮的UI实时显示会有2秒延时。if (millis() - lastMsMain >= 2000){lastMsMain = millis();//humidity = dht.readHumidity();//temperature = dht.readTemperature();AliyunIoTSDK::send("powerstate", powerstate);//AliyunIoTSDK::send("temperature", temperature);//AliyunIoTSDK::send("humidity", humidity);//Serial.println(humidity);//Serial.println(temperature);test = test + 2;}delay(1000);// 发送事件到阿里云平台if (test > 180){AliyunIoTSDK::sendEvent("filterExpired"); //滤芯寿命到期Serial.println("滤芯寿命到期");}if (test == 360){test = 0;Serial.println("已更换滤芯");}// AliyunIoTSDK::sendEvent("filterExpired"); //滤芯寿命到期}
//电源的属性修改的回调函数1
void powerstate1(JsonVariant L)//固定格式,修改参数l
{bool i = (L["powerstate"]);//参数lpowerstate = not i;Serial.printf("powerstate:"); Serial.println(powerstate);digitalWrite(LED_BUILTIN, powerstate);AliyunIoTSDK::send("powerstate", !digitalRead(LED_BUILTIN));
}
void targetHumidity1(JsonVariant L)//固定格式,修改参数l
{targetHumidity = L["targetHumidity"];//参数lSerial.printf("targetHumidity:"); Serial.println(targetHumidity);AliyunIoTSDK::send("targetHumidity", targetHumidity);
}
void waterShortage1(JsonVariant L)//固定格式,修改参数l
{waterShortage = L["waterShortage"];//参数lSerial.printf("waterShortage:"); Serial.println(waterShortage);AliyunIoTSDK::send("waterShortage", waterShortage);
}
void fog1(JsonVariant L)//固定格式,修改参数l
{fog = L["fog"];//参数lSerial.printf("fog:"); Serial.println(fog);AliyunIoTSDK::send("fog", fog);
}
void fogLevel1(JsonVariant L)//固定格式,修改参数l
{fogLevel = L["fogLevel"];//参数lSerial.printf("fogLevel:"); Serial.println(fogLevel);AliyunIoTSDK::send("fogLevel", fogLevel);
}
void mode1(JsonVariant L)//固定格式,修改参数l
{mode = L["mode"];//参数lSerial.printf("mode:"); Serial.println(mode);AliyunIoTSDK::send("mode", mode);
}

http://www.ppmy.cn/news/343413.html

相关文章

基于STM32单片机的加湿器proteus仿真

硬件设计 仿真图如下所示&#xff1a; 程序设计 #include "stm32f10x.h" #include "bsp_SysTick.h" uint8_t table[]{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};int main(void) {GPIO_InitTypeDef GPIO_Init…

华为面试题:加湿器的布置

文章目录 题目代码注意点index的迭代 链接 题目 冬季已经来临。 你的任务是设计一个有固定加热半径的供暖器向所有房屋供暖。 在加热器的加热半径范围内的每个房屋都可以获得供暖。 现在&#xff0c;给出位于一条水平线上的房屋 houses 和供暖器 heaters 的位置&#xff0c;请…

C++ 常见报错

常见错误 一、so未找到 /usr/bin/ld: /home/haiqiao/adb_test/libmylib.so: undefined reference to timer_settime /usr/bin/ld: /home/haiqiao/adb_test/libmylib.so: undefined reference to timer_create编译参数增加 g -o build/exe build/test2.o -L/home/haiqiao/adb…

加湿器有没有好的结构

加湿器的结构可以说是很重要的&#xff0c;好的结构可以确保加湿效果更佳&#xff0c;保证使用寿命更长。常见的加湿器结构有壶式、超声波式、进口式等。各种类型的加湿器的优缺点各不相同&#xff0c;可以根据自己的需求来选择适合自己的加湿器。总之&#xff0c;好的加湿器结…

自制加湿器

ShineBlink 是一款零门槛、零开发环境、低代码的万能物联网智能硬件开发板 机智云 为开发者提供傻瓜式硬件上云、接App/小程序的能力 结合 ShineBlink 和 机智云 开发者即使不懂嵌入式物联网开发、云和App开发&#xff0c;也能很快实现一款包含硬件、云和App的物联网智能硬件…

超声波加湿器原理与检修

目录&#xff1a; 一、超声波加湿器概述 二、电路原理 三、检修 1、对于振荡电路 2、更换大功率管的参数要求 3、调节电位器 ----------------------------------------------------------------------------------------------------------------- 一、超声波加湿器概述 一般是…

Matlab论文插图绘制模板第102期—分组填充箱线图

在之前的文章中&#xff0c;分享了Matlab箱线图的绘制模板&#xff1a; 填充箱线图的绘制模板&#xff1a; 分组箱线图的绘制模板&#xff1a; 进一步&#xff0c;再来分享一下分组填充箱线图的绘制模板。 先来看一下成品效果&#xff1a; 特别提示&#xff1a;本期内容『数据…

js隐式转换

64. 隐式转换 在 JavaScript 中&#xff0c;有一些情况下会进行隐式类型转换&#xff0c;即把一个值转换成另一个类型的值&#xff0c;以下是一些常见的隐式类型转换规则&#xff1a; 字符串拼接时&#xff0c;如果其中一个操作数为字符串&#xff0c;那么另一个操作数也会隐…