查看: 322|回复: 1

[分享] 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修改,其中 功率能耗获取、设备开关等功能 需根据你设备实际情况进行编写。




    kittenblock中小学创客名师推荐的图形化编程软件

    
    #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();
    }

  • TA的每日心情
    奋斗
    2020-1-24 09:13
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    发表于 2020-1-2 18:14 | 显示全部楼层
    这UI挺漂亮的,功能也实用,赞一个
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    热门推荐

    [限时福利]5分钟带你快速了解新一代开发板:M5STACK
    [限时福利]5分钟带你快速
    一、什么是M5Stack M5Stack是一种模块化、可堆叠扩展的开发板,每个模块
    小爱同学+Blinker控制灯
    小爱同学+Blinker控制灯
    来这个社区已经很久了,有很多问题都是在这里解决的。在此谢谢他们!这里我也分享一个
    使用74hc595驱动一位数码管
    使用74hc595驱动一位数码
    74hc595是一种常用的I/O拓展芯片,今天我尝试用一个74hc595来驱动一个一位七段数码管
    74HC595的疑惑终于解开
    74HC595的疑惑终于解开
    对于74HC595的教程中和网上的资料看完还是模糊,于是一边接线测试,一边反复看图研究
    数据转换求助!!!
    数据转换求助!!!
    如何将 String str =“123,2132,1321,11”; 转换成 uint16_t A[4]= str
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表