From ef83601bb00dba27a432ca43ef64f6616aca3305 Mon Sep 17 00:00:00 2001 From: Indu Prakash Date: Tue, 8 Nov 2022 06:07:45 -0600 Subject: [PATCH] Accepting kelvin --- src/cmnds/cmd_public.h | 32 +++++++++++++++++--------------- src/httpserver/http_fns.c | 31 ++++++++++++++++++------------- src/httpserver/new_http.c | 2 +- src/httpserver/script.js | 7 +++++++ 4 files changed, 43 insertions(+), 29 deletions(-) diff --git a/src/cmnds/cmd_public.h b/src/cmnds/cmd_public.h index bec1204c8..b5943a777 100644 --- a/src/cmnds/cmd_public.h +++ b/src/cmnds/cmd_public.h @@ -3,7 +3,7 @@ #include "../new_common.h" -typedef int (*commandHandler_t)(const void *context, const char *cmd, const char *args, int flags); +typedef int (*commandHandler_t)(const void* context, const char* cmd, const char* args, int flags); // command was entered in console (web app etc) #define COMMAND_FLAG_SOURCE_CONSOLE 1 @@ -21,9 +21,9 @@ typedef int (*commandHandler_t)(const void *context, const char *cmd, const char // void CMD_Init(); -void CMD_RegisterCommand(const char *name, const char *args, commandHandler_t handler, const char *userDesc, void *context); -int CMD_ExecuteCommand(const char *s, int cmdFlags); -int CMD_ExecuteCommandArgs(const char *cmd, const char *args, int cmdFlags); +void CMD_RegisterCommand(const char* name, const char* args, commandHandler_t handler, const char* userDesc, void* context); +int CMD_ExecuteCommand(const char* s, int cmdFlags); +int CMD_ExecuteCommandArgs(const char* cmd, const char* args, int cmdFlags); enum EventCode { CMD_EVENT_NONE, @@ -43,12 +43,12 @@ enum EventCode { CMD_EVENT_CHANGE_VOLTAGE, // must match order in drv_bl0942.c CMD_EVENT_CHANGE_CURRENT, CMD_EVENT_CHANGE_POWER, - CMD_EVENT_CHANGE_CONSUMPTION_TOTAL, - CMD_EVENT_CHANGE_CONSUMPTION_LAST_HOUR, + CMD_EVENT_CHANGE_CONSUMPTION_TOTAL, + CMD_EVENT_CHANGE_CONSUMPTION_LAST_HOUR, // this is for ToggleChannelOnToggle CMD_EVENT_PIN_ONTOGGLE, - + // Argument is a string // You can fire an event when TuyaMCU or something receives given string CMD_EVENT_ON_UART, @@ -87,6 +87,8 @@ enum EventCode { #define HASS_TEMPERATURE_MIN 154 #define HASS_TEMPERATURE_MAX 500 +#define KELVIN_TEMPERATURE_MIN 2000 +#define KELVIN_TEMPERATURE_MAX 6500 // In general, LED can be in two modes: // - Temperature (Cool and Warm LEDs are on) @@ -104,13 +106,13 @@ enum LightMode { // cmd_tokenizer.c int Tokenizer_GetArgsCount(); -const char *Tokenizer_GetArg(int i); -const char *Tokenizer_GetArgFrom(int i); +const char* Tokenizer_GetArg(int i); +const char* Tokenizer_GetArgFrom(int i); int Tokenizer_GetArgInteger(int i); bool Tokenizer_IsArgInteger(int i); float Tokenizer_GetArgFloat(int i); int Tokenizer_GetArgIntegerRange(int i, int rangeMax, int rangeMin); -void Tokenizer_TokenizeString(const char *s, int flags); +void Tokenizer_TokenizeString(const char* s, int flags); // cmd_repeatingEvents.c void RepeatingEvents_Init(); void RepeatingEvents_OnEverySecond(); @@ -118,7 +120,7 @@ void RepeatingEvents_OnEverySecond(); void EventHandlers_Init(); // This is useful to fire an event when a certain UART string command is received. // For example, you can fire an event while getting 55 AA 01 02 00 03 FF 01 01 06 on UART.. -void EventHandlers_FireEvent_String(byte eventCode, const char *argument); +void EventHandlers_FireEvent_String(byte eventCode, const char* argument); // This is useful to fire an event when, for example, a button is pressed. // Then eventCode is a BUTTON_PRESS and argument is a button index. void EventHandlers_FireEvent(byte eventCode, int argument); @@ -140,15 +142,15 @@ void LED_SetTemperature(int tmpInteger, bool bApply); float LED_GetTemperature0to1Range(); void LED_SetTemperature0to1Range(float f); void LED_SetDimmer(int iVal); -int LED_SetBaseColor(const void *context, const char *cmd, const char *args, int bAll); +int LED_SetBaseColor(const void* context, const char* cmd, const char* args, int bAll); void LED_SetFinalCW(byte c, byte w); void LED_SetFinalRGB(byte r, byte g, byte b); -void LED_SetFinalRGBCW(byte *rgbcw); +void LED_SetFinalRGBCW(byte* rgbcw); void LED_NextColor(); void LED_ToggleEnabled(); void LED_SetEnableAll(int bEnable); int LED_GetEnableAll(); -void LED_GetBaseColorString(char * s); +void LED_GetBaseColorString(char* s); int LED_GetMode(); float LED_GetHue(); float LED_GetSaturation(); @@ -167,7 +169,7 @@ void CMD_StartTCPCommandLine(); void SVM_RunThreads(int deltaMS); void CMD_InitScripting(); -byte *LFS_ReadFile(const char *fname); +byte* LFS_ReadFile(const char* fname); #endif // __CMD_PUBLIC_H__ diff --git a/src/httpserver/http_fns.c b/src/httpserver/http_fns.c index 1b8b47a36..4ec5c5421 100644 --- a/src/httpserver/http_fns.c +++ b/src/httpserver/http_fns.c @@ -223,7 +223,7 @@ int http_fn_index(http_request_t* request) { LED_SetBaseColor(0, "led_basecolor", tmpA, 0); // auto enable - but only for changes made from WWW panel // This happens when users changes COLOR - if(CFG_HasFlag(OBK_FLAG_LED_AUTOENABLE_ON_WWW_ACTION)) { + if (CFG_HasFlag(OBK_FLAG_LED_AUTOENABLE_ON_WWW_ACTION)) { LED_SetEnableAll(true); } } @@ -244,11 +244,11 @@ int http_fn_index(http_request_t* request) { hprintf255(request, "

Changed pwm %i to %i!

", j, newPWMValue); } CHANNEL_Set(j, newPWMValue, 1); - + if (j == SPECIAL_CHANNEL_TEMPERATURE) { // auto enable - but only for changes made from WWW panel // This happens when users changes TEMPERATURE - if(CFG_HasFlag(OBK_FLAG_LED_AUTOENABLE_ON_WWW_ACTION)) { + if (CFG_HasFlag(OBK_FLAG_LED_AUTOENABLE_ON_WWW_ACTION)) { LED_SetEnableAll(true); } } @@ -264,11 +264,11 @@ int http_fn_index(http_request_t* request) { hprintf255(request, "

Changed dimmer %i to %i!

", j, newDimmerValue); } CHANNEL_Set(j, newDimmerValue, 1); - + if (j == SPECIAL_CHANNEL_BRIGHTNESS) { // auto enable - but only for changes made from WWW panel // This happens when users changes DIMMER - if(CFG_HasFlag(OBK_FLAG_LED_AUTOENABLE_ON_WWW_ACTION)) { + if (CFG_HasFlag(OBK_FLAG_LED_AUTOENABLE_ON_WWW_ACTION)) { LED_SetEnableAll(true); } } @@ -553,15 +553,20 @@ int http_fn_index(http_request_t* request) { inputName = "pwm"; pwmValue = LED_GetTemperature(); + long pwmKelvin = 1000000 / pwmValue; poststr(request, ""); - hprintf255(request, "
LED Temperature Slider %s (cur=%i, min=%i, max=%i) Mired (Cool <--- ---> Warm)
", activeStr, pwmValue, HASS_TEMPERATURE_MIN, HASS_TEMPERATURE_MAX); - hprintf255(request, "
", SPECIAL_CHANNEL_TEMPERATURE); - hprintf255(request, "", inputName, SPECIAL_CHANNEL_TEMPERATURE, pwmValue); - hprintf255(request, "", inputName, SPECIAL_CHANNEL_TEMPERATURE); - hprintf255(request, "
", SPECIAL_CHANNEL_TEMPERATURE); - poststr(request, ""); + hprintf255(request, "
LED Temperature Slider %s (%ld K) (Warm <--- ---> Cool)
", activeStr, pwmKelvin); + hprintf255(request, "
", SPECIAL_CHANNEL_TEMPERATURE); + + //(KELVIN_TEMPERATURE_MAX - KELVIN_TEMPERATURE_MIN) / (HASS_TEMPERATURE_MAX - HASS_TEMPERATURE_MIN) = 13 + hprintf255(request, "", pwmKelvin); + + hprintf255(request, "", inputName, SPECIAL_CHANNEL_TEMPERATURE); + hprintf255(request, "", SPECIAL_CHANNEL_TEMPERATURE, inputName); + + poststr(request, "
"); } } @@ -1267,7 +1272,7 @@ int http_fn_cfg_quick(http_request_t* request) { http_html_start(request, "Quick Config"); poststr(request, "

Quick Config

"); - + /* WARNING! THIS IS OBSOLETE NOW! diff --git a/src/httpserver/new_http.c b/src/httpserver/new_http.c index bac7621c9..b958fa303 100644 --- a/src/httpserver/new_http.c +++ b/src/httpserver/new_http.c @@ -619,7 +619,7 @@ const char htmlHeadStyle[] = "