【已解决】【小爱控制加湿器】求助,esp32 arduino模拟微动...-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1848|回复: 2

【已解决】【小爱控制加湿器】求助,esp32 arduino模拟微动...

[复制链接]
发表于 2021-1-10 20:38 | 显示全部楼层 |阅读模式
本帖最后由 嘎嘣脆ovo 于 2021-1-15 10:46 编辑

各位看帖的大佬好,求助。买了一个小爱温湿度计,家里原有一个【普通加湿器】。现在想实现温湿度计检测湿度低于60%,就联动米家控制加湿器加湿。湿度高于60%,就关闭加湿器。
加湿器是一个微动开关,联通电源后,一定要按一次加湿按钮,才能工作。再按一次 防误操作无响应,接着再按一次,才能停止工作。
我做了修改,小爱就报错“先帮你操作了,看看设备状态吧”,用万用表测量,引脚闪了一下3.29v的电平,随后归0.

  1. //小爱电源类操作的回调函数:当小爱同学向设备发起控制, 设备端需要有对应控制处理函数

  2. void miotPowerState(const String & state)
  3. {
  4. BLINKER_LOG("need set power state: ", state);
  5. if (state == BLINKER_CMD_OFF)
  6. {
  7. digitalWrite(jiashiqi, HIGH);
  8. delay(300);
  9. digitalWrite(jiashiqi, LOW);
  10. delay(300);
  11. digitalWrite(jiashiqi, HIGH);
  12. delay(1000);
  13. digitalWrite(jiashiqi, LOW);
  14. BlinkerMIOT.powerState("off");
  15. BlinkerMIOT.print();
  16. }

  17. else if (state == BLINKER_CMD_ON)
  18. {
  19. digitalWrite(jiashiqi, HIGH);
  20. delay(1000);
  21. digitalWrite(jiashiqi, LOW);
  22. BlinkerMIOT.powerState("on");
  23. BlinkerMIOT.print();
  24. }
  25. }
复制代码


【改进版本】

已解决,直接上代码:
  1. /* *****************************************************************
  2.    Download latest Blinker library here:
  3.    https://github.com/blinker-iot/blinker-library/archive/master.zip
  4.    Blinker is a cross-hardware, cross-platform solution for the IoT.
  5.    It provides APP, device and server support,
  6.    and uses public cloud services for data transmission and storage.
  7.    It can be used in smart home, data monitoring and other fields
  8.    to help users build Internet of Things projects better and faster.
  9.    Make sure installed 2.7.4 or later ESP8266/Arduino package,
  10.    if use ESP8266 with Blinker.
  11.    https://github.com/esp8266/Arduino/releases
  12.    Make sure installed 1.0.4 or later ESP32/Arduino package,
  13.    if use ESP32 with Blinker.
  14.    https://github.com/espressif/arduino-esp32/releases
  15.    Docs: https://diandeng.tech/doc
  16. * *****************************************************************
  17.    Blinker 库下载地址:
  18.    https://github.com/blinker-iot/blinker-library/archive/master.zip
  19.    Blinker 是一套跨硬件、跨平台的物联网解决方案,提供APP端、设备端、
  20.    服务器端支持,使用公有云服务进行数据传输存储。可用于智能家居、
  21.    数据监测等领域,可以帮助用户更好更快地搭建物联网项目。
  22.    如果使用 ESP8266 接入 Blinker,
  23.    请确保安装了 2.7.4 或更新的 ESP8266/Arduino 支持包。
  24.    https://github.com/esp8266/Arduino/releases
  25.    如果使用 ESP32 接入 Blinker,
  26.    请确保安装了 1.0.4 或更新的 ESP32/Arduino 支持包。
  27.    https://github.com/espressif/arduino-esp32/releases
  28.    文档: https://diandeng.tech/doc
  29. * *****************************************************************/


  30. //小爱模拟微动开关,控制家电

  31. #define BLINKER_WIFI
  32. #define BLINKER_MIOT_OUTLET

  33. #include <Blinker.h>

  34. char auth[] = "********";//你的点灯科技中分配的唯一key
  35. char ssid[] = "********";//你的WiFi名称
  36. char pswd[] = "********";//你的WiFi密码

  37. bool oState = false;

  38. #define jiashiqi 12 //定义使用的引脚
  39. int nSignalState = 0;

  40. unsigned long lSignalSovleStartTimer = 0;

  41. long GetTickCount()
  42. {
  43.   return millis();
  44. }

  45. //小爱电源类操作的回调函数:当小爱同学向设备发起控制, 设备端需要有对应控制处理函数
  46. void miotPowerState(const String & state)
  47. {
  48.   BLINKER_LOG("need set power state: ", state);
  49.   if (state == BLINKER_CMD_OFF)
  50.   {
  51.     nSignalState = 1;
  52.     BlinkerMIOT.powerState("off");
  53.     BlinkerMIOT.print();
  54.   }

  55.   else if (state == BLINKER_CMD_ON)
  56.   {
  57.     nSignalState = 2;
  58.     BlinkerMIOT.powerState("on");
  59.     BlinkerMIOT.print();
  60.   }
  61. }


  62. void setup() {
  63.   // 初始化串口,并开启调试信息,调试用可以删除
  64.   Serial.begin(115200);
  65.   BLINKER_DEBUG.stream(Serial);
  66.   // 初始化IO
  67.   pinMode(jiashiqi, OUTPUT);
  68.   digitalWrite(jiashiqi, LOW);

  69.   // 初始化blinker
  70.   Blinker.begin(auth, ssid, pswd);
  71.   // Button1.attach(button1_callback);

  72.   //小爱同学务必在回调函数中反馈该控制状态
  73.   BlinkerMIOT.attachPowerState(miotPowerState);//注册回调函数
  74. }


  75. void loop() {
  76.   if (nSignalState == 1) {
  77.   if (lSignalSovleStartTimer == 0) {
  78.       //设置拉高
  79.       digitalWrite(jiashiqi, HIGH);
  80.       lSignalSovleStartTimer = GetTickCount();
  81.     }
  82.     else if ((GetTickCount() - lSignalSovleStartTimer) > 500) {
  83.       digitalWrite(jiashiqi, LOW);
  84.       nSignalState = 0;
  85.       lSignalSovleStartTimer = 0;
  86.     }
  87.   }
  88.   else if (nSignalState == 2) {
  89.   if (lSignalSovleStartTimer == 0) {
  90.       //设置拉高
  91.       digitalWrite(jiashiqi, HIGH);
  92.       lSignalSovleStartTimer = GetTickCount();
  93.     }
  94.     else if ((GetTickCount() - lSignalSovleStartTimer) > 500) {
  95.       digitalWrite(jiashiqi, LOW);
  96.       nSignalState = 0;
  97.       lSignalSovleStartTimer = 0;
  98.     }
  99.   }
  100.   Blinker.run();
  101. }
复制代码




 楼主| 发表于 2021-1-10 20:39 | 显示全部楼层
用大佬们教程示例,直接小爱控制引脚常通 是正常的。可是这样不能控制加湿器。求路过的大佬们指点!拜谢
发表于 2021-1-11 17:28 | 显示全部楼层
blinker接入的是小爱,不是米家,不能和米家设备联动。
且没有能接入米家的开放平台,米家需要小米生态链或者小米投资的企业才能接入。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 14:50 , Processed in 0.069880 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表