diff -r d77891f8915d -r 344470c6bb1c thermferm/mqtt.c --- a/thermferm/mqtt.c Wed Apr 24 11:04:00 2024 +0200 +++ b/thermferm/mqtt.c Wed Apr 24 16:46:45 2024 +0200 @@ -936,6 +936,9 @@ payload = xstrcat(payload, (char *)"\",\"temperature\":"); sprintf(buf, "%.3f", unit->air_temperature / 1000.0); payload = xstrcat(payload, buf); + payload = xstrcat(payload, (char *)",\"idx\":"); + sprintf(buf, "%d", unit->air_idx); + payload = xstrcat(payload, buf); payload = xstrcat(payload, (char *)"}"); pub_domoticz_temp(unit->air_idx, unit->air_temperature); } else { @@ -953,6 +956,9 @@ payload = xstrcat(payload, (char *)"\",\"temperature\":"); sprintf(buf, "%.3f", unit->beer_temperature / 1000.0); payload = xstrcat(payload, buf); + payload = xstrcat(payload, (char *)",\"idx\":"); + sprintf(buf, "%d", unit->beer_idx); + payload = xstrcat(payload, buf); payload = xstrcat(payload, (char *)"}"); pub_domoticz_temp(unit->beer_idx, unit->beer_temperature); } else { @@ -970,6 +976,9 @@ payload = xstrcat(payload, (char *)"\",\"temperature\":"); sprintf(buf, "%.3f", unit->chiller_temperature / 1000.0); payload = xstrcat(payload, buf); + payload = xstrcat(payload, (char *)",\"idx\":"); + sprintf(buf, "%d", unit->chiller_idx); + payload = xstrcat(payload, buf); payload = xstrcat(payload, (char *)"}"); pub_domoticz_temp(unit->chiller_idx, unit->chiller_temperature); } else { @@ -988,6 +997,12 @@ payload = xstrcat(payload, (char *)",\"usage\":"); sprintf(buf, "%d", unit->heater_usage); payload = xstrcat(payload, buf); + payload = xstrcat(payload, (char *)",\"idx\":"); + sprintf(buf, "%d", unit->heater_idx); + payload = xstrcat(payload, buf); + payload = xstrcat(payload, (char *)",\"delay\":"); + sprintf(buf, "%d", unit->heater_delay); + payload = xstrcat(payload, buf); payload = xstrcat(payload, (char *)"}"); pub_domoticz_output(unit->heater_idx, unit->heater_state); } else { @@ -1006,6 +1021,12 @@ payload = xstrcat(payload, (char *)",\"usage\":"); sprintf(buf, "%d", unit->cooler_usage); payload = xstrcat(payload, buf); + payload = xstrcat(payload, (char *)",\"idx\":"); + sprintf(buf, "%d", unit->cooler_idx); + payload = xstrcat(payload, buf); + payload = xstrcat(payload, (char *)",\"delay\":"); + sprintf(buf, "%d", unit->cooler_delay); + payload = xstrcat(payload, buf); payload = xstrcat(payload, (char *)"}"); pub_domoticz_output(unit->cooler_idx, unit->cooler_state); } else { @@ -1024,6 +1045,12 @@ payload = xstrcat(payload, (char *)",\"usage\":"); sprintf(buf, "%d", unit->fan_usage); payload = xstrcat(payload, buf); + payload = xstrcat(payload, (char *)",\"idx\":"); + sprintf(buf, "%d", unit->fan_idx); + payload = xstrcat(payload, buf); + payload = xstrcat(payload, (char *)",\"delay\":"); + sprintf(buf, "%d", unit->fan_delay); + payload = xstrcat(payload, buf); payload = xstrcat(payload, (char *)"}"); pub_domoticz_output(unit->fan_idx, unit->fan_state); } else { @@ -1042,6 +1069,12 @@ payload = xstrcat(payload, (char *)",\"usage\":"); sprintf(buf, "%d", unit->light_usage); payload = xstrcat(payload, buf); + payload = xstrcat(payload, (char *)",\"idx\":"); + sprintf(buf, "%d", unit->light_idx); + payload = xstrcat(payload, buf); + payload = xstrcat(payload, (char *)",\"delay\":"); + sprintf(buf, "%d", unit->light_delay); + payload = xstrcat(payload, buf); payload = xstrcat(payload, (char *)"}"); pub_domoticz_output(unit->light_idx, unit->light_state); } else { @@ -1057,6 +1090,9 @@ payload = xstrcat(payload, (char *)"\",\"state\":"); sprintf(buf, "%d", (unit->door_state) ? 0:1); payload = xstrcat(payload, buf); + payload = xstrcat(payload, (char *)",\"idx\":"); + sprintf(buf, "%d", unit->door_idx); + payload = xstrcat(payload, buf); payload = xstrcat(payload, (char *)"}"); pub_domoticz_output(unit->door_idx, unit->door_state); } else { @@ -1072,6 +1108,9 @@ payload = xstrcat(payload, (char *)"\",\"state\":"); sprintf(buf, "%d", unit->psu_state); payload = xstrcat(payload, buf); + payload = xstrcat(payload, (char *)",\"idx\":"); + sprintf(buf, "%d", unit->psu_idx); + payload = xstrcat(payload, buf); payload = xstrcat(payload, (char *)"}"); pub_domoticz_output(unit->psu_idx, unit->psu_state); } else { @@ -1095,6 +1134,38 @@ sprintf(buf, "%d", unit->alarm_flag); payload = xstrcat(payload, buf); + payload = xstrcat(payload, (char *)",\"pidc\":{\"P\":"); + sprintf(buf, "%.3f", unit->PID_cool->pGain); + payload = xstrcat(payload, buf); + payload = xstrcat(payload, (char *)",\"I\":"); + sprintf(buf, "%.3f", unit->PID_cool->iGain); + payload = xstrcat(payload, buf); + payload = xstrcat(payload, (char *)",\"D\":"); + sprintf(buf, "%.3f", unit->PID_cool->dGain); + payload = xstrcat(payload, buf); + payload = xstrcat(payload, (char *)",\"imax\":"); + sprintf(buf, "%.1f", unit->PID_cool->iMax); + payload = xstrcat(payload, buf); + payload = xstrcat(payload, (char *)",\"idle\":"); + sprintf(buf, "%.2f", unit->PID_cool->idleRange); + payload = xstrcat(payload, buf); + payload = xstrcat(payload, (char *)"},\"pidh\":{\"P\":"); + sprintf(buf, "%.3f", unit->PID_heat->pGain); + payload = xstrcat(payload, buf); + payload = xstrcat(payload, (char *)",\"I\":"); + sprintf(buf, "%.3f", unit->PID_heat->iGain); + payload = xstrcat(payload, buf); + payload = xstrcat(payload, (char *)",\"D\":"); + sprintf(buf, "%.3f", unit->PID_heat->dGain); + payload = xstrcat(payload, buf); + payload = xstrcat(payload, (char *)",\"imax\":"); + sprintf(buf, "%.1f", unit->PID_heat->iMax); + payload = xstrcat(payload, buf); + payload = xstrcat(payload, (char *)",\"idle\":"); + sprintf(buf, "%.2f", unit->PID_heat->idleRange); + payload = xstrcat(payload, buf); + payload = xstrcat(payload, (char *)"}"); + /* * Loaded profile and state */