scripting example 4; dimmer1000 channel type; some stubs for tuyamcu power

This commit is contained in:
openshwprojects
2022-10-30 17:50:00 +01:00
parent e1ed3818cd
commit ad96b9f99c
5 changed files with 54 additions and 1 deletions

View File

@@ -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 {

View File

@@ -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;
}

View File

@@ -418,7 +418,7 @@ int http_fn_index(http_request_t* request) {
poststr(request, "</tr>");
}
}
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;
}

View File

@@ -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){

View File

@@ -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,
};