diff --git a/src/cmnds/cmd_script.c b/src/cmnds/cmd_script.c index c295cbba6..adc6ba606 100644 --- a/src/cmnds/cmd_script.c +++ b/src/cmnds/cmd_script.c @@ -113,6 +113,25 @@ label2: +Example 4: + +// Using channel value as a variable demo +// Requirements: +// - channel 1 - output relay +// - channel 11 - you may use it as ADC, or just use setChannel 11 100 or setChannel 11 500 in console to change delay + +// set default value +setChannel 11 500 +// if you don't have ADC, use this to force-display 11 as a slider on GUI +setChannelType 11 dimmer1000 + +looper: + setChannel 1 0 + delay_ms $CH11 + setChannel 1 1 + delay_ms $CH11 + goto looper + */ typedef struct scriptFile_s { diff --git a/src/driver/drv_tuyaMCU.c b/src/driver/drv_tuyaMCU.c index 8fecac6d4..91f113e93 100644 --- a/src/driver/drv_tuyaMCU.c +++ b/src/driver/drv_tuyaMCU.c @@ -686,6 +686,10 @@ void TuyaMCU_ApplyMapping(int fnID, int value) { // map TuyaMCU's dimmer range to OpenBK7231T_App's dimmer range 0..256 mappedValue = ((value - g_dimmerRangeMin) * 256) / (g_dimmerRangeMax - g_dimmerRangeMin); break; + case ChType_Dimmer1000: + // map TuyaMCU's dimmer range to OpenBK7231T_App's dimmer range 0..1000 + mappedValue = ((value - g_dimmerRangeMin) * 1000) / (g_dimmerRangeMax - g_dimmerRangeMin); + break; default: break; } @@ -727,6 +731,10 @@ void TuyaMCU_OnChannelChanged(int channel, int iVal) { // map OpenBK7231T_App's dimmer range 0..256 to TuyaMCU's dimmer range mappediVal = (((g_dimmerRangeMax - g_dimmerRangeMin) * iVal) / 256) + g_dimmerRangeMin; break; + case ChType_Dimmer1000: + // map OpenBK7231T_App's dimmer range 0..256 to TuyaMCU's dimmer range + mappediVal = (((g_dimmerRangeMax - g_dimmerRangeMin) * iVal) / 1000) + g_dimmerRangeMin; + break; default: break; } diff --git a/src/httpserver/http_fns.c b/src/httpserver/http_fns.c index 095af9659..082576180 100644 --- a/src/httpserver/http_fns.c +++ b/src/httpserver/http_fns.c @@ -418,7 +418,7 @@ int http_fn_index(http_request_t* request) { poststr(request, ""); } } - else if ((bRawPWMs && h_isChannelPWM(i)) || (channelType == ChType_Dimmer) || (channelType == ChType_Dimmer256)) { + else if ((bRawPWMs && h_isChannelPWM(i)) || (channelType == ChType_Dimmer) || (channelType == ChType_Dimmer256)|| (channelType == ChType_Dimmer1000)) { int maxValue; // PWM and dimmer both use a slider control const char* inputName = h_isChannelPWM(i) ? "pwm" : "dim"; @@ -427,6 +427,9 @@ int http_fn_index(http_request_t* request) { if (channelType == ChType_Dimmer256) { maxValue = 255; } + else if (channelType == ChType_Dimmer1000) { + maxValue = 1000; + } else { maxValue = 100; } diff --git a/src/new_pins.c b/src/new_pins.c index 6ea2fc764..8d502b7d4 100644 --- a/src/new_pins.c +++ b/src/new_pins.c @@ -732,6 +732,8 @@ int CHANNEL_FindMaxValueForChannel(int ch) { return 100; if(g_cfg.pins.channelTypes[ch] == ChType_Dimmer256) return 256; + if(g_cfg.pins.channelTypes[ch] == ChType_Dimmer1000) + return 1000; return 1; } // PWMs are toggled between 0 and 100 (0% and 100% PWM) @@ -989,6 +991,9 @@ void PIN_ticks(void *param) BTN_LONG_TICKS = (g_cfg.buttonLongPress * 100 / PIN_TMR_DURATION); BTN_HOLD_REPEAT_TICKS = (g_cfg.buttonHoldRepeat * 100 / PIN_TMR_DURATION); +#if PLATFORM_BEKEN + //SVM_RunThreads(PIN_TMR_DURATION); +#endif #ifndef OBK_DISABLE_ALL_DRIVERS DRV_RunQuickTick(); #endif @@ -1117,6 +1122,8 @@ int CHANNEL_ParseChannelType(const char *s) { return ChType_Dimmer; if(!stricmp(s,"dimmer256") ) return ChType_Dimmer256; + if(!stricmp(s,"dimmer1000") ) + return ChType_Dimmer1000; if(!stricmp(s,"LowMidHigh") ) return ChType_LowMidHigh; if(!stricmp(s,"OffLowMidHigh") ) @@ -1131,6 +1138,14 @@ int CHANNEL_ParseChannelType(const char *s) { return ChType_TextField; if(!stricmp(s,"ReadOnly") ) return ChType_ReadOnly; + if(!stricmp(s,"Frequency_mHz") ) + return ChType_Frequency_mHz; + if(!stricmp(s,"Voltage") ) + return ChType_Voltage; + if(!stricmp(s,"Power") ) + return ChType_Power; + if(!stricmp(s,"Current") ) + return ChType_Current; return ChType_Error; } static int CMD_SetButtonTimes(const void *context, const char *cmd, const char *args, int cmdFlags){ diff --git a/src/new_pins.h b/src/new_pins.h index 302c8e343..a5012f282 100644 --- a/src/new_pins.h +++ b/src/new_pins.h @@ -82,6 +82,14 @@ enum ChannelType { ChType_LowestLowMidHighHighest, // like dimmer, but 0-255 ChType_Dimmer256, + // like dimmer, but 0-1000 + ChType_Dimmer1000, + // for TuyaMCU power metering + //NOTE: not used for BL0937 etc + ChType_Frequency_mHz, + ChType_Voltage, + ChType_Power, + ChType_Current, };