怎么样把配网信息保存起来啊,每次断电重启就得重新配网-Arduino中文社区 - Powered by Discuz! Archiver

keke333 发表于 2022-2-20 20:50

怎么样把配网信息保存起来啊,每次断电重启就得重新配网

#define BLINKER_WIFI                  //官方wifi协议库
#define BLINKER_ESP_SMARTCONFIG         // 进行配网
#define BLINKER_MIOT_LIGHT            //小爱灯类库
#define BLINKER_DUEROS_LIGHT            // 设置小度灯类库
#define BLINKER_ALIGENIE_LIGHT          // 设置天猫灯类库
#define BLINKER_PRINT Serial            //串口协议库
#include <Blinker.h>                  //官方库
#include <EEPROM.h>

char auth[] = "ee2691ad386a";         //设备key号
//char ssid[] = "------";                     //wifi名称
//char pswd[] = "------";            //wifi密码
int kg=0;//继电器输出
int kg2=2;//本地轻触开关,io0与gnd接时动作
//*******新建组件对象
BlinkerButton Button1("btn-abc");            //设置app按键的键名
BlinkerButton Button2("btn-abc1");

//*******app上按下按键即会执行该函数app里按键有2种模式3钟不同样式,下面写出所有的开关状态。
void button1_callback(const String & state)            //用state来存储组键的值按键 : "tap"(点按); "pre"(长按); "pup"(释放)开关 : "on"(打开); "off"(关闭)
{
BLINKER_LOG("app操作了!: ", state);                //串口打印

if (digitalRead(kg)==LOW) {            //如果state是on状态
    BLINKER_LOG("灭灯!");                           //串口打印
    digitalWrite(kg, HIGH);
    Button1.color("#00FFFF");                     //设置app按键是深蓝色
    Button1.text("灭");
    Button1.print("off");                         //反馈回按键状态是开
}
else if (digitalRead(kg)==HIGH) {       //如果state是off状态
    BLINKER_LOG("亮灯!");                         //串口打印
   digitalWrite(kg,LOW);
    Button1.color("#0000FF");                  //设置app按键是浅蓝色
    Button1.text("亮");
    Button1.print("on");                      //反馈回按键状态是关
}
}
//创建一个点击处理函数
void button2_callback(const String & state) {
       BLINKER_LOG("get button state: ", state);
       Blinker.reset();   //调用系统定义的擦数函数
}
//*******如果小爱有对设备进行操作就执行下面
void miotPowerState(const String & state)
{
    BLINKER_LOG("小爱语音操作!");            //串口打印

    if (state == BLINKER_CMD_ON){
      digitalWrite(kg,LOW);
      BlinkerMIOT.powerState("on");
      BLINKER_LOG("亮灯!");
      BlinkerMIOT.print();
    }
    else if (state == BLINKER_CMD_OFF){
      digitalWrite(kg,HIGH);
      BlinkerMIOT.powerState("off");
      BLINKER_LOG("灭灯!");
      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(kg ? "on" : "off");
            BlinkerMIOT.print();
            break;
      case BLINKER_CMD_QUERY_POWERSTATE_NUMBER :
            BLINKER_LOG("MIOT Query Power State");
            BlinkerMIOT.powerState(kg ? "on" : "off");
            BlinkerMIOT.print();
            break;

      default :
            BlinkerMIOT.powerState(kg ? "on" : "off");
            BlinkerMIOT.print();
            break;
    }
}

//*******如果小度有对设备进行操作就执行下面
void duerPowerState(const String & state)
{
    BLINKER_LOG("小度语音操作!");            //串口打印

    if (state == BLINKER_CMD_ON){
      digitalWrite(kg,LOW);
      BlinkerDuerOS.powerState("on");
      BLINKER_LOG("亮灯!");
      BlinkerDuerOS.print();
    }
    else if (state == BLINKER_CMD_OFF){
      digitalWrite(kg,HIGH);
      BlinkerDuerOS.powerState("off");
      BLINKER_LOG("灭灯!");
      BlinkerDuerOS.print();
    }
}

void duerQuery(int32_t queryCode)         //小度设备查询的回调函数
{
    BLINKER_LOG("DuerOS Query codes: ", queryCode);

    switch (queryCode)
    {
      case BLINKER_CMD_QUERY_ALL_NUMBER :
            BLINKER_LOG("DuerOS Query All");
            BlinkerDuerOS.powerState(kg ? "on" : "off");
            BlinkerDuerOS.print();
            break;
      case BLINKER_CMD_QUERY_POWERSTATE_NUMBER :
            BLINKER_LOG("DuerOS Query Power State");
            BlinkerDuerOS.powerState(kg ? "on" : "off");
            BlinkerDuerOS.print();
            break;

      default :
            BlinkerDuerOS.powerState(kg ? "on" : "off");
            BlinkerDuerOS.print();
            break;
    }
}
//*******如果天猫精灵有对设备进行操作就执行下面
void aligeniePowerState(const String & state)
{
    BLINKER_LOG("天猫精灵语音操作!");            //串口打印

    if (state == BLINKER_CMD_ON){
      digitalWrite(kg,LOW);
      BlinkerAliGenie.powerState("on");
      BLINKER_LOG("亮灯!");
      BlinkerAliGenie.print();
    }
    else if (state == BLINKER_CMD_OFF){
      digitalWrite(kg,HIGH);
      BlinkerAliGenie.powerState("off");
      BLINKER_LOG("灭灯!");
      BlinkerAliGenie.print();
    }
}

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(kg ? "on" : "off");
            BlinkerAliGenie.print();
            break;
      case BLINKER_CMD_QUERY_POWERSTATE_NUMBER :
            BLINKER_LOG("AliGenie Query Power State");
            BlinkerAliGenie.powerState(kg ? "on" : "off");
            BlinkerAliGenie.print();
      default :
            BlinkerAliGenie.powerState(kg ? "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);
}


//*******app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态30s~60s一次
void heartbeat()
{
BLINKER_LOG("状态同步!");
   if (digitalRead(kg)==LOW)
    {
      Button1.print("on");
      Button1.color("#0000FF");            //设置app按键是浅蓝色
      Button1.text("亮");
    }
    else
    {
    Button1.print("off");
    Button1.color("#00FFFF");            //设置app按键是深蓝色
    Button1.text("灭");
    }
}
///如果本地开关有动作执行下面手动模式
void sdms(){
if (digitalRead(kg)==HIGH&&digitalRead(kg2)==LOW) { //
    Blinker.delay(150);//延时150ms不能太少标准按键成功率
    if (digitalRead(kg2)==HIGH){               
          BLINKER_LOG("本地开关动作!");      
   BLINKER_LOG("亮灯!");                         //串口打印
      digitalWrite(kg,LOW);
      Button1.color("#0000FF");                  //设置app按键是浅蓝色
      Button1.text("亮");
      Button1.print("on");
      }
}
if (digitalRead(kg)==LOW&&digitalRead(kg2)==LOW) {            
    Blinker.delay(150);
    if (digitalRead(kg2)==HIGH){
   BLINKER_LOG("本地开关动作!");
      BLINKER_LOG("灭灯!");                           //串口打印
      digitalWrite(kg, HIGH);
      Button1.color("#00FFFF");                     //设置app按键是深蓝色
      Button1.text("灭");
      Button1.print("off");
      }
}
}
void setup()
{
// 初始化串口
Serial.begin(115200);
delay(10);
BLINKER_DEBUG.stream(Serial);

// 初始化有LED的IO
pinMode(kg, OUTPUT);
digitalWrite(kg, HIGH);            //默认上电是关LOW 时的是接通继电器。
pinMode(kg2,INPUT_PULLUP);         //输入上拉

// 初始化blinker
Blinker.attachData(dataRead);
Blinker.begin(auth);//, ssid, pswd
Button1.attach(button1_callback);            //app上操作必须的注册回调函数关联按键名“Button1”和判断程序“button1_callback"
BlinkerMIOT.attachPowerState(aligeniePowerState);//小爱电源类操作的回调函数
BlinkerDuerOS.attachPowerState(aligeniePowerState);//小度电源类操作的回调函数
BlinkerAliGenie.attachPowerState(aligeniePowerState);//天猫电源类操作的回调函数
BlinkerMIOT.attachPowerState(miotPowerState);            //小爱语音操作注册函数
BlinkerDuerOS.attachPowerState(duerPowerState);            //小度语音操作注册函数
BlinkerAliGenie.attachPowerState(aligeniePowerState);      //天猫语音操作注册函数
Blinker.attachHeartbeat(heartbeat);            //app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态进行语音操作和app操作同步。
BlinkerMIOT.attachQuery(miotQuery);//小爱设备查询的回调函数
BlinkerDuerOS.attachQuery(duerQuery);//小度设备查询的回调函数
BlinkerAliGenie.attachQuery(aligenieQuery);//天猫设备查询的回调函数
Button2.attach(button2_callback);
}
void loop() {
sdms();//本地开关手动模式函数
Blinker.run();
}

coloz 发表于 2022-2-20 22:16

配网信息会自动保存的。
您可能是没有按照文档安装依赖,如果您使用package和lib版本不匹配,就会造成类似问题。
解决办法,按照点灯官网文档安装package和lib

keke333 发表于 2022-2-20 22:29

coloz 发表于 2022-2-20 22:16
配网信息会自动保存的。
您可能是没有按照文档安装依赖,如果您使用package和lib版本不匹配,就会造成类似 ...

谢谢提醒,我去试试再看

keke333 发表于 2022-2-23 21:32

coloz 发表于 2022-2-20 22:16
配网信息会自动保存的。
您可能是没有按照文档安装依赖,如果您使用package和lib版本不匹配,就会造成类似 ...

ide是1.8.19
库是3.0.2
都是最新的没有用保存不下来
页: [1]
查看完整版本: 怎么样把配网信息保存起来啊,每次断电重启就得重新配网