mirror of https://github.com/sfeakes/AqualinkD.git
commit
c81c924b54
15
aqualinkd.c
15
aqualinkd.c
|
@ -221,6 +221,12 @@ void processMessage(char *message)
|
|||
service_msg_count = 0;
|
||||
}
|
||||
|
||||
// If we have more than 10 messages without "Service Mode is active" assume it's off.
|
||||
if (_aqualink_data.service_mode_state == ON && service_msg_count++ > 10) {
|
||||
_aqualink_data.service_mode_state = OFF;
|
||||
service_msg_count = 0;
|
||||
}
|
||||
|
||||
// If we have more than 10 messages without "FREE PROTECT ACTIVATED" assume it's off.
|
||||
if (_aqualink_data.frz_protect_state == ON && freeze_msg_count++ > 10) {
|
||||
_aqualink_data.frz_protect_state = ENABLE;
|
||||
|
@ -309,10 +315,10 @@ void processMessage(char *message)
|
|||
}
|
||||
}
|
||||
else if (stristr(msg, LNG_MSG_SERVICE_ACTIVE) != NULL) {
|
||||
if (_aqualink_data.service_mode_state == OFF)
|
||||
logMessage(LOG_NOTICE, "AqualinkD set to Service Mode\n");
|
||||
_aqualink_data.service_mode_state = ON;
|
||||
service_msg_count = 0;
|
||||
if (_aqualink_data.service_mode_state == OFF)
|
||||
logMessage(LOG_NOTICE, "AqualinkD set to Service Mode\n");
|
||||
_aqualink_data.service_mode_state = ON;
|
||||
service_msg_count = 0;
|
||||
}
|
||||
else if (stristr(msg, LNG_MSG_FREEZE_PROTECTION_ACTIVATED) != NULL) {
|
||||
_aqualink_data.frz_protect_state = ON;
|
||||
|
@ -951,6 +957,7 @@ void main_loop() {
|
|||
_aqualink_data.swg_delayed_percent = TEMP_UNKNOWN;
|
||||
_aqualink_data.temp_units = UNKNOWN;
|
||||
_aqualink_data.single_device = false;
|
||||
_aqualink_data.service_mode_state = OFF;
|
||||
_aqualink_data.frz_protect_state = OFF;
|
||||
_aqualink_data.service_mode_state = OFF;
|
||||
_aqualink_data.battery = OK;
|
||||
|
|
7
config.c
7
config.c
|
@ -77,6 +77,7 @@ void init_parameters (struct aqconfig * parms)
|
|||
parms->pda_mode = false;
|
||||
parms->convert_mqtt_temp = true;
|
||||
parms->convert_dz_temp = true;
|
||||
parms->report_zero_pool_temp = false;
|
||||
parms->report_zero_spa_temp = false;
|
||||
parms->report_zero_pool_temp = false;
|
||||
parms->read_all_devices = true;
|
||||
|
@ -266,6 +267,8 @@ void readCfg_OLD (struct aqconfig *config_parameters, struct aqualinkdata *aqdat
|
|||
config_parameters->convert_dz_temp = text2bool(indx+1);
|
||||
} else if (strncasecmp (b_ptr, "flash_mqtt_buttons", 18) == 0) {
|
||||
config_parameters->flash_mqtt_buttons = text2bool(indx+1);
|
||||
} else if (strncasecmp (b_ptr, "report_zero_pool_temp", 21) == 0) {
|
||||
config_parameters->report_zero_pool_temp = text2bool(indx+1);
|
||||
} else if (strncasecmp (b_ptr, "report_zero_spa_temp", 20) == 0) {
|
||||
config_parameters->report_zero_spa_temp = text2bool(indx+1);
|
||||
} else if (strncasecmp (b_ptr, "report_zero_pool_temp", 21) == 0) {
|
||||
|
@ -383,6 +386,9 @@ bool setConfigValue(struct aqconfig *config_parameters, struct aqualinkdata *aqd
|
|||
} else if (strncasecmp(param, "flash_mqtt_buttons", 18) == 0) {
|
||||
config_parameters->flash_mqtt_buttons = text2bool(value);
|
||||
rtn=true;
|
||||
} else if (strncasecmp(param, "report_zero_pool_temp", 21) == 0) {
|
||||
config_parameters->report_zero_pool_temp = text2bool(value);
|
||||
rtn=true;
|
||||
} else if (strncasecmp(param, "report_zero_spa_temp", 20) == 0) {
|
||||
config_parameters->report_zero_spa_temp = text2bool(value);
|
||||
rtn=true;
|
||||
|
@ -563,6 +569,7 @@ bool writeCfg (struct aqconfig *config_parameters, struct aqualinkdata *aqdata)
|
|||
fprintf(fp, "convert_mqtt_temp_to_c = %s\n", bool2text(config_parameters->convert_mqtt_temp));
|
||||
fprintf(fp, "override_freeze_protect = %s\n", bool2text(config_parameters->override_freeze_protect));
|
||||
fprintf(fp, "flash_mqtt_buttons = %s\n", bool2text(config_parameters->flash_mqtt_buttons));
|
||||
fprintf(fp, "report_zero_pool_temp = %s\n", bool2text(config_parameters->report_zero_pool_temp));
|
||||
fprintf(fp, "report_zero_spa_temp = %s\n", bool2text(config_parameters->report_zero_spa_temp));
|
||||
fprintf(fp, "report_zero_pool_temp = %s\n", bool2text(config_parameters->report_zero_pool_temp));
|
||||
|
||||
|
|
3
config.h
3
config.h
|
@ -53,6 +53,7 @@ struct aqconfig
|
|||
bool convert_mqtt_temp;
|
||||
bool convert_dz_temp;
|
||||
bool flash_mqtt_buttons;
|
||||
bool report_zero_pool_temp;
|
||||
bool report_zero_spa_temp;
|
||||
bool report_zero_pool_temp;
|
||||
bool read_all_devices;
|
||||
|
@ -70,4 +71,4 @@ void readCfg (struct aqconfig *config_parameters, struct aqualinkdata *aqualink_
|
|||
bool writeCfg (struct aqconfig *config_parameters, struct aqualinkdata *aqdata);
|
||||
bool setConfigValue(struct aqconfig *config_parameters, struct aqualinkdata *aqdata, char *param, char *value);
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
|
|
@ -186,6 +186,9 @@ void send_mqtt_state_msg(struct mg_connection *nc, char *dev_name, aqledstate st
|
|||
{
|
||||
static char mqtt_pub_topic[250];
|
||||
|
||||
sprintf(mqtt_pub_topic, "%s/%s/delay",_aqualink_config->mqtt_aq_topic, dev_name);
|
||||
send_mqtt(nc, mqtt_pub_topic, (state==FLASH?MQTT_ON:MQTT_OFF));
|
||||
|
||||
sprintf(mqtt_pub_topic, "%s/%s",_aqualink_config->mqtt_aq_topic, dev_name);
|
||||
send_mqtt(nc, mqtt_pub_topic, (state==OFF?MQTT_OFF:MQTT_ON));
|
||||
}
|
||||
|
@ -328,6 +331,20 @@ void mqtt_broadcast_aqualinkstate(struct mg_connection *nc)
|
|||
send_domoticz_mqtt_temp_msg(nc, _aqualink_config->dzidx_spa_water_temp, _aqualink_data->pool_temp);
|
||||
}
|
||||
}
|
||||
*/
|
||||
if (_aqualink_data->pool_temp != _last_mqtt_aqualinkdata.pool_temp) {
|
||||
if (_aqualink_data->pool_temp == TEMP_UNKNOWN && _aqualink_config->report_zero_pool_temp) {
|
||||
_last_mqtt_aqualinkdata.pool_temp = TEMP_UNKNOWN;
|
||||
send_mqtt_temp_msg(nc, POOL_TEMP_TOPIC, (_aqualink_config->convert_mqtt_temp?-18:0));
|
||||
} else if (_aqualink_data->pool_temp != TEMP_UNKNOWN) {
|
||||
_last_mqtt_aqualinkdata.pool_temp = _aqualink_data->pool_temp;
|
||||
send_mqtt_temp_msg(nc, POOL_TEMP_TOPIC, _aqualink_data->pool_temp);
|
||||
send_domoticz_mqtt_temp_msg(nc, _aqualink_config->dzidx_pool_water_temp, _aqualink_data->pool_temp);
|
||||
// IF spa is off, report pool water temp to Domoticz.
|
||||
if (_aqualink_data->spa_temp == TEMP_UNKNOWN)
|
||||
send_domoticz_mqtt_temp_msg(nc, _aqualink_config->dzidx_spa_water_temp, _aqualink_data->pool_temp);
|
||||
}
|
||||
}
|
||||
|
||||
if (_aqualink_data->spa_temp != _last_mqtt_aqualinkdata.spa_temp) {
|
||||
if (_aqualink_data->spa_temp == TEMP_UNKNOWN && _aqualink_config->report_zero_spa_temp) {
|
||||
|
@ -352,6 +369,11 @@ void mqtt_broadcast_aqualinkstate(struct mg_connection *nc)
|
|||
send_mqtt_setpoint_msg(nc, BTN_SPA_HTR, _aqualink_data->spa_htr_set_point);
|
||||
}
|
||||
|
||||
if (_aqualink_data->service_mode_state != _last_mqtt_aqualinkdata.service_mode_state) {
|
||||
_last_mqtt_aqualinkdata.service_mode_state = _aqualink_data->service_mode_state;
|
||||
send_mqtt_string_msg(nc, SERVICE_MODE_TOPIC, _aqualink_data->service_mode_state==ON?MQTT_ON:MQTT_OFF);
|
||||
}
|
||||
|
||||
if (_aqualink_data->frz_protect_set_point != TEMP_UNKNOWN && _aqualink_data->frz_protect_set_point != _last_mqtt_aqualinkdata.frz_protect_set_point) {
|
||||
_last_mqtt_aqualinkdata.frz_protect_set_point = _aqualink_data->frz_protect_set_point;
|
||||
send_mqtt_setpoint_msg(nc, FREEZE_PROTECT, _aqualink_data->frz_protect_set_point);
|
||||
|
|
|
@ -38,6 +38,12 @@ convert_dz_temp_to_c = yes
|
|||
# Flash MQTT button on/off like control panel does in cool down mode.
|
||||
flash_mqtt_buttons = no
|
||||
|
||||
# default is to not report changes to pool temp when the filter pump is off or in spa mode
|
||||
# enable below to report 0 as the pool temp when the filter pump is off or when in spa mode.
|
||||
# This is for MQTT cnnections only, WEB socket and WEB API always report TEMP_UNKNOWN (-999) allowing the consumer to
|
||||
# decide how to report.
|
||||
report_zero_pool_temp = no
|
||||
|
||||
# default is to use pool water temp as spa water temp when spa is off (and there for not able to report water temp)
|
||||
# enable below to report 0 as the spa temp when spa is off.
|
||||
# This is for MQTT cnnections only, WEB socket and WEB API always report TEMP_UNKNOWN (-999) allowing the consumer to
|
||||
|
|
Loading…
Reference in New Issue