这个示例是专属设备的演示,如果要了解专属设备开发,可见以下文档:
https://diandeng.tech/doc/prodevice
其中提供了我自己的密钥,接入的设备会计算我账号的额度。
这只是个简要的示例程序,如若要用于产品,请自行优化。
测试方法:
0.确保您的blinker app为2.2.9或更高版本
1.给esp8266烧写本帖提供的示例程序
2.在app中进入添加设备页面,选择 点灯科技>WiFi插座
3.确保设备在配网状态,然后进行配置,配置完成后,即可操作该设备
这个程序依据Blinker_PRO_Wlan_Config.ino修改,其中 功率能耗获取、设备开关等功能 需根据你设备实际情况进行编写。
[mw_shl_code=arduino,true]
#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();
}[/mw_shl_code]
|