查看: 364|回复: 2

[分享] blinker双色温吸顶灯示例

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

    [LV.5]常住居民I

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

    light1.jpg

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

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


    这个程序依据Blinker_PRO_Wlan_Config.ino修改,其中 changeLight函数 需根据你设备实际情况进行编写。

    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[] = "EjtbFjnSLpL6";
    char auth[] = "AU1ldFdhHy7z";
    
    
    // 设备状态
    String switchState = "on";
    int modeState = 0;
    int brightness = 0;
    int colortemp = 0;
    
    bool dataParse(const JsonObject & data)
    {
      String getData;
    
      serializeJson(data, getData);
      BLINKER_LOG("Get user command: ", getData);
    
      modeState = data["set"]["mode"];
      brightness = data["set"]["brt"];
      colortemp = data["set"]["crt"];
      changeMode();
    
      // if you parsed this data, return TRUE.
      // return true;
      return true;
    }
    
    void changeMode() {
      if (modeState == 0) {
        sunMode();
      } else if (modeState == 1) {
        moonMode();
      } else if (modeState == 2) {
        starMode();
      } 
      changeLight();
      feedbackData();
    }
    
    void sunMode() {
      brightness = 255;
      colortemp = 128;
    }
    
    void moonMode() {
      brightness = 255;
      colortemp = 0;
    }
    
    void starMode() {
      brightness = 128;
      colortemp = 0;
    }
    
    void changeLight(){
      //根据brightness,colortemp两参数调整灯
    }
    
    void feedbackData(){
      Blinker.print("mode", modeState);
      Blinker.print("brt", brightness);
      Blinker.print("crt", colortemp);
    }
    
    void heartbeat()
    {
      BUILTIN_SWITCH.print(switchState);
      feedbackData();
    }
    
    #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);
    
    #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-22 12:40
  • 签到天数: 48 天

    [LV.5]常住居民I

    发表于 2020-1-2 22:17 | 显示全部楼层
    官网还没有2.2.9版本。

    点评

    blinker QQ群下载  详情 回复 发表于 2020-1-2 23:47
  • TA的每日心情
    郁闷
    2018-12-6 22:21
  • 签到天数: 48 天

    [LV.5]常住居民I

     楼主| 发表于 2020-1-2 23:47 | 显示全部楼层
    sting2k1 发表于 2020-1-2 22:17
    官网还没有2.2.9版本。

    blinker QQ群下载
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    热门推荐

    [限时福利]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!   
    快速回复 返回顶部 返回列表