arduino+esp8266+onenet+mqtt_ESP8266之blinker物联网平台开关控制
一、blinker物联网平台简介blinker是一套跨硬件、跨平台的物联网解决方案,提供APP端、设备端、服务器端支持,使用公有云服务进行数据传输存储。可用于智能家居、数据监测等领域,可以帮助用户更好更快地搭建物联网项目。(1)特性由服务器端、APP端、设备端组成,可以部署到几乎所有物联网平台APP端支持ios、android设备端可以使用蓝牙、WiFi、MQTT等方式接入,支持Arduino、f
·
一、blinker物联网平台简介
blinker是一套跨硬件、跨平台的物联网解决方案,提供APP端、设备端、服务器端支持,使用公有云服务进行数据传输存储。可用于智能家居、数据监测等领域,可以帮助用户更好更快地搭建物联网项目。
(1)特性
- 由服务器端、APP端、设备端组成,可以部署到几乎所有物联网平台
- APP端支持ios、android设备端可以使用蓝牙、WiFi、MQTT等方式接入,支持Arduino、freeRTOS、mbed OS、Linux等开发平台
- 服务器端可以部署到阿里云、腾讯云、OneNET、百度云、AWS、google cloud等平台
- 通过界面布局器,DIY用户可自己拖拽布局设备控制界面,自由打造你的物联网设备
- 通过专属SDK,认证用户可以使用blinker开发自己的产品,并用于商业用途
(2)应用场景
- 快速开发物联网 / 智能家居 / 无线遥控项目
- 手机 / 语音助手 控制设备
- 蓝牙BLE/ 局域网WiFi / 远程MQTT 接入设备
二、ESP8266智能硬件简介
ESP8266是低成本、高集成度的WIFI芯片,可以用于智能家居、智能玩具等多种场景。
(1)特性
- 性能稳定
- 高集成度
- 低功耗
- 32位处理器,性能优越
(2)使用场景
- 智能家居,如智能开关等
- 智能玩具,如WiFi遥控车等
三、电路连接
该智能开关以ESP-01S WIFI模块为设备端,控制继电器模块的闭合,从而完成对开关的控制。其硬件电路如下:
ESP-01S与继电器模块
四、界面配置
APP端界面配置
五、代码编写
#include // 启用WIFI接入,并可通过小爱同学控制#define BLINKER_WIFI#define BLINKER_MIOT_LIGHT// 定义继电器控制端口#define GPIO0 0// Blinker认证及WIFI信息char auth[] = "xxxxxxxxxxxxx"; // 从APP创建设备时生成的秘钥char ssid[] = "xxxxxxxxxxxxx"; // WIFI名称char pswd[] = "xxxxxxxxxxxxx"; // WIFI密码// 新建开关组件对象BlinkerButton Button1("btn-s82");// 定义灯的状态和模式bool lightState = false;uint8_t lightMode = BLINKER_CMD_MIOT_DAY;// 电源控制回调函数void miotPowerState(const String & state) { BLINKER_LOG("need set power state: ", state); if (state == BLINKER_CMD_ON) { digitalWrite(LED_BUILTIN, LOW); digitalWrite(GPIO0, LOW); BlinkerMIOT.powerState("on"); BlinkerMIOT.print(); lightState = true; } else if (state == BLINKER_CMD_OFF) { digitalWrite(LED_BUILTIN, HIGH); digitalWrite(GPIO0, HIGH); BlinkerMIOT.powerState("off"); BlinkerMIOT.print(); lightState = false; }}// 模式设置回调函数void miotMode(uint8_t mode) { BLINKER_LOG("need set mode: ", mode); if (mode == BLINKER_CMD_MIOT_DAY) { // Your mode function } else if (mode == BLINKER_CMD_MIOT_NIGHT) { // Your mode function } else if (mode == BLINKER_CMD_MIOT_COLOR) { // Your mode function } else if (mode == BLINKER_CMD_MIOT_WARMTH) { // Your mode function } else if (mode == BLINKER_CMD_MIOT_TV) { // Your mode function } else if (mode == BLINKER_CMD_MIOT_READING) { // Your mode function } else if (mode == BLINKER_CMD_MIOT_COMPUTER) { // Your mode function } lightMode = mode; BlinkerMIOT.mode(mode); BlinkerMIOT.print();}// 设备查询回调函数void miotQuery(int32_t queryCode) { BLINKER_LOG("MIOT Query codes: ", queryCode); switch (queryCode) { case BLINKER_CMD_QUERY_ALL_NUMBER : BLINKER_LOG("MIOT Query All"); BlinkerMIOT.powerState(lightState ? "on" : "off"); BlinkerMIOT.print(); break; case BLINKER_CMD_QUERY_POWERSTATE_NUMBER : BLINKER_LOG("MIOT Query Power State"); BlinkerMIOT.powerState(lightState ? "on" : "off"); BlinkerMIOT.print(); break; default : BlinkerMIOT.powerState(lightState ? "on" : "off"); BlinkerMIOT.print(); break; }}// 数据读取回调函数void dataRead(const String & data){ BLINKER_LOG("Blinker readString: ", data); Blinker.vibrate(); uint32_t BlinkerTime = millis(); Blinker.print("millis", BlinkerTime);}// 开关回调函数void button1_callback(const String & state) { BLINKER_LOG("get button state: ", state); if (state == BLINKER_CMD_ON) { digitalWrite(GPIO0, LOW); digitalWrite(LED_BUILTIN, LOW); BLINKER_LOG("Toggle on!"); Button1.color("#FF0000"); Button1.print("on"); } else if (state == BLINKER_CMD_OFF) { digitalWrite(GPIO0, HIGH); digitalWrite(LED_BUILTIN, HIGH); BLINKER_LOG("Toggle off!"); Button1.color("#000000"); Button1.print("off"); }}void setup(){ Serial.begin(115200); BLINKER_DEBUG.stream(Serial); BLINKER_DEBUG.debugAll(); // 板载LED pinMode(LED_BUILTIN, OUTPUT); digitalWrite(LED_BUILTIN, HIGH); // 继电器 pinMode(GPIO0, OUTPUT); digitalWrite(GPIO0, HIGH); // 初始化Blinker Blinker.begin(auth, ssid, pswd); Blinker.attachData(dataRead); // 绑定回调函数 BlinkerMIOT.attachPowerState(miotPowerState); BlinkerMIOT.attachMode(miotMode); BlinkerMIOT.attachQuery(miotQuery); // 绑定对象 Button1.attach(button1_callback); // 初始化开关颜色黑色 Button1.color("#000000");}void loop(){Blinker.run();}
更多推荐
所有评论(0)