ESP8266-01S+天猫精灵控制电脑开关-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9946|回复: 11

[已解答] ESP8266-01S+天猫精灵控制电脑开关

[复制链接]
发表于 2020-2-10 18:12 | 显示全部楼层 |阅读模式
本帖最后由 yz465795771 于 2020-2-10 20:05 编辑

这是写好的代码,烧录后ESP8266,开关设备指示灯不亮,不清楚能不能用,各位大佬帮忙给看一看


#define BLINKER_PRINT Serial
#define BLINKER_WIFI
#define BLINKER_ALIGENIE_OUTLET   //不知道改不改
#include <Blinker.h>
char auth[] = "";  //设备key
char ssid[] = "";  //路由器wifi ssid
char pswd[] = "";  //路由器wifi 密码
BlinkerButton Button1("LC");     //定义按钮键名
bool oState = false;
int counter = 0;
void aligeniePowerState(const String & state)
{
    BLINKER_LOG("need set power state: ", state);
    if (state == BLINKER_CMD_ON) {     //天猫精灵控制开命令 此处修改为点动模式,适合按钮操作,
        digitalWrite(0, LOW);
        delay(200);
        digitalWrite(0, HIGH);
        BlinkerAliGenie.powerState("on");
        BlinkerAliGenie.print();
        oState = true;
    }
    else if (state == BLINKER_CMD_OFF) {   //天猫精灵控制关命令 此处修改为点动模式,适合按钮操作,
        digitalWrite(0,LOW);
        delay(200);
        digitalWrite(0, HIGH);
        BlinkerAliGenie.powerState("off");
        BlinkerAliGenie.print();
        oState = false;
    }
}
void aligenieQuery(int32_t queryCode)      //天猫精灵控制
{
    BLINKER_LOG("AliGenie Query codes: ", queryCode);
    switch (queryCode)
    {
        case BLINKER_CMD_QUERY_ALL_NUMBER :
            BLINKER_LOG("AliGenie Query All");
            BlinkerAliGenie.powerState(oState ? "on" : "off");
            BlinkerAliGenie.print();
            break;
        case BLINKER_CMD_QUERY_POWERSTATE_NUMBER :
            BLINKER_LOG("AliGenie Query Power State");
            BlinkerAliGenie.powerState(oState ? "on" : "off");
            BlinkerAliGenie.print();
            break;
        default :
            BlinkerAliGenie.powerState(oState ? "on" : "off");
            BlinkerAliGenie.print();
            break;
    }
}
void dataRead(const String & data)      // 如果未绑定的组件被触发,则会执行其中内容
{
    BLINKER_LOG("Blinker readString: ", data);
    Blinker.vibrate();
   
    uint32_t BlinkerTime = millis();
    Blinker.print(BlinkerTime);
    Blinker.print("millis", BlinkerTime);
}
void button1_callback(const String & state)     //点灯app内控制按键触发
{
    BLINKER_LOG("get button state: ", state);
    digitalWrite(0,LOW);
    delay(200);
    digitalWrite(0, HIGH);
}
void setup()
{
    Serial.begin(115200);
    BLINKER_DEBUG.stream(Serial);  //Serial
    pinMode(0, OUTPUT);              //定义io口为输出    或者改成pinMode(LED_BUILTIN, OUTPUT);
    digitalWrite(0, HIGH);           //定义io默认为高电平    或者改成digitalWrite(LED_BUILTIN, LOW);
    Blinker.begin(auth, ssid, pswd);
    Blinker.attachData(dataRead);
   
    BlinkerAliGenie.attachPowerState(aligeniePowerState);
    BlinkerAliGenie.attachQuery(aligenieQuery);
    Button1.attach(button1_callback);
}
void loop()
{
    Blinker.run();
}
发表于 2020-2-10 22:26 | 显示全部楼层
把GPIO0加个上拉电阻,然后信号输出用GPIO2试试?
发表于 2020-2-13 20:08 | 显示全部楼层
第6-7行应该填写你无线路由器密码还有你设备的key
发表于 2020-2-22 14:36 | 显示全部楼层
我也想弄这个来学点经验 ,模块快递回来了,马上动手操作!
发表于 2020-2-24 15:59 | 显示全部楼层
如何单用一个esp01模块也能实现,刷入这个固件,打开网页设置就能控制,非常简单。https://download.csdn.net/download/mzymcm/12154963
发表于 2020-2-25 16:50 | 显示全部楼层
问题找到了,你使用下面的代码,把按键名称,无线名称和密码,设备ID,都改成自己的就可以用了!我刚刚亲测了!我也是研究了好几天才弄明白的!我也是要控制电脑开关机!
对了有一个问题是 天猫精灵 无法使用之定义设备名称控制!!!!太可恶(还需在研究), 你呼叫天猫精灵 只能说 “打开插座”,模块才会有反应!!!!如果你自定义设备名称是:“电脑”,你对天猫精灵说:“打开电脑”,就会提示 找不到该设备!

#define BLINKER_WIFI
#define BLINKER_ALIGENIE_OUTLET   //caiyq52-天猫精灵

#include <Blinker.h>


char auth[] = "--------"; //caiyq52-改成自己在点灯app中生成的key码
char ssid[] = "--------"; //caiyq52-改成自己的WIFI名称
char pswd[] = --------";  //caiyq52-改成自己的WIFI密码



BlinkerButton Button1("----");     //caiyq52-此组件未点灯app中自己设置的按键,改名"btn-abc"必须与自己APP中设定的名称一致
bool oState = false;
int Pin = 0;    //caiyq52-定义控制引脚
void AliGeniePowerState(const String & state)
{
    BLINKER_LOG("need set power state: ", state);

    if (state == BLINKER_CMD_ON) {     //caiyq52-天猫精灵控制开命令
        digitalWrite(0, LOW);
        delay(200);
        digitalWrite(0, HIGH);
        BlinkerAliGenie.powerState("on");

        BlinkerAliGenie.print();

        oState = true;
    }
    else if (state == BLINKER_CMD_OFF) {   //caiyq52-天猫精灵控制关命令
        digitalWrite(0,LOW);
        delay(200);
        digitalWrite(0, HIGH);
        BlinkerAliGenie.powerState("off");

        BlinkerAliGenie.print();

        oState = false;
    }
}

void AliGenieQuery(int32_t queryCode)      //caiyq52-天猫精灵控制
{
    BLINKER_LOG("AliGenie Query codes: ", queryCode);

    switch (queryCode)
    {
        case BLINKER_CMD_QUERY_ALL_NUMBER :
            BLINKER_LOG("AliGenie Query All");
            BlinkerAliGenie.powerState(oState ? "on" : "off");
            BlinkerAliGenie.print();
            break;
        case BLINKER_CMD_QUERY_POWERSTATE_NUMBER :
            BLINKER_LOG("AliGenie Query Power State");
            BlinkerAliGenie.powerState(oState ? "on" : "off");
            BlinkerAliGenie.print();
            break;
        default :
            BlinkerAliGenie.powerState(oState ? "on" : "off");
            BlinkerAliGenie.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)     //点灯app内控制按键触发
{
     BLINKER_LOG("get button state: ", state);
    digitalWrite(0,LOW);
    delay(200);
    digitalWrite(0, HIGH);
}

void setup()
{
    Serial.begin(115200);
    BLINKER_DEBUG.stream(Serial);

    pinMode(Pin, OUTPUT);              //定义io口为输出
    digitalWrite(Pin, LOW);           //定义io默认电平

    Blinker.begin(auth, ssid, pswd);
    Blinker.attachData(dataRead);
   
    BlinkerAliGenie.attachPowerState(AliGeniePowerState);
    BlinkerAliGenie.attachQuery(AliGenieQuery);
    Button1.attach(button1_callback);      
}

void loop()
{
    Blinker.run();
}
发表于 2020-3-2 19:39 | 显示全部楼层
为啥我用你的代码会提示错误呢
发表于 2020-3-3 13:34 | 显示全部楼层
ksbb4920355 发表于 2020-2-25 16:50
问题找到了,你使用下面的代码,把按键名称,无线名称和密码,设备ID,都改成自己的就可以用了!我刚刚亲测 ...

我用你的代码怎么提示错误???
发表于 2020-3-4 20:43 | 显示全部楼层
Re. 发表于 2020-3-3 13:34
我用你的代码怎么提示错误???

提示什么错误?我这亲自用过的啊,
发表于 2020-3-8 20:01 | 显示全部楼层
ksbb4920355 发表于 2020-2-25 16:50
问题找到了,你使用下面的代码,把按键名称,无线名称和密码,设备ID,都改成自己的就可以用了!我刚刚亲测 ...

使用你的代码成功了   谢谢
继电器5V取电在电脑电源主板供电插头上找到一条紫色  和一条黑丝  关机了都有电
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-28 10:41 , Processed in 0.464651 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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