查看: 1448|回复: 2

[分享] blinker WiFi插座示例

[复制链接]
  • TA的每日心情
    郁闷
    2018-12-6 22:21
  • 签到天数: 48 天

    [LV.5]常住居民I

    发表于 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]
  • TA的每日心情
    开心
    2020-5-31 07:40
  • 签到天数: 18 天

    [LV.4]偶尔看看III

    发表于 2020-1-2 18:14 | 显示全部楼层
    这UI挺漂亮的,功能也实用,赞一个

    该用户从未签到

    发表于 2020-4-16 17:14 | 显示全部楼层
    这个实时功率是要什么去测吗,小白,想学
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    热门推荐

    5分钟带你快速了解新一代开发板:M5STACK
    5分钟带你快速了解新一代
    一、什么是M5Stack M5Stack是一种模块化、可堆叠扩展的开发板,每个模块
    Arduino UNO中文数据手册
    Arduino UNO中文数据手册
    2018.9.23重新翻译整理 转载请注明来自Arduino中文社区,并附本帖链接 本帖地址:http
    LabVIEW监控温度传感器
    LabVIEW监控温度传感器
    这里涉及 dht11 数字温度湿度传感器模块、TM1637数码显示模块、LabVIEW。 功能
    黑乌鸦的Arduino兵器库-----DS1302时钟模块
    黑乌鸦的Arduino兵器库---
    嗯 这是一个系列后期会罗列几乎所有的常见基础模块的demo所以 大家的回复将是我最大
    中文 字库 的8针 OLED 12864模块 arduino
    中文 字库 的8针 OLED 128
    屏幕电路SPI连线: 中文字库OLED Arduino UNO GND GND
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表