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

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3701|回复: 2

[分享] blinker WiFi插座示例

[复制链接]
发表于 2020-1-2 16:17 | 显示全部楼层 |阅读模式
这个示例是专属设备的演示,如果要了解专属设备开发,可见以下文档:
https://diandeng.tech/doc/prodevice

plug.jpg

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

测试方法:
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]
发表于 2020-1-2 18:14 | 显示全部楼层
这UI挺漂亮的,功能也实用,赞一个
发表于 2020-4-16 17:14 | 显示全部楼层
这个实时功率是要什么去测吗,小白,想学
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-28 07:50 , Processed in 0.110049 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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