diff --git a/src/httpserver/http_fns.c b/src/httpserver/http_fns.c
index 4487e0260..76a5cc132 100644
--- a/src/httpserver/http_fns.c
+++ b/src/httpserver/http_fns.c
@@ -494,7 +494,7 @@ int http_fn_index(http_request_t* request) {
iValue = CHANNEL_Get(i);
poststr(request, "
| ");
- if (iValue == (channelType == ChType_Motion)) {
+ if (iValue == (channelType != ChType_Motion)) {
hprintf255(request, "No motion (ch %i)", i);
}
else {
diff --git a/src/selftest/selftest_hass_discovery_ext.c b/src/selftest/selftest_hass_discovery_ext.c
index faab6698a..5e00e4053 100644
--- a/src/selftest/selftest_hass_discovery_ext.c
+++ b/src/selftest/selftest_hass_discovery_ext.c
@@ -330,6 +330,34 @@ void Test_HassDiscovery_Channel_Motion() {
SELFTEST_ASSERT_JSON_VALUE_STRING(0, "pl_on", "1");
SELFTEST_ASSERT_JSON_VALUE_STRING(0, "pl_off", "0");
}
+void Test_HassDiscovery_Channel_Motion_inv() {
+ const char *shortName = "WinMotionTest";
+ const char *fullName = "Windows Fake Motion";
+ const char *mqttName = "testMotion";
+ SIM_ClearOBK(shortName);
+ SIM_ClearAndPrepareForMQTTTesting(mqttName, "bekens");
+
+ CFG_SetShortDeviceName(shortName);
+ CFG_SetDeviceName(fullName);
+
+ CHANNEL_SetType(4, ChType_Motion_n);
+
+ SIM_ClearMQTTHistory();
+ CMD_ExecuteCommand("scheduleHADiscovery 1", 0);
+ Sim_RunSeconds(5, false);
+
+ // OBK device should publish JSON on MQTT topic "homeassistant"
+ SELFTEST_ASSERT_HAS_MQTT_JSON_SENT("homeassistant", true);
+ SELFTEST_ASSERT_JSON_VALUE_STRING("dev", "name", shortName);
+ SELFTEST_ASSERT_JSON_VALUE_STRING("dev", "sw", USER_SW_VER);
+ SELFTEST_ASSERT_JSON_VALUE_STRING("dev", "mf", MANUFACTURER);
+ SELFTEST_ASSERT_JSON_VALUE_STRING("dev", "mdl", PLATFORM_MCU_NAME);
+ SELFTEST_ASSERT_JSON_VALUE_STRING(0, "~", mqttName);
+ SELFTEST_ASSERT_JSON_VALUE_STRING(0, "dev_cla", "motion");
+ SELFTEST_ASSERT_JSON_VALUE_STRING(0, "stat_t", "~/4/get");
+ SELFTEST_ASSERT_JSON_VALUE_STRING(0, "pl_on", "0"); // inv so swapped
+ SELFTEST_ASSERT_JSON_VALUE_STRING(0, "pl_off", "1"); // inv so swapped
+}
void Test_HassDiscovery_Channel_LowMidHigh() {
const char *shortName = "WinReadOnlyLowMidHighTest";
const char *fullName = "Windows Fake ReadOnlyLowMidHigh";
@@ -560,6 +588,7 @@ void Test_HassDiscovery_Ext() {
Test_HassDiscovery_Channel_Motion();
Test_HassDiscovery_Channel_Motion_With_dInput();
Test_HassDiscovery_Channel_Motion_longName();
+ Test_HassDiscovery_Channel_Motion_inv();
Test_HassDiscovery_Channel_Illuminance();
Test_HassDiscovery_Channel_LowMidHigh();
|