diff --git a/src/driver/drv_tuyaMCU.c b/src/driver/drv_tuyaMCU.c index 4ab89575c..f2f4566c9 100644 --- a/src/driver/drv_tuyaMCU.c +++ b/src/driver/drv_tuyaMCU.c @@ -664,6 +664,10 @@ void TuyaMCU_ApplyMapping(int fnID, int value) { // map TuyaMCU's dimmer range to OpenBK7231T_App's dimmer range 0..100 mappedValue = ((value - g_dimmerRangeMin) * 100) / (g_dimmerRangeMax - g_dimmerRangeMin); break; + case ChType_Dimmer256: + // map TuyaMCU's dimmer range to OpenBK7231T_App's dimmer range 0..256 + mappedValue = ((value - g_dimmerRangeMin) * 256) / (g_dimmerRangeMax - g_dimmerRangeMin); + break; default: break; } @@ -701,6 +705,10 @@ void TuyaMCU_OnChannelChanged(int channel, int iVal) { // map OpenBK7231T_App's dimmer range 0..100 to TuyaMCU's dimmer range mappediVal = (((g_dimmerRangeMax - g_dimmerRangeMin) * iVal) / 100) + g_dimmerRangeMin; break; + case ChType_Dimmer256: + // map OpenBK7231T_App's dimmer range 0..256 to TuyaMCU's dimmer range + mappediVal = (((g_dimmerRangeMax - g_dimmerRangeMin) * iVal) / 256) + g_dimmerRangeMin; + break; default: break; } diff --git a/src/httpserver/http_fns.c b/src/httpserver/http_fns.c index b98e5971d..4607f890e 100644 --- a/src/httpserver/http_fns.c +++ b/src/httpserver/http_fns.c @@ -416,16 +416,21 @@ int http_fn_index(http_request_t *request) { poststr(request, ""); } } - else if((bRawPWMs&&h_isChannelPWM(i)) || (channelType == ChType_Dimmer)) { - + else if((bRawPWMs&&h_isChannelPWM(i)) || (channelType == ChType_Dimmer) || (channelType == ChType_Dimmer256)) { + int maxValue; // PWM and dimmer both use a slider control const char *inputName = h_isChannelPWM(i) ? "pwm" : "dim"; int pwmValue; + if(channelType == ChType_Dimmer256) { + maxValue = 255; + } else { + maxValue = 100; + } pwmValue = CHANNEL_Get(i); poststr(request, ""); hprintf128(request,"
",i); - hprintf128(request,"",inputName,i,pwmValue); + hprintf128(request,"",maxValue,inputName,i,pwmValue); hprintf128(request,"",inputName,i); hprintf128(request,"
",i); poststr(request, ""); diff --git a/src/new_pins.c b/src/new_pins.c index 9807cd69e..dbd72f221 100644 --- a/src/new_pins.c +++ b/src/new_pins.c @@ -662,6 +662,8 @@ int CHANNEL_FindMaxValueForChannel(int ch) { } if(g_cfg.pins.channelTypes[ch] == ChType_Dimmer) return 100; + if(g_cfg.pins.channelTypes[ch] == ChType_Dimmer256) + return 256; return 1; } // PWMs are toggled between 0 and 100 (0% and 100% PWM) @@ -1034,6 +1036,8 @@ int CHANNEL_ParseChannelType(const char *s) { return ChType_Toggle; if(!stricmp(s,"dimmer") ) return ChType_Dimmer; + if(!stricmp(s,"dimmer256") ) + return ChType_Dimmer256; if(!stricmp(s,"LowMidHigh") ) return ChType_LowMidHigh; if(!stricmp(s,"OffLowMidHigh") ) diff --git a/src/new_pins.h b/src/new_pins.h index 5805bff4a..d6ad0085c 100644 --- a/src/new_pins.h +++ b/src/new_pins.h @@ -55,6 +55,7 @@ enum ChannelType { ChType_Humidity_div10, ChType_Temperature_div10, ChType_Toggle, + // 0-100 range ChType_Dimmer, ChType_LowMidHigh, ChType_TextField, @@ -65,6 +66,8 @@ enum ChannelType { ChType_OffLowestLowMidHighHighest, // only 5 speeds ChType_LowestLowMidHighHighest, + // like dimmer, but 0-255 + ChType_Dimmer256, };