diff --git a/openBeken_win32_mvsc2017.vcxproj b/openBeken_win32_mvsc2017.vcxproj
index 7f521da8a..b65701c99 100644
--- a/openBeken_win32_mvsc2017.vcxproj
+++ b/openBeken_win32_mvsc2017.vcxproj
@@ -968,6 +968,7 @@
+
diff --git a/openBeken_win32_mvsc2017.vcxproj.filters b/openBeken_win32_mvsc2017.vcxproj.filters
index a3f67f8b2..014311d36 100644
--- a/openBeken_win32_mvsc2017.vcxproj.filters
+++ b/openBeken_win32_mvsc2017.vcxproj.filters
@@ -9,11 +9,219 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -24,6 +232,91 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -32,875 +325,149 @@
-
- Simulator
-
-
- Cmd
-
-
- Cmd
-
-
- Cmd
-
-
- Cmd
-
-
- Cmd
-
-
- Cmd
-
-
- Cmd
-
-
- Cmd
-
-
- Cmd
-
-
- Cmd
-
-
- Cmd
-
-
- Cmd
-
-
- Cmd
-
-
- DGR
-
-
- DGR
-
-
- DGR
-
-
- Simulator
-
-
- Simulator
-
-
- DGR
-
-
- DGR
-
-
- Drv
-
-
- Drv
-
-
- Drv
-
-
- Drv
-
-
- Drv
-
-
- Drv
-
-
- Drv
-
-
- Drv
-
-
- Drv
-
-
- Drv
-
-
- Drv
-
-
- Drv
-
-
- Drv
-
-
- Drv
-
-
- Drv
-
-
- Drv
-
-
- Drv
-
-
- Drv
-
-
- Drv
-
-
- Drv
-
-
- HAL
-
-
- HAL
-
-
- HAL
-
-
- HAL
-
-
- HAL
-
-
- HAL
-
-
- HAL
-
-
- HAL
-
-
- HAL
-
-
- HAL
-
-
- HAL
-
-
- HAL
-
-
- HAL
-
-
- HAL
-
-
- HAL
-
-
- HAL
-
-
- HAL
-
-
- HAL
-
-
- HAL
-
-
- HAL
-
-
- HAL
-
-
- HAL
-
-
- HAL
-
-
- HAL
-
-
- HAL
-
-
- HAL
-
-
- HAL
-
-
- HAL
-
-
- HAL
-
-
- HAL
-
-
- HAL
-
-
- HAL
-
-
- Simulator
-
-
- Simulator
-
-
- HTTP
-
-
- HTTP
-
-
- HTTP
-
-
- HTTP
-
-
- HTTP
-
-
- HTTP
-
-
- HTTP
-
-
- LFS
-
-
- LFS
-
-
- Simulator
-
-
- Simulator
-
-
- Simulator
-
-
- Simulator
-
-
- Simulator
-
-
- Simulator
-
-
- Simulator
-
-
- Simulator
-
-
- Simulator
-
-
- Simulator
-
-
- Simulator
-
-
- Simulator
-
-
- Simulator
-
-
- SelfTest
-
-
- SelfTest
-
-
- SelfTest
-
-
- SelfTest
-
-
- SelfTest
-
-
- SelfTest
-
-
- SelfTest
-
-
- SelfTest
-
-
- SelfTest
-
-
- SelfTest
-
-
- SelfTest
-
-
- SelfTest
-
-
- SelfTest
-
-
- SelfTest
-
-
- SelfTest
-
-
- SelfTest
-
-
- Simulator
-
-
- Simulator
-
-
- Simulator
-
-
- Simulator
-
-
- Simulator
-
-
- Simulator
-
-
- Simulator
-
-
- Simulator
-
-
- Simulator
-
-
- Simulator
-
-
- Drv
-
-
- Simulator
-
-
- Simulator
-
-
- SelfTest
-
-
- HAL
-
-
- SelfTest
-
-
- Drv
-
-
- Drv
-
-
- Drv
-
-
- Drv
-
-
- Drv
-
-
- SelfTest
-
-
- SelfTest
-
-
- SelfTest
-
-
- SelfTest
-
-
- SelfTest
-
-
- SelfTest
-
-
- SelfTest
-
-
- Drv
-
-
- Drv
-
-
- Drv
-
-
- Drv
-
-
- Drv
-
-
- SelfTest
-
-
- SelfTest
-
-
- SelfTest
-
-
- Drv
-
-
- SelfTest
-
-
- SelfTest
-
-
- SelfTest
-
-
- SelfTest
-
-
- Drv
-
-
- SelfTest
-
-
- SelfTest
-
-
- HTTP
-
-
- SelfTest
-
-
- Drv
-
-
- Drv
-
-
- SelfTest
-
-
- Drv
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- SelfTest
-
-
- Drv
-
-
- Drv
-
-
- SelfTest
-
-
- Drv
-
-
- SelfTest
-
-
- SelfTest
-
-
- Drv
-
-
- SelfTest
-
-
- Drv
-
-
- Drv
-
-
- SelfTest
-
-
- Drv
-
-
- Drv
-
-
- Drv
-
-
- Drv
-
-
- Drv
-
-
- Drv
-
-
- SelfTest
-
-
- SelfTest
-
-
- SelfTest
-
-
- Drv
-
-
- SelfTest
-
-
- SelfTest
-
-
- SelfTest
-
-
- Simulator
-
-
- SelfTest
-
-
- SelfTest
-
-
- SelfTest
-
-
- SelfTest
-
-
- Drv
-
-
- Drv
-
-
- Cmd
-
-
- Drv
-
-
- Drv
-
-
- SelfTest
-
-
- Drv
-
-
- Drv
-
-
- Drv
-
-
- Drv
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -910,525 +477,39 @@
-
- HAL
-
-
- HAL
-
-
- HAL
-
-
- HAL
-
-
- HAL
-
-
- HAL
-
-
- HTTP
-
-
- LFS
-
-
- LFS
-
-
- Simulator
-
-
- Simulator
-
-
- Simulator
-
-
- SelfTest
-
-
- Simulator
-
-
- Simulator
-
-
- Simulator
-
-
- Simulator
-
-
- Simulator
-
-
- Simulator
-
-
- Simulator
-
-
- Simulator
-
-
- Simulator
-
-
- Simulator
-
-
- Simulator
-
-
- Simulator
-
-
- Simulator
-
-
- Simulator
-
-
- Simulator
-
-
- Simulator
-
-
- Simulator
-
-
- Simulator
-
-
- Simulator
-
-
- Simulator
-
-
- Simulator
-
-
- Simulator
-
-
- Simulator
-
-
- Simulator
-
-
- Simulator
-
-
- Simulator
-
-
- Drv
-
-
- Drv
-
-
- Drv
-
-
- Drv
-
-
- Drv
-
-
- IRRemote-old
-
-
- IRRemote-old
-
-
- IRRemote-old
-
-
- IRRemote-old
-
-
- IRRemote-old
-
-
- IRRemote-old
-
-
- IRRemote-old
-
-
- IRRemote-old
-
-
- IRRemote-old
-
-
- IRRemote-old
-
-
- IRRemote-old
-
-
- IRRemote-old
-
-
- IRRemote-old
-
-
- IRRemote-old
-
-
- IRRemote-old
-
-
- IRRemote-old
-
-
- IRRemote-old
-
-
- IRRemote-old
-
-
- IRRemote-old
-
-
- IRRemote-old
-
-
- IRRemote-old
-
-
- IRRemote-old
-
-
- IRRemote-old
-
-
- IRRemote-old
-
-
- IRRemote-old
-
-
- IRRemote-old
-
-
- IRRemote-old
-
-
- IRRemote-old
-
-
- IRRemote-old
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- IRRemote-ESP
-
-
- Drv
-
-
- Drv
-
-
- Drv
-
-
- Drv
-
-
- LFS
-
-
-
- Drv
-
-
- Drv
-
-
- Drv
-
-
- Drv
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
- Cmd
-
-
- Cmd
-
-
- DGR
-
-
- DGR
-
-
- DGR
-
-
- Drv
-
-
- Drv
-
-
- Drv
-
-
- Drv
-
-
- Drv
-
-
- Drv
-
-
- Drv
-
-
- Drv
-
-
- Drv
-
-
- Drv
-
-
- Drv
-
-
- Drv
-
-
- HTTP
-
-
- HTTP
-
-
- HTTP
-
-
- HTTP
-
-
-
- {9f4c6f6e-a873-459a-851f-f1d1765678cb}
-
-
- {c80fadcc-89e7-4380-8c8e-262dfab4240c}
-
-
- {b2359e07-df0d-4c96-990e-3c39516c8d34}
-
-
- {542e4943-f31c-4550-978f-20adbb8d7933}
-
-
- {e385d68c-eb29-44e3-bbb3-560d53712634}
-
-
- {ea59e797-47c5-4aa4-b0df-13a40b08dd3c}
-
-
- {0d71deec-4234-4353-b50a-d55394522055}
-
-
- {b5fe6300-6717-4382-acc5-5d4736e28b25}
-
-
- {553d6b46-d893-4259-b8b1-77e58da2a2ed}
-
-
- {e980596d-3f72-423b-9b22-afc2901a273f}
-
-
\ No newline at end of file
diff --git a/src/selftest/selftest_http.c b/src/selftest/selftest_http.c
index 3d61a1a72..5bbc5d6cb 100644
--- a/src/selftest/selftest_http.c
+++ b/src/selftest/selftest_http.c
@@ -803,308 +803,10 @@ bool SIM_HasHTTPDimmer() {
}
-
-void Test_Http_LED_SingleChannel() {
-
- SIM_ClearOBK(0);
- // Setup single PWM Device
- PIN_SetPinRoleForPinIndex(24, IOR_PWM);
- PIN_SetPinChannelForPinIndex(24, 1);
-
- CMD_ExecuteCommand("led_enableAll 1", 0);
- CMD_ExecuteCommand("led_dimmer 100", 0);
-
- // HTML page must contains dimmer, but no RGB and no temeprature controls
- Test_FakeHTTPClientPacket_GET("index");
- SELFTEST_ASSERT_HTTP_HAS_LED_DIMMER(true);
- SELFTEST_ASSERT_HTTP_HAS_LED_TEMPERATURE(false);
- SELFTEST_ASSERT_HTTP_HAS_LED_RGB(false);
- // the green button is on the page
- SELFTEST_ASSERT_HTTP_HAS_BUTTON_LEDS_ON(true);
- SELFTEST_ASSERT_HTTP_HAS_BUTTON_LEDS_OFF(false);
-
- // StatusSTS contains POWER and Dimmer
- Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS");
- SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100);
- SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON");
-
- CMD_ExecuteCommand("led_enableAll 0", 0);
- // StatusSTS contains POWER and Dimmer
- Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS");
- SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100);
- SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "OFF");
-
-
- // HTML page must contains dimmer, but no RGB and no temeprature controls
- Test_FakeHTTPClientPacket_GET("index");
- SELFTEST_ASSERT_HTTP_HAS_LED_DIMMER(true);
- SELFTEST_ASSERT_HTTP_HAS_LED_TEMPERATURE(false);
- SELFTEST_ASSERT_HTTP_HAS_LED_RGB(false);
- // the red button is on the page
- SELFTEST_ASSERT_HTTP_HAS_BUTTON_LEDS_ON(false);
- SELFTEST_ASSERT_HTTP_HAS_BUTTON_LEDS_OFF(true);
-
-
- CMD_ExecuteCommand("led_dimmer 61", 0);
- // StatusSTS contains POWER and Dimmer
- Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS");
- SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 61);
- SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "OFF");
-
-
- CMD_ExecuteCommand("led_enableAll 1", 0);
- // StatusSTS contains POWER and Dimmer
- Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS");
- SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 61);
- SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON");
-
-
-
-}
-void Test_Http_LED_CW() {
-
- SIM_ClearOBK(0);
- PIN_SetPinRoleForPinIndex(24, IOR_PWM);
- PIN_SetPinChannelForPinIndex(24, 1);
-
- PIN_SetPinRoleForPinIndex(26, IOR_PWM);
- PIN_SetPinChannelForPinIndex(26, 2);
-
- CMD_ExecuteCommand("led_enableAll 1", 0);
- CMD_ExecuteCommand("led_dimmer 100", 0);
- CMD_ExecuteCommand("led_temperature 153", 0);
-
- SELFTEST_ASSERT_CHANNEL(1, 100);
- SELFTEST_ASSERT_CHANNEL(2, 0);
-
-
- // HTML page must contains dimmer and temperature control
- Test_FakeHTTPClientPacket_GET("index");
- SELFTEST_ASSERT_HTTP_HAS_LED_DIMMER(true);
- SELFTEST_ASSERT_HTTP_HAS_LED_TEMPERATURE(true);
- SELFTEST_ASSERT_HTTP_HAS_LED_RGB(false);
- // the green button is on the page
- SELFTEST_ASSERT_HTTP_HAS_BUTTON_LEDS_ON(true);
- SELFTEST_ASSERT_HTTP_HAS_BUTTON_LEDS_OFF(false);
-
-
-
- // StatusSTS contains POWER and Dimmer
- Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS");
- SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100);
- SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON");
- SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "CT", 153);
-
- CMD_ExecuteCommand("led_enableAll 0", 0);
- // StatusSTS contains POWER and Dimmer
- Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS");
- SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100);
- SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "OFF");
- SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "CT", 153);
-
- CMD_ExecuteCommand("led_dimmer 61", 0);
- // StatusSTS contains POWER and Dimmer
- Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS");
- SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 61);
- SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "OFF");
- SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "CT", 153);
-
-
- CMD_ExecuteCommand("led_enableAll 1", 0);
- // StatusSTS contains POWER and Dimmer
- Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS");
- SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 61);
- SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON");
- SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "CT", 153);
-
- CMD_ExecuteCommand("led_temperature 500", 0);
- // StatusSTS contains POWER and Dimmer
- Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS");
- SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 61);
- SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON");
- SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "CT", 500);
-
-
- SIM_SendFakeMQTTAndRunSimFrame_CMND("led_dimmer", "100");
- // StatusSTS contains POWER and Dimmer
- Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS");
- SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100);
- SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON");
- SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "CT", 500);
-}
-void Test_Http_LED_RGB() {
-
- SIM_ClearOBK(0);
- PIN_SetPinRoleForPinIndex(24, IOR_PWM);
- PIN_SetPinChannelForPinIndex(24, 1);
-
- PIN_SetPinRoleForPinIndex(26, IOR_PWM);
- PIN_SetPinChannelForPinIndex(26, 2);
-
- PIN_SetPinRoleForPinIndex(9, IOR_PWM);
- PIN_SetPinChannelForPinIndex(9, 3);
-
- CMD_ExecuteCommand("led_enableAll 1", 0);
- CMD_ExecuteCommand("led_dimmer 100", 0);
- CMD_ExecuteCommand("led_basecolor_rgb FF0000", 0);
-
- SELFTEST_ASSERT_CHANNEL(1, 100);
- SELFTEST_ASSERT_CHANNEL(2, 0);
- SELFTEST_ASSERT_CHANNEL(3, 0);
-
- // StatusSTS contains POWER and Dimmer
- Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS");
- SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100);
- SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON");
- SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "Color", "255,0,0");
-
-
- CMD_ExecuteCommand("led_basecolor_rgb FFFF00", 0);
-
- SELFTEST_ASSERT_CHANNEL(1, 100);
- SELFTEST_ASSERT_CHANNEL(2, 100);
- SELFTEST_ASSERT_CHANNEL(3, 0);
-
- // StatusSTS contains POWER and Dimmer
- Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS");
- SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100);
- SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON");
- SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "Color", "255,255,0");
-
- // Tasmota colors are scalled by Dimmer in this case. Confirmed.
- CMD_ExecuteCommand("led_dimmer 50", 0);
-
- Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS");
- SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 50);
- SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON");
- // Tasmota colors are scalled by Dimmer in this case. Confirmed.
- SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "Color", "55,55,0");
-
-
- CMD_ExecuteCommand("led_basecolor_rgb 0000FF", 0);
- Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS");
- SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 50);
- SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON");
- // Tasmota colors are scalled by Dimmer in this case. Confirmed.
- SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "Color", "0,0,55");
- // Tasmota colors are scalled by Dimmer in this case. Confirmed.
- CMD_ExecuteCommand("led_dimmer 100", 0);
- Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS");
- SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100);
- SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON");
- // Tasmota colors are scalled by Dimmer in this case. Confirmed.
- SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "Color", "0,0,255");
-
- SIM_SendFakeMQTTAndRunSimFrame_CMND("POWER", "OFF");
- Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS");
- SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100);
- SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "OFF");
- // Tasmota colors are scalled by Dimmer in this case. Confirmed.
- SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "Color", "0,0,0");
-
- SIM_SendFakeMQTTAndRunSimFrame_CMND("POWER", "1");
- Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS");
- SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100);
- SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON");
- // Tasmota colors are scalled by Dimmer in this case. Confirmed.
- SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "Color", "0,0,255");
-
-
- SIM_SendFakeMQTTAndRunSimFrame_CMND("led_dimmer", "50");
- Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS");
- SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 50);
- SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON");
- // Tasmota colors are scalled by Dimmer in this case. Confirmed.
- SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "Color", "0,0,55");
-
- // dimmer back to 100
- SIM_SendFakeMQTTAndRunSimFrame_CMND("led_dimmer", "100");
- Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS");
- SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100);
- SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON");
- // Tasmota colors are scalled by Dimmer in this case. Confirmed.
- SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "Color", "0,0,255");
-
- // check Tasmota HSBColor
- /*
- NOTE:
- HTTP Request: http://192.168.0.153/cm?cmnd=HSBColor%200,100,100
- Return value: {"POWER":"ON","Dimmer":100,"Color":"FF00000000","HSBColor":"0,100,100","White":0,"CT":479,"Channel":[100,0,0,0,0]}
-
- */
- SIM_SendFakeMQTTAndRunSimFrame_CMND("HSBColor", "0,100,100");
- Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS");
- SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100);
- SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON");
- // Tasmota colors are scalled by Dimmer in this case. Confirmed.
- SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "Color", "255,0,0");
- // check Tasmota HSBColor
- /*
- NOTE:
- HTTP Request: http://192.168.0.153/cm?cmnd=HSBColor%2090,100,100
- Return value: {"POWER":"ON","Dimmer":100,"Color":"7FFF000000","HSBColor":"90,100,100","White":0,"CT":479,"Channel":[50,100,0,0,0]}
-
- */
- SIM_SendFakeMQTTAndRunSimFrame_CMND("HSBColor", "90,100,100");
- Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS");
- SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100);
- SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON");
- // Tasmota colors are scalled by Dimmer in this case. Confirmed.
- SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "Color", "127,255,0");
- // check Tasmota HSBColor
- /*
- NOTE:
- HTTP Request: http://192.168.0.153/cm?cmnd=HSBColor%20180,100,100
- Return value: {"POWER":"ON","Dimmer":100,"Color":"00FFFF0000","HSBColor":"180,100,100","White":0,"CT":479,"Channel":[0,100,100,0,0]}
- */
- SIM_SendFakeMQTTAndRunSimFrame_CMND("HSBColor", "180,100,100");
- Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS");
- SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100);
- SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON");
- // Tasmota colors are scalled by Dimmer in this case. Confirmed.
- SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "Color", "0,255,255");
-
- /*
- CMD_ExecuteCommand("led_enableAll 0", 0);
- // StatusSTS contains POWER and Dimmer
- Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS");
- SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100);
- SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "OFF");
- SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Color", "255,0,0");
-
- CMD_ExecuteCommand("led_dimmer 61", 0);
- // StatusSTS contains POWER and Dimmer
- Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS");
- SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 61);
- SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "OFF");
- SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "CT", 153);
-
-
- CMD_ExecuteCommand("led_enableAll 1", 0);
- // StatusSTS contains POWER and Dimmer
- Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS");
- SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 61);
- SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON");
- SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "CT", 153);
-
- CMD_ExecuteCommand("led_temperature 500", 0);
- // StatusSTS contains POWER and Dimmer
- Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS");
- SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 61);
- SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON");
- SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "CT", 500);
- */
-
-}
void Test_Http() {
Test_Http_SingleRelayOnChannel1();
Test_Http_TwoRelays();
Test_Http_FourRelays();
-
-
- Test_Http_LED_SingleChannel();
- Test_Http_LED_CW();
- Test_Http_LED_RGB();
}
diff --git a/src/selftest/selftest_http_led.c b/src/selftest/selftest_http_led.c
new file mode 100644
index 000000000..a8cb78609
--- /dev/null
+++ b/src/selftest/selftest_http_led.c
@@ -0,0 +1,418 @@
+#ifdef WINDOWS
+
+#include "selftest_local.h"
+#include "../httpserver/new_http.h"
+
+
+void Test_Http_LED_CW() {
+
+ SIM_ClearOBK(0);
+ PIN_SetPinRoleForPinIndex(24, IOR_PWM);
+ PIN_SetPinChannelForPinIndex(24, 1);
+
+ PIN_SetPinRoleForPinIndex(26, IOR_PWM);
+ PIN_SetPinChannelForPinIndex(26, 2);
+
+ CMD_ExecuteCommand("led_enableAll 1", 0);
+ CMD_ExecuteCommand("led_dimmer 100", 0);
+ CMD_ExecuteCommand("led_temperature 153", 0);
+
+ SELFTEST_ASSERT_CHANNEL(1, 100);
+ SELFTEST_ASSERT_CHANNEL(2, 0);
+
+
+ // HTML page must contains dimmer and temperature control
+ Test_FakeHTTPClientPacket_GET("index");
+ SELFTEST_ASSERT_HTTP_HAS_LED_DIMMER(true);
+ SELFTEST_ASSERT_HTTP_HAS_LED_TEMPERATURE(true);
+ SELFTEST_ASSERT_HTTP_HAS_LED_RGB(false);
+ // the green button is on the page
+ SELFTEST_ASSERT_HTTP_HAS_BUTTON_LEDS_ON(true);
+ SELFTEST_ASSERT_HTTP_HAS_BUTTON_LEDS_OFF(false);
+
+
+
+ // StatusSTS contains POWER and Dimmer
+ Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS");
+ SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100);
+ SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON");
+ SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "CT", 153);
+
+ CMD_ExecuteCommand("led_enableAll 0", 0);
+ // StatusSTS contains POWER and Dimmer
+ Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS");
+ SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100);
+ SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "OFF");
+ SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "CT", 153);
+
+ CMD_ExecuteCommand("led_dimmer 61", 0);
+ // StatusSTS contains POWER and Dimmer
+ Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS");
+ SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 61);
+ SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "OFF");
+ SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "CT", 153);
+
+ // HTML page must contains dimmer, but no RGB and no temeprature controls
+ Test_FakeHTTPClientPacket_GET("index");
+ SELFTEST_ASSERT_HTTP_HAS_LED_DIMMER(true);
+ SELFTEST_ASSERT_HTTP_HAS_LED_TEMPERATURE(true);
+ SELFTEST_ASSERT_HTTP_HAS_LED_RGB(false);
+ // the green button is on the page
+ SELFTEST_ASSERT_HTTP_HAS_BUTTON_LEDS_ON(false);
+ SELFTEST_ASSERT_HTTP_HAS_BUTTON_LEDS_OFF(true);
+
+ CMD_ExecuteCommand("led_enableAll 1", 0);
+ // StatusSTS contains POWER and Dimmer
+ Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS");
+ SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 61);
+ SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON");
+ SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "CT", 153);
+
+ CMD_ExecuteCommand("led_temperature 500", 0);
+ // StatusSTS contains POWER and Dimmer
+ Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS");
+ SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 61);
+ SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON");
+ SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "CT", 500);
+
+
+ SIM_SendFakeMQTTAndRunSimFrame_CMND("led_dimmer", "100");
+ // StatusSTS contains POWER and Dimmer
+ Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS");
+ SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100);
+ SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON");
+ SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "CT", 500);
+}
+void Test_Http_LED_RGB() {
+
+ SIM_ClearOBK(0);
+ PIN_SetPinRoleForPinIndex(24, IOR_PWM);
+ PIN_SetPinChannelForPinIndex(24, 1);
+
+ PIN_SetPinRoleForPinIndex(26, IOR_PWM);
+ PIN_SetPinChannelForPinIndex(26, 2);
+
+ PIN_SetPinRoleForPinIndex(9, IOR_PWM);
+ PIN_SetPinChannelForPinIndex(9, 3);
+
+ CMD_ExecuteCommand("led_enableAll 1", 0);
+ CMD_ExecuteCommand("led_dimmer 100", 0);
+ CMD_ExecuteCommand("led_basecolor_rgb FF0000", 0);
+
+
+ // HTML page must contains dimmer, but no RGB and no temeprature controls
+ Test_FakeHTTPClientPacket_GET("index");
+ SELFTEST_ASSERT_HTTP_HAS_LED_DIMMER(true);
+ SELFTEST_ASSERT_HTTP_HAS_LED_TEMPERATURE(false);
+ SELFTEST_ASSERT_HTTP_HAS_LED_RGB(true);
+ // the green button is on the page
+ SELFTEST_ASSERT_HTTP_HAS_BUTTON_LEDS_ON(true);
+ SELFTEST_ASSERT_HTTP_HAS_BUTTON_LEDS_OFF(false);
+
+
+
+ SELFTEST_ASSERT_CHANNEL(1, 100);
+ SELFTEST_ASSERT_CHANNEL(2, 0);
+ SELFTEST_ASSERT_CHANNEL(3, 0);
+
+ // StatusSTS contains POWER and Dimmer
+ Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS");
+ SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100);
+ SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON");
+ SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "Color", "255,0,0");
+
+
+ CMD_ExecuteCommand("led_basecolor_rgb FFFF00", 0);
+
+ SELFTEST_ASSERT_CHANNEL(1, 100);
+ SELFTEST_ASSERT_CHANNEL(2, 100);
+ SELFTEST_ASSERT_CHANNEL(3, 0);
+
+ // StatusSTS contains POWER and Dimmer
+ Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS");
+ SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100);
+ SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON");
+ SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "Color", "255,255,0");
+
+ // Tasmota colors are scalled by Dimmer in this case. Confirmed.
+ CMD_ExecuteCommand("led_dimmer 50", 0);
+
+ Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS");
+ SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 50);
+ SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON");
+ // Tasmota colors are scalled by Dimmer in this case. Confirmed.
+ SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "Color", "55,55,0");
+
+
+ CMD_ExecuteCommand("led_basecolor_rgb 0000FF", 0);
+ Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS");
+ SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 50);
+ SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON");
+ // Tasmota colors are scalled by Dimmer in this case. Confirmed.
+ SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "Color", "0,0,55");
+ // Tasmota colors are scalled by Dimmer in this case. Confirmed.
+ CMD_ExecuteCommand("led_dimmer 100", 0);
+ Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS");
+ SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100);
+ SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON");
+ // Tasmota colors are scalled by Dimmer in this case. Confirmed.
+ SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "Color", "0,0,255");
+
+ SIM_SendFakeMQTTAndRunSimFrame_CMND("POWER", "OFF");
+ Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS");
+ SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100);
+ SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "OFF");
+ // Tasmota colors are scalled by Dimmer in this case. Confirmed.
+ SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "Color", "0,0,0");
+
+ SIM_SendFakeMQTTAndRunSimFrame_CMND("POWER", "1");
+ Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS");
+ SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100);
+ SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON");
+ // Tasmota colors are scalled by Dimmer in this case. Confirmed.
+ SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "Color", "0,0,255");
+
+
+ SIM_SendFakeMQTTAndRunSimFrame_CMND("led_dimmer", "50");
+ Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS");
+ SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 50);
+ SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON");
+ // Tasmota colors are scalled by Dimmer in this case. Confirmed.
+ SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "Color", "0,0,55");
+
+ // dimmer back to 100
+ SIM_SendFakeMQTTAndRunSimFrame_CMND("led_dimmer", "100");
+ Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS");
+ SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100);
+ SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON");
+ // Tasmota colors are scalled by Dimmer in this case. Confirmed.
+ SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "Color", "0,0,255");
+
+ // check Tasmota HSBColor
+ /*
+ NOTE:
+ HTTP Request: http://192.168.0.153/cm?cmnd=HSBColor%200,100,100
+ Return value: {"POWER":"ON","Dimmer":100,"Color":"FF00000000","HSBColor":"0,100,100","White":0,"CT":479,"Channel":[100,0,0,0,0]}
+
+ */
+ SIM_SendFakeMQTTAndRunSimFrame_CMND("HSBColor", "0,100,100");
+ Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS");
+ SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100);
+ SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON");
+ // Tasmota colors are scalled by Dimmer in this case. Confirmed.
+ SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "Color", "255,0,0");
+ // check Tasmota HSBColor
+ /*
+ NOTE:
+ HTTP Request: http://192.168.0.153/cm?cmnd=HSBColor%2090,100,100
+ Return value: {"POWER":"ON","Dimmer":100,"Color":"7FFF000000","HSBColor":"90,100,100","White":0,"CT":479,"Channel":[50,100,0,0,0]}
+
+ */
+ SIM_SendFakeMQTTAndRunSimFrame_CMND("HSBColor", "90,100,100");
+ Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS");
+ SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100);
+ SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON");
+ // Tasmota colors are scalled by Dimmer in this case. Confirmed.
+ SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "Color", "127,255,0");
+ // check Tasmota HSBColor
+ /*
+ NOTE:
+ HTTP Request: http://192.168.0.153/cm?cmnd=HSBColor%20180,100,100
+ Return value: {"POWER":"ON","Dimmer":100,"Color":"00FFFF0000","HSBColor":"180,100,100","White":0,"CT":479,"Channel":[0,100,100,0,0]}
+ */
+ SIM_SendFakeMQTTAndRunSimFrame_CMND("HSBColor", "180,100,100");
+ Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS");
+ SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100);
+ SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON");
+ // Tasmota colors are scalled by Dimmer in this case. Confirmed.
+ SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "Color", "0,255,255");
+
+
+ // HTML page must contains dimmer, but no RGB and no temeprature controls
+ Test_FakeHTTPClientPacket_GET("index");
+ // the green button is on the page
+ SELFTEST_ASSERT_HTTP_HAS_BUTTON_LEDS_ON(true);
+ SELFTEST_ASSERT_HTTP_HAS_BUTTON_LEDS_OFF(false);
+
+
+
+ CMD_ExecuteCommand("led_enableAll 0", 0);
+ // StatusSTS contains POWER and Dimmer
+ Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS");
+ SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100);
+ SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "OFF");
+ // color is now 0,0,0 because it's OFF?
+ SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "Color", "0,0,0");
+
+ // HTML page must contains dimmer, but no RGB and no temeprature controls
+ Test_FakeHTTPClientPacket_GET("index");
+ // the red button is on the page
+ SELFTEST_ASSERT_HTTP_HAS_BUTTON_LEDS_ON(false);
+ SELFTEST_ASSERT_HTTP_HAS_BUTTON_LEDS_OFF(true);
+ /*
+ CMD_ExecuteCommand("led_dimmer 61", 0);
+ // StatusSTS contains POWER and Dimmer
+ Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS");
+ SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 61);
+ SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "OFF");
+ SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "CT", 153);
+
+
+ CMD_ExecuteCommand("led_enableAll 1", 0);
+ // StatusSTS contains POWER and Dimmer
+ Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS");
+ SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 61);
+ SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON");
+ SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "CT", 153);
+
+ CMD_ExecuteCommand("led_temperature 500", 0);
+ // StatusSTS contains POWER and Dimmer
+ Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS");
+ SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 61);
+ SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON");
+ SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "CT", 500);
+ */
+
+}
+
+
+void Test_Http_LED_RGBCW() {
+
+ SIM_ClearOBK(0);
+ PIN_SetPinRoleForPinIndex(24, IOR_PWM);
+ PIN_SetPinChannelForPinIndex(24, 1);
+
+ PIN_SetPinRoleForPinIndex(26, IOR_PWM);
+ PIN_SetPinChannelForPinIndex(26, 2);
+
+ PIN_SetPinRoleForPinIndex(9, IOR_PWM);
+ PIN_SetPinChannelForPinIndex(9, 3);
+
+ PIN_SetPinRoleForPinIndex(8, IOR_PWM);
+ PIN_SetPinChannelForPinIndex(8, 4);
+
+ PIN_SetPinRoleForPinIndex(7, IOR_PWM);
+ PIN_SetPinChannelForPinIndex(7, 5);
+
+ CMD_ExecuteCommand("led_enableAll 1", 0);
+ CMD_ExecuteCommand("led_dimmer 100", 0);
+ CMD_ExecuteCommand("led_basecolor_rgb FF0000", 0);
+
+
+ // HTML page must contains dimmer, but no RGB and no temeprature controls
+ Test_FakeHTTPClientPacket_GET("index");
+ SELFTEST_ASSERT_HTTP_HAS_LED_DIMMER(true);
+ SELFTEST_ASSERT_HTTP_HAS_LED_TEMPERATURE(true);
+ SELFTEST_ASSERT_HTTP_HAS_LED_RGB(true);
+ // the green button is on the page
+ SELFTEST_ASSERT_HTTP_HAS_BUTTON_LEDS_ON(true);
+ SELFTEST_ASSERT_HTTP_HAS_BUTTON_LEDS_OFF(false);
+
+
+
+ SELFTEST_ASSERT_CHANNEL(1, 100);
+ SELFTEST_ASSERT_CHANNEL(2, 0);
+ SELFTEST_ASSERT_CHANNEL(3, 0);
+
+ // StatusSTS contains POWER and Dimmer
+ Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS");
+ SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100);
+ SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON");
+ SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "Color", "255,0,0,0,0");
+
+
+ CMD_ExecuteCommand("led_basecolor_rgb FFFF00", 0);
+
+ SELFTEST_ASSERT_CHANNEL(1, 100);
+ SELFTEST_ASSERT_CHANNEL(2, 100);
+ SELFTEST_ASSERT_CHANNEL(3, 0);
+
+
+
+ // HTML page must contains dimmer, but no RGB and no temeprature controls
+ Test_FakeHTTPClientPacket_GET("index");
+ // the green button is on the page
+ SELFTEST_ASSERT_HTTP_HAS_BUTTON_LEDS_ON(true);
+ SELFTEST_ASSERT_HTTP_HAS_BUTTON_LEDS_OFF(false);
+
+
+
+ CMD_ExecuteCommand("led_enableAll 0", 0);
+
+
+ // HTML page must contains dimmer, but no RGB and no temeprature controls
+ Test_FakeHTTPClientPacket_GET("index");
+ // the red button is on the page
+ SELFTEST_ASSERT_HTTP_HAS_BUTTON_LEDS_ON(false);
+ SELFTEST_ASSERT_HTTP_HAS_BUTTON_LEDS_OFF(true);
+
+
+}
+
+
+void Test_Http_LED_SingleChannel() {
+
+ SIM_ClearOBK(0);
+ // Setup single PWM Device
+ PIN_SetPinRoleForPinIndex(24, IOR_PWM);
+ PIN_SetPinChannelForPinIndex(24, 1);
+
+ CMD_ExecuteCommand("led_enableAll 1", 0);
+ CMD_ExecuteCommand("led_dimmer 100", 0);
+
+ // HTML page must contains dimmer, but no RGB and no temeprature controls
+ Test_FakeHTTPClientPacket_GET("index");
+ SELFTEST_ASSERT_HTTP_HAS_LED_DIMMER(true);
+ SELFTEST_ASSERT_HTTP_HAS_LED_TEMPERATURE(false);
+ SELFTEST_ASSERT_HTTP_HAS_LED_RGB(false);
+ // the green button is on the page
+ SELFTEST_ASSERT_HTTP_HAS_BUTTON_LEDS_ON(true);
+ SELFTEST_ASSERT_HTTP_HAS_BUTTON_LEDS_OFF(false);
+
+ // StatusSTS contains POWER and Dimmer
+ Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS");
+ SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100);
+ SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON");
+
+ CMD_ExecuteCommand("led_enableAll 0", 0);
+ // StatusSTS contains POWER and Dimmer
+ Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS");
+ SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 100);
+ SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "OFF");
+
+ // HTML page must contains dimmer, but no RGB and no temeprature controls
+ Test_FakeHTTPClientPacket_GET("index");
+ SELFTEST_ASSERT_HTTP_HAS_LED_DIMMER(true);
+ SELFTEST_ASSERT_HTTP_HAS_LED_TEMPERATURE(false);
+ SELFTEST_ASSERT_HTTP_HAS_LED_RGB(false);
+ // the red button is on the page
+ SELFTEST_ASSERT_HTTP_HAS_BUTTON_LEDS_ON(false);
+ SELFTEST_ASSERT_HTTP_HAS_BUTTON_LEDS_OFF(true);
+
+
+ CMD_ExecuteCommand("led_dimmer 61", 0);
+ // StatusSTS contains POWER and Dimmer
+ Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS");
+ SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 61);
+ SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "OFF");
+
+
+ CMD_ExecuteCommand("led_enableAll 1", 0);
+ // StatusSTS contains POWER and Dimmer
+ Test_FakeHTTPClientPacket_JSON("cm?cmnd=STATUS");
+ SELFTEST_ASSERT_JSON_VALUE_INTEGER("StatusSTS", "Dimmer", 61);
+ SELFTEST_ASSERT_JSON_VALUE_STRING("StatusSTS", "POWER", "ON");
+
+
+
+}
+
+void Test_Http_LED() {
+ Test_Http_LED_SingleChannel();
+ Test_Http_LED_CW();
+ Test_Http_LED_RGB();
+ Test_Http_LED_RGBCW();
+}
+
+#endif
+
diff --git a/src/selftest/selftest_if.c b/src/selftest/selftest_if.c
index 4364a4e2c..27c7df625 100644
--- a/src/selftest/selftest_if.c
+++ b/src/selftest/selftest_if.c
@@ -76,9 +76,19 @@ void Test_Command_If() {
SELFTEST_ASSERT_CHANNEL(23, 0);
CMD_ExecuteCommand("if $CH7!=0 then setChannel 23 1234", 0);
SELFTEST_ASSERT_CHANNEL(23, 1234);
+
+ CMD_ExecuteCommand("setChannel 23 0", 0);
+ CMD_ExecuteCommand("setChannel 24 0", 0);
+ CMD_ExecuteCommand("setChannel 25 0", 0);
+ SELFTEST_ASSERT_CHANNEL(23, 0);
+ SELFTEST_ASSERT_CHANNEL(24, 0);
+ SELFTEST_ASSERT_CHANNEL(25, 0);
+ CMD_ExecuteCommand("if $CH7!=0 then backlog setChannel 23 1234; setChannel 24 4567; setChannel 25 6789", 0);
+ SELFTEST_ASSERT_CHANNEL(23, 1234);
+ SELFTEST_ASSERT_CHANNEL(24, 4567);
+ SELFTEST_ASSERT_CHANNEL(25, 6789);
// cause error
//SELFTEST_ASSERT_CHANNEL(1, 666);
-
}
void Test_Command_If_Else() {
diff --git a/src/win_main.c b/src/win_main.c
index ef7f491a7..0af3c5ac6 100644
--- a/src/win_main.c
+++ b/src/win_main.c
@@ -184,6 +184,7 @@ void Win_DoUnitTests() {
Test_Command_If();
Test_Tokenizer();
Test_Http();
+ Test_Http_LED();
Test_DeviceGroups();