查看: 1051|回复: 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函数 需根据你设备实际情况进行编写。
    [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[] = "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();
    }
    [/mw_shl_code]







  • TA的每日心情
    无聊
    2020-6-4 14:52
  • 签到天数: 62 天

    [LV.6]常住居民II

    发表于 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是一种模块化、可堆叠扩展的开发板,每个模块
    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!   
    快速回复 返回顶部 返回列表