mirror of
https://github.com/openshwprojects/OpenBK7231T_App.git
synced 2026-02-10 13:05:38 +00:00
finish tuyamcu dimmer+toggle combo discovery?
This commit is contained in:
@ -428,12 +428,14 @@ HassDeviceInfo* hass_init_light_singleColor_onChannels(int toggle, int dimmer, i
|
||||
clientId = CFG_GetMQTTClientId();
|
||||
dev_info = hass_init_device_info(LIGHT_PWM, toggle, "1", "0");
|
||||
|
||||
cJSON_AddStringToObject(dev_info->root, "stat_t", "~/led_enableAll/get"); //state_topic
|
||||
sprintf(g_hassBuffer, "cmnd/%s/led_enableAll", clientId);
|
||||
sprintf(g_hassBuffer, "~/%i/get", toggle);
|
||||
cJSON_AddStringToObject(dev_info->root, "stat_t", g_hassBuffer); //state_topic
|
||||
sprintf(g_hassBuffer, "~/%i/set", toggle);
|
||||
cJSON_AddStringToObject(dev_info->root, "cmd_t", g_hassBuffer); //command_topic
|
||||
|
||||
cJSON_AddStringToObject(dev_info->root, "bri_stat_t", "~/led_dimmer/get"); //brightness_state_topic
|
||||
sprintf(g_hassBuffer, "cmnd/%s/led_dimmer", clientId);
|
||||
sprintf(g_hassBuffer, "~/%i/get", dimmer);
|
||||
cJSON_AddStringToObject(dev_info->root, "bri_stat_t", g_hassBuffer); //brightness_state_topic
|
||||
sprintf(g_hassBuffer, "~/%i/set", dimmer);
|
||||
cJSON_AddStringToObject(dev_info->root, "bri_cmd_t", g_hassBuffer); //brightness_command_topic
|
||||
|
||||
cJSON_AddNumberToObject(dev_info->root, "bri_scl", brightness_scale); //brightness_scale
|
||||
|
||||
@ -1602,6 +1602,55 @@ void doHomeAssistantDiscovery(const char* topic, http_request_t* request) {
|
||||
hooks.free_fn = os_free;
|
||||
cJSON_InitHooks(&hooks);
|
||||
|
||||
|
||||
// try to pair toggles with dimmers
|
||||
while (true) {
|
||||
// find first dimmer
|
||||
dimmer = -1;
|
||||
for (i = 0; i < CHANNEL_MAX; i++) {
|
||||
type = g_cfg.pins.channelTypes[i];
|
||||
if (BIT_CHECK(flagsChannelPublished, i)) {
|
||||
continue;
|
||||
}
|
||||
if (type == ChType_Dimmer) {
|
||||
brightness_scale = 100;
|
||||
dimmer = i;
|
||||
break;
|
||||
}
|
||||
if (type == ChType_Dimmer1000) {
|
||||
brightness_scale = 1000;
|
||||
dimmer = i;
|
||||
break;
|
||||
}
|
||||
if (type == ChType_Dimmer256) {
|
||||
brightness_scale = 256;
|
||||
dimmer = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
// find first togle
|
||||
toggle = -1;
|
||||
for (i = 0; i < CHANNEL_MAX; i++) {
|
||||
type = g_cfg.pins.channelTypes[i];
|
||||
if (BIT_CHECK(flagsChannelPublished, i)) {
|
||||
continue;
|
||||
}
|
||||
if (type == ChType_Toggle) {
|
||||
toggle = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
// if nothing found, stop
|
||||
if (toggle == -1 || dimmer == -1) {
|
||||
break;
|
||||
}
|
||||
|
||||
BIT_SET(flagsChannelPublished, toggle);
|
||||
BIT_SET(flagsChannelPublished, dimmer);
|
||||
dev_info = hass_init_light_singleColor_onChannels(toggle, dimmer, brightness_scale);
|
||||
MQTT_QueuePublish(topic, dev_info->channel, hass_build_discovery_json(dev_info), OBK_PUBLISH_FLAG_RETAIN);
|
||||
hass_free_device_info(dev_info);
|
||||
}
|
||||
//if (relayCount > 0) {
|
||||
for (i = 0; i < CHANNEL_MAX; i++) {
|
||||
if (h_isChannelRelay(i) || g_cfg.pins.channelTypes[i] == ChType_Toggle) {
|
||||
@ -1729,52 +1778,6 @@ void doHomeAssistantDiscovery(const char* topic, http_request_t* request) {
|
||||
discoveryQueued = true;
|
||||
}
|
||||
}
|
||||
// try to pair toggles with dimmers
|
||||
while (true) {
|
||||
// find first dimmer
|
||||
dimmer = -1;
|
||||
for (i = 0; i < CHANNEL_MAX; i++) {
|
||||
type = g_cfg.pins.channelTypes[i];
|
||||
if (BIT_CHECK(flagsChannelPublished, i)) {
|
||||
continue;
|
||||
}
|
||||
if (type == ChType_Dimmer) {
|
||||
brightness_scale = 100;
|
||||
dimmer = i;
|
||||
break;
|
||||
}
|
||||
if (type == ChType_Dimmer1000) {
|
||||
brightness_scale = 1000;
|
||||
dimmer = i;
|
||||
break;
|
||||
}
|
||||
if (type == ChType_Dimmer256) {
|
||||
brightness_scale = 256;
|
||||
dimmer = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
// find first togle
|
||||
toggle = -1;
|
||||
for (i = 0; i < CHANNEL_MAX; i++) {
|
||||
type = g_cfg.pins.channelTypes[i];
|
||||
if (BIT_CHECK(flagsChannelPublished, i)) {
|
||||
continue;
|
||||
}
|
||||
if (type == ChType_Toggle) {
|
||||
toggle = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
// if nothing found, stop
|
||||
if (toggle == -1 || dimmer == -1) {
|
||||
break;
|
||||
}
|
||||
|
||||
dev_info = hass_init_light_singleColor_onChannels(toggle, dimmer, brightness_scale);
|
||||
MQTT_QueuePublish(topic, dev_info->channel, hass_build_discovery_json(dev_info), OBK_PUBLISH_FLAG_RETAIN);
|
||||
hass_free_device_info(dev_info);
|
||||
}
|
||||
|
||||
for (i = 0; i < CHANNEL_MAX; i++) {
|
||||
type = g_cfg.pins.channelTypes[i];
|
||||
|
||||
Reference in New Issue
Block a user