blinker双色温吸顶灯示例
这个示例是专属设备的演示,如果要了解专属设备开发,可见以下文档:https://diandeng.tech/doc/prodevice
其中提供了我自己的密钥,接入的设备会计算我账号的额度。
这只是个简要的示例程序,如若要用于产品,请自行优化。
测试方法:
0.确保您的blinker app为2.2.9或更高版本
1.给esp8266烧写本帖提供的示例程序
2.在app中进入添加设备页面,选择 点灯科技>双色温吸顶
3.确保设备在配网状态,然后进行配置,配置完成后,即可操作该设备
这个程序依据Blinker_PRO_Wlan_Config.ino修改,其中 changeLight函数 需根据你设备实际情况进行编写。
#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();
}
官网还没有2.2.9版本。 sting2k1 发表于 2020-1-2 22:17
官网还没有2.2.9版本。
blinker QQ群下载 独立设备的密钥是否可以使用?用你的密钥是否可以测试用? Guofuqiang01 发表于 2021-3-23 17:46
独立设备的密钥是否可以使用?用你的密钥是否可以测试用?
可以测试 本帖最后由 Guofuqiang01 于 2021-3-25 09:27 编辑
疑问:是否购买专业版本之后使用专业key就可以用这个程序?
在楼主的程序里面添加以下程序实现双色温控制。
//第一段
//定义灯接口
#define ColdLED D2
#define WarmLED D3
//定义冷暖色灯输出值
int CVal,WVal;
//第二段在void changeLight(){}加入
void changeLight(){
//根据brightness,colortemp两参数调整灯
if(switchState=="on"){
CVal =map(brightness*colortemp/255,0,(colortemp+1),0,1023); //亮度参数从0到设置色温映射到1023(ESP8266的模拟量输出默认Range为1023)
WVal =map(brightness*(255-colortemp)/255,0,(256-colortemp),0,1023); //映射的原始范围选用0~256,为了避免colortemp值为0和255的时候出错
analogWrite(ColdLED,CVal);
analogWrite(WarmLED,WVal);
}
else if(switchState=="off"){
analogWrite(ColdLED,LOW);
analogWrite(WarmLED,LOW);
}
}
//第三段在void switch_callback(const String & state){}中加入
void switch_callback(const String & state)
{
if (state == BLINKER_CMD_ON) {
digitalWrite(LED_BUILTIN, HIGH);
analogWrite(ColdLED,CVal);
analogWrite(WarmLED,WVal);
switchState = "on";
}
else {
digitalWrite(LED_BUILTIN, LOW);
analogWrite(ColdLED,LOW);
analogWrite(WarmLED,LOW);
switchState = "off";
}
BUILTIN_SWITCH.print(switchState);
}
Guofuqiang01 发表于 2021-3-24 13:17
疑问:是否购买专业版本之后使用专业key就可以用这个程序?
在楼主的程序里面添加以下程序实现双色温控制。 ...
这个程序自带了key,可以直接使用,专业版可以自己创建key 奈何col 发表于 2021-3-24 19:31
这个程序自带了key,可以直接使用,专业版可以自己创建key
请问一下,目前app是否支持锁定滑块功能?就类似于双色温灯里面,如果灯处于关闭状态的时候,静止滑动滑块。目前这个程序,我写完之后,关闭灯的时候,滑块也可以滑动,但是再次开启灯,灯的参数还是关灯时候的参数。想实现button在某种状态下锁定滑块,并赋予滑块指定颜色。如果可以加入文字反馈提示button在什么状态,无法使用滑块更好。 :) 学习学习 楼主,请问一下为什么配不了网blinker app提示没有找到设备
页:
[1]
2