当小爱同学遇到Blinker与WiFiduino能碰出怎样的火花?

2020-02-22 21:46:45 浏览数 (1)

这十五没过就还是年,看众朋友们,我可想死你们了! ——聪明的瓦肯人


2020年 注定是一个不平凡的年 新年伊始 疫情肆虐! 武汉告急! 华中告急! 全国告急! 为了躲避疫情 我们不约而同的无聊起来 但无论怎样 学习不能耽搁 想当年 牛顿就因为躲避疫情 发现了万有引力 发明了微积分 2020年 我小瓦也要干一番大事业! 这不 想起了那块吃灰的WiFiduino 1

看标题 这小爱同学谁都知道 但 什么是WiFiduino? 该板其实是基于esp8266的 仿Arduino开发板 长这样

其作用与esp8266开发板没区别 那blinker又是什么? 官方解释

blinker是一套跨硬件、跨平台的物联网解决方案,提供APP端、设备端、服务器端支持,使用公有云服务进行数据传输存储。可用于智能家居、数据监测等领域,可以帮助用户更好更快地搭建物联网项目。

而上面的WiFiduino就可以接入blinker 又由于点灯科技 将blinker接入了米家 所以自然可以通过小爱同学控制 blinker提供MQTT服务器 这使得不在局域网下的控制成为可能 当要从户外控制户内blinker设备时 大致会经过以下过程:

小爱同学>MQTT服务器>blinker硬件>家居设备

这样一顿操作下

blinker设备就可以无缝的接入米家

2

为了给大家演示一下

就搭一个LED小电路作为控制设备

我的目的就是

通过小爱同学控制红色LED的亮灭

我选择的数字输出端是D7

WiFiduino的开发可以直接使用Arduino IDE

为了使用blinker的解决方案

还需要安装blinker支持库与esp8266支持库

有了这两大类库加持

这种实验就是无脑开发

有的时候

封装太严重,都有点莫名其妙

至于blinker库的学习

这里就不多说了

送上官方链接

https://doc.blinker.app/?file=home-首页

先来看看效果

视频内容

还可以

此时手机使用流量

属于互联网下的通信

视频的前半部分使用的是blinkerAPP

其可以自定义控制界面

甚至其自带语音控制

具体情况看上述开发文档

目前

小爱同学 blinker个人版

能做的有电源的开闭

传感器信息的查询(温度、湿度)

调节灯的亮度、颜色等

小爱同学的接入教程

也可看上述官方开发文档

其实不止是小爱同学

天猫精灵、百度小度也可免费接入

而微软小娜、谷歌Home等则需付费

讲到这里

想必大伙儿已经灵感乍现了吧?

我们完全可以通过这玩意儿

将非联网设备加入米家

实现智能家居

对于红外控制设备

可以先对其解码再控制

不过这样一来

与万能遥控器的差别不打了

这让我想起了一篇文章:

《基于Arduino与Raspberry Pi的简单家庭物联网系统构想》

该文详情可以点击左下角

阅读原文

3

代码很easy

还不快来观赏

代码语言:javascript复制
#define BLINKER_WIFI
#define BLINKER_MIOT_LIGHT
//wifi小爱同学模式
#include <Blinker.h>

char auth[] = "ad3c****9d79";
char ssid[] = "ChinaNet-ZXhF";
char pswd[] = "x7q5ckk2";
//设备秘钥与wifi
int counter = 0;

BlinkerButton Button1("btn-abc");
BlinkerNumber Number1("num-abc");
//新建组件对象与APP配合

void button1_callback(const String & state)
{
    BLINKER_LOG("get button state:",state);
    //串口日志输出
    digitalWrite(D7,!digitalRead(D7));
  }
//Button1组件回调函数

void dataRead(const String & data)
{
    BLINKER_LOG("Blinker readString:",data);
    counter  ;
    Number1.print(counter);
  }
//未注册组件回调函数

void miotPowerState(const String & state)
{
    BLINKER_LOG("need set power state:",state);

    if(state == BLINKER_CMD_ON)
    {
      //BLINKER_CMD_ON是设备查询状态码
      digitalWrite(D7,HIGH);

      BlinkerMIOT.powerState("on");
      BlinkerMIOT.print();
      //向小爱同学反馈设备状态信息
      }
     else if(state == BLINKER_CMD_OFF)
     {
      digitalWrite(D7,LOW);

      BlinkerMIOT.powerState("off");
      BlinkerMIOT.print();
      }
  }
//小爱同学语言控制LED亮灭回调函数
     
void setup() {
    Serial.begin(115200);
    BLINKER_DEBUG.stream(Serial);
    //初始化串口
    pinMode(D7,OUTPUT);
    digitalWrite(D7,HIGH);
    //初始化数字输出接口
    Blinker.begin(auth,ssid,pswd);
    Blinker.attachData(dataRead);

    Button1.attach(button1_callback);
    //注册Button1回调函数
    BlinkerMIOT.attachPowerState(miotPowerState);
    //注册小爱同学电源类接口回调函数
}

void loop() {
    Blinker.run();
    //blinker启动,保持网络连接和数据解析
}

over


我已经想到下一篇糊弄文章了:怎样以创客的逼格将非联网设备连入物联网?武汉加油! ——聪明的瓦肯人

0 人点赞