blinker WiFi插座示例-Arduino中文社区 - Powered by Discuz! Archiver

奈何col 发表于 2020-1-2 16:17

blinker WiFi插座示例

这个示例是专属设备的演示,如果要了解专属设备开发,可见以下文档:
https://diandeng.tech/doc/prodevice



其中提供了我自己的密钥,接入的设备会计算我账号的额度。
这只是个简要的示例程序,如若要用于产品,请自行优化。

测试方法:
0.确保您的blinker app为2.2.9或更高版本
1.给esp8266烧写本帖提供的示例程序
2.在app中进入添加设备页面,选择 点灯科技>WiFi插座
3.确保设备在配网状态,然后进行配置,配置完成后,即可操作该设备


这个程序依据Blinker_PRO_Wlan_Config.ino修改,其中 功率能耗获取、设备开关等功能 需根据你设备实际情况进行编写。





#define BLINKER_PRO_ESP
#define BLINKER_BUTTON
#define BLINKER_BUTTON_LONGPRESS_POWERDOWN
#if defined(ESP32)
#define BLINKER_BUTTON_PIN 4
#else
#define BLINKER_BUTTON_PIN D7
#endif

#define BLINKER_OTA_VERSION_CODE "0.1.1"

#include <Blinker.h>

char type[] = "ZDPtovGdd2eb";
char auth[] = "gcIBQ9umUA5G";


// 设备状态
String switchState = "on";

bool dataParse(const JsonObject & data)
{
String getData;

serializeJson(data, getData);
BLINKER_LOG("Get user command: ", getData);
// if you parsed this data, return TRUE.
// return true;
return false;
}

int getPower(){
//获取设备实施功率
return random(0,600);
}

void heartbeat()
{
BUILTIN_SWITCH.print(switchState);
Blinker.print("power", getPower());
//Blinker.print("cspt", getConsumption());
}

void dataStorage()
{
    Blinker.dataStorage("power", getPower());
}

#if defined(BLINKER_BUTTON)
ICACHE_RAM_ATTR void buttonTick()
{
Blinker.tick();
}

void singleClick()
{
BLINKER_LOG("Button clicked!");
}

void doubleClick()
{
BLINKER_LOG("Button double clicked!");
}

void longPressStart()
{
BLINKER_LOG("Button long press start!");
}

void duringLongPress()
{
// BLINKER_LOG("During button long press!");

uint16_t pressed_time = Blinker.pressedTime();

if (pressed_time >= 5000 && Blinker.configType() != BLINKER_AP_CONFIG)
{
    Blinker.apConfigInit();
}
}
#endif

void dataRead(const String & data)
{
BLINKER_LOG("Blinker readString: ", data);
}

void switch_callback(const String & state)
{
if (state == BLINKER_CMD_ON) {
    digitalWrite(LED_BUILTIN, HIGH);
    switchState = "on";
}
else {
    digitalWrite(LED_BUILTIN, LOW);
    switchState = "off";
}
BUILTIN_SWITCH.print(switchState);
}

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

pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, LOW);

Blinker.begin(auth, type);
Blinker.apConfigInit();

Blinker.attachData(dataRead);
Blinker.attachParse(dataParse);
Blinker.attachHeartbeat(heartbeat);
BUILTIN_SWITCH.attach(switch_callback);
Blinker.attachDataStorage(dataStorage);

#if defined(BLINKER_BUTTON)
Blinker.attachClick(singleClick);
Blinker.attachDoubleClick(doubleClick);
Blinker.attachLongPressStart(longPressStart);
Blinker.attachDuringLongPress(duringLongPress);
attachInterrupt(BLINKER_BUTTON_PIN, buttonTick, CHANGE);
#endif
}

void loop()
{
Blinker.run();
}

n1001 发表于 2020-1-2 18:14

这UI挺漂亮的,功能也实用,赞一个

13708201664 发表于 2020-4-16 17:14

这个实时功率是要什么去测吗,小白,想学
页: [1]
查看完整版本: blinker WiFi插座示例