ESP多任务

ESP8266/ESP32 中启用多任务, 将 blinker 相关的设备连接、数据处理等放入单独任务中, 用户代码在 loop() 任务中进行, 互不干涉

目前ESP8266多任务支持还有点问题, 暂不支持使用

设备配置

BLE:

#define BLINKER_BLE  
#define BLINKER_ESP_TASK

#include <Blinker.h>  
  
void setup() {  
    Blinker.begin();  
    BLINKER_TAST_INIT();
}

void loop() {}

WIFI:

#define BLINKER_WIFI  
#define BLINKER_ESP_TASK

#include <Blinker.h>  
  
void setup() {  
    Blinker.begin(auth, ssid, pswd); 
    BLINKER_TAST_INIT(); 
}

void loop() {}

心跳包Heartbeat

app定时向设备发送心跳包, 设备收到心跳包后会返回设备当前状态
如果用户有自定义状态需要在收到心跳包时返回, 可调用以下函数:

Blinker.attachHeartbeat()
用户自定义状态返回的回调函数:


void heartbeat()
{

    if (switch_state) BUILTIN_SWITCH.print("on");
    else BUILTIN_SWITCH.print("off");

}

注册回调函数:


Blinker.attachHeartbeat(heartbeat); 

设备建立连接后app会立刻发送心跳包, 此后每30s-60会发送一次心跳包

设备简要信息Summary

MQTT设备 在心跳包中可以返回设备的简要信息, 如当前传感器值等。
在设备管理页面中会显示设备当前简要信息, 不用进入设备页面查看。

Blinker.attachSummary() 用户自定义状态返回的回调函数:


String summary()
{

    String data = "online, switch: " + STRING_format(switch_state ? "on" : "off");

    return data;

}

注册回调函数:


Blinker.attachSummary(summary); 

重置设备并清除配网信息
Blinker.reset()
重置设备并清除设备上储存的配网信息,适用于ESPTOUCH/APCONFIG配网的设备。
调用该函数后设备将重新启动。