mirror of https://github.com/sfeakes/AqualinkD.git
Fixed domoticz negative temperature messages
parent
f6abeb36fe
commit
46bdb21ac3
|
@ -50,15 +50,15 @@ const char* getStatus(struct aqualinkdata *aqdata)
|
|||
}
|
||||
|
||||
|
||||
int build_mqtt_status_JSON(char* buffer, int size, int idx, int nvalue, float setpoint/*char *svalue*/)
|
||||
int build_mqtt_status_JSON(char* buffer, int size, int idx, int nvalue, float tvalue/*char *svalue*/)
|
||||
{
|
||||
memset(&buffer[0], 0, size);
|
||||
int length = 0;
|
||||
|
||||
if (setpoint == TEMP_UNKNOWN) {
|
||||
if (tvalue == TEMP_UNKNOWN) {
|
||||
length = sprintf(buffer, "{\"idx\":%d,\"nvalue\":%d,\"svalue\":\"\"}", idx, nvalue);
|
||||
} else {
|
||||
length = sprintf(buffer, "{\"idx\":%d,\"nvalue\":%d,\"stype\":\"SetPoint\",\"svalue\":\"%.2f\"}", idx, nvalue, setpoint+0.005);
|
||||
length = sprintf(buffer, "{\"idx\":%d,\"nvalue\":%d,\"stype\":\"SetPoint\",\"svalue\":\"%.2f\"}", idx, nvalue, tvalue);
|
||||
}
|
||||
|
||||
buffer[length] = '\0';
|
||||
|
|
|
@ -128,13 +128,6 @@ void broadcast_aqualinkstate(struct mg_connection *nc)
|
|||
}
|
||||
|
||||
|
||||
#ifndef MG_DISABLE_MQTT
|
||||
/*
|
||||
int fahrenheit2celsius(int fahrenheit)
|
||||
{
|
||||
return (int)((fahrenheit - 32) * 5 / 9)+0.5f;
|
||||
}
|
||||
*/
|
||||
void send_mqtt(struct mg_connection *nc, char *toppic, char *message)
|
||||
{
|
||||
static uint16_t msg_id = 0;
|
||||
|
@ -147,9 +140,8 @@ void send_mqtt(struct mg_connection *nc, char *toppic, char *message)
|
|||
logMessage(LOG_INFO, "MQTT: Published id=%d: %s %s\n", msg_id, toppic, message);
|
||||
}
|
||||
|
||||
// ******************** FIX THIS *******************************
|
||||
// NSF this doesn't work for tempratures, we are badly rounding.
|
||||
void send_domoticz_mqtt_msg(struct mg_connection *nc, int idx, int value)
|
||||
|
||||
void send_domoticz_mqtt_state_msg(struct mg_connection *nc, int idx, int value)
|
||||
{
|
||||
if (idx <= 0)
|
||||
return;
|
||||
|
@ -159,13 +151,13 @@ void send_domoticz_mqtt_msg(struct mg_connection *nc, int idx, int value)
|
|||
send_mqtt(nc, _aqualink_config->mqtt_dz_pub_topic, mqtt_msg);
|
||||
}
|
||||
|
||||
void send_domoticz_mqtt_msg_setpoint(struct mg_connection *nc, int idx, int value, float setpoint)
|
||||
void send_domoticz_mqtt_temp_msg(struct mg_connection *nc, int idx, int value)
|
||||
{
|
||||
if (idx <= 0)
|
||||
return;
|
||||
|
||||
char mqtt_msg[JSON_MQTT_MSG_SIZE];
|
||||
build_mqtt_status_JSON(mqtt_msg ,JSON_MQTT_MSG_SIZE, idx, value, setpoint);
|
||||
build_mqtt_status_JSON(mqtt_msg ,JSON_MQTT_MSG_SIZE, idx, 0, (_aqualink_data->temp_units==FAHRENHEIT)?roundf(degFtoC(value)):value);
|
||||
send_mqtt(nc, _aqualink_config->mqtt_dz_pub_topic, mqtt_msg);
|
||||
}
|
||||
|
||||
|
@ -205,33 +197,34 @@ void mqtt_broadcast_aqualinkstate(struct mg_connection *nc)
|
|||
if (_aqualink_data->air_temp != TEMP_UNKNOWN && _aqualink_data->air_temp != _last_mqtt_aqualinkdata.air_temp) {
|
||||
_last_mqtt_aqualinkdata.air_temp = _aqualink_data->air_temp;
|
||||
send_mqtt_temp_msg(nc, AIR_TEMP_TOPIC, _aqualink_data->air_temp);
|
||||
send_domoticz_mqtt_msg(nc, _aqualink_config->dzidx_air_temp, (_aqualink_data->temp_units==FAHRENHEIT)?degFtoC(_aqualink_data->air_temp):_aqualink_data->air_temp);
|
||||
send_domoticz_mqtt_temp_msg(nc, _aqualink_config->dzidx_air_temp, _aqualink_data->air_temp);
|
||||
}
|
||||
if (_aqualink_data->pool_temp != TEMP_UNKNOWN && _aqualink_data->pool_temp != _last_mqtt_aqualinkdata.pool_temp) {
|
||||
_last_mqtt_aqualinkdata.pool_temp = _aqualink_data->pool_temp;
|
||||
send_mqtt_temp_msg(nc, POOL_TEMP_TOPIC, _aqualink_data->pool_temp);
|
||||
send_domoticz_mqtt_msg(nc, _aqualink_config->dzidx_pool_water_temp, (_aqualink_data->temp_units==FAHRENHEIT)?degFtoC(_aqualink_data->pool_temp):_aqualink_data->pool_temp);
|
||||
send_domoticz_mqtt_temp_msg(nc, _aqualink_config->dzidx_pool_water_temp, _aqualink_data->pool_temp);
|
||||
}
|
||||
if (_aqualink_data->spa_temp != TEMP_UNKNOWN && _aqualink_data->spa_temp != _last_mqtt_aqualinkdata.spa_temp) {
|
||||
_last_mqtt_aqualinkdata.spa_temp = _aqualink_data->spa_temp;
|
||||
send_mqtt_temp_msg(nc, SPA_TEMP_TOPIC, _aqualink_data->spa_temp);
|
||||
send_domoticz_mqtt_msg(nc, _aqualink_config->dzidx_spa_water_temp, (_aqualink_data->temp_units==FAHRENHEIT)?degFtoC(_aqualink_data->spa_temp):_aqualink_data->pool_temp);
|
||||
send_domoticz_mqtt_temp_msg(nc, _aqualink_config->dzidx_spa_water_temp, _aqualink_data->pool_temp);
|
||||
}
|
||||
if (_aqualink_data->pool_htr_set_point != TEMP_UNKNOWN && _aqualink_data->pool_htr_set_point != _last_mqtt_aqualinkdata.pool_htr_set_point) {
|
||||
_last_mqtt_aqualinkdata.pool_htr_set_point = _aqualink_data->pool_htr_set_point;
|
||||
send_mqtt_setpoint_msg(nc, BTN_POOL_HTR, _aqualink_data->pool_htr_set_point);
|
||||
// removed until domoticz has a better virtuel thermostat
|
||||
//send_domoticz_mqtt_msg_setpoint(nc, _aqualink_config->dzidx_pool_thermostat, 0, degFtoC(_aqualink_data->pool_htr_set_point));
|
||||
//send_domoticz_mqtt_temp_msg(nc, _aqualink_config->dzidx_pool_thermostat, _aqualink_data->pool_htr_set_point);
|
||||
}
|
||||
if (_aqualink_data->spa_htr_set_point != TEMP_UNKNOWN && _aqualink_data->spa_htr_set_point != _last_mqtt_aqualinkdata.spa_htr_set_point) {
|
||||
_last_mqtt_aqualinkdata.spa_htr_set_point = _aqualink_data->spa_htr_set_point;
|
||||
send_mqtt_setpoint_msg(nc, BTN_SPA_HTR, _aqualink_data->spa_htr_set_point);
|
||||
// removed until domoticz has a better virtuel thermostat
|
||||
//send_domoticz_mqtt_msg_setpoint(nc, _aqualink_config->dzidx_spa_thermostat, 0, degFtoC(_aqualink_data->spa_htr_set_point));
|
||||
//send_domoticz_mqtt_temp_msg(nc, _aqualink_config->dzidx_spa_thermostat, _aqualink_data->spa_htr_set_point);
|
||||
}
|
||||
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);
|
||||
//send_domoticz_mqtt_temp_msg(nc, _aqualink_config->dzidx_rfz_protect, _aqualink_data->frz_protect_set_point);
|
||||
}
|
||||
|
||||
//logMessage(LOG_INFO, "mqtt_broadcast_aqualinkstate: START LEDs\n");
|
||||
|
@ -245,7 +238,7 @@ void mqtt_broadcast_aqualinkstate(struct mg_connection *nc)
|
|||
_last_mqtt_aqualinkdata.aqualinkleds[i].state = _aqualink_data->aqbuttons[i].led->state;
|
||||
if (_aqualink_data->aqbuttons[i].dz_idx != DZ_NULL_IDX) {
|
||||
send_mqtt_state_msg(nc, _aqualink_data->aqbuttons[i].name, _aqualink_data->aqbuttons[i].led->state);
|
||||
send_domoticz_mqtt_msg(nc, _aqualink_data->aqbuttons[i].dz_idx, (_aqualink_data->aqbuttons[i].led->state==OFF?DZ_OFF:DZ_ON));
|
||||
send_domoticz_mqtt_state_msg(nc, _aqualink_data->aqbuttons[i].dz_idx, (_aqualink_data->aqbuttons[i].led->state==OFF?DZ_OFF:DZ_ON));
|
||||
}
|
||||
// Send mqtt
|
||||
}
|
||||
|
@ -253,7 +246,6 @@ void mqtt_broadcast_aqualinkstate(struct mg_connection *nc)
|
|||
//logMessage(LOG_INFO, "mqtt_broadcast_aqualinkstate: END\n");
|
||||
}
|
||||
|
||||
#endif //MG_DISABLE_MQTT
|
||||
|
||||
//
|
||||
|
||||
|
|
|
@ -5,8 +5,6 @@
|
|||
#define GET_RTN_UNKNOWN "Unknown command"
|
||||
#define GET_RTN_NOT_CHANGED "Not Changed"
|
||||
|
||||
#define FREEZE_PROTECT "Freeze_Protect"
|
||||
|
||||
//void main_server();
|
||||
//void main_server_TEST(struct aqualinkdata *aqdata, char *s_http_port);
|
||||
//bool start_web_server(struct mg_mgr *mgr, struct aqualinkdata *aqdata, char *port, char* web_root);
|
||||
|
|
Binary file not shown.
|
@ -1,7 +1,5 @@
|
|||
# aqualinkd.conf
|
||||
#
|
||||
# Created on: Aug 17, 2012
|
||||
#
|
||||
|
||||
# The directory where the web files are stored
|
||||
|
||||
|
@ -42,7 +40,10 @@ mqtt_aq_topic = aqualinkd
|
|||
device_id=0x0a
|
||||
|
||||
# Light probramming mode. 0=safe mode, but slow.
|
||||
# any number greater is seconds to wait between button presses. 0.6 seems to be safe, but dill sepend on hardware
|
||||
# any number greater is seconds to wait between button presses.
|
||||
# 0.4 seems to be the minimum. (workd for light modes below 10 presses)
|
||||
# 0.6 seems to work about 95% of the time, but above 20 presses can be hit or miss.
|
||||
# 0 will simply wait for the controler to send the response back before sending the next, so is equivelent to about 1.2
|
||||
light_programming_mode=0
|
||||
|
||||
# Domoticz ID's for temps.
|
||||
|
|
Loading…
Reference in New Issue