From 6d58d85bc73b2d7aaf604a006ea0dad0ec9201fa Mon Sep 17 00:00:00 2001 From: Tester23 Date: Tue, 7 May 2024 16:55:08 +0200 Subject: [PATCH] second fix for channel type priority --- src/httpserver/http_fns.c | 47 +++++++++++----------- src/selftest/selftest_hass_discovery_ext.c | 3 ++ 2 files changed, 27 insertions(+), 23 deletions(-) diff --git a/src/httpserver/http_fns.c b/src/httpserver/http_fns.c index 9c594eac3..0ec254480 100644 --- a/src/httpserver/http_fns.c +++ b/src/httpserver/http_fns.c @@ -1713,29 +1713,6 @@ void doHomeAssistantDiscovery(const char* topic, http_request_t* request) { } } #endif - //if (relayCount > 0) { - for (i = 0; i < CHANNEL_MAX; i++) { - // if already included by light, skip - if (BIT_CHECK(flagsChannelPublished, i)) { - continue; - } - bool bToggleInv = g_cfg.pins.channelTypes[i] == ChType_Toggle_Inv; - if (h_isChannelRelay(i) || g_cfg.pins.channelTypes[i] == ChType_Toggle || bToggleInv) { - // TODO: flags are 32 bit and there are 64 max channels - BIT_SET(flagsChannelPublished, i); - if (CFG_HasFlag(OBK_FLAG_MQTT_HASS_ADD_RELAYS_AS_LIGHTS)) { - dev_info = hass_init_relay_device_info(i, LIGHT_ON_OFF, bToggleInv); - } - else { - dev_info = hass_init_relay_device_info(i, RELAY, bToggleInv); - } - MQTT_QueuePublish(topic, dev_info->channel, hass_build_discovery_json(dev_info), OBK_PUBLISH_FLAG_RETAIN); - hass_free_device_info(dev_info); - dev_info = NULL; - discoveryQueued = true; - } - } - //} if (pwmCount == 5 || ledDriverChipRunning || (pwmCount == 4 && CFG_HasFlag(OBK_FLAG_LED_EMULATE_COOL_WITH_RGB))) { @@ -1991,6 +1968,30 @@ void doHomeAssistantDiscovery(const char* topic, http_request_t* request) { } } #endif + + //if (relayCount > 0) { + for (i = 0; i < CHANNEL_MAX; i++) { + // if already included by light, skip + if (BIT_CHECK(flagsChannelPublished, i)) { + continue; + } + bool bToggleInv = g_cfg.pins.channelTypes[i] == ChType_Toggle_Inv; + if (h_isChannelRelay(i) || g_cfg.pins.channelTypes[i] == ChType_Toggle || bToggleInv) { + // TODO: flags are 32 bit and there are 64 max channels + BIT_SET(flagsChannelPublished, i); + if (CFG_HasFlag(OBK_FLAG_MQTT_HASS_ADD_RELAYS_AS_LIGHTS)) { + dev_info = hass_init_relay_device_info(i, LIGHT_ON_OFF, bToggleInv); + } + else { + dev_info = hass_init_relay_device_info(i, RELAY, bToggleInv); + } + MQTT_QueuePublish(topic, dev_info->channel, hass_build_discovery_json(dev_info), OBK_PUBLISH_FLAG_RETAIN); + hass_free_device_info(dev_info); + dev_info = NULL; + discoveryQueued = true; + } + } + //} if (dInputCount > 0) { for (i = 0; i < CHANNEL_MAX; i++) { if (h_isChannelDigitalInput(i)) { diff --git a/src/selftest/selftest_hass_discovery_ext.c b/src/selftest/selftest_hass_discovery_ext.c index c1788ee49..ea2c50899 100644 --- a/src/selftest/selftest_hass_discovery_ext.c +++ b/src/selftest/selftest_hass_discovery_ext.c @@ -346,6 +346,9 @@ void Test_HassDiscovery_Channel_Motion_With_dInput() { PIN_SetPinRoleForPinIndex(10, IOR_DigitalInput); PIN_SetPinChannelForPinIndex(10, 4); + PIN_SetPinRoleForPinIndex(11, IOR_LED_n); + PIN_SetPinChannelForPinIndex(11, 4); + SIM_ClearMQTTHistory(); CMD_ExecuteCommand("scheduleHADiscovery 1", 0); Sim_RunSeconds(5, false);