mirror of
https://github.com/arendst/Tasmota.git
synced 2025-08-03 16:07:43 +00:00
Shrink code/flash space
Shrink code/flash space
This commit is contained in:
parent
76b7d778ec
commit
6922e657d9
@ -506,7 +506,7 @@ void MqttDataHandler(char* topic, uint8_t* data, unsigned int data_len)
|
|||||||
AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_RESULT D_GROUP " %d, " D_INDEX " %d, " D_COMMAND " %s, " D_DATA " %s"), grpflg, index, type, dataBuf);
|
AddLog_P2(LOG_LEVEL_DEBUG, PSTR(D_LOG_RESULT D_GROUP " %d, " D_INDEX " %d, " D_COMMAND " %s, " D_DATA " %s"), grpflg, index, type, dataBuf);
|
||||||
|
|
||||||
if (type != NULL) {
|
if (type != NULL) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_COMMAND "\":\"" D_JSON_ERROR "\"}"));
|
Response_P(PSTR("{\"" D_JSON_COMMAND "\":\"" D_JSON_ERROR "\"}"));
|
||||||
if (Settings.ledstate &0x02) { blinks++; }
|
if (Settings.ledstate &0x02) { blinks++; }
|
||||||
|
|
||||||
if (!strcmp(dataBuf,"?")) { data_len = 0; }
|
if (!strcmp(dataBuf,"?")) { data_len = 0; }
|
||||||
@ -563,12 +563,12 @@ void MqttDataHandler(char* topic, uint8_t* data, unsigned int data_len)
|
|||||||
}
|
}
|
||||||
blcommand = strtok(NULL, ";");
|
blcommand = strtok(NULL, ";");
|
||||||
}
|
}
|
||||||
// snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, D_JSON_APPENDED);
|
// Response_P(S_JSON_COMMAND_SVALUE, command, D_JSON_APPENDED);
|
||||||
mqtt_data[0] = '\0';
|
mqtt_data[0] = '\0';
|
||||||
} else {
|
} else {
|
||||||
uint8_t blflag = (backlog_pointer == backlog_index);
|
uint8_t blflag = (backlog_pointer == backlog_index);
|
||||||
backlog_pointer = backlog_index;
|
backlog_pointer = backlog_index;
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, blflag ? D_JSON_EMPTY : D_JSON_ABORTED);
|
Response_P(S_JSON_COMMAND_SVALUE, command, blflag ? D_JSON_EMPTY : D_JSON_ABORTED);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (CMND_DELAY == command_code) {
|
else if (CMND_DELAY == command_code) {
|
||||||
@ -578,7 +578,7 @@ void MqttDataHandler(char* topic, uint8_t* data, unsigned int data_len)
|
|||||||
uint16_t bl_delay = 0;
|
uint16_t bl_delay = 0;
|
||||||
long bl_delta = TimePassedSince(backlog_delay);
|
long bl_delta = TimePassedSince(backlog_delay);
|
||||||
if (bl_delta < 0) { bl_delay = (bl_delta *-1) / 100; }
|
if (bl_delta < 0) { bl_delay = (bl_delta *-1) / 100; }
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, bl_delay);
|
Response_P(S_JSON_COMMAND_NVALUE, command, bl_delay);
|
||||||
}
|
}
|
||||||
else if ((CMND_POWER == command_code) && (index > 0) && (index <= devices_present)) {
|
else if ((CMND_POWER == command_code) && (index > 0) && (index <= devices_present)) {
|
||||||
if ((payload < 0) || (payload > 4)) { payload = 9; }
|
if ((payload < 0) || (payload > 4)) { payload = 9; }
|
||||||
@ -601,7 +601,7 @@ void MqttDataHandler(char* topic, uint8_t* data, unsigned int data_len)
|
|||||||
if ((payload >= 0) && (payload < MAX_FAN_SPEED) && (payload != GetFanspeed())) {
|
if ((payload >= 0) && (payload < MAX_FAN_SPEED) && (payload != GetFanspeed())) {
|
||||||
SetFanspeed(payload);
|
SetFanspeed(payload);
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, GetFanspeed());
|
Response_P(S_JSON_COMMAND_NVALUE, command, GetFanspeed());
|
||||||
}
|
}
|
||||||
else if (CMND_STATUS == command_code) {
|
else if (CMND_STATUS == command_code) {
|
||||||
if ((payload < 0) || (payload > MAX_STATUS)) payload = 99;
|
if ((payload < 0) || (payload > MAX_STATUS)) payload = 99;
|
||||||
@ -627,7 +627,7 @@ void MqttDataHandler(char* topic, uint8_t* data, unsigned int data_len)
|
|||||||
sleep = payload;
|
sleep = payload;
|
||||||
WiFiSetSleepMode();
|
WiFiSetSleepMode();
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE_UNIT_NVALUE_UNIT, command, sleep, (Settings.flag.value_units) ? " " D_UNIT_MILLISECOND : "", Settings.sleep, (Settings.flag.value_units) ? " " D_UNIT_MILLISECOND : "");
|
Response_P(S_JSON_COMMAND_NVALUE_UNIT_NVALUE_UNIT, command, sleep, (Settings.flag.value_units) ? " " D_UNIT_MILLISECOND : "", Settings.sleep, (Settings.flag.value_units) ? " " D_UNIT_MILLISECOND : "");
|
||||||
}
|
}
|
||||||
else if ((CMND_UPGRADE == command_code) || (CMND_UPLOAD == command_code)) {
|
else if ((CMND_UPGRADE == command_code) || (CMND_UPLOAD == command_code)) {
|
||||||
// Check if the payload is numerically 1, and had no trailing chars.
|
// Check if the payload is numerically 1, and had no trailing chars.
|
||||||
@ -636,36 +636,36 @@ void MqttDataHandler(char* topic, uint8_t* data, unsigned int data_len)
|
|||||||
// We also need at least 3 chars to make a valid version number string.
|
// We also need at least 3 chars to make a valid version number string.
|
||||||
if (((1 == data_len) && (1 == payload)) || ((data_len >= 3) && NewerVersion(dataBuf))) {
|
if (((1 == data_len) && (1 == payload)) || ((data_len >= 3) && NewerVersion(dataBuf))) {
|
||||||
ota_state_flag = 3;
|
ota_state_flag = 3;
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"%s\":\"" D_JSON_VERSION " %s " D_JSON_FROM " %s\"}"), command, my_version, GetOtaUrl(stemp1, sizeof(stemp1)));
|
Response_P(PSTR("{\"%s\":\"" D_JSON_VERSION " %s " D_JSON_FROM " %s\"}"), command, my_version, GetOtaUrl(stemp1, sizeof(stemp1)));
|
||||||
} else {
|
} else {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"%s\":\"" D_JSON_ONE_OR_GT "\"}"), command, my_version);
|
Response_P(PSTR("{\"%s\":\"" D_JSON_ONE_OR_GT "\"}"), command, my_version);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (CMND_OTAURL == command_code) {
|
else if (CMND_OTAURL == command_code) {
|
||||||
if ((data_len > 0) && (data_len < sizeof(Settings.ota_url))) {
|
if ((data_len > 0) && (data_len < sizeof(Settings.ota_url))) {
|
||||||
strlcpy(Settings.ota_url, (SC_DEFAULT == Shortcut(dataBuf)) ? OTA_URL : dataBuf, sizeof(Settings.ota_url));
|
strlcpy(Settings.ota_url, (SC_DEFAULT == Shortcut(dataBuf)) ? OTA_URL : dataBuf, sizeof(Settings.ota_url));
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, Settings.ota_url);
|
Response_P(S_JSON_COMMAND_SVALUE, command, Settings.ota_url);
|
||||||
}
|
}
|
||||||
else if (CMND_SERIALLOG == command_code) {
|
else if (CMND_SERIALLOG == command_code) {
|
||||||
if ((payload >= LOG_LEVEL_NONE) && (payload <= LOG_LEVEL_ALL)) {
|
if ((payload >= LOG_LEVEL_NONE) && (payload <= LOG_LEVEL_ALL)) {
|
||||||
Settings.flag.mqtt_serial = 0;
|
Settings.flag.mqtt_serial = 0;
|
||||||
SetSeriallog(payload);
|
SetSeriallog(payload);
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE_ACTIVE_NVALUE, command, Settings.seriallog_level, seriallog_level);
|
Response_P(S_JSON_COMMAND_NVALUE_ACTIVE_NVALUE, command, Settings.seriallog_level, seriallog_level);
|
||||||
}
|
}
|
||||||
else if (CMND_RESTART == command_code) {
|
else if (CMND_RESTART == command_code) {
|
||||||
switch (payload) {
|
switch (payload) {
|
||||||
case 1:
|
case 1:
|
||||||
restart_flag = 2;
|
restart_flag = 2;
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, D_JSON_RESTARTING);
|
Response_P(S_JSON_COMMAND_SVALUE, command, D_JSON_RESTARTING);
|
||||||
break;
|
break;
|
||||||
case 99:
|
case 99:
|
||||||
AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_APPLICATION D_RESTARTING));
|
AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_APPLICATION D_RESTARTING));
|
||||||
EspRestart();
|
EspRestart();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, D_JSON_ONE_TO_RESTART);
|
Response_P(S_JSON_COMMAND_SVALUE, command, D_JSON_ONE_TO_RESTART);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ((CMND_POWERONSTATE == command_code) && (my_module_type != MOTOR)) {
|
else if ((CMND_POWERONSTATE == command_code) && (my_module_type != MOTOR)) {
|
||||||
@ -684,28 +684,28 @@ void MqttDataHandler(char* topic, uint8_t* data, unsigned int data_len)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, Settings.poweronstate);
|
Response_P(S_JSON_COMMAND_NVALUE, command, Settings.poweronstate);
|
||||||
}
|
}
|
||||||
else if ((CMND_PULSETIME == command_code) && (index > 0) && (index <= MAX_PULSETIMERS)) {
|
else if ((CMND_PULSETIME == command_code) && (index > 0) && (index <= MAX_PULSETIMERS)) {
|
||||||
if (data_len > 0) {
|
if (data_len > 0) {
|
||||||
Settings.pulse_timer[index -1] = payload16; // 0 - 65535
|
Settings.pulse_timer[index -1] = payload16; // 0 - 65535
|
||||||
SetPulseTimer(index -1, payload16);
|
SetPulseTimer(index -1, payload16);
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_NVALUE_ACTIVE_NVALUE, command, index, Settings.pulse_timer[index -1], GetPulseTimer(index -1));
|
Response_P(S_JSON_COMMAND_INDEX_NVALUE_ACTIVE_NVALUE, command, index, Settings.pulse_timer[index -1], GetPulseTimer(index -1));
|
||||||
}
|
}
|
||||||
else if (CMND_BLINKTIME == command_code) {
|
else if (CMND_BLINKTIME == command_code) {
|
||||||
if ((payload > 1) && (payload <= 3600)) {
|
if ((payload > 1) && (payload <= 3600)) {
|
||||||
Settings.blinktime = payload;
|
Settings.blinktime = payload;
|
||||||
if (blink_timer > 0) { blink_timer = millis() + (100 * payload); }
|
if (blink_timer > 0) { blink_timer = millis() + (100 * payload); }
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, Settings.blinktime);
|
Response_P(S_JSON_COMMAND_NVALUE, command, Settings.blinktime);
|
||||||
}
|
}
|
||||||
else if (CMND_BLINKCOUNT == command_code) {
|
else if (CMND_BLINKCOUNT == command_code) {
|
||||||
if (data_len > 0) {
|
if (data_len > 0) {
|
||||||
Settings.blinkcount = payload16; // 0 - 65535
|
Settings.blinkcount = payload16; // 0 - 65535
|
||||||
if (blink_counter) blink_counter = Settings.blinkcount *2;
|
if (blink_counter) blink_counter = Settings.blinkcount *2;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, Settings.blinkcount);
|
Response_P(S_JSON_COMMAND_NVALUE, command, Settings.blinkcount);
|
||||||
}
|
}
|
||||||
else if (CMND_SAVEDATA == command_code) {
|
else if (CMND_SAVEDATA == command_code) {
|
||||||
if ((payload >= 0) && (payload <= 3600)) {
|
if ((payload >= 0) && (payload <= 3600)) {
|
||||||
@ -716,7 +716,7 @@ void MqttDataHandler(char* topic, uint8_t* data, unsigned int data_len)
|
|||||||
if (Settings.save_data > 1) {
|
if (Settings.save_data > 1) {
|
||||||
snprintf_P(stemp1, sizeof(stemp1), PSTR(D_JSON_EVERY " %d " D_UNIT_SECOND), Settings.save_data);
|
snprintf_P(stemp1, sizeof(stemp1), PSTR(D_JSON_EVERY " %d " D_UNIT_SECOND), Settings.save_data);
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, (Settings.save_data > 1) ? stemp1 : GetStateText(Settings.save_data));
|
Response_P(S_JSON_COMMAND_SVALUE, command, (Settings.save_data > 1) ? stemp1 : GetStateText(Settings.save_data));
|
||||||
}
|
}
|
||||||
else if ((CMND_SENSOR == command_code) || (CMND_DRIVER == command_code)) {
|
else if ((CMND_SENSOR == command_code) || (CMND_DRIVER == command_code)) {
|
||||||
XdrvMailbox.index = index;
|
XdrvMailbox.index = index;
|
||||||
@ -814,62 +814,62 @@ void MqttDataHandler(char* topic, uint8_t* data, unsigned int data_len)
|
|||||||
}
|
}
|
||||||
if (ptype < 99) {
|
if (ptype < 99) {
|
||||||
if (2 == ptype) snprintf_P(stemp1, sizeof(stemp1), PSTR("%d"), Settings.param[pindex]);
|
if (2 == ptype) snprintf_P(stemp1, sizeof(stemp1), PSTR("%d"), Settings.param[pindex]);
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_SVALUE, command, index, (2 == ptype) ? stemp1 : (1 == ptype) ? GetStateText(bitRead(Settings.flag3.data, pindex)) : GetStateText(bitRead(Settings.flag.data, pindex)));
|
Response_P(S_JSON_COMMAND_INDEX_SVALUE, command, index, (2 == ptype) ? stemp1 : (1 == ptype) ? GetStateText(bitRead(Settings.flag3.data, pindex)) : GetStateText(bitRead(Settings.flag.data, pindex)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (CMND_TEMPERATURE_RESOLUTION == command_code) {
|
else if (CMND_TEMPERATURE_RESOLUTION == command_code) {
|
||||||
if ((payload >= 0) && (payload <= 3)) {
|
if ((payload >= 0) && (payload <= 3)) {
|
||||||
Settings.flag2.temperature_resolution = payload;
|
Settings.flag2.temperature_resolution = payload;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, Settings.flag2.temperature_resolution);
|
Response_P(S_JSON_COMMAND_NVALUE, command, Settings.flag2.temperature_resolution);
|
||||||
}
|
}
|
||||||
else if (CMND_HUMIDITY_RESOLUTION == command_code) {
|
else if (CMND_HUMIDITY_RESOLUTION == command_code) {
|
||||||
if ((payload >= 0) && (payload <= 3)) {
|
if ((payload >= 0) && (payload <= 3)) {
|
||||||
Settings.flag2.humidity_resolution = payload;
|
Settings.flag2.humidity_resolution = payload;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, Settings.flag2.humidity_resolution);
|
Response_P(S_JSON_COMMAND_NVALUE, command, Settings.flag2.humidity_resolution);
|
||||||
}
|
}
|
||||||
else if (CMND_PRESSURE_RESOLUTION == command_code) {
|
else if (CMND_PRESSURE_RESOLUTION == command_code) {
|
||||||
if ((payload >= 0) && (payload <= 3)) {
|
if ((payload >= 0) && (payload <= 3)) {
|
||||||
Settings.flag2.pressure_resolution = payload;
|
Settings.flag2.pressure_resolution = payload;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, Settings.flag2.pressure_resolution);
|
Response_P(S_JSON_COMMAND_NVALUE, command, Settings.flag2.pressure_resolution);
|
||||||
}
|
}
|
||||||
else if (CMND_POWER_RESOLUTION == command_code) {
|
else if (CMND_POWER_RESOLUTION == command_code) {
|
||||||
if ((payload >= 0) && (payload <= 3)) {
|
if ((payload >= 0) && (payload <= 3)) {
|
||||||
Settings.flag2.wattage_resolution = payload;
|
Settings.flag2.wattage_resolution = payload;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, Settings.flag2.wattage_resolution);
|
Response_P(S_JSON_COMMAND_NVALUE, command, Settings.flag2.wattage_resolution);
|
||||||
}
|
}
|
||||||
else if (CMND_VOLTAGE_RESOLUTION == command_code) {
|
else if (CMND_VOLTAGE_RESOLUTION == command_code) {
|
||||||
if ((payload >= 0) && (payload <= 3)) {
|
if ((payload >= 0) && (payload <= 3)) {
|
||||||
Settings.flag2.voltage_resolution = payload;
|
Settings.flag2.voltage_resolution = payload;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, Settings.flag2.voltage_resolution);
|
Response_P(S_JSON_COMMAND_NVALUE, command, Settings.flag2.voltage_resolution);
|
||||||
}
|
}
|
||||||
else if (CMND_FREQUENCY_RESOLUTION == command_code) {
|
else if (CMND_FREQUENCY_RESOLUTION == command_code) {
|
||||||
if ((payload >= 0) && (payload <= 3)) {
|
if ((payload >= 0) && (payload <= 3)) {
|
||||||
Settings.flag2.frequency_resolution = payload;
|
Settings.flag2.frequency_resolution = payload;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, Settings.flag2.frequency_resolution);
|
Response_P(S_JSON_COMMAND_NVALUE, command, Settings.flag2.frequency_resolution);
|
||||||
}
|
}
|
||||||
else if (CMND_CURRENT_RESOLUTION == command_code) {
|
else if (CMND_CURRENT_RESOLUTION == command_code) {
|
||||||
if ((payload >= 0) && (payload <= 3)) {
|
if ((payload >= 0) && (payload <= 3)) {
|
||||||
Settings.flag2.current_resolution = payload;
|
Settings.flag2.current_resolution = payload;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, Settings.flag2.current_resolution);
|
Response_P(S_JSON_COMMAND_NVALUE, command, Settings.flag2.current_resolution);
|
||||||
}
|
}
|
||||||
else if (CMND_ENERGY_RESOLUTION == command_code) {
|
else if (CMND_ENERGY_RESOLUTION == command_code) {
|
||||||
if ((payload >= 0) && (payload <= 5)) {
|
if ((payload >= 0) && (payload <= 5)) {
|
||||||
Settings.flag2.energy_resolution = payload;
|
Settings.flag2.energy_resolution = payload;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, Settings.flag2.energy_resolution);
|
Response_P(S_JSON_COMMAND_NVALUE, command, Settings.flag2.energy_resolution);
|
||||||
}
|
}
|
||||||
else if (CMND_WEIGHT_RESOLUTION == command_code) {
|
else if (CMND_WEIGHT_RESOLUTION == command_code) {
|
||||||
if ((payload >= 0) && (payload <= 3)) {
|
if ((payload >= 0) && (payload <= 3)) {
|
||||||
Settings.flag2.weight_resolution = payload;
|
Settings.flag2.weight_resolution = payload;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, Settings.flag2.weight_resolution);
|
Response_P(S_JSON_COMMAND_NVALUE, command, Settings.flag2.weight_resolution);
|
||||||
}
|
}
|
||||||
else if (CMND_MODULE == command_code) {
|
else if (CMND_MODULE == command_code) {
|
||||||
if ((payload >= 0) && (payload <= MAXMODULE)) {
|
if ((payload >= 0) && (payload <= MAXMODULE)) {
|
||||||
@ -885,21 +885,24 @@ void MqttDataHandler(char* topic, uint8_t* data, unsigned int data_len)
|
|||||||
}
|
}
|
||||||
restart_flag = 2;
|
restart_flag = 2;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE_SVALUE, command, ModuleNr(), ModuleName().c_str());
|
Response_P(S_JSON_COMMAND_NVALUE_SVALUE, command, ModuleNr(), ModuleName().c_str());
|
||||||
}
|
}
|
||||||
else if (CMND_MODULES == command_code) {
|
else if (CMND_MODULES == command_code) {
|
||||||
for (uint8_t i = 0; i <= MAXMODULE; i++) {
|
for (uint8_t i = 0; i <= MAXMODULE; i++) {
|
||||||
if (!jsflg) {
|
if (!jsflg) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_MODULES "%d\":["), lines);
|
Response_P(PSTR("{\"" D_CMND_MODULES "%d\":["), lines);
|
||||||
} else {
|
} else {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,"), mqtt_data);
|
ResponseAppend_P(PSTR(","));
|
||||||
}
|
}
|
||||||
jsflg = true;
|
jsflg = true;
|
||||||
uint8_t j = i;
|
uint8_t j = i;
|
||||||
if (0 == i) { j = USER_MODULE; } else { j--; }
|
if (0 == i) { j = USER_MODULE; } else { j--; }
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s\"%d (%s)\""), mqtt_data, i, AnyModuleName(j).c_str());
|
|
||||||
if ((strlen(mqtt_data) > (LOGSZ - TOPSZ)) || (i == MAXMODULE)) {
|
// ResponseAppend_P(PSTR("\"%d (%s)\""), i, AnyModuleName(j).c_str());
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s]}"), mqtt_data);
|
// if ((strlen(mqtt_data) > (LOGSZ - TOPSZ)) || (i == MAXMODULE)) {
|
||||||
|
|
||||||
|
if ((ResponseAppend_P(PSTR("\"%d (%s)\""), i, AnyModuleName(j).c_str()) > (LOGSZ - TOPSZ)) || (i == MAXMODULE)) {
|
||||||
|
ResponseAppend_P(PSTR("]}"));
|
||||||
MqttPublishPrefixTopic_P(RESULT_OR_STAT, type);
|
MqttPublishPrefixTopic_P(RESULT_OR_STAT, type);
|
||||||
jsflg = false;
|
jsflg = false;
|
||||||
lines++;
|
lines++;
|
||||||
@ -926,19 +929,18 @@ void MqttDataHandler(char* topic, uint8_t* data, unsigned int data_len)
|
|||||||
restart_flag = 2;
|
restart_flag = 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{"));
|
Response_P(PSTR("{"));
|
||||||
for (uint8_t i = 0; i < sizeof(Settings.my_gp); i++) {
|
for (uint8_t i = 0; i < sizeof(Settings.my_gp); i++) {
|
||||||
if (ValidGPIO(i, cmodule.io[i])) {
|
if (ValidGPIO(i, cmodule.io[i])) {
|
||||||
if (jsflg) snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,"), mqtt_data);
|
if (jsflg) { ResponseAppend_P(PSTR(",")); }
|
||||||
jsflg = true;
|
jsflg = true;
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s\"" D_CMND_GPIO "%d\":\"%d (%s)\""),
|
ResponseAppend_P(PSTR("\"" D_CMND_GPIO "%d\":\"%d (%s)\""), i, Settings.my_gp.io[i], GetTextIndexed(stemp1, sizeof(stemp1), Settings.my_gp.io[i], kSensorNames));
|
||||||
mqtt_data, i, Settings.my_gp.io[i], GetTextIndexed(stemp1, sizeof(stemp1), Settings.my_gp.io[i], kSensorNames));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (jsflg) {
|
if (jsflg) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s}"), mqtt_data);
|
ResponseAppend_P(PSTR("}"));
|
||||||
} else {
|
} else {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, D_JSON_NOT_SUPPORTED);
|
Response_P(S_JSON_COMMAND_SVALUE, command, D_JSON_NOT_SUPPORTED);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (CMND_GPIOS == command_code) {
|
else if (CMND_GPIOS == command_code) {
|
||||||
@ -949,14 +951,17 @@ void MqttDataHandler(char* topic, uint8_t* data, unsigned int data_len)
|
|||||||
midx = pgm_read_byte(kGpioNiceList + i);
|
midx = pgm_read_byte(kGpioNiceList + i);
|
||||||
if (!GetUsedInModule(midx, cmodule.io)) {
|
if (!GetUsedInModule(midx, cmodule.io)) {
|
||||||
if (!jsflg) {
|
if (!jsflg) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_GPIOS "%d\":["), lines);
|
Response_P(PSTR("{\"" D_CMND_GPIOS "%d\":["), lines);
|
||||||
} else {
|
} else {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,"), mqtt_data);
|
ResponseAppend_P(PSTR(","));
|
||||||
}
|
}
|
||||||
jsflg = true;
|
jsflg = true;
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s\"%d (%s)\""), mqtt_data, midx, GetTextIndexed(stemp1, sizeof(stemp1), midx, kSensorNames));
|
|
||||||
if ((strlen(mqtt_data) > (LOGSZ - TOPSZ)) || (i == sizeof(kGpioNiceList) -1)) {
|
// ResponseAppend_P(PSTR("\"%d (%s)\""), midx, GetTextIndexed(stemp1, sizeof(stemp1), midx, kSensorNames));
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s]}"), mqtt_data);
|
// if ((strlen(mqtt_data) > (LOGSZ - TOPSZ)) || (i == sizeof(kGpioNiceList) -1)) {
|
||||||
|
|
||||||
|
if ((ResponseAppend_P(PSTR("\"%d (%s)\""), midx, GetTextIndexed(stemp1, sizeof(stemp1), midx, kSensorNames)) > (LOGSZ - TOPSZ)) || (i == sizeof(kGpioNiceList) -1)) {
|
||||||
|
ResponseAppend_P(PSTR("]}"));
|
||||||
MqttPublishPrefixTopic_P(RESULT_OR_STAT, type);
|
MqttPublishPrefixTopic_P(RESULT_OR_STAT, type);
|
||||||
jsflg = false;
|
jsflg = false;
|
||||||
lines++;
|
lines++;
|
||||||
@ -999,7 +1004,7 @@ void MqttDataHandler(char* topic, uint8_t* data, unsigned int data_len)
|
|||||||
if (JsonTemplate(dataBuf)) { // Free 336 bytes StaticJsonBuffer stack space by moving code to function
|
if (JsonTemplate(dataBuf)) { // Free 336 bytes StaticJsonBuffer stack space by moving code to function
|
||||||
if (USER_MODULE == Settings.module) { restart_flag = 2; }
|
if (USER_MODULE == Settings.module) { restart_flag = 2; }
|
||||||
} else {
|
} else {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, D_JSON_INVALID_JSON);
|
Response_P(S_JSON_COMMAND_SVALUE, command, D_JSON_INVALID_JSON);
|
||||||
error = true;
|
error = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1010,16 +1015,16 @@ void MqttDataHandler(char* topic, uint8_t* data, unsigned int data_len)
|
|||||||
Settings.pwm_value[index -1] = payload;
|
Settings.pwm_value[index -1] = payload;
|
||||||
analogWrite(pin[GPIO_PWM1 + index -1], bitRead(pwm_inverted, index -1) ? Settings.pwm_range - payload : payload);
|
analogWrite(pin[GPIO_PWM1 + index -1], bitRead(pwm_inverted, index -1) ? Settings.pwm_range - payload : payload);
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{"));
|
Response_P(PSTR("{"));
|
||||||
MqttShowPWMState(); // Render the PWM status to MQTT
|
MqttShowPWMState(); // Render the PWM status to MQTT
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s}"), mqtt_data);
|
ResponseAppend_P(PSTR("}"));
|
||||||
}
|
}
|
||||||
else if (CMND_PWMFREQUENCY == command_code) {
|
else if (CMND_PWMFREQUENCY == command_code) {
|
||||||
if ((1 == payload) || ((payload >= PWM_MIN) && (payload <= PWM_MAX))) {
|
if ((1 == payload) || ((payload >= PWM_MIN) && (payload <= PWM_MAX))) {
|
||||||
Settings.pwm_frequency = (1 == payload) ? PWM_FREQ : payload;
|
Settings.pwm_frequency = (1 == payload) ? PWM_FREQ : payload;
|
||||||
analogWriteFreq(Settings.pwm_frequency); // Default is 1000 (core_esp8266_wiring_pwm.c)
|
analogWriteFreq(Settings.pwm_frequency); // Default is 1000 (core_esp8266_wiring_pwm.c)
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, Settings.pwm_frequency);
|
Response_P(S_JSON_COMMAND_NVALUE, command, Settings.pwm_frequency);
|
||||||
}
|
}
|
||||||
else if (CMND_PWMRANGE == command_code) {
|
else if (CMND_PWMRANGE == command_code) {
|
||||||
if ((1 == payload) || ((payload > 254) && (payload < 1024))) {
|
if ((1 == payload) || ((payload > 254) && (payload < 1024))) {
|
||||||
@ -1031,7 +1036,7 @@ void MqttDataHandler(char* topic, uint8_t* data, unsigned int data_len)
|
|||||||
}
|
}
|
||||||
analogWriteRange(Settings.pwm_range); // Default is 1023 (Arduino.h)
|
analogWriteRange(Settings.pwm_range); // Default is 1023 (Arduino.h)
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, Settings.pwm_range);
|
Response_P(S_JSON_COMMAND_NVALUE, command, Settings.pwm_range);
|
||||||
}
|
}
|
||||||
else if ((CMND_COUNTER == command_code) && (index > 0) && (index <= MAX_COUNTERS)) {
|
else if ((CMND_COUNTER == command_code) && (index > 0) && (index <= MAX_COUNTERS)) {
|
||||||
if ((data_len > 0) && (pin[GPIO_CNTR1 + index -1] < 99)) {
|
if ((data_len > 0) && (pin[GPIO_CNTR1 + index -1] < 99)) {
|
||||||
@ -1043,7 +1048,7 @@ void MqttDataHandler(char* topic, uint8_t* data, unsigned int data_len)
|
|||||||
Settings.pulse_counter[index -1] = payload32;
|
Settings.pulse_counter[index -1] = payload32;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_LVALUE, command, index, RtcSettings.pulse_counter[index -1]);
|
Response_P(S_JSON_COMMAND_INDEX_LVALUE, command, index, RtcSettings.pulse_counter[index -1]);
|
||||||
}
|
}
|
||||||
else if ((CMND_COUNTERTYPE == command_code) && (index > 0) && (index <= MAX_COUNTERS)) {
|
else if ((CMND_COUNTERTYPE == command_code) && (index > 0) && (index <= MAX_COUNTERS)) {
|
||||||
if ((payload >= 0) && (payload <= 1) && (pin[GPIO_CNTR1 + index -1] < 99)) {
|
if ((payload >= 0) && (payload <= 1) && (pin[GPIO_CNTR1 + index -1] < 99)) {
|
||||||
@ -1051,25 +1056,25 @@ void MqttDataHandler(char* topic, uint8_t* data, unsigned int data_len)
|
|||||||
RtcSettings.pulse_counter[index -1] = 0;
|
RtcSettings.pulse_counter[index -1] = 0;
|
||||||
Settings.pulse_counter[index -1] = 0;
|
Settings.pulse_counter[index -1] = 0;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_NVALUE, command, index, bitRead(Settings.pulse_counter_type, index -1));
|
Response_P(S_JSON_COMMAND_INDEX_NVALUE, command, index, bitRead(Settings.pulse_counter_type, index -1));
|
||||||
}
|
}
|
||||||
else if (CMND_COUNTERDEBOUNCE == command_code) {
|
else if (CMND_COUNTERDEBOUNCE == command_code) {
|
||||||
if ((data_len > 0) && (payload16 < 32001)) {
|
if ((data_len > 0) && (payload16 < 32001)) {
|
||||||
Settings.pulse_counter_debounce = payload16;
|
Settings.pulse_counter_debounce = payload16;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, Settings.pulse_counter_debounce);
|
Response_P(S_JSON_COMMAND_NVALUE, command, Settings.pulse_counter_debounce);
|
||||||
}
|
}
|
||||||
else if (CMND_BUTTONDEBOUNCE == command_code) {
|
else if (CMND_BUTTONDEBOUNCE == command_code) {
|
||||||
if ((payload > 39) && (payload < 1001)) {
|
if ((payload > 39) && (payload < 1001)) {
|
||||||
Settings.button_debounce = payload;
|
Settings.button_debounce = payload;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, Settings.button_debounce);
|
Response_P(S_JSON_COMMAND_NVALUE, command, Settings.button_debounce);
|
||||||
}
|
}
|
||||||
else if (CMND_SWITCHDEBOUNCE == command_code) {
|
else if (CMND_SWITCHDEBOUNCE == command_code) {
|
||||||
if ((payload > 39) && (payload < 1001)) {
|
if ((payload > 39) && (payload < 1001)) {
|
||||||
Settings.switch_debounce = payload;
|
Settings.switch_debounce = payload;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, Settings.switch_debounce);
|
Response_P(S_JSON_COMMAND_NVALUE, command, Settings.switch_debounce);
|
||||||
}
|
}
|
||||||
else if (CMND_BAUDRATE == command_code) {
|
else if (CMND_BAUDRATE == command_code) {
|
||||||
if (payload32 > 1200) {
|
if (payload32 > 1200) {
|
||||||
@ -1077,7 +1082,7 @@ void MqttDataHandler(char* topic, uint8_t* data, unsigned int data_len)
|
|||||||
baudrate = (1 == payload) ? APP_BAUDRATE : payload32 * 1200;
|
baudrate = (1 == payload) ? APP_BAUDRATE : payload32 * 1200;
|
||||||
SetSerialBaudrate(baudrate);
|
SetSerialBaudrate(baudrate);
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, Settings.baudrate * 1200);
|
Response_P(S_JSON_COMMAND_NVALUE, command, Settings.baudrate * 1200);
|
||||||
}
|
}
|
||||||
else if ((CMND_SERIALSEND == command_code) && (index > 0) && (index <= 5)) {
|
else if ((CMND_SERIALSEND == command_code) && (index > 0) && (index <= 5)) {
|
||||||
SetSeriallog(LOG_LEVEL_NONE);
|
SetSeriallog(LOG_LEVEL_NONE);
|
||||||
@ -1099,7 +1104,7 @@ void MqttDataHandler(char* topic, uint8_t* data, unsigned int data_len)
|
|||||||
else if (5 == index) {
|
else if (5 == index) {
|
||||||
SerialSendRaw(RemoveSpace(dataBuf)); // "AA004566" as hex values
|
SerialSendRaw(RemoveSpace(dataBuf)); // "AA004566" as hex values
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, D_JSON_DONE);
|
Response_P(S_JSON_COMMAND_SVALUE, command, D_JSON_DONE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (CMND_SERIALDELIMITER == command_code) {
|
else if (CMND_SERIALDELIMITER == command_code) {
|
||||||
@ -1112,7 +1117,7 @@ void MqttDataHandler(char* topic, uint8_t* data, unsigned int data_len)
|
|||||||
Settings.serial_delimiter = dataBuf[0];
|
Settings.serial_delimiter = dataBuf[0];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, Settings.serial_delimiter);
|
Response_P(S_JSON_COMMAND_NVALUE, command, Settings.serial_delimiter);
|
||||||
}
|
}
|
||||||
else if (CMND_SYSLOG == command_code) {
|
else if (CMND_SYSLOG == command_code) {
|
||||||
if ((payload >= LOG_LEVEL_NONE) && (payload <= LOG_LEVEL_ALL)) {
|
if ((payload >= LOG_LEVEL_NONE) && (payload <= LOG_LEVEL_ALL)) {
|
||||||
@ -1120,19 +1125,19 @@ void MqttDataHandler(char* topic, uint8_t* data, unsigned int data_len)
|
|||||||
syslog_level = payload;
|
syslog_level = payload;
|
||||||
syslog_timer = 0;
|
syslog_timer = 0;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE_ACTIVE_NVALUE, command, Settings.syslog_level, syslog_level);
|
Response_P(S_JSON_COMMAND_NVALUE_ACTIVE_NVALUE, command, Settings.syslog_level, syslog_level);
|
||||||
}
|
}
|
||||||
else if (CMND_LOGHOST == command_code) {
|
else if (CMND_LOGHOST == command_code) {
|
||||||
if ((data_len > 0) && (data_len < sizeof(Settings.syslog_host))) {
|
if ((data_len > 0) && (data_len < sizeof(Settings.syslog_host))) {
|
||||||
strlcpy(Settings.syslog_host, (SC_DEFAULT == Shortcut(dataBuf)) ? SYS_LOG_HOST : dataBuf, sizeof(Settings.syslog_host));
|
strlcpy(Settings.syslog_host, (SC_DEFAULT == Shortcut(dataBuf)) ? SYS_LOG_HOST : dataBuf, sizeof(Settings.syslog_host));
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, Settings.syslog_host);
|
Response_P(S_JSON_COMMAND_SVALUE, command, Settings.syslog_host);
|
||||||
}
|
}
|
||||||
else if (CMND_LOGPORT == command_code) {
|
else if (CMND_LOGPORT == command_code) {
|
||||||
if (payload16 > 0) {
|
if (payload16 > 0) {
|
||||||
Settings.syslog_port = (1 == payload16) ? SYS_LOG_PORT : payload16;
|
Settings.syslog_port = (1 == payload16) ? SYS_LOG_PORT : payload16;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, Settings.syslog_port);
|
Response_P(S_JSON_COMMAND_NVALUE, command, Settings.syslog_port);
|
||||||
}
|
}
|
||||||
else if ((CMND_IPADDRESS == command_code) && (index > 0) && (index <= 4)) {
|
else if ((CMND_IPADDRESS == command_code) && (index > 0) && (index <= 4)) {
|
||||||
if (ParseIp(&address, dataBuf)) {
|
if (ParseIp(&address, dataBuf)) {
|
||||||
@ -1140,7 +1145,7 @@ void MqttDataHandler(char* topic, uint8_t* data, unsigned int data_len)
|
|||||||
// restart_flag = 2;
|
// restart_flag = 2;
|
||||||
}
|
}
|
||||||
snprintf_P(stemp1, sizeof(stemp1), PSTR(" (%s)"), WiFi.localIP().toString().c_str());
|
snprintf_P(stemp1, sizeof(stemp1), PSTR(" (%s)"), WiFi.localIP().toString().c_str());
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_SVALUE_SVALUE, command, index, IPAddress(Settings.ip_address[index -1]).toString().c_str(), (1 == index) ? stemp1:"");
|
Response_P(S_JSON_COMMAND_INDEX_SVALUE_SVALUE, command, index, IPAddress(Settings.ip_address[index -1]).toString().c_str(), (1 == index) ? stemp1:"");
|
||||||
}
|
}
|
||||||
else if ((CMND_NTPSERVER == command_code) && (index > 0) && (index <= 3)) {
|
else if ((CMND_NTPSERVER == command_code) && (index > 0) && (index <= 3)) {
|
||||||
if ((data_len > 0) && (data_len < sizeof(Settings.ntp_server[0]))) {
|
if ((data_len > 0) && (data_len < sizeof(Settings.ntp_server[0]))) {
|
||||||
@ -1151,7 +1156,7 @@ void MqttDataHandler(char* topic, uint8_t* data, unsigned int data_len)
|
|||||||
// restart_flag = 2; // Issue #3890
|
// restart_flag = 2; // Issue #3890
|
||||||
ntp_force_sync = true;
|
ntp_force_sync = true;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_SVALUE, command, index, Settings.ntp_server[index -1]);
|
Response_P(S_JSON_COMMAND_INDEX_SVALUE, command, index, Settings.ntp_server[index -1]);
|
||||||
}
|
}
|
||||||
else if (CMND_AP == command_code) {
|
else if (CMND_AP == command_code) {
|
||||||
if ((payload >= 0) && (payload <= 2)) {
|
if ((payload >= 0) && (payload <= 2)) {
|
||||||
@ -1165,7 +1170,7 @@ void MqttDataHandler(char* topic, uint8_t* data, unsigned int data_len)
|
|||||||
}
|
}
|
||||||
restart_flag = 2;
|
restart_flag = 2;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE_SVALUE, command, Settings.sta_active +1, Settings.sta_ssid[Settings.sta_active]);
|
Response_P(S_JSON_COMMAND_NVALUE_SVALUE, command, Settings.sta_active +1, Settings.sta_ssid[Settings.sta_active]);
|
||||||
}
|
}
|
||||||
else if ((CMND_SSID == command_code) && (index > 0) && (index <= 2)) {
|
else if ((CMND_SSID == command_code) && (index > 0) && (index <= 2)) {
|
||||||
if ((data_len > 0) && (data_len < sizeof(Settings.sta_ssid[0]))) {
|
if ((data_len > 0) && (data_len < sizeof(Settings.sta_ssid[0]))) {
|
||||||
@ -1173,16 +1178,16 @@ void MqttDataHandler(char* topic, uint8_t* data, unsigned int data_len)
|
|||||||
Settings.sta_active = index -1;
|
Settings.sta_active = index -1;
|
||||||
restart_flag = 2;
|
restart_flag = 2;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_SVALUE, command, index, Settings.sta_ssid[index -1]);
|
Response_P(S_JSON_COMMAND_INDEX_SVALUE, command, index, Settings.sta_ssid[index -1]);
|
||||||
}
|
}
|
||||||
else if ((CMND_PASSWORD == command_code) && (index > 0) && (index <= 2)) {
|
else if ((CMND_PASSWORD == command_code) && (index > 0) && (index <= 2)) {
|
||||||
if ((data_len > 4 || SC_CLEAR == Shortcut(dataBuf) || SC_DEFAULT == Shortcut(dataBuf)) && (data_len < sizeof(Settings.sta_pwd[0]))) {
|
if ((data_len > 4 || SC_CLEAR == Shortcut(dataBuf) || SC_DEFAULT == Shortcut(dataBuf)) && (data_len < sizeof(Settings.sta_pwd[0]))) {
|
||||||
strlcpy(Settings.sta_pwd[index -1], (SC_CLEAR == Shortcut(dataBuf)) ? "" : (SC_DEFAULT == Shortcut(dataBuf)) ? (1 == index) ? STA_PASS1 : STA_PASS2 : dataBuf, sizeof(Settings.sta_pwd[0]));
|
strlcpy(Settings.sta_pwd[index -1], (SC_CLEAR == Shortcut(dataBuf)) ? "" : (SC_DEFAULT == Shortcut(dataBuf)) ? (1 == index) ? STA_PASS1 : STA_PASS2 : dataBuf, sizeof(Settings.sta_pwd[0]));
|
||||||
Settings.sta_active = index -1;
|
Settings.sta_active = index -1;
|
||||||
restart_flag = 2;
|
restart_flag = 2;
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_SVALUE, command, index, Settings.sta_pwd[index -1]);
|
Response_P(S_JSON_COMMAND_INDEX_SVALUE, command, index, Settings.sta_pwd[index -1]);
|
||||||
} else {
|
} else {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_ASTERIX, command, index);
|
Response_P(S_JSON_COMMAND_INDEX_ASTERIX, command, index);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (CMND_HOSTNAME == command_code) {
|
else if (CMND_HOSTNAME == command_code) {
|
||||||
@ -1193,21 +1198,21 @@ void MqttDataHandler(char* topic, uint8_t* data, unsigned int data_len)
|
|||||||
}
|
}
|
||||||
restart_flag = 2;
|
restart_flag = 2;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, Settings.hostname);
|
Response_P(S_JSON_COMMAND_SVALUE, command, Settings.hostname);
|
||||||
}
|
}
|
||||||
else if (CMND_WIFICONFIG == command_code) {
|
else if (CMND_WIFICONFIG == command_code) {
|
||||||
if ((payload >= WIFI_RESTART) && (payload < MAX_WIFI_OPTION)) {
|
if ((payload >= WIFI_RESTART) && (payload < MAX_WIFI_OPTION)) {
|
||||||
Settings.sta_config = payload;
|
Settings.sta_config = payload;
|
||||||
wifi_state_flag = Settings.sta_config;
|
wifi_state_flag = Settings.sta_config;
|
||||||
snprintf_P(stemp1, sizeof(stemp1), kWifiConfig[Settings.sta_config]);
|
snprintf_P(stemp1, sizeof(stemp1), kWifiConfig[Settings.sta_config]);
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_WIFICONFIG "\":\"%s " D_JSON_SELECTED "\"}"), stemp1);
|
Response_P(PSTR("{\"" D_CMND_WIFICONFIG "\":\"%s " D_JSON_SELECTED "\"}"), stemp1);
|
||||||
if (WifiState() > WIFI_RESTART) {
|
if (WifiState() > WIFI_RESTART) {
|
||||||
// snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s after restart"), mqtt_data);
|
// snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s after restart"), mqtt_data);
|
||||||
restart_flag = 2;
|
restart_flag = 2;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
snprintf_P(stemp1, sizeof(stemp1), kWifiConfig[Settings.sta_config]);
|
snprintf_P(stemp1, sizeof(stemp1), kWifiConfig[Settings.sta_config]);
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE_SVALUE, command, Settings.sta_config, stemp1);
|
Response_P(S_JSON_COMMAND_NVALUE_SVALUE, command, Settings.sta_config, stemp1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ((CMND_FRIENDLYNAME == command_code) && (index > 0) && (index <= MAX_FRIENDLYNAMES)) {
|
else if ((CMND_FRIENDLYNAME == command_code) && (index > 0) && (index <= MAX_FRIENDLYNAMES)) {
|
||||||
@ -1219,13 +1224,13 @@ void MqttDataHandler(char* topic, uint8_t* data, unsigned int data_len)
|
|||||||
}
|
}
|
||||||
strlcpy(Settings.friendlyname[index -1], (SC_DEFAULT == Shortcut(dataBuf)) ? stemp1 : dataBuf, sizeof(Settings.friendlyname[index -1]));
|
strlcpy(Settings.friendlyname[index -1], (SC_DEFAULT == Shortcut(dataBuf)) ? stemp1 : dataBuf, sizeof(Settings.friendlyname[index -1]));
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_SVALUE, command, index, Settings.friendlyname[index -1]);
|
Response_P(S_JSON_COMMAND_INDEX_SVALUE, command, index, Settings.friendlyname[index -1]);
|
||||||
}
|
}
|
||||||
else if ((CMND_SWITCHMODE == command_code) && (index > 0) && (index <= MAX_SWITCHES)) {
|
else if ((CMND_SWITCHMODE == command_code) && (index > 0) && (index <= MAX_SWITCHES)) {
|
||||||
if ((payload >= 0) && (payload < MAX_SWITCH_OPTION)) {
|
if ((payload >= 0) && (payload < MAX_SWITCH_OPTION)) {
|
||||||
Settings.switchmode[index -1] = payload;
|
Settings.switchmode[index -1] = payload;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_NVALUE, command, index, Settings.switchmode[index-1]);
|
Response_P(S_JSON_COMMAND_INDEX_NVALUE, command, index, Settings.switchmode[index-1]);
|
||||||
}
|
}
|
||||||
else if (CMND_INTERLOCK == command_code) { // Interlock 0 - Off, Interlock 1 - On, Interlock 1,2 3,4 5,6,7
|
else if (CMND_INTERLOCK == command_code) { // Interlock 0 - Off, Interlock 1 - On, Interlock 1,2 3,4 5,6,7
|
||||||
uint8_t max_relays = devices_present;
|
uint8_t max_relays = devices_present;
|
||||||
@ -1267,18 +1272,18 @@ void MqttDataHandler(char* topic, uint8_t* data, unsigned int data_len)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_INTERLOCK "\":\"%s\",\"" D_JSON_GROUPS "\":\""), GetStateText(Settings.flag.interlock));
|
Response_P(PSTR("{\"" D_CMND_INTERLOCK "\":\"%s\",\"" D_JSON_GROUPS "\":\""), GetStateText(Settings.flag.interlock));
|
||||||
uint8_t anygroup = 0;
|
uint8_t anygroup = 0;
|
||||||
for (uint8_t i = 0; i < MAX_INTERLOCKS; i++) {
|
for (uint8_t i = 0; i < MAX_INTERLOCKS; i++) {
|
||||||
if (Settings.interlock[i]) {
|
if (Settings.interlock[i]) {
|
||||||
anygroup++;
|
anygroup++;
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s%s"), mqtt_data, (anygroup > 1) ? " " : "");
|
ResponseAppend_P(PSTR("%s"), (anygroup > 1) ? " " : "");
|
||||||
uint8_t anybit = 0;
|
uint8_t anybit = 0;
|
||||||
power_t mask = 1;
|
power_t mask = 1;
|
||||||
for (uint8_t j = 0; j < max_relays; j++) {
|
for (uint8_t j = 0; j < max_relays; j++) {
|
||||||
if (Settings.interlock[i] & mask) {
|
if (Settings.interlock[i] & mask) {
|
||||||
anybit++;
|
anybit++;
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s%s%d"), mqtt_data, (anybit > 1) ? "," : "", j +1);
|
ResponseAppend_P(PSTR("%s%d"), (anybit > 1) ? "," : "", j +1);
|
||||||
}
|
}
|
||||||
mask <<= 1;
|
mask <<= 1;
|
||||||
}
|
}
|
||||||
@ -1286,13 +1291,13 @@ void MqttDataHandler(char* topic, uint8_t* data, unsigned int data_len)
|
|||||||
}
|
}
|
||||||
if (!anygroup) {
|
if (!anygroup) {
|
||||||
for (uint8_t j = 1; j <= max_relays; j++) {
|
for (uint8_t j = 1; j <= max_relays; j++) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s%s%d"), mqtt_data, (j > 1) ? "," : "", j);
|
ResponseAppend_P(PSTR("%s%d"), (j > 1) ? "," : "", j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s\"}"), mqtt_data);
|
ResponseAppend_P(PSTR("\"}"));
|
||||||
} else {
|
} else {
|
||||||
Settings.flag.interlock = 0;
|
Settings.flag.interlock = 0;
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, GetStateText(Settings.flag.interlock));
|
Response_P(S_JSON_COMMAND_SVALUE, command, GetStateText(Settings.flag.interlock));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (CMND_TELEPERIOD == command_code) {
|
else if (CMND_TELEPERIOD == command_code) {
|
||||||
@ -1301,20 +1306,20 @@ void MqttDataHandler(char* topic, uint8_t* data, unsigned int data_len)
|
|||||||
if ((Settings.tele_period > 0) && (Settings.tele_period < 10)) Settings.tele_period = 10; // Do not allow periods < 10 seconds
|
if ((Settings.tele_period > 0) && (Settings.tele_period < 10)) Settings.tele_period = 10; // Do not allow periods < 10 seconds
|
||||||
tele_period = Settings.tele_period;
|
tele_period = Settings.tele_period;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE_UNIT, command, Settings.tele_period, (Settings.flag.value_units) ? " " D_UNIT_SECOND : "");
|
Response_P(S_JSON_COMMAND_NVALUE_UNIT, command, Settings.tele_period, (Settings.flag.value_units) ? " " D_UNIT_SECOND : "");
|
||||||
}
|
}
|
||||||
else if (CMND_RESET == command_code) {
|
else if (CMND_RESET == command_code) {
|
||||||
switch (payload) {
|
switch (payload) {
|
||||||
case 1:
|
case 1:
|
||||||
restart_flag = 211;
|
restart_flag = 211;
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command , D_JSON_RESET_AND_RESTARTING);
|
Response_P(S_JSON_COMMAND_SVALUE, command , D_JSON_RESET_AND_RESTARTING);
|
||||||
break;
|
break;
|
||||||
case 2 ... 6:
|
case 2 ... 6:
|
||||||
restart_flag = 210 + payload;
|
restart_flag = 210 + payload;
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_RESET "\":\"" D_JSON_ERASE ", " D_JSON_RESET_AND_RESTARTING "\"}"));
|
Response_P(PSTR("{\"" D_CMND_RESET "\":\"" D_JSON_ERASE ", " D_JSON_RESET_AND_RESTARTING "\"}"));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, D_JSON_ONE_TO_RESET);
|
Response_P(S_JSON_COMMAND_SVALUE, command, D_JSON_ONE_TO_RESET);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (CMND_TIMEZONE == command_code) {
|
else if (CMND_TIMEZONE == command_code) {
|
||||||
@ -1336,10 +1341,10 @@ void MqttDataHandler(char* topic, uint8_t* data, unsigned int data_len)
|
|||||||
ntp_force_sync = true;
|
ntp_force_sync = true;
|
||||||
}
|
}
|
||||||
if (99 == Settings.timezone) {
|
if (99 == Settings.timezone) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, Settings.timezone);
|
Response_P(S_JSON_COMMAND_NVALUE, command, Settings.timezone);
|
||||||
} else {
|
} else {
|
||||||
snprintf_P(stemp1, sizeof(stemp1), PSTR("%+03d:%02d"), Settings.timezone, Settings.timezone_minutes);
|
snprintf_P(stemp1, sizeof(stemp1), PSTR("%+03d:%02d"), Settings.timezone, Settings.timezone_minutes);
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, stemp1);
|
Response_P(S_JSON_COMMAND_SVALUE, command, stemp1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ((CMND_TIMESTD == command_code) || (CMND_TIMEDST == command_code)) {
|
else if ((CMND_TIMESTD == command_code) || (CMND_TIMEDST == command_code)) {
|
||||||
@ -1380,14 +1385,14 @@ void MqttDataHandler(char* topic, uint8_t* data, unsigned int data_len)
|
|||||||
ntp_force_sync = true;
|
ntp_force_sync = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"%s\":{\"Hemisphere\":%d,\"Week\":%d,\"Month\":%d,\"Day\":%d,\"Hour\":%d,\"Offset\":%d}}"),
|
Response_P(PSTR("{\"%s\":{\"Hemisphere\":%d,\"Week\":%d,\"Month\":%d,\"Day\":%d,\"Hour\":%d,\"Offset\":%d}}"),
|
||||||
command, Settings.tflag[ts].hemis, Settings.tflag[ts].week, Settings.tflag[ts].month, Settings.tflag[ts].dow, Settings.tflag[ts].hour, Settings.toffset[ts]);
|
command, Settings.tflag[ts].hemis, Settings.tflag[ts].week, Settings.tflag[ts].month, Settings.tflag[ts].dow, Settings.tflag[ts].hour, Settings.toffset[ts]);
|
||||||
}
|
}
|
||||||
else if (CMND_ALTITUDE == command_code) {
|
else if (CMND_ALTITUDE == command_code) {
|
||||||
if ((data_len > 0) && ((payload >= -30000) && (payload <= 30000))) {
|
if ((data_len > 0) && ((payload >= -30000) && (payload <= 30000))) {
|
||||||
Settings.altitude = payload;
|
Settings.altitude = payload;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, Settings.altitude);
|
Response_P(S_JSON_COMMAND_NVALUE, command, Settings.altitude);
|
||||||
}
|
}
|
||||||
else if (CMND_LEDPOWER == command_code) {
|
else if (CMND_LEDPOWER == command_code) {
|
||||||
if ((payload >= 0) && (payload <= 2)) {
|
if ((payload >= 0) && (payload <= 2)) {
|
||||||
@ -1404,7 +1409,7 @@ void MqttDataHandler(char* topic, uint8_t* data, unsigned int data_len)
|
|||||||
blinks = 0;
|
blinks = 0;
|
||||||
SetLedPower(Settings.ledstate &8);
|
SetLedPower(Settings.ledstate &8);
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, GetStateText(bitRead(Settings.ledstate, 3)));
|
Response_P(S_JSON_COMMAND_SVALUE, command, GetStateText(bitRead(Settings.ledstate, 3)));
|
||||||
}
|
}
|
||||||
else if (CMND_LEDSTATE == command_code) {
|
else if (CMND_LEDSTATE == command_code) {
|
||||||
if ((payload >= 0) && (payload < MAX_LED_OPTION)) {
|
if ((payload >= 0) && (payload < MAX_LED_OPTION)) {
|
||||||
@ -1414,7 +1419,7 @@ void MqttDataHandler(char* topic, uint8_t* data, unsigned int data_len)
|
|||||||
SetLedLink(0);
|
SetLedLink(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, Settings.ledstate);
|
Response_P(S_JSON_COMMAND_NVALUE, command, Settings.ledstate);
|
||||||
}
|
}
|
||||||
#ifdef USE_I2C
|
#ifdef USE_I2C
|
||||||
else if ((CMND_I2CSCAN == command_code) && i2c_flg) {
|
else if ((CMND_I2CSCAN == command_code) && i2c_flg) {
|
||||||
@ -1426,10 +1431,10 @@ void MqttDataHandler(char* topic, uint8_t* data, unsigned int data_len)
|
|||||||
if (type == NULL) {
|
if (type == NULL) {
|
||||||
blinks = 201;
|
blinks = 201;
|
||||||
snprintf_P(topicBuf, sizeof(topicBuf), PSTR(D_JSON_COMMAND));
|
snprintf_P(topicBuf, sizeof(topicBuf), PSTR(D_JSON_COMMAND));
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_COMMAND "\":\"" D_JSON_UNKNOWN "\"}"));
|
Response_P(PSTR("{\"" D_JSON_COMMAND "\":\"" D_JSON_UNKNOWN "\"}"));
|
||||||
type = (char*)topicBuf;
|
type = (char*)topicBuf;
|
||||||
}
|
}
|
||||||
if (mqtt_data[0] != '\0') MqttPublishPrefixTopic_P(RESULT_OR_STAT, type);
|
if (mqtt_data[0] != '\0') { MqttPublishPrefixTopic_P(RESULT_OR_STAT, type); }
|
||||||
fallback_topic_flag = false;
|
fallback_topic_flag = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1641,19 +1646,19 @@ void PublishStatus(uint8_t payload)
|
|||||||
for (uint8_t i = 0; i < MAX_SWITCHES; i++) {
|
for (uint8_t i = 0; i < MAX_SWITCHES; i++) {
|
||||||
snprintf_P(stemp2, sizeof(stemp2), PSTR("%s%s%d" ), stemp2, (i > 0 ? "," : ""), Settings.switchmode[i]);
|
snprintf_P(stemp2, sizeof(stemp2), PSTR("%s%s%d" ), stemp2, (i > 0 ? "," : ""), Settings.switchmode[i]);
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_STATUS "\":{\"" D_CMND_MODULE "\":%d,\"" D_CMND_FRIENDLYNAME "\":[%s],\"" D_CMND_TOPIC "\":\"%s\",\"" D_CMND_BUTTONTOPIC "\":\"%s\",\"" D_CMND_POWER "\":%d,\"" D_CMND_POWERONSTATE "\":%d,\"" D_CMND_LEDSTATE "\":%d,\"" D_CMND_SAVEDATA "\":%d,\"" D_JSON_SAVESTATE "\":%d,\"" D_CMND_SWITCHTOPIC "\":\"%s\",\"" D_CMND_SWITCHMODE "\":[%s],\"" D_CMND_BUTTONRETAIN "\":%d,\"" D_CMND_SWITCHRETAIN "\":%d,\"" D_CMND_SENSORRETAIN "\":%d,\"" D_CMND_POWERRETAIN "\":%d}}"),
|
Response_P(PSTR("{\"" D_CMND_STATUS "\":{\"" D_CMND_MODULE "\":%d,\"" D_CMND_FRIENDLYNAME "\":[%s],\"" D_CMND_TOPIC "\":\"%s\",\"" D_CMND_BUTTONTOPIC "\":\"%s\",\"" D_CMND_POWER "\":%d,\"" D_CMND_POWERONSTATE "\":%d,\"" D_CMND_LEDSTATE "\":%d,\"" D_CMND_SAVEDATA "\":%d,\"" D_JSON_SAVESTATE "\":%d,\"" D_CMND_SWITCHTOPIC "\":\"%s\",\"" D_CMND_SWITCHMODE "\":[%s],\"" D_CMND_BUTTONRETAIN "\":%d,\"" D_CMND_SWITCHRETAIN "\":%d,\"" D_CMND_SENSORRETAIN "\":%d,\"" D_CMND_POWERRETAIN "\":%d}}"),
|
||||||
ModuleNr(), stemp, mqtt_topic, Settings.button_topic, power, Settings.poweronstate, Settings.ledstate, Settings.save_data, Settings.flag.save_state, Settings.switch_topic, stemp2, Settings.flag.mqtt_button_retain, Settings.flag.mqtt_switch_retain, Settings.flag.mqtt_sensor_retain, Settings.flag.mqtt_power_retain);
|
ModuleNr(), stemp, mqtt_topic, Settings.button_topic, power, Settings.poweronstate, Settings.ledstate, Settings.save_data, Settings.flag.save_state, Settings.switch_topic, stemp2, Settings.flag.mqtt_button_retain, Settings.flag.mqtt_switch_retain, Settings.flag.mqtt_sensor_retain, Settings.flag.mqtt_power_retain);
|
||||||
MqttPublishPrefixTopic_P(option, PSTR(D_CMND_STATUS));
|
MqttPublishPrefixTopic_P(option, PSTR(D_CMND_STATUS));
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((0 == payload) || (1 == payload)) {
|
if ((0 == payload) || (1 == payload)) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_STATUS D_STATUS1_PARAMETER "\":{\"" D_JSON_BAUDRATE "\":%d,\"" D_CMND_GROUPTOPIC "\":\"%s\",\"" D_CMND_OTAURL "\":\"%s\",\"" D_JSON_RESTARTREASON "\":\"%s\",\"" D_JSON_UPTIME "\":\"%s\",\"" D_JSON_STARTUPUTC "\":\"%s\",\"" D_CMND_SLEEP "\":%d,\"" D_JSON_CONFIG_HOLDER "\":%d,\"" D_JSON_BOOTCOUNT "\":%d,\"" D_JSON_SAVECOUNT "\":%d,\"" D_JSON_SAVEADDRESS "\":\"%X\"}}"),
|
Response_P(PSTR("{\"" D_CMND_STATUS D_STATUS1_PARAMETER "\":{\"" D_JSON_BAUDRATE "\":%d,\"" D_CMND_GROUPTOPIC "\":\"%s\",\"" D_CMND_OTAURL "\":\"%s\",\"" D_JSON_RESTARTREASON "\":\"%s\",\"" D_JSON_UPTIME "\":\"%s\",\"" D_JSON_STARTUPUTC "\":\"%s\",\"" D_CMND_SLEEP "\":%d,\"" D_JSON_CONFIG_HOLDER "\":%d,\"" D_JSON_BOOTCOUNT "\":%d,\"" D_JSON_SAVECOUNT "\":%d,\"" D_JSON_SAVEADDRESS "\":\"%X\"}}"),
|
||||||
baudrate, Settings.mqtt_grptopic, Settings.ota_url, GetResetReason().c_str(), GetUptime().c_str(), GetDateAndTime(DT_RESTART).c_str(), Settings.sleep, Settings.cfg_holder, Settings.bootcount, Settings.save_flag, GetSettingsAddress());
|
baudrate, Settings.mqtt_grptopic, Settings.ota_url, GetResetReason().c_str(), GetUptime().c_str(), GetDateAndTime(DT_RESTART).c_str(), Settings.sleep, Settings.cfg_holder, Settings.bootcount, Settings.save_flag, GetSettingsAddress());
|
||||||
MqttPublishPrefixTopic_P(option, PSTR(D_CMND_STATUS "1"));
|
MqttPublishPrefixTopic_P(option, PSTR(D_CMND_STATUS "1"));
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((0 == payload) || (2 == payload)) {
|
if ((0 == payload) || (2 == payload)) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_STATUS D_STATUS2_FIRMWARE "\":{\"" D_JSON_VERSION "\":\"%s%s\",\"" D_JSON_BUILDDATETIME "\":\"%s\",\"" D_JSON_BOOTVERSION "\":%d,\"" D_JSON_COREVERSION "\":\"" ARDUINO_ESP8266_RELEASE "\",\"" D_JSON_SDKVERSION "\":\"%s\"}}"),
|
Response_P(PSTR("{\"" D_CMND_STATUS D_STATUS2_FIRMWARE "\":{\"" D_JSON_VERSION "\":\"%s%s\",\"" D_JSON_BUILDDATETIME "\":\"%s\",\"" D_JSON_BOOTVERSION "\":%d,\"" D_JSON_COREVERSION "\":\"" ARDUINO_ESP8266_RELEASE "\",\"" D_JSON_SDKVERSION "\":\"%s\"}}"),
|
||||||
my_version, my_image, GetBuildDateAndTime().c_str(), ESP.getBootVersion(), ESP.getSdkVersion());
|
my_version, my_image, GetBuildDateAndTime().c_str(), ESP.getBootVersion(), ESP.getSdkVersion());
|
||||||
MqttPublishPrefixTopic_P(option, PSTR(D_CMND_STATUS "2"));
|
MqttPublishPrefixTopic_P(option, PSTR(D_CMND_STATUS "2"));
|
||||||
}
|
}
|
||||||
@ -1663,26 +1668,26 @@ void PublishStatus(uint8_t payload)
|
|||||||
for (int8_t i = 0; i < PARAM8_SIZE; i++) {
|
for (int8_t i = 0; i < PARAM8_SIZE; i++) {
|
||||||
snprintf_P(stemp2, sizeof(stemp2), PSTR("%s%02X"), stemp2, Settings.param[i]);
|
snprintf_P(stemp2, sizeof(stemp2), PSTR("%s%02X"), stemp2, Settings.param[i]);
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_STATUS D_STATUS3_LOGGING "\":{\"" D_CMND_SERIALLOG "\":%d,\"" D_CMND_WEBLOG "\":%d,\"" D_CMND_SYSLOG "\":%d,\"" D_CMND_LOGHOST "\":\"%s\",\"" D_CMND_LOGPORT "\":%d,\"" D_CMND_SSID "\":[\"%s\",\"%s\"],\"" D_CMND_TELEPERIOD "\":%d,\"" D_JSON_RESOLUTION "\":\"%08X\",\"" D_CMND_SETOPTION "\":[\"%08X\",\"%s\",\"%08X\"]}}"),
|
Response_P(PSTR("{\"" D_CMND_STATUS D_STATUS3_LOGGING "\":{\"" D_CMND_SERIALLOG "\":%d,\"" D_CMND_WEBLOG "\":%d,\"" D_CMND_SYSLOG "\":%d,\"" D_CMND_LOGHOST "\":\"%s\",\"" D_CMND_LOGPORT "\":%d,\"" D_CMND_SSID "\":[\"%s\",\"%s\"],\"" D_CMND_TELEPERIOD "\":%d,\"" D_JSON_RESOLUTION "\":\"%08X\",\"" D_CMND_SETOPTION "\":[\"%08X\",\"%s\",\"%08X\"]}}"),
|
||||||
Settings.seriallog_level, Settings.weblog_level, Settings.syslog_level, Settings.syslog_host, Settings.syslog_port, Settings.sta_ssid[0], Settings.sta_ssid[1], Settings.tele_period, Settings.flag2.data, Settings.flag.data, stemp2, Settings.flag3.data);
|
Settings.seriallog_level, Settings.weblog_level, Settings.syslog_level, Settings.syslog_host, Settings.syslog_port, Settings.sta_ssid[0], Settings.sta_ssid[1], Settings.tele_period, Settings.flag2.data, Settings.flag.data, stemp2, Settings.flag3.data);
|
||||||
MqttPublishPrefixTopic_P(option, PSTR(D_CMND_STATUS "3"));
|
MqttPublishPrefixTopic_P(option, PSTR(D_CMND_STATUS "3"));
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((0 == payload) || (4 == payload)) {
|
if ((0 == payload) || (4 == payload)) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_STATUS D_STATUS4_MEMORY "\":{\"" D_JSON_PROGRAMSIZE "\":%d,\"" D_JSON_FREEMEMORY "\":%d,\"" D_JSON_HEAPSIZE "\":%d,\"" D_JSON_PROGRAMFLASHSIZE "\":%d,\"" D_JSON_FLASHSIZE "\":%d,\"" D_JSON_FLASHCHIPID "\":\"%06X\",\"" D_JSON_FLASHMODE "\":%d,\"" D_JSON_FEATURES "\":[\"%08X\",\"%08X\",\"%08X\",\"%08X\",\"%08X\"]}}"),
|
Response_P(PSTR("{\"" D_CMND_STATUS D_STATUS4_MEMORY "\":{\"" D_JSON_PROGRAMSIZE "\":%d,\"" D_JSON_FREEMEMORY "\":%d,\"" D_JSON_HEAPSIZE "\":%d,\"" D_JSON_PROGRAMFLASHSIZE "\":%d,\"" D_JSON_FLASHSIZE "\":%d,\"" D_JSON_FLASHCHIPID "\":\"%06X\",\"" D_JSON_FLASHMODE "\":%d,\"" D_JSON_FEATURES "\":[\"%08X\",\"%08X\",\"%08X\",\"%08X\",\"%08X\"]}}"),
|
||||||
ESP.getSketchSize()/1024, ESP.getFreeSketchSpace()/1024, ESP.getFreeHeap()/1024, ESP.getFlashChipSize()/1024, ESP.getFlashChipRealSize()/1024, ESP.getFlashChipId(), ESP.getFlashChipMode(), LANGUAGE_LCID, feature_drv1, feature_drv2, feature_sns1, feature_sns2);
|
ESP.getSketchSize()/1024, ESP.getFreeSketchSpace()/1024, ESP.getFreeHeap()/1024, ESP.getFlashChipSize()/1024, ESP.getFlashChipRealSize()/1024, ESP.getFlashChipId(), ESP.getFlashChipMode(), LANGUAGE_LCID, feature_drv1, feature_drv2, feature_sns1, feature_sns2);
|
||||||
MqttPublishPrefixTopic_P(option, PSTR(D_CMND_STATUS "4"));
|
MqttPublishPrefixTopic_P(option, PSTR(D_CMND_STATUS "4"));
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((0 == payload) || (5 == payload)) {
|
if ((0 == payload) || (5 == payload)) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_STATUS D_STATUS5_NETWORK "\":{\"" D_CMND_HOSTNAME "\":\"%s\",\"" D_CMND_IPADDRESS "\":\"%s\",\"" D_JSON_GATEWAY "\":\"%s\",\"" D_JSON_SUBNETMASK "\":\"%s\",\"" D_JSON_DNSSERVER "\":\"%s\",\"" D_JSON_MAC "\":\"%s\",\"" D_CMND_WEBSERVER "\":%d,\"" D_CMND_WIFICONFIG "\":%d}}"),
|
Response_P(PSTR("{\"" D_CMND_STATUS D_STATUS5_NETWORK "\":{\"" D_CMND_HOSTNAME "\":\"%s\",\"" D_CMND_IPADDRESS "\":\"%s\",\"" D_JSON_GATEWAY "\":\"%s\",\"" D_JSON_SUBNETMASK "\":\"%s\",\"" D_JSON_DNSSERVER "\":\"%s\",\"" D_JSON_MAC "\":\"%s\",\"" D_CMND_WEBSERVER "\":%d,\"" D_CMND_WIFICONFIG "\":%d}}"),
|
||||||
my_hostname, WiFi.localIP().toString().c_str(), IPAddress(Settings.ip_address[1]).toString().c_str(), IPAddress(Settings.ip_address[2]).toString().c_str(), IPAddress(Settings.ip_address[3]).toString().c_str(),
|
my_hostname, WiFi.localIP().toString().c_str(), IPAddress(Settings.ip_address[1]).toString().c_str(), IPAddress(Settings.ip_address[2]).toString().c_str(), IPAddress(Settings.ip_address[3]).toString().c_str(),
|
||||||
WiFi.macAddress().c_str(), Settings.webserver, Settings.sta_config);
|
WiFi.macAddress().c_str(), Settings.webserver, Settings.sta_config);
|
||||||
MqttPublishPrefixTopic_P(option, PSTR(D_CMND_STATUS "5"));
|
MqttPublishPrefixTopic_P(option, PSTR(D_CMND_STATUS "5"));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (((0 == payload) || (6 == payload)) && Settings.flag.mqtt_enabled) {
|
if (((0 == payload) || (6 == payload)) && Settings.flag.mqtt_enabled) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_STATUS D_STATUS6_MQTT "\":{\"" D_CMND_MQTTHOST "\":\"%s\",\"" D_CMND_MQTTPORT "\":%d,\"" D_CMND_MQTTCLIENT D_JSON_MASK "\":\"%s\",\"" D_CMND_MQTTCLIENT "\":\"%s\",\"" D_CMND_MQTTUSER "\":\"%s\",\"" D_JSON_MQTT_COUNT "\":%d,\"MAX_PACKET_SIZE\":%d,\"KEEPALIVE\":%d}}"),
|
Response_P(PSTR("{\"" D_CMND_STATUS D_STATUS6_MQTT "\":{\"" D_CMND_MQTTHOST "\":\"%s\",\"" D_CMND_MQTTPORT "\":%d,\"" D_CMND_MQTTCLIENT D_JSON_MASK "\":\"%s\",\"" D_CMND_MQTTCLIENT "\":\"%s\",\"" D_CMND_MQTTUSER "\":\"%s\",\"" D_JSON_MQTT_COUNT "\":%d,\"MAX_PACKET_SIZE\":%d,\"KEEPALIVE\":%d}}"),
|
||||||
Settings.mqtt_host, Settings.mqtt_port, Settings.mqtt_client, mqtt_client, Settings.mqtt_user, MqttConnectCount(), MQTT_MAX_PACKET_SIZE, MQTT_KEEPALIVE);
|
Settings.mqtt_host, Settings.mqtt_port, Settings.mqtt_client, mqtt_client, Settings.mqtt_user, MqttConnectCount(), MQTT_MAX_PACKET_SIZE, MQTT_KEEPALIVE);
|
||||||
MqttPublishPrefixTopic_P(option, PSTR(D_CMND_STATUS "6"));
|
MqttPublishPrefixTopic_P(option, PSTR(D_CMND_STATUS "6"));
|
||||||
}
|
}
|
||||||
@ -1694,10 +1699,10 @@ void PublishStatus(uint8_t payload)
|
|||||||
snprintf_P(stemp, sizeof(stemp), PSTR("\"%s\"" ), GetTimeZone().c_str());
|
snprintf_P(stemp, sizeof(stemp), PSTR("\"%s\"" ), GetTimeZone().c_str());
|
||||||
}
|
}
|
||||||
#if defined(USE_TIMERS) && defined(USE_SUNRISE)
|
#if defined(USE_TIMERS) && defined(USE_SUNRISE)
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_STATUS D_STATUS7_TIME "\":{\"" D_JSON_UTC_TIME "\":\"%s\",\"" D_JSON_LOCAL_TIME "\":\"%s\",\"" D_JSON_STARTDST "\":\"%s\",\"" D_JSON_ENDDST "\":\"%s\",\"" D_CMND_TIMEZONE "\":%s,\"" D_JSON_SUNRISE "\":\"%s\",\"" D_JSON_SUNSET "\":\"%s\"}}"),
|
Response_P(PSTR("{\"" D_CMND_STATUS D_STATUS7_TIME "\":{\"" D_JSON_UTC_TIME "\":\"%s\",\"" D_JSON_LOCAL_TIME "\":\"%s\",\"" D_JSON_STARTDST "\":\"%s\",\"" D_JSON_ENDDST "\":\"%s\",\"" D_CMND_TIMEZONE "\":%s,\"" D_JSON_SUNRISE "\":\"%s\",\"" D_JSON_SUNSET "\":\"%s\"}}"),
|
||||||
GetTime(0).c_str(), GetTime(1).c_str(), GetTime(2).c_str(), GetTime(3).c_str(), stemp, GetSun(0).c_str(), GetSun(1).c_str());
|
GetTime(0).c_str(), GetTime(1).c_str(), GetTime(2).c_str(), GetTime(3).c_str(), stemp, GetSun(0).c_str(), GetSun(1).c_str());
|
||||||
#else
|
#else
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_STATUS D_STATUS7_TIME "\":{\"" D_JSON_UTC_TIME "\":\"%s\",\"" D_JSON_LOCAL_TIME "\":\"%s\",\"" D_JSON_STARTDST "\":\"%s\",\"" D_JSON_ENDDST "\":\"%s\",\"" D_CMND_TIMEZONE "\":%s}}"),
|
Response_P(PSTR("{\"" D_CMND_STATUS D_STATUS7_TIME "\":{\"" D_JSON_UTC_TIME "\":\"%s\",\"" D_JSON_LOCAL_TIME "\":\"%s\",\"" D_JSON_STARTDST "\":\"%s\",\"" D_JSON_ENDDST "\":\"%s\",\"" D_CMND_TIMEZONE "\":%s}}"),
|
||||||
GetTime(0).c_str(), GetTime(1).c_str(), GetTime(2).c_str(), GetTime(3).c_str(), stemp);
|
GetTime(0).c_str(), GetTime(1).c_str(), GetTime(2).c_str(), GetTime(3).c_str(), stemp);
|
||||||
#endif // USE_TIMERS and USE_SUNRISE
|
#endif // USE_TIMERS and USE_SUNRISE
|
||||||
MqttPublishPrefixTopic_P(option, PSTR(D_CMND_STATUS "7"));
|
MqttPublishPrefixTopic_P(option, PSTR(D_CMND_STATUS "7"));
|
||||||
@ -1705,16 +1710,16 @@ void PublishStatus(uint8_t payload)
|
|||||||
|
|
||||||
if (energy_flg) {
|
if (energy_flg) {
|
||||||
if ((0 == payload) || (9 == payload)) {
|
if ((0 == payload) || (9 == payload)) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_STATUS D_STATUS9_MARGIN "\":{\"" D_CMND_POWERDELTA "\":%d,\"" D_CMND_POWERLOW "\":%d,\"" D_CMND_POWERHIGH "\":%d,\"" D_CMND_VOLTAGELOW "\":%d,\"" D_CMND_VOLTAGEHIGH "\":%d,\"" D_CMND_CURRENTLOW "\":%d,\"" D_CMND_CURRENTHIGH "\":%d}}"),
|
Response_P(PSTR("{\"" D_CMND_STATUS D_STATUS9_MARGIN "\":{\"" D_CMND_POWERDELTA "\":%d,\"" D_CMND_POWERLOW "\":%d,\"" D_CMND_POWERHIGH "\":%d,\"" D_CMND_VOLTAGELOW "\":%d,\"" D_CMND_VOLTAGEHIGH "\":%d,\"" D_CMND_CURRENTLOW "\":%d,\"" D_CMND_CURRENTHIGH "\":%d}}"),
|
||||||
Settings.energy_power_delta, Settings.energy_min_power, Settings.energy_max_power, Settings.energy_min_voltage, Settings.energy_max_voltage, Settings.energy_min_current, Settings.energy_max_current);
|
Settings.energy_power_delta, Settings.energy_min_power, Settings.energy_max_power, Settings.energy_min_voltage, Settings.energy_max_voltage, Settings.energy_min_current, Settings.energy_max_current);
|
||||||
MqttPublishPrefixTopic_P(option, PSTR(D_CMND_STATUS "9"));
|
MqttPublishPrefixTopic_P(option, PSTR(D_CMND_STATUS "9"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((0 == payload) || (8 == payload) || (10 == payload)) {
|
if ((0 == payload) || (8 == payload) || (10 == payload)) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_STATUS D_STATUS10_SENSOR "\":"));
|
Response_P(PSTR("{\"" D_CMND_STATUS D_STATUS10_SENSOR "\":"));
|
||||||
MqttShowSensor();
|
MqttShowSensor();
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s}"), mqtt_data);
|
ResponseAppend_P(PSTR("}"));
|
||||||
if (8 == payload) {
|
if (8 == payload) {
|
||||||
MqttPublishPrefixTopic_P(option, PSTR(D_CMND_STATUS "8"));
|
MqttPublishPrefixTopic_P(option, PSTR(D_CMND_STATUS "8"));
|
||||||
} else {
|
} else {
|
||||||
@ -1723,9 +1728,9 @@ void PublishStatus(uint8_t payload)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ((0 == payload) || (11 == payload)) {
|
if ((0 == payload) || (11 == payload)) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_STATUS D_STATUS11_STATUS "\":"));
|
Response_P(PSTR("{\"" D_CMND_STATUS D_STATUS11_STATUS "\":"));
|
||||||
MqttShowState();
|
MqttShowState();
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s}"), mqtt_data);
|
ResponseAppend_P(PSTR("}"));
|
||||||
MqttPublishPrefixTopic_P(option, PSTR(D_CMND_STATUS "11"));
|
MqttPublishPrefixTopic_P(option, PSTR(D_CMND_STATUS "11"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1733,50 +1738,50 @@ void PublishStatus(uint8_t payload)
|
|||||||
|
|
||||||
void MqttShowPWMState(void)
|
void MqttShowPWMState(void)
|
||||||
{
|
{
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s\"" D_CMND_PWM "\":{"), mqtt_data);
|
ResponseAppend_P(PSTR("\"" D_CMND_PWM "\":{"));
|
||||||
bool first = true;
|
bool first = true;
|
||||||
for (uint8_t i = 0; i < MAX_PWMS; i++) {
|
for (uint8_t i = 0; i < MAX_PWMS; i++) {
|
||||||
if (pin[GPIO_PWM1 + i] < 99) {
|
if (pin[GPIO_PWM1 + i] < 99) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s%s\"" D_CMND_PWM "%d\":%d"), mqtt_data, first ? "" : ",", i+1, Settings.pwm_value[i]);
|
ResponseAppend_P(PSTR("%s\"" D_CMND_PWM "%d\":%d"), first ? "" : ",", i+1, Settings.pwm_value[i]);
|
||||||
first = false;
|
first = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s}"), mqtt_data);
|
ResponseAppend_P(PSTR("}"));
|
||||||
}
|
}
|
||||||
|
|
||||||
void MqttShowState(void)
|
void MqttShowState(void)
|
||||||
{
|
{
|
||||||
char stemp1[33];
|
char stemp1[33];
|
||||||
|
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s{\"" D_JSON_TIME "\":\"%s\",\"" D_JSON_UPTIME "\":\"%s\""), mqtt_data, GetDateAndTime(DT_LOCAL).c_str(), GetUptime().c_str());
|
ResponseAppend_P(PSTR("{\"" D_JSON_TIME "\":\"%s\",\"" D_JSON_UPTIME "\":\"%s\""), GetDateAndTime(DT_LOCAL).c_str(), GetUptime().c_str());
|
||||||
|
|
||||||
#ifdef USE_ADC_VCC
|
#ifdef USE_ADC_VCC
|
||||||
dtostrfd((double)ESP.getVcc()/1000, 3, stemp1);
|
dtostrfd((double)ESP.getVcc()/1000, 3, stemp1);
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"" D_JSON_VCC "\":%s"), mqtt_data, stemp1);
|
ResponseAppend_P(PSTR(",\"" D_JSON_VCC "\":%s"), stemp1);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"SleepMode\":\"%s\",\"Sleep\":%u,\"LoadAvg\":%u"),
|
ResponseAppend_P(PSTR(",\"SleepMode\":\"%s\",\"Sleep\":%u,\"LoadAvg\":%u"),
|
||||||
mqtt_data, GetTextIndexed(stemp1, sizeof(stemp1), Settings.flag3.sleep_normal, kSleepMode), sleep, loop_load_avg);
|
GetTextIndexed(stemp1, sizeof(stemp1), Settings.flag3.sleep_normal, kSleepMode), sleep, loop_load_avg);
|
||||||
|
|
||||||
for (uint8_t i = 0; i < devices_present; i++) {
|
for (uint8_t i = 0; i < devices_present; i++) {
|
||||||
if (i == light_device -1) {
|
if (i == light_device -1) {
|
||||||
LightState(1);
|
LightState(1);
|
||||||
} else {
|
} else {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"%s\":\"%s\""), mqtt_data, GetPowerDevice(stemp1, i +1, sizeof(stemp1), Settings.flag.device_index_enable), GetStateText(bitRead(power, i)));
|
ResponseAppend_P(PSTR(",\"%s\":\"%s\""), GetPowerDevice(stemp1, i +1, sizeof(stemp1), Settings.flag.device_index_enable), GetStateText(bitRead(power, i)));
|
||||||
if (SONOFF_IFAN02 == my_module_type) {
|
if (SONOFF_IFAN02 == my_module_type) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"" D_CMND_FANSPEED "\":%d"), mqtt_data, GetFanspeed());
|
ResponseAppend_P(PSTR(",\"" D_CMND_FANSPEED "\":%d"), GetFanspeed());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pwm_present) {
|
if (pwm_present) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,"), mqtt_data);
|
ResponseAppend_P(PSTR(","));
|
||||||
MqttShowPWMState();
|
MqttShowPWMState();
|
||||||
}
|
}
|
||||||
|
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"" D_JSON_WIFI "\":{\"" D_JSON_AP "\":%d,\"" D_JSON_SSID "\":\"%s\",\"" D_JSON_BSSID "\":\"%s\",\"" D_JSON_CHANNEL "\":%d,\"" D_JSON_RSSI "\":%d,\"" D_JSON_LINK_COUNT "\":%d,\"" D_JSON_DOWNTIME "\":\"%s\"}}"),
|
ResponseAppend_P(PSTR(",\"" D_JSON_WIFI "\":{\"" D_JSON_AP "\":%d,\"" D_JSON_SSID "\":\"%s\",\"" D_JSON_BSSID "\":\"%s\",\"" D_JSON_CHANNEL "\":%d,\"" D_JSON_RSSI "\":%d,\"" D_JSON_LINK_COUNT "\":%d,\"" D_JSON_DOWNTIME "\":\"%s\"}}"),
|
||||||
mqtt_data, Settings.sta_active +1, Settings.sta_ssid[Settings.sta_active], WiFi.BSSIDstr().c_str(), WiFi.channel(), WifiGetRssiAsQuality(WiFi.RSSI()), WifiLinkCount(), WifiDowntime().c_str());
|
Settings.sta_active +1, Settings.sta_ssid[Settings.sta_active], WiFi.BSSIDstr().c_str(), WiFi.channel(), WifiGetRssiAsQuality(WiFi.RSSI()), WifiLinkCount(), WifiDowntime().c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
void MqttPublishTeleState(void)
|
void MqttPublishTeleState(void)
|
||||||
@ -1788,7 +1793,7 @@ void MqttPublishTeleState(void)
|
|||||||
|
|
||||||
bool MqttShowSensor(void)
|
bool MqttShowSensor(void)
|
||||||
{
|
{
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s{\"" D_JSON_TIME "\":\"%s\""), mqtt_data, GetDateAndTime(DT_LOCAL).c_str());
|
ResponseAppend_P(PSTR("{\"" D_JSON_TIME "\":\"%s\""), GetDateAndTime(DT_LOCAL).c_str());
|
||||||
int json_data_start = strlen(mqtt_data);
|
int json_data_start = strlen(mqtt_data);
|
||||||
for (uint8_t i = 0; i < MAX_SWITCHES; i++) {
|
for (uint8_t i = 0; i < MAX_SWITCHES; i++) {
|
||||||
#ifdef USE_TM1638
|
#ifdef USE_TM1638
|
||||||
@ -1797,20 +1802,20 @@ bool MqttShowSensor(void)
|
|||||||
if (pin[GPIO_SWT1 +i] < 99) {
|
if (pin[GPIO_SWT1 +i] < 99) {
|
||||||
#endif // USE_TM1638
|
#endif // USE_TM1638
|
||||||
bool swm = ((FOLLOW_INV == Settings.switchmode[i]) || (PUSHBUTTON_INV == Settings.switchmode[i]) || (PUSHBUTTONHOLD_INV == Settings.switchmode[i]));
|
bool swm = ((FOLLOW_INV == Settings.switchmode[i]) || (PUSHBUTTON_INV == Settings.switchmode[i]) || (PUSHBUTTONHOLD_INV == Settings.switchmode[i]));
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"" D_JSON_SWITCH "%d\":\"%s\""), mqtt_data, i +1, GetStateText(swm ^ SwitchLastState(i)));
|
ResponseAppend_P(PSTR(",\"" D_JSON_SWITCH "%d\":\"%s\""), i +1, GetStateText(swm ^ SwitchLastState(i)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
XsnsCall(FUNC_JSON_APPEND);
|
XsnsCall(FUNC_JSON_APPEND);
|
||||||
bool json_data_available = (strlen(mqtt_data) - json_data_start);
|
bool json_data_available = (strlen(mqtt_data) - json_data_start);
|
||||||
if (strstr_P(mqtt_data, PSTR(D_JSON_PRESSURE))) {
|
if (strstr_P(mqtt_data, PSTR(D_JSON_PRESSURE))) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"" D_JSON_PRESSURE_UNIT "\":\"%s\""), mqtt_data, PressureUnit().c_str());
|
ResponseAppend_P(PSTR(",\"" D_JSON_PRESSURE_UNIT "\":\"%s\""), PressureUnit().c_str());
|
||||||
}
|
}
|
||||||
if (strstr_P(mqtt_data, PSTR(D_JSON_TEMPERATURE))) {
|
if (strstr_P(mqtt_data, PSTR(D_JSON_TEMPERATURE))) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"" D_JSON_TEMPERATURE_UNIT "\":\"%c\""), mqtt_data, TempUnit());
|
ResponseAppend_P(PSTR(",\"" D_JSON_TEMPERATURE_UNIT "\":\"%c\""), TempUnit());
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s}"), mqtt_data);
|
ResponseAppend_P(PSTR("}"));
|
||||||
|
|
||||||
if (json_data_available) XdrvCall(FUNC_SHOW_SENSOR);
|
if (json_data_available) { XdrvCall(FUNC_SHOW_SENSOR); }
|
||||||
return json_data_available;
|
return json_data_available;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1880,7 +1885,7 @@ void PerformEverySecond(void)
|
|||||||
|
|
||||||
if ((2 == RtcTime.minute) && latest_uptime_flag) {
|
if ((2 == RtcTime.minute) && latest_uptime_flag) {
|
||||||
latest_uptime_flag = false;
|
latest_uptime_flag = false;
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_TIME "\":\"%s\",\"" D_JSON_UPTIME "\":\"%s\"}"), GetDateAndTime(DT_LOCAL).c_str(), GetUptime().c_str());
|
Response_P(PSTR("{\"" D_JSON_TIME "\":\"%s\",\"" D_JSON_UPTIME "\":\"%s\"}"), GetDateAndTime(DT_LOCAL).c_str(), GetUptime().c_str());
|
||||||
MqttPublishPrefixTopic_P(TELE, PSTR(D_RSLT_UPTIME));
|
MqttPublishPrefixTopic_P(TELE, PSTR(D_RSLT_UPTIME));
|
||||||
}
|
}
|
||||||
if ((3 == RtcTime.minute) && !latest_uptime_flag) latest_uptime_flag = true;
|
if ((3 == RtcTime.minute) && !latest_uptime_flag) latest_uptime_flag = true;
|
||||||
@ -2054,9 +2059,9 @@ void Every250mSeconds(void)
|
|||||||
ota_state_flag = 0;
|
ota_state_flag = 0;
|
||||||
if (ota_result) {
|
if (ota_result) {
|
||||||
// SetFlashModeDout(); // Force DOUT for both ESP8266 and ESP8285
|
// SetFlashModeDout(); // Force DOUT for both ESP8266 and ESP8285
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR(D_JSON_SUCCESSFUL ". " D_JSON_RESTARTING));
|
Response_P(PSTR(D_JSON_SUCCESSFUL ". " D_JSON_RESTARTING));
|
||||||
} else {
|
} else {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR(D_JSON_FAILED " %s"), ESPhttpUpdate.getLastErrorString().c_str());
|
Response_P(PSTR(D_JSON_FAILED " %s"), ESPhttpUpdate.getLastErrorString().c_str());
|
||||||
}
|
}
|
||||||
restart_flag = 2; // Restart anyway to keep memory clean webserver
|
restart_flag = 2; // Restart anyway to keep memory clean webserver
|
||||||
MqttPublishPrefixTopic_P(STAT, PSTR(D_CMND_UPGRADE));
|
MqttPublishPrefixTopic_P(STAT, PSTR(D_CMND_UPGRADE));
|
||||||
@ -2298,13 +2303,13 @@ void SerialInput(void)
|
|||||||
if (Settings.flag.mqtt_serial && serial_in_byte_counter && (millis() > (serial_polling_window + SERIAL_POLLING))) {
|
if (Settings.flag.mqtt_serial && serial_in_byte_counter && (millis() > (serial_polling_window + SERIAL_POLLING))) {
|
||||||
serial_in_buffer[serial_in_byte_counter] = 0; // Serial data completed
|
serial_in_buffer[serial_in_byte_counter] = 0; // Serial data completed
|
||||||
if (!Settings.flag.mqtt_serial_raw) {
|
if (!Settings.flag.mqtt_serial_raw) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_SERIALRECEIVED "\":\"%s\"}"), serial_in_buffer);
|
Response_P(PSTR("{\"" D_JSON_SERIALRECEIVED "\":\"%s\"}"), serial_in_buffer);
|
||||||
} else {
|
} else {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_SERIALRECEIVED "\":\""));
|
Response_P(PSTR("{\"" D_JSON_SERIALRECEIVED "\":\""));
|
||||||
for (int i = 0; i < serial_in_byte_counter; i++) {
|
for (int i = 0; i < serial_in_byte_counter; i++) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s%02x"), mqtt_data, serial_in_buffer[i]);
|
ResponseAppend_P(PSTR("%02x"), serial_in_buffer[i]);
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s\"}"), mqtt_data);
|
ResponseAppend_P(PSTR("\"}"));
|
||||||
}
|
}
|
||||||
MqttPublishPrefixTopic_P(RESULT_OR_TELE, PSTR(D_JSON_SERIALRECEIVED));
|
MqttPublishPrefixTopic_P(RESULT_OR_TELE, PSTR(D_JSON_SERIALRECEIVED));
|
||||||
// XdrvRulesProcess();
|
// XdrvRulesProcess();
|
||||||
|
@ -697,6 +697,31 @@ void ShowSource(int source)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*********************************************************************************************\
|
||||||
|
* Response data handling
|
||||||
|
\*********************************************************************************************/
|
||||||
|
|
||||||
|
int Response_P(const char* formatP, ...) // Content send snprintf_P char data
|
||||||
|
{
|
||||||
|
// This uses char strings. Be aware of sending %% if % is needed
|
||||||
|
va_list arg;
|
||||||
|
va_start(arg, formatP);
|
||||||
|
int len = vsnprintf_P(mqtt_data, sizeof(mqtt_data), formatP, arg);
|
||||||
|
va_end(arg);
|
||||||
|
return len;
|
||||||
|
}
|
||||||
|
|
||||||
|
int ResponseAppend_P(const char* formatP, ...) // Content send snprintf_P char data
|
||||||
|
{
|
||||||
|
// This uses char strings. Be aware of sending %% if % is needed
|
||||||
|
va_list arg;
|
||||||
|
va_start(arg, formatP);
|
||||||
|
int mlen = strlen(mqtt_data);
|
||||||
|
int len = vsnprintf_P(mqtt_data + mlen, sizeof(mqtt_data) - mlen, formatP, arg);
|
||||||
|
va_end(arg);
|
||||||
|
return len + mlen;
|
||||||
|
}
|
||||||
|
|
||||||
/*********************************************************************************************\
|
/*********************************************************************************************\
|
||||||
* GPIO Module and Template management
|
* GPIO Module and Template management
|
||||||
\*********************************************************************************************/
|
\*********************************************************************************************/
|
||||||
@ -883,12 +908,11 @@ bool JsonTemplate(const char* dataBuf)
|
|||||||
|
|
||||||
void TemplateJson()
|
void TemplateJson()
|
||||||
{
|
{
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_NAME "\":\"%s\",\"" D_JSON_GPIO "\":["), Settings.user_template.name);
|
Response_P(PSTR("{\"" D_JSON_NAME "\":\"%s\",\"" D_JSON_GPIO "\":["), Settings.user_template.name);
|
||||||
for (uint8_t i = 0; i < sizeof(Settings.user_template.gp); i++) {
|
for (uint8_t i = 0; i < sizeof(Settings.user_template.gp); i++) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s%s%d"), mqtt_data, (i>0)?",":"", Settings.user_template.gp.io[i]);
|
ResponseAppend_P(PSTR("%s%d"), (i>0)?",":"", Settings.user_template.gp.io[i]);
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s],\"" D_JSON_FLAG "\":%d,\"" D_JSON_BASE "\":%d}"),
|
ResponseAppend_P(PSTR("],\"" D_JSON_FLAG "\":%d,\"" D_JSON_BASE "\":%d}"), Settings.user_template.flag, Settings.user_template_base +1);
|
||||||
mqtt_data, Settings.user_template.flag, Settings.user_template_base +1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*********************************************************************************************\
|
/*********************************************************************************************\
|
||||||
|
@ -2136,13 +2136,12 @@ void HandleNotFound(void)
|
|||||||
} else
|
} else
|
||||||
#endif // USE_EMULATION
|
#endif // USE_EMULATION
|
||||||
{
|
{
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR(D_FILE_NOT_FOUND "\n\nURI: %s\nMethod: %s\nArguments: %d\n"),
|
WSContentBegin(404, CT_PLAIN);
|
||||||
WebServer->uri().c_str(), (WebServer->method() == HTTP_GET) ? "GET" : "POST", WebServer->args());
|
WSContentSend_P(PSTR(D_FILE_NOT_FOUND "\n\nURI: %s\nMethod: %s\nArguments: %d\n"), WebServer->uri().c_str(), (WebServer->method() == HTTP_GET) ? "GET" : "POST", WebServer->args());
|
||||||
for (uint8_t i = 0; i < WebServer->args(); i++) {
|
for (uint8_t i = 0; i < WebServer->args(); i++) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s %s: %s\n"), mqtt_data, WebServer->argName(i).c_str(), WebServer->arg(i).c_str());
|
WSContentSend_P(PSTR(" %s: %s\n"), WebServer->argName(i).c_str(), WebServer->arg(i).c_str());
|
||||||
}
|
}
|
||||||
WSHeaderSend();
|
WSContentEnd();
|
||||||
WSSend(404, CT_PLAIN, mqtt_data);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2301,33 +2300,33 @@ bool WebCommand(void)
|
|||||||
if (CMND_WEBSERVER == command_code) {
|
if (CMND_WEBSERVER == command_code) {
|
||||||
if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 2)) { Settings.webserver = XdrvMailbox.payload; }
|
if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 2)) { Settings.webserver = XdrvMailbox.payload; }
|
||||||
if (Settings.webserver) {
|
if (Settings.webserver) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_WEBSERVER "\":\"" D_JSON_ACTIVE_FOR " %s " D_JSON_ON_DEVICE " %s " D_JSON_WITH_IP_ADDRESS " %s\"}"),
|
Response_P(PSTR("{\"" D_CMND_WEBSERVER "\":\"" D_JSON_ACTIVE_FOR " %s " D_JSON_ON_DEVICE " %s " D_JSON_WITH_IP_ADDRESS " %s\"}"),
|
||||||
(2 == Settings.webserver) ? D_ADMIN : D_USER, my_hostname, WiFi.localIP().toString().c_str());
|
(2 == Settings.webserver) ? D_ADMIN : D_USER, my_hostname, WiFi.localIP().toString().c_str());
|
||||||
} else {
|
} else {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, GetStateText(0));
|
Response_P(S_JSON_COMMAND_SVALUE, command, GetStateText(0));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (CMND_WEBPASSWORD == command_code) {
|
else if (CMND_WEBPASSWORD == command_code) {
|
||||||
if ((XdrvMailbox.data_len > 0) && (XdrvMailbox.data_len < sizeof(Settings.web_password))) {
|
if ((XdrvMailbox.data_len > 0) && (XdrvMailbox.data_len < sizeof(Settings.web_password))) {
|
||||||
strlcpy(Settings.web_password, (SC_CLEAR == Shortcut(XdrvMailbox.data)) ? "" : (SC_DEFAULT == Shortcut(XdrvMailbox.data)) ? WEB_PASSWORD : XdrvMailbox.data, sizeof(Settings.web_password));
|
strlcpy(Settings.web_password, (SC_CLEAR == Shortcut(XdrvMailbox.data)) ? "" : (SC_DEFAULT == Shortcut(XdrvMailbox.data)) ? WEB_PASSWORD : XdrvMailbox.data, sizeof(Settings.web_password));
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, Settings.web_password);
|
Response_P(S_JSON_COMMAND_SVALUE, command, Settings.web_password);
|
||||||
} else {
|
} else {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_ASTERIX, command);
|
Response_P(S_JSON_COMMAND_ASTERIX, command);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (CMND_WEBLOG == command_code) {
|
else if (CMND_WEBLOG == command_code) {
|
||||||
if ((XdrvMailbox.payload >= LOG_LEVEL_NONE) && (XdrvMailbox.payload <= LOG_LEVEL_ALL)) { Settings.weblog_level = XdrvMailbox.payload; }
|
if ((XdrvMailbox.payload >= LOG_LEVEL_NONE) && (XdrvMailbox.payload <= LOG_LEVEL_ALL)) { Settings.weblog_level = XdrvMailbox.payload; }
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, Settings.weblog_level);
|
Response_P(S_JSON_COMMAND_NVALUE, command, Settings.weblog_level);
|
||||||
}
|
}
|
||||||
else if (CMND_WEBREFRESH == command_code) {
|
else if (CMND_WEBREFRESH == command_code) {
|
||||||
if ((XdrvMailbox.payload > 999) && (XdrvMailbox.payload <= 10000)) { Settings.web_refresh = XdrvMailbox.payload; }
|
if ((XdrvMailbox.payload > 999) && (XdrvMailbox.payload <= 10000)) { Settings.web_refresh = XdrvMailbox.payload; }
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, Settings.web_refresh);
|
Response_P(S_JSON_COMMAND_NVALUE, command, Settings.web_refresh);
|
||||||
}
|
}
|
||||||
else if (CMND_WEBSEND == command_code) {
|
else if (CMND_WEBSEND == command_code) {
|
||||||
if (XdrvMailbox.data_len > 0) {
|
if (XdrvMailbox.data_len > 0) {
|
||||||
uint8_t result = WebSend(XdrvMailbox.data);
|
uint8_t result = WebSend(XdrvMailbox.data);
|
||||||
char stemp1[20];
|
char stemp1[20];
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, GetTextIndexed(stemp1, sizeof(stemp1), result, kWebSendStatus));
|
Response_P(S_JSON_COMMAND_SVALUE, command, GetTextIndexed(stemp1, sizeof(stemp1), result, kWebSendStatus));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#ifdef USE_EMULATION
|
#ifdef USE_EMULATION
|
||||||
@ -2336,7 +2335,7 @@ bool WebCommand(void)
|
|||||||
Settings.flag2.emulation = XdrvMailbox.payload;
|
Settings.flag2.emulation = XdrvMailbox.payload;
|
||||||
restart_flag = 2;
|
restart_flag = 2;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, Settings.flag2.emulation);
|
Response_P(S_JSON_COMMAND_NVALUE, command, Settings.flag2.emulation);
|
||||||
}
|
}
|
||||||
#endif // USE_EMULATION
|
#endif // USE_EMULATION
|
||||||
else serviced = false; // Unknown command
|
else serviced = false; // Unknown command
|
||||||
|
@ -237,17 +237,17 @@ void MqttPublishPowerState(uint8_t device)
|
|||||||
#endif // USE_DOMOTICZ
|
#endif // USE_DOMOTICZ
|
||||||
snprintf_P(scommand, sizeof(scommand), PSTR(D_CMND_FANSPEED));
|
snprintf_P(scommand, sizeof(scommand), PSTR(D_CMND_FANSPEED));
|
||||||
GetTopic_P(stopic, STAT, mqtt_topic, (Settings.flag.mqtt_response) ? scommand : S_RSLT_RESULT);
|
GetTopic_P(stopic, STAT, mqtt_topic, (Settings.flag.mqtt_response) ? scommand : S_RSLT_RESULT);
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, scommand, GetFanspeed());
|
Response_P(S_JSON_COMMAND_NVALUE, scommand, GetFanspeed());
|
||||||
MqttPublish(stopic);
|
MqttPublish(stopic);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
GetPowerDevice(scommand, device, sizeof(scommand), Settings.flag.device_index_enable);
|
GetPowerDevice(scommand, device, sizeof(scommand), Settings.flag.device_index_enable);
|
||||||
GetTopic_P(stopic, STAT, mqtt_topic, (Settings.flag.mqtt_response) ? scommand : S_RSLT_RESULT);
|
GetTopic_P(stopic, STAT, mqtt_topic, (Settings.flag.mqtt_response) ? scommand : S_RSLT_RESULT);
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, scommand, GetStateText(bitRead(power, device -1)));
|
Response_P(S_JSON_COMMAND_SVALUE, scommand, GetStateText(bitRead(power, device -1)));
|
||||||
MqttPublish(stopic);
|
MqttPublish(stopic);
|
||||||
|
|
||||||
GetTopic_P(stopic, STAT, mqtt_topic, scommand);
|
GetTopic_P(stopic, STAT, mqtt_topic, scommand);
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), GetStateText(bitRead(power, device -1)));
|
Response_P(GetStateText(bitRead(power, device -1)));
|
||||||
MqttPublish(stopic, Settings.flag.mqtt_power_retain);
|
MqttPublish(stopic, Settings.flag.mqtt_power_retain);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -259,7 +259,7 @@ void MqttPublishPowerBlinkState(uint8_t device)
|
|||||||
if ((device < 1) || (device > devices_present)) {
|
if ((device < 1) || (device > devices_present)) {
|
||||||
device = 1;
|
device = 1;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"%s\":\"" D_JSON_BLINK " %s\"}"),
|
Response_P(PSTR("{\"%s\":\"" D_JSON_BLINK " %s\"}"),
|
||||||
GetPowerDevice(scommand, device, sizeof(scommand), Settings.flag.device_index_enable), GetStateText(bitRead(blink_mask, device -1)));
|
GetPowerDevice(scommand, device, sizeof(scommand), Settings.flag.device_index_enable), GetStateText(bitRead(blink_mask, device -1)));
|
||||||
|
|
||||||
MqttPublishPrefixTopic_P(RESULT_OR_STAT, S_RSLT_POWER);
|
MqttPublishPrefixTopic_P(RESULT_OR_STAT, S_RSLT_POWER);
|
||||||
@ -292,7 +292,7 @@ void MqttConnected(void)
|
|||||||
mqtt_connect_count++;
|
mqtt_connect_count++;
|
||||||
|
|
||||||
GetTopic_P(stopic, TELE, mqtt_topic, S_LWT);
|
GetTopic_P(stopic, TELE, mqtt_topic, S_LWT);
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR(D_ONLINE));
|
Response_P(PSTR(D_ONLINE));
|
||||||
MqttPublish(stopic, true);
|
MqttPublish(stopic, true);
|
||||||
|
|
||||||
// Satisfy iobroker (#299)
|
// Satisfy iobroker (#299)
|
||||||
@ -312,18 +312,17 @@ void MqttConnected(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (mqtt_initial_connection_state) {
|
if (mqtt_initial_connection_state) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_MODULE "\":\"%s\",\"" D_JSON_VERSION "\":\"%s%s\",\"" D_JSON_FALLBACKTOPIC "\":\"%s\",\"" D_CMND_GROUPTOPIC "\":\"%s\"}"),
|
Response_P(PSTR("{\"" D_CMND_MODULE "\":\"%s\",\"" D_JSON_VERSION "\":\"%s%s\",\"" D_JSON_FALLBACKTOPIC "\":\"%s\",\"" D_CMND_GROUPTOPIC "\":\"%s\"}"),
|
||||||
ModuleName().c_str(), my_version, my_image, GetFallbackTopic_P(stopic, CMND, ""), Settings.mqtt_grptopic);
|
ModuleName().c_str(), my_version, my_image, GetFallbackTopic_P(stopic, CMND, ""), Settings.mqtt_grptopic);
|
||||||
MqttPublishPrefixTopic_P(TELE, PSTR(D_RSLT_INFO "1"));
|
MqttPublishPrefixTopic_P(TELE, PSTR(D_RSLT_INFO "1"));
|
||||||
#ifdef USE_WEBSERVER
|
#ifdef USE_WEBSERVER
|
||||||
if (Settings.webserver) {
|
if (Settings.webserver) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_WEBSERVER_MODE "\":\"%s\",\"" D_CMND_HOSTNAME "\":\"%s\",\"" D_CMND_IPADDRESS "\":\"%s\"}"),
|
Response_P(PSTR("{\"" D_JSON_WEBSERVER_MODE "\":\"%s\",\"" D_CMND_HOSTNAME "\":\"%s\",\"" D_CMND_IPADDRESS "\":\"%s\"}"),
|
||||||
(2 == Settings.webserver) ? D_ADMIN : D_USER, my_hostname, WiFi.localIP().toString().c_str());
|
(2 == Settings.webserver) ? D_ADMIN : D_USER, my_hostname, WiFi.localIP().toString().c_str());
|
||||||
MqttPublishPrefixTopic_P(TELE, PSTR(D_RSLT_INFO "2"));
|
MqttPublishPrefixTopic_P(TELE, PSTR(D_RSLT_INFO "2"));
|
||||||
}
|
}
|
||||||
#endif // USE_WEBSERVER
|
#endif // USE_WEBSERVER
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_RESTARTREASON "\":\"%s\"}"),
|
Response_P(PSTR("{\"" D_JSON_RESTARTREASON "\":\"%s\"}"), (GetResetReason() == "Exception") ? ESP.getResetInfo().c_str() : GetResetReason().c_str());
|
||||||
(GetResetReason() == "Exception") ? ESP.getResetInfo().c_str() : GetResetReason().c_str());
|
|
||||||
MqttPublishPrefixTopic_P(TELE, PSTR(D_RSLT_INFO "3"));
|
MqttPublishPrefixTopic_P(TELE, PSTR(D_RSLT_INFO "3"));
|
||||||
for (uint8_t i = 1; i <= devices_present; i++) {
|
for (uint8_t i = 1; i <= devices_present; i++) {
|
||||||
MqttPublishPowerState(i);
|
MqttPublishPowerState(i);
|
||||||
@ -438,7 +437,7 @@ void MqttReconnect(void)
|
|||||||
if (strlen(Settings.mqtt_pwd) > 0) mqtt_pwd = Settings.mqtt_pwd;
|
if (strlen(Settings.mqtt_pwd) > 0) mqtt_pwd = Settings.mqtt_pwd;
|
||||||
|
|
||||||
GetTopic_P(stopic, TELE, mqtt_topic, S_LWT);
|
GetTopic_P(stopic, TELE, mqtt_topic, S_LWT);
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_OFFLINE);
|
Response_P(S_OFFLINE);
|
||||||
|
|
||||||
#ifdef USE_MQTT_TLS
|
#ifdef USE_MQTT_TLS
|
||||||
EspClient = WiFiClientSecure(); // Wifi Secure Client reconnect issue 4497 (https://github.com/esp8266/Arduino/issues/4497)
|
EspClient = WiFiClientSecure(); // Wifi Secure Client reconnect issue 4497 (https://github.com/esp8266/Arduino/issues/4497)
|
||||||
@ -514,21 +513,21 @@ bool MqttCommand(void)
|
|||||||
strlcpy(Settings.mqtt_host, (SC_CLEAR == Shortcut(dataBuf)) ? "" : (SC_DEFAULT == Shortcut(dataBuf)) ? MQTT_HOST : dataBuf, sizeof(Settings.mqtt_host));
|
strlcpy(Settings.mqtt_host, (SC_CLEAR == Shortcut(dataBuf)) ? "" : (SC_DEFAULT == Shortcut(dataBuf)) ? MQTT_HOST : dataBuf, sizeof(Settings.mqtt_host));
|
||||||
restart_flag = 2;
|
restart_flag = 2;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, Settings.mqtt_host);
|
Response_P(S_JSON_COMMAND_SVALUE, command, Settings.mqtt_host);
|
||||||
}
|
}
|
||||||
else if (CMND_MQTTPORT == command_code) {
|
else if (CMND_MQTTPORT == command_code) {
|
||||||
if (payload16 > 0) {
|
if (payload16 > 0) {
|
||||||
Settings.mqtt_port = (1 == payload16) ? MQTT_PORT : payload16;
|
Settings.mqtt_port = (1 == payload16) ? MQTT_PORT : payload16;
|
||||||
restart_flag = 2;
|
restart_flag = 2;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, Settings.mqtt_port);
|
Response_P(S_JSON_COMMAND_NVALUE, command, Settings.mqtt_port);
|
||||||
}
|
}
|
||||||
else if (CMND_MQTTRETRY == command_code) {
|
else if (CMND_MQTTRETRY == command_code) {
|
||||||
if ((payload >= MQTT_RETRY_SECS) && (payload < 32001)) {
|
if ((payload >= MQTT_RETRY_SECS) && (payload < 32001)) {
|
||||||
Settings.mqtt_retry = payload;
|
Settings.mqtt_retry = payload;
|
||||||
mqtt_retry_counter = Settings.mqtt_retry;
|
mqtt_retry_counter = Settings.mqtt_retry;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, Settings.mqtt_retry);
|
Response_P(S_JSON_COMMAND_NVALUE, command, Settings.mqtt_retry);
|
||||||
}
|
}
|
||||||
else if ((CMND_STATETEXT == command_code) && (index > 0) && (index <= 4)) {
|
else if ((CMND_STATETEXT == command_code) && (index > 0) && (index <= 4)) {
|
||||||
if ((data_len > 0) && (data_len < sizeof(Settings.state_text[0]))) {
|
if ((data_len > 0) && (data_len < sizeof(Settings.state_text[0]))) {
|
||||||
@ -537,7 +536,7 @@ bool MqttCommand(void)
|
|||||||
}
|
}
|
||||||
strlcpy(Settings.state_text[index -1], dataBuf, sizeof(Settings.state_text[0]));
|
strlcpy(Settings.state_text[index -1], dataBuf, sizeof(Settings.state_text[0]));
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_SVALUE, command, index, GetStateText(index -1));
|
Response_P(S_JSON_COMMAND_INDEX_SVALUE, command, index, GetStateText(index -1));
|
||||||
}
|
}
|
||||||
#ifdef USE_MQTT_TLS
|
#ifdef USE_MQTT_TLS
|
||||||
else if ((CMND_MQTTFINGERPRINT == command_code) && (index > 0) && (index <= 2)) {
|
else if ((CMND_MQTTFINGERPRINT == command_code) && (index > 0) && (index <= 2)) {
|
||||||
@ -554,7 +553,7 @@ bool MqttCommand(void)
|
|||||||
for (uint8_t i = 0; i < sizeof(Settings.mqtt_fingerprint[index -1]); i++) {
|
for (uint8_t i = 0; i < sizeof(Settings.mqtt_fingerprint[index -1]); i++) {
|
||||||
snprintf_P(fingerprint, sizeof(fingerprint), PSTR("%s%s%02X"), fingerprint, (i) ? " " : "", Settings.mqtt_fingerprint[index -1][i]);
|
snprintf_P(fingerprint, sizeof(fingerprint), PSTR("%s%s%02X"), fingerprint, (i) ? " " : "", Settings.mqtt_fingerprint[index -1][i]);
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_SVALUE, command, index, fingerprint);
|
Response_P(S_JSON_COMMAND_INDEX_SVALUE, command, index, fingerprint);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
else if (CMND_MQTTCLIENT == command_code) {
|
else if (CMND_MQTTCLIENT == command_code) {
|
||||||
@ -562,22 +561,22 @@ bool MqttCommand(void)
|
|||||||
strlcpy(Settings.mqtt_client, (SC_DEFAULT == Shortcut(dataBuf)) ? MQTT_CLIENT_ID : dataBuf, sizeof(Settings.mqtt_client));
|
strlcpy(Settings.mqtt_client, (SC_DEFAULT == Shortcut(dataBuf)) ? MQTT_CLIENT_ID : dataBuf, sizeof(Settings.mqtt_client));
|
||||||
restart_flag = 2;
|
restart_flag = 2;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, Settings.mqtt_client);
|
Response_P(S_JSON_COMMAND_SVALUE, command, Settings.mqtt_client);
|
||||||
}
|
}
|
||||||
else if (CMND_MQTTUSER == command_code) {
|
else if (CMND_MQTTUSER == command_code) {
|
||||||
if ((data_len > 0) && (data_len < sizeof(Settings.mqtt_user))) {
|
if ((data_len > 0) && (data_len < sizeof(Settings.mqtt_user))) {
|
||||||
strlcpy(Settings.mqtt_user, (SC_CLEAR == Shortcut(dataBuf)) ? "" : (SC_DEFAULT == Shortcut(dataBuf)) ? MQTT_USER : dataBuf, sizeof(Settings.mqtt_user));
|
strlcpy(Settings.mqtt_user, (SC_CLEAR == Shortcut(dataBuf)) ? "" : (SC_DEFAULT == Shortcut(dataBuf)) ? MQTT_USER : dataBuf, sizeof(Settings.mqtt_user));
|
||||||
restart_flag = 2;
|
restart_flag = 2;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, Settings.mqtt_user);
|
Response_P(S_JSON_COMMAND_SVALUE, command, Settings.mqtt_user);
|
||||||
}
|
}
|
||||||
else if (CMND_MQTTPASSWORD == command_code) {
|
else if (CMND_MQTTPASSWORD == command_code) {
|
||||||
if ((data_len > 0) && (data_len < sizeof(Settings.mqtt_pwd))) {
|
if ((data_len > 0) && (data_len < sizeof(Settings.mqtt_pwd))) {
|
||||||
strlcpy(Settings.mqtt_pwd, (SC_CLEAR == Shortcut(dataBuf)) ? "" : (SC_DEFAULT == Shortcut(dataBuf)) ? MQTT_PASS : dataBuf, sizeof(Settings.mqtt_pwd));
|
strlcpy(Settings.mqtt_pwd, (SC_CLEAR == Shortcut(dataBuf)) ? "" : (SC_DEFAULT == Shortcut(dataBuf)) ? MQTT_PASS : dataBuf, sizeof(Settings.mqtt_pwd));
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, Settings.mqtt_pwd);
|
Response_P(S_JSON_COMMAND_SVALUE, command, Settings.mqtt_pwd);
|
||||||
restart_flag = 2;
|
restart_flag = 2;
|
||||||
} else {
|
} else {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_ASTERIX, command);
|
Response_P(S_JSON_COMMAND_ASTERIX, command);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (CMND_FULLTOPIC == command_code) {
|
else if (CMND_FULLTOPIC == command_code) {
|
||||||
@ -586,13 +585,13 @@ bool MqttCommand(void)
|
|||||||
if (!strcmp(dataBuf, mqtt_client)) SetShortcut(dataBuf, SC_DEFAULT);
|
if (!strcmp(dataBuf, mqtt_client)) SetShortcut(dataBuf, SC_DEFAULT);
|
||||||
strlcpy(stemp1, (SC_DEFAULT == Shortcut(dataBuf)) ? MQTT_FULLTOPIC : dataBuf, sizeof(stemp1));
|
strlcpy(stemp1, (SC_DEFAULT == Shortcut(dataBuf)) ? MQTT_FULLTOPIC : dataBuf, sizeof(stemp1));
|
||||||
if (strcmp(stemp1, Settings.mqtt_fulltopic)) {
|
if (strcmp(stemp1, Settings.mqtt_fulltopic)) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), (Settings.flag.mqtt_offline) ? S_OFFLINE : "");
|
Response_P((Settings.flag.mqtt_offline) ? S_OFFLINE : "");
|
||||||
MqttPublishPrefixTopic_P(TELE, PSTR(D_LWT), true); // Offline or remove previous retained topic
|
MqttPublishPrefixTopic_P(TELE, PSTR(D_LWT), true); // Offline or remove previous retained topic
|
||||||
strlcpy(Settings.mqtt_fulltopic, stemp1, sizeof(Settings.mqtt_fulltopic));
|
strlcpy(Settings.mqtt_fulltopic, stemp1, sizeof(Settings.mqtt_fulltopic));
|
||||||
restart_flag = 2;
|
restart_flag = 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, Settings.mqtt_fulltopic);
|
Response_P(S_JSON_COMMAND_SVALUE, command, Settings.mqtt_fulltopic);
|
||||||
}
|
}
|
||||||
else if ((CMND_PREFIX == command_code) && (index > 0) && (index <= 3)) {
|
else if ((CMND_PREFIX == command_code) && (index > 0) && (index <= 3)) {
|
||||||
if ((data_len > 0) && (data_len < sizeof(Settings.mqtt_prefix[0]))) {
|
if ((data_len > 0) && (data_len < sizeof(Settings.mqtt_prefix[0]))) {
|
||||||
@ -601,7 +600,7 @@ bool MqttCommand(void)
|
|||||||
// if (Settings.mqtt_prefix[index -1][strlen(Settings.mqtt_prefix[index -1])] == '/') Settings.mqtt_prefix[index -1][strlen(Settings.mqtt_prefix[index -1])] = 0;
|
// if (Settings.mqtt_prefix[index -1][strlen(Settings.mqtt_prefix[index -1])] == '/') Settings.mqtt_prefix[index -1][strlen(Settings.mqtt_prefix[index -1])] = 0;
|
||||||
restart_flag = 2;
|
restart_flag = 2;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_SVALUE, command, index, Settings.mqtt_prefix[index -1]);
|
Response_P(S_JSON_COMMAND_INDEX_SVALUE, command, index, Settings.mqtt_prefix[index -1]);
|
||||||
}
|
}
|
||||||
else if (CMND_PUBLISH == command_code) {
|
else if (CMND_PUBLISH == command_code) {
|
||||||
if (data_len > 0) {
|
if (data_len > 0) {
|
||||||
@ -615,7 +614,7 @@ bool MqttCommand(void)
|
|||||||
mqtt_data[0] = '\0';
|
mqtt_data[0] = '\0';
|
||||||
}
|
}
|
||||||
MqttPublishDirect(stemp1, (index == 2));
|
MqttPublishDirect(stemp1, (index == 2));
|
||||||
// snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, D_JSON_DONE);
|
// Response_P(S_JSON_COMMAND_SVALUE, command, D_JSON_DONE);
|
||||||
mqtt_data[0] = '\0';
|
mqtt_data[0] = '\0';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -627,7 +626,7 @@ bool MqttCommand(void)
|
|||||||
strlcpy(Settings.mqtt_grptopic, (SC_DEFAULT == Shortcut(dataBuf)) ? MQTT_GRPTOPIC : dataBuf, sizeof(Settings.mqtt_grptopic));
|
strlcpy(Settings.mqtt_grptopic, (SC_DEFAULT == Shortcut(dataBuf)) ? MQTT_GRPTOPIC : dataBuf, sizeof(Settings.mqtt_grptopic));
|
||||||
restart_flag = 2;
|
restart_flag = 2;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, Settings.mqtt_grptopic);
|
Response_P(S_JSON_COMMAND_SVALUE, command, Settings.mqtt_grptopic);
|
||||||
}
|
}
|
||||||
else if (CMND_TOPIC == command_code) {
|
else if (CMND_TOPIC == command_code) {
|
||||||
if (!grpflg && (data_len > 0) && (data_len < sizeof(Settings.mqtt_topic))) {
|
if (!grpflg && (data_len > 0) && (data_len < sizeof(Settings.mqtt_topic))) {
|
||||||
@ -635,13 +634,13 @@ bool MqttCommand(void)
|
|||||||
if (!strcmp(dataBuf, mqtt_client)) SetShortcut(dataBuf, SC_DEFAULT);
|
if (!strcmp(dataBuf, mqtt_client)) SetShortcut(dataBuf, SC_DEFAULT);
|
||||||
strlcpy(stemp1, (SC_DEFAULT == Shortcut(dataBuf)) ? MQTT_TOPIC : dataBuf, sizeof(stemp1));
|
strlcpy(stemp1, (SC_DEFAULT == Shortcut(dataBuf)) ? MQTT_TOPIC : dataBuf, sizeof(stemp1));
|
||||||
if (strcmp(stemp1, Settings.mqtt_topic)) {
|
if (strcmp(stemp1, Settings.mqtt_topic)) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), (Settings.flag.mqtt_offline) ? S_OFFLINE : "");
|
Response_P((Settings.flag.mqtt_offline) ? S_OFFLINE : "");
|
||||||
MqttPublishPrefixTopic_P(TELE, PSTR(D_LWT), true); // Offline or remove previous retained topic
|
MqttPublishPrefixTopic_P(TELE, PSTR(D_LWT), true); // Offline or remove previous retained topic
|
||||||
strlcpy(Settings.mqtt_topic, stemp1, sizeof(Settings.mqtt_topic));
|
strlcpy(Settings.mqtt_topic, stemp1, sizeof(Settings.mqtt_topic));
|
||||||
restart_flag = 2;
|
restart_flag = 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, Settings.mqtt_topic);
|
Response_P(S_JSON_COMMAND_SVALUE, command, Settings.mqtt_topic);
|
||||||
}
|
}
|
||||||
else if (CMND_BUTTONTOPIC == command_code) {
|
else if (CMND_BUTTONTOPIC == command_code) {
|
||||||
if (!grpflg && (data_len > 0) && (data_len < sizeof(Settings.button_topic))) {
|
if (!grpflg && (data_len > 0) && (data_len < sizeof(Settings.button_topic))) {
|
||||||
@ -654,7 +653,7 @@ bool MqttCommand(void)
|
|||||||
default: strlcpy(Settings.button_topic, dataBuf, sizeof(Settings.button_topic));
|
default: strlcpy(Settings.button_topic, dataBuf, sizeof(Settings.button_topic));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, Settings.button_topic);
|
Response_P(S_JSON_COMMAND_SVALUE, command, Settings.button_topic);
|
||||||
}
|
}
|
||||||
else if (CMND_SWITCHTOPIC == command_code) {
|
else if (CMND_SWITCHTOPIC == command_code) {
|
||||||
if ((data_len > 0) && (data_len < sizeof(Settings.switch_topic))) {
|
if ((data_len > 0) && (data_len < sizeof(Settings.switch_topic))) {
|
||||||
@ -667,7 +666,7 @@ bool MqttCommand(void)
|
|||||||
default: strlcpy(Settings.switch_topic, dataBuf, sizeof(Settings.switch_topic));
|
default: strlcpy(Settings.switch_topic, dataBuf, sizeof(Settings.switch_topic));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, Settings.switch_topic);
|
Response_P(S_JSON_COMMAND_SVALUE, command, Settings.switch_topic);
|
||||||
}
|
}
|
||||||
else if (CMND_BUTTONRETAIN == command_code) {
|
else if (CMND_BUTTONRETAIN == command_code) {
|
||||||
if ((payload >= 0) && (payload <= 1)) {
|
if ((payload >= 0) && (payload <= 1)) {
|
||||||
@ -678,7 +677,7 @@ bool MqttCommand(void)
|
|||||||
}
|
}
|
||||||
Settings.flag.mqtt_button_retain = payload;
|
Settings.flag.mqtt_button_retain = payload;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, GetStateText(Settings.flag.mqtt_button_retain));
|
Response_P(S_JSON_COMMAND_SVALUE, command, GetStateText(Settings.flag.mqtt_button_retain));
|
||||||
}
|
}
|
||||||
else if (CMND_SWITCHRETAIN == command_code) {
|
else if (CMND_SWITCHRETAIN == command_code) {
|
||||||
if ((payload >= 0) && (payload <= 1)) {
|
if ((payload >= 0) && (payload <= 1)) {
|
||||||
@ -689,7 +688,7 @@ bool MqttCommand(void)
|
|||||||
}
|
}
|
||||||
Settings.flag.mqtt_switch_retain = payload;
|
Settings.flag.mqtt_switch_retain = payload;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, GetStateText(Settings.flag.mqtt_switch_retain));
|
Response_P(S_JSON_COMMAND_SVALUE, command, GetStateText(Settings.flag.mqtt_switch_retain));
|
||||||
}
|
}
|
||||||
else if (CMND_POWERRETAIN == command_code) {
|
else if (CMND_POWERRETAIN == command_code) {
|
||||||
if ((payload >= 0) && (payload <= 1)) {
|
if ((payload >= 0) && (payload <= 1)) {
|
||||||
@ -702,7 +701,7 @@ bool MqttCommand(void)
|
|||||||
}
|
}
|
||||||
Settings.flag.mqtt_power_retain = payload;
|
Settings.flag.mqtt_power_retain = payload;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, GetStateText(Settings.flag.mqtt_power_retain));
|
Response_P(S_JSON_COMMAND_SVALUE, command, GetStateText(Settings.flag.mqtt_power_retain));
|
||||||
}
|
}
|
||||||
else if (CMND_SENSORRETAIN == command_code) {
|
else if (CMND_SENSORRETAIN == command_code) {
|
||||||
if ((payload >= 0) && (payload <= 1)) {
|
if ((payload >= 0) && (payload <= 1)) {
|
||||||
@ -713,7 +712,7 @@ bool MqttCommand(void)
|
|||||||
}
|
}
|
||||||
Settings.flag.mqtt_sensor_retain = payload;
|
Settings.flag.mqtt_sensor_retain = payload;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, GetStateText(Settings.flag.mqtt_sensor_retain));
|
Response_P(S_JSON_COMMAND_SVALUE, command, GetStateText(Settings.flag.mqtt_sensor_retain));
|
||||||
}
|
}
|
||||||
else serviced = false; // Unknown command
|
else serviced = false; // Unknown command
|
||||||
|
|
||||||
@ -790,7 +789,7 @@ void MqttSaveSettings(void)
|
|||||||
strlcpy(stemp2, (!strlen(tmp)) ? MQTT_FULLTOPIC : tmp, sizeof(stemp2));
|
strlcpy(stemp2, (!strlen(tmp)) ? MQTT_FULLTOPIC : tmp, sizeof(stemp2));
|
||||||
MakeValidMqtt(1,stemp2);
|
MakeValidMqtt(1,stemp2);
|
||||||
if ((strcmp(stemp, Settings.mqtt_topic)) || (strcmp(stemp2, Settings.mqtt_fulltopic))) {
|
if ((strcmp(stemp, Settings.mqtt_topic)) || (strcmp(stemp2, Settings.mqtt_fulltopic))) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), (Settings.flag.mqtt_offline) ? S_OFFLINE : "");
|
Response_P((Settings.flag.mqtt_offline) ? S_OFFLINE : "");
|
||||||
MqttPublishPrefixTopic_P(TELE, S_LWT, true); // Offline or remove previous retained topic
|
MqttPublishPrefixTopic_P(TELE, S_LWT, true); // Offline or remove previous retained topic
|
||||||
}
|
}
|
||||||
strlcpy(Settings.mqtt_topic, stemp, sizeof(Settings.mqtt_topic));
|
strlcpy(Settings.mqtt_topic, stemp, sizeof(Settings.mqtt_topic));
|
||||||
|
@ -201,34 +201,34 @@ void EnergyMarginCheck(void)
|
|||||||
|
|
||||||
// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("NRG: W %d, U %d, I %d"), energy_power_u, energy_voltage_u, energy_current_u);
|
// AddLog_P2(LOG_LEVEL_DEBUG, PSTR("NRG: W %d, U %d, I %d"), energy_power_u, energy_voltage_u, energy_current_u);
|
||||||
|
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{"));
|
Response_P(PSTR("{"));
|
||||||
jsonflg = false;
|
jsonflg = false;
|
||||||
if (EnergyMargin(false, Settings.energy_min_power, energy_power_u, flag, energy_min_power_flag)) {
|
if (EnergyMargin(false, Settings.energy_min_power, energy_power_u, flag, energy_min_power_flag)) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s%s\"" D_CMND_POWERLOW "\":\"%s\""), mqtt_data, (jsonflg)?",":"", GetStateText(flag));
|
ResponseAppend_P(PSTR("%s\"" D_CMND_POWERLOW "\":\"%s\""), (jsonflg)?",":"", GetStateText(flag));
|
||||||
jsonflg = true;
|
jsonflg = true;
|
||||||
}
|
}
|
||||||
if (EnergyMargin(true, Settings.energy_max_power, energy_power_u, flag, energy_max_power_flag)) {
|
if (EnergyMargin(true, Settings.energy_max_power, energy_power_u, flag, energy_max_power_flag)) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s%s\"" D_CMND_POWERHIGH "\":\"%s\""), mqtt_data, (jsonflg)?",":"", GetStateText(flag));
|
ResponseAppend_P(PSTR("%s\"" D_CMND_POWERHIGH "\":\"%s\""), (jsonflg)?",":"", GetStateText(flag));
|
||||||
jsonflg = true;
|
jsonflg = true;
|
||||||
}
|
}
|
||||||
if (EnergyMargin(false, Settings.energy_min_voltage, energy_voltage_u, flag, energy_min_voltage_flag)) {
|
if (EnergyMargin(false, Settings.energy_min_voltage, energy_voltage_u, flag, energy_min_voltage_flag)) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s%s\"" D_CMND_VOLTAGELOW "\":\"%s\""), mqtt_data, (jsonflg)?",":"", GetStateText(flag));
|
ResponseAppend_P(PSTR("%s\"" D_CMND_VOLTAGELOW "\":\"%s\""), (jsonflg)?",":"", GetStateText(flag));
|
||||||
jsonflg = true;
|
jsonflg = true;
|
||||||
}
|
}
|
||||||
if (EnergyMargin(true, Settings.energy_max_voltage, energy_voltage_u, flag, energy_max_voltage_flag)) {
|
if (EnergyMargin(true, Settings.energy_max_voltage, energy_voltage_u, flag, energy_max_voltage_flag)) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s%s\"" D_CMND_VOLTAGEHIGH "\":\"%s\""), mqtt_data, (jsonflg)?",":"", GetStateText(flag));
|
ResponseAppend_P(PSTR("%s\"" D_CMND_VOLTAGEHIGH "\":\"%s\""), (jsonflg)?",":"", GetStateText(flag));
|
||||||
jsonflg = true;
|
jsonflg = true;
|
||||||
}
|
}
|
||||||
if (EnergyMargin(false, Settings.energy_min_current, energy_current_u, flag, energy_min_current_flag)) {
|
if (EnergyMargin(false, Settings.energy_min_current, energy_current_u, flag, energy_min_current_flag)) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s%s\"" D_CMND_CURRENTLOW "\":\"%s\""), mqtt_data, (jsonflg)?",":"", GetStateText(flag));
|
ResponseAppend_P(PSTR("%s%s\"" D_CMND_CURRENTLOW "\":\"%s\""), (jsonflg)?",":"", GetStateText(flag));
|
||||||
jsonflg = true;
|
jsonflg = true;
|
||||||
}
|
}
|
||||||
if (EnergyMargin(true, Settings.energy_max_current, energy_current_u, flag, energy_max_current_flag)) {
|
if (EnergyMargin(true, Settings.energy_max_current, energy_current_u, flag, energy_max_current_flag)) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s%s\"" D_CMND_CURRENTHIGH "\":\"%s\""), mqtt_data, (jsonflg)?",":"", GetStateText(flag));
|
ResponseAppend_P(PSTR("%s%s\"" D_CMND_CURRENTHIGH "\":\"%s\""), (jsonflg)?",":"", GetStateText(flag));
|
||||||
jsonflg = true;
|
jsonflg = true;
|
||||||
}
|
}
|
||||||
if (jsonflg) {
|
if (jsonflg) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s}"), mqtt_data);
|
ResponseAppend_P(PSTR("}"));
|
||||||
MqttPublishPrefixTopic_P(TELE, PSTR(D_RSLT_MARGINS), MQTT_TELE_RETAIN);
|
MqttPublishPrefixTopic_P(TELE, PSTR(D_RSLT_MARGINS), MQTT_TELE_RETAIN);
|
||||||
EnergyMqttShow();
|
EnergyMqttShow();
|
||||||
}
|
}
|
||||||
@ -243,7 +243,7 @@ void EnergyMarginCheck(void)
|
|||||||
} else {
|
} else {
|
||||||
energy_mplh_counter--;
|
energy_mplh_counter--;
|
||||||
if (!energy_mplh_counter) {
|
if (!energy_mplh_counter) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_MAXPOWERREACHED "\":\"%d%s\"}"), energy_power_u, (Settings.flag.value_units) ? " " D_UNIT_WATT : "");
|
Response_P(PSTR("{\"" D_JSON_MAXPOWERREACHED "\":\"%d%s\"}"), energy_power_u, (Settings.flag.value_units) ? " " D_UNIT_WATT : "");
|
||||||
MqttPublishPrefixTopic_P(STAT, S_RSLT_WARNING);
|
MqttPublishPrefixTopic_P(STAT, S_RSLT_WARNING);
|
||||||
EnergyMqttShow();
|
EnergyMqttShow();
|
||||||
ExecuteCommandPower(1, POWER_OFF, SRC_MAXPOWER);
|
ExecuteCommandPower(1, POWER_OFF, SRC_MAXPOWER);
|
||||||
@ -266,11 +266,11 @@ void EnergyMarginCheck(void)
|
|||||||
if (energy_mplr_counter) {
|
if (energy_mplr_counter) {
|
||||||
energy_mplr_counter--;
|
energy_mplr_counter--;
|
||||||
if (energy_mplr_counter) {
|
if (energy_mplr_counter) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_POWERMONITOR "\":\"%s\"}"), GetStateText(1));
|
Response_P(PSTR("{\"" D_JSON_POWERMONITOR "\":\"%s\"}"), GetStateText(1));
|
||||||
MqttPublishPrefixTopic_P(RESULT_OR_STAT, PSTR(D_JSON_POWERMONITOR));
|
MqttPublishPrefixTopic_P(RESULT_OR_STAT, PSTR(D_JSON_POWERMONITOR));
|
||||||
ExecuteCommandPower(1, POWER_ON, SRC_MAXPOWER);
|
ExecuteCommandPower(1, POWER_ON, SRC_MAXPOWER);
|
||||||
} else {
|
} else {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_MAXPOWERREACHEDRETRY "\":\"%s\"}"), GetStateText(0));
|
Response_P(PSTR("{\"" D_JSON_MAXPOWERREACHEDRETRY "\":\"%s\"}"), GetStateText(0));
|
||||||
MqttPublishPrefixTopic_P(STAT, S_RSLT_WARNING);
|
MqttPublishPrefixTopic_P(STAT, S_RSLT_WARNING);
|
||||||
EnergyMqttShow();
|
EnergyMqttShow();
|
||||||
}
|
}
|
||||||
@ -284,14 +284,14 @@ void EnergyMarginCheck(void)
|
|||||||
energy_daily_u = (uint16_t)(energy_daily * 1000);
|
energy_daily_u = (uint16_t)(energy_daily * 1000);
|
||||||
if (!energy_max_energy_state && (RtcTime.hour == Settings.energy_max_energy_start)) {
|
if (!energy_max_energy_state && (RtcTime.hour == Settings.energy_max_energy_start)) {
|
||||||
energy_max_energy_state = 1;
|
energy_max_energy_state = 1;
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_ENERGYMONITOR "\":\"%s\"}"), GetStateText(1));
|
Response_P(PSTR("{\"" D_JSON_ENERGYMONITOR "\":\"%s\"}"), GetStateText(1));
|
||||||
MqttPublishPrefixTopic_P(RESULT_OR_STAT, PSTR(D_JSON_ENERGYMONITOR));
|
MqttPublishPrefixTopic_P(RESULT_OR_STAT, PSTR(D_JSON_ENERGYMONITOR));
|
||||||
ExecuteCommandPower(1, POWER_ON, SRC_MAXENERGY);
|
ExecuteCommandPower(1, POWER_ON, SRC_MAXENERGY);
|
||||||
}
|
}
|
||||||
else if ((1 == energy_max_energy_state) && (energy_daily_u >= Settings.energy_max_energy)) {
|
else if ((1 == energy_max_energy_state) && (energy_daily_u >= Settings.energy_max_energy)) {
|
||||||
energy_max_energy_state = 2;
|
energy_max_energy_state = 2;
|
||||||
dtostrfd(energy_daily, 3, mqtt_data);
|
dtostrfd(energy_daily, 3, mqtt_data);
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_MAXENERGYREACHED "\":\"%s%s\"}"), mqtt_data, (Settings.flag.value_units) ? " " D_UNIT_KILOWATTHOUR : "");
|
Response_P(PSTR("{\"" D_JSON_MAXENERGYREACHED "\":\"%s%s\"}"), mqtt_data, (Settings.flag.value_units) ? " " D_UNIT_KILOWATTHOUR : "");
|
||||||
MqttPublishPrefixTopic_P(STAT, S_RSLT_WARNING);
|
MqttPublishPrefixTopic_P(STAT, S_RSLT_WARNING);
|
||||||
EnergyMqttShow();
|
EnergyMqttShow();
|
||||||
ExecuteCommandPower(1, POWER_OFF, SRC_MAXENERGY);
|
ExecuteCommandPower(1, POWER_OFF, SRC_MAXENERGY);
|
||||||
@ -305,12 +305,12 @@ void EnergyMarginCheck(void)
|
|||||||
void EnergyMqttShow(void)
|
void EnergyMqttShow(void)
|
||||||
{
|
{
|
||||||
// {"Time":"2017-12-16T11:48:55","ENERGY":{"Total":0.212,"Yesterday":0.000,"Today":0.014,"Period":2.0,"Power":22.0,"Factor":1.00,"Voltage":213.6,"Current":0.100}}
|
// {"Time":"2017-12-16T11:48:55","ENERGY":{"Total":0.212,"Yesterday":0.000,"Today":0.014,"Period":2.0,"Power":22.0,"Factor":1.00,"Voltage":213.6,"Current":0.100}}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_TIME "\":\"%s\""), GetDateAndTime(DT_LOCAL).c_str());
|
Response_P(PSTR("{\"" D_JSON_TIME "\":\"%s\""), GetDateAndTime(DT_LOCAL).c_str());
|
||||||
int tele_period_save = tele_period;
|
int tele_period_save = tele_period;
|
||||||
tele_period = 2;
|
tele_period = 2;
|
||||||
EnergyShow(true);
|
EnergyShow(true);
|
||||||
tele_period = tele_period_save;
|
tele_period = tele_period_save;
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s}"), mqtt_data);
|
ResponseAppend_P(PSTR("}"));
|
||||||
MqttPublishPrefixTopic_P(TELE, PSTR(D_RSLT_SENSOR), Settings.flag.mqtt_sensor_retain);
|
MqttPublishPrefixTopic_P(TELE, PSTR(D_RSLT_SENSOR), Settings.flag.mqtt_sensor_retain);
|
||||||
energy_power_delta = 0;
|
energy_power_delta = 0;
|
||||||
}
|
}
|
||||||
@ -414,7 +414,7 @@ bool EnergyCommand(void)
|
|||||||
char energy_yesterday_chr[33];
|
char energy_yesterday_chr[33];
|
||||||
dtostrfd((float)Settings.energy_kWhyesterday / 100000, Settings.flag2.energy_resolution, energy_yesterday_chr);
|
dtostrfd((float)Settings.energy_kWhyesterday / 100000, Settings.flag2.energy_resolution, energy_yesterday_chr);
|
||||||
|
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"%s\":{\"" D_JSON_TOTAL "\":%s,\"" D_JSON_YESTERDAY "\":%s,\"" D_JSON_TODAY "\":%s}}"),
|
Response_P(PSTR("{\"%s\":{\"" D_JSON_TOTAL "\":%s,\"" D_JSON_YESTERDAY "\":%s,\"" D_JSON_TODAY "\":%s}}"),
|
||||||
command, energy_total_chr, energy_yesterday_chr, energy_daily_chr);
|
command, energy_total_chr, energy_yesterday_chr, energy_daily_chr);
|
||||||
status_flag = true;
|
status_flag = true;
|
||||||
}
|
}
|
||||||
@ -519,9 +519,9 @@ bool EnergyCommand(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (Settings.flag.value_units) {
|
if (Settings.flag.value_units) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_LVALUE_SPACE_UNIT, command, nvalue, GetTextIndexed(sunit, sizeof(sunit), unit, kUnitNames));
|
Response_P(S_JSON_COMMAND_LVALUE_SPACE_UNIT, command, nvalue, GetTextIndexed(sunit, sizeof(sunit), unit, kUnitNames));
|
||||||
} else {
|
} else {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_LVALUE, command, nvalue);
|
Response_P(S_JSON_COMMAND_LVALUE, command, nvalue);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -637,13 +637,13 @@ void EnergyShow(bool json)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (json) {
|
if (json) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"" D_RSLT_ENERGY "\":{\"" D_JSON_TOTAL_START_TIME "\":\"%s\",\"" D_JSON_TOTAL "\":%s,\"" D_JSON_YESTERDAY "\":%s,\"" D_JSON_TODAY "\":%s%s,\"" D_JSON_POWERUSAGE "\":%s"),
|
ResponseAppend_P(PSTR(",\"" D_RSLT_ENERGY "\":{\"" D_JSON_TOTAL_START_TIME "\":\"%s\",\"" D_JSON_TOTAL "\":%s,\"" D_JSON_YESTERDAY "\":%s,\"" D_JSON_TODAY "\":%s%s,\"" D_JSON_POWERUSAGE "\":%s"),
|
||||||
mqtt_data, GetDateAndTime(DT_ENERGY).c_str(), energy_total_chr, energy_yesterday_chr, energy_daily_chr, (show_energy_period) ? speriod : "", active_power_chr);
|
GetDateAndTime(DT_ENERGY).c_str(), energy_total_chr, energy_yesterday_chr, energy_daily_chr, (show_energy_period) ? speriod : "", active_power_chr);
|
||||||
if (!energy_type_dc) {
|
if (!energy_type_dc) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"" D_JSON_APPARENT_POWERUSAGE "\":%s,\"" D_JSON_REACTIVE_POWERUSAGE "\":%s,\"" D_JSON_POWERFACTOR "\":%s%s"),
|
ResponseAppend_P(PSTR(",\"" D_JSON_APPARENT_POWERUSAGE "\":%s,\"" D_JSON_REACTIVE_POWERUSAGE "\":%s,\"" D_JSON_POWERFACTOR "\":%s%s"),
|
||||||
mqtt_data, apparent_power_chr, reactive_power_chr, power_factor_chr, (!isnan(energy_frequency)) ? sfrequency : "");
|
apparent_power_chr, reactive_power_chr, power_factor_chr, (!isnan(energy_frequency)) ? sfrequency : "");
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"" D_JSON_VOLTAGE "\":%s,\"" D_JSON_CURRENT "\":%s}"), mqtt_data, voltage_chr, current_chr);
|
ResponseAppend_P(PSTR(",\"" D_JSON_VOLTAGE "\":%s,\"" D_JSON_CURRENT "\":%s}"), voltage_chr, current_chr);
|
||||||
|
|
||||||
#ifdef USE_DOMOTICZ
|
#ifdef USE_DOMOTICZ
|
||||||
if (show_energy_period) { // Only send if telemetry
|
if (show_energy_period) { // Only send if telemetry
|
||||||
|
@ -740,43 +740,42 @@ void LightState(uint8_t append)
|
|||||||
int16_t h,s,b;
|
int16_t h,s,b;
|
||||||
|
|
||||||
if (append) {
|
if (append) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,"), mqtt_data);
|
ResponseAppend_P(PSTR(","));
|
||||||
} else {
|
} else {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{"));
|
Response_P(PSTR("{"));
|
||||||
}
|
}
|
||||||
GetPowerDevice(scommand, light_device, sizeof(scommand), Settings.flag.device_index_enable);
|
GetPowerDevice(scommand, light_device, sizeof(scommand), Settings.flag.device_index_enable);
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s\"%s\":\"%s\",\"" D_CMND_DIMMER "\":%d"),
|
ResponseAppend_P(PSTR("\"%s\":\"%s\",\"" D_CMND_DIMMER "\":%d"), scommand, GetStateText(light_power), Settings.light_dimmer);
|
||||||
mqtt_data, scommand, GetStateText(light_power), Settings.light_dimmer);
|
|
||||||
if (light_subtype > LST_SINGLE) {
|
if (light_subtype > LST_SINGLE) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"" D_CMND_COLOR "\":\"%s\""), mqtt_data, LightGetColor(0, scolor));
|
ResponseAppend_P(PSTR(",\"" D_CMND_COLOR "\":\"%s\""), LightGetColor(0, scolor));
|
||||||
// Add status for HSB
|
// Add status for HSB
|
||||||
LightGetHsb(&hsb[0],&hsb[1],&hsb[2], false);
|
LightGetHsb(&hsb[0],&hsb[1],&hsb[2], false);
|
||||||
// Scale these percentages up to the numbers expected by the client
|
// Scale these percentages up to the numbers expected by the client
|
||||||
h = round(hsb[0] * 360);
|
h = round(hsb[0] * 360);
|
||||||
s = round(hsb[1] * 100);
|
s = round(hsb[1] * 100);
|
||||||
b = round(hsb[2] * 100);
|
b = round(hsb[2] * 100);
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"" D_CMND_HSBCOLOR "\":\"%d,%d,%d\""), mqtt_data, h,s,b);
|
ResponseAppend_P(PSTR(",\"" D_CMND_HSBCOLOR "\":\"%d,%d,%d\""), h,s,b);
|
||||||
// Add status for each channel
|
// Add status for each channel
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"" D_CMND_CHANNEL "\":[" ), mqtt_data);
|
ResponseAppend_P(PSTR(",\"" D_CMND_CHANNEL "\":[" ));
|
||||||
for (uint8_t i = 0; i < light_subtype; i++) {
|
for (uint8_t i = 0; i < light_subtype; i++) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s%s%d" ), mqtt_data, (i > 0 ? "," : ""), light_current_color[i] * 100 / 255);
|
ResponseAppend_P(PSTR("%s%d" ), (i > 0 ? "," : ""), light_current_color[i] * 100 / 255);
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s]" ), mqtt_data);
|
ResponseAppend_P(PSTR("%s]"));
|
||||||
}
|
}
|
||||||
if ((LST_COLDWARM == light_subtype) || (LST_RGBWC == light_subtype)) {
|
if ((LST_COLDWARM == light_subtype) || (LST_RGBWC == light_subtype)) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"" D_CMND_COLORTEMPERATURE "\":%d"), mqtt_data, LightGetColorTemp());
|
ResponseAppend_P(PSTR(",\"" D_CMND_COLORTEMPERATURE "\":%d"), LightGetColorTemp());
|
||||||
}
|
}
|
||||||
if (append) {
|
if (append) {
|
||||||
if (light_subtype >= LST_RGB) {
|
if (light_subtype >= LST_RGB) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"" D_CMND_SCHEME "\":%d"), mqtt_data, Settings.light_scheme);
|
ResponseAppend_P(PSTR(",\"" D_CMND_SCHEME "\":%d"), Settings.light_scheme);
|
||||||
}
|
}
|
||||||
if (LT_WS2812 == light_type) {
|
if (LT_WS2812 == light_type) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"" D_CMND_WIDTH "\":%d"), mqtt_data, Settings.light_width);
|
ResponseAppend_P(PSTR(",\"" D_CMND_WIDTH "\":%d"), Settings.light_width);
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"" D_CMND_FADE "\":\"%s\",\"" D_CMND_SPEED "\":%d,\"" D_CMND_LEDTABLE "\":\"%s\""),
|
ResponseAppend_P(PSTR(",\"" D_CMND_FADE "\":\"%s\",\"" D_CMND_SPEED "\":%d,\"" D_CMND_LEDTABLE "\":\"%s\""),
|
||||||
mqtt_data, GetStateText(Settings.light_fade), Settings.light_speed, GetStateText(Settings.light_correction));
|
GetStateText(Settings.light_fade), Settings.light_speed, GetStateText(Settings.light_correction));
|
||||||
} else {
|
} else {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s}"), mqtt_data);
|
ResponseAppend_P(PSTR("}"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -949,7 +948,7 @@ void LightAnimate(void)
|
|||||||
light_new_color[i] = light_current_color[i];
|
light_new_color[i] = light_current_color[i];
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_WAKEUP "\":\"" D_JSON_DONE "\"}"));
|
Response_P(PSTR("{\"" D_CMND_WAKEUP "\":\"" D_JSON_DONE "\"}"));
|
||||||
MqttPublishPrefixTopic_P(TELE, PSTR(D_CMND_WAKEUP));
|
MqttPublishPrefixTopic_P(TELE, PSTR(D_CMND_WAKEUP));
|
||||||
light_wakeup_active = 0;
|
light_wakeup_active = 0;
|
||||||
Settings.light_scheme = LS_POWER;
|
Settings.light_scheme = LS_POWER;
|
||||||
@ -1319,7 +1318,7 @@ bool LightCommand(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!valid_entry && (XdrvMailbox.index <= 2)) {
|
if (!valid_entry && (XdrvMailbox.index <= 2)) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, LightGetColor(0, scolor));
|
Response_P(S_JSON_COMMAND_SVALUE, command, LightGetColor(0, scolor));
|
||||||
}
|
}
|
||||||
if (XdrvMailbox.index >= 3) {
|
if (XdrvMailbox.index >= 3) {
|
||||||
scolor[0] = '\0';
|
scolor[0] = '\0';
|
||||||
@ -1330,7 +1329,7 @@ bool LightCommand(void)
|
|||||||
snprintf_P(scolor, 25, PSTR("%s%02X"), scolor, Settings.ws_color[XdrvMailbox.index -3][i]);
|
snprintf_P(scolor, 25, PSTR("%s%02X"), scolor, Settings.ws_color[XdrvMailbox.index -3][i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_SVALUE, command, XdrvMailbox.index, scolor);
|
Response_P(S_JSON_COMMAND_INDEX_SVALUE, command, XdrvMailbox.index, scolor);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ((CMND_CHANNEL == command_code) && (XdrvMailbox.index > 0) && (XdrvMailbox.index <= light_subtype ) ) {
|
else if ((CMND_CHANNEL == command_code) && (XdrvMailbox.index > 0) && (XdrvMailbox.index <= light_subtype ) ) {
|
||||||
@ -1340,7 +1339,7 @@ bool LightCommand(void)
|
|||||||
LightSetColor();
|
LightSetColor();
|
||||||
coldim = true;
|
coldim = true;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_NVALUE, command, XdrvMailbox.index, light_current_color[XdrvMailbox.index -1] * 100 / 255);
|
Response_P(S_JSON_COMMAND_INDEX_NVALUE, command, XdrvMailbox.index, light_current_color[XdrvMailbox.index -1] * 100 / 255);
|
||||||
}
|
}
|
||||||
else if ((CMND_HSBCOLOR == command_code) && ( light_subtype >= LST_RGB)) {
|
else if ((CMND_HSBCOLOR == command_code) && ( light_subtype >= LST_RGB)) {
|
||||||
bool validHSB = (XdrvMailbox.data_len > 0);
|
bool validHSB = (XdrvMailbox.data_len > 0);
|
||||||
@ -1405,7 +1404,7 @@ bool LightCommand(void)
|
|||||||
|
|
||||||
Ws2812ForceUpdate();
|
Ws2812ForceUpdate();
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_SVALUE, command, XdrvMailbox.index, Ws2812GetColor(XdrvMailbox.index, scolor));
|
Response_P(S_JSON_COMMAND_INDEX_SVALUE, command, XdrvMailbox.index, Ws2812GetColor(XdrvMailbox.index, scolor));
|
||||||
}
|
}
|
||||||
else if ((CMND_PIXELS == command_code) && (LT_WS2812 == light_type)) {
|
else if ((CMND_PIXELS == command_code) && (LT_WS2812 == light_type)) {
|
||||||
if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload <= WS2812_MAX_LEDS)) {
|
if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload <= WS2812_MAX_LEDS)) {
|
||||||
@ -1414,25 +1413,25 @@ bool LightCommand(void)
|
|||||||
Ws2812Clear();
|
Ws2812Clear();
|
||||||
light_update = 1;
|
light_update = 1;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, Settings.light_pixels);
|
Response_P(S_JSON_COMMAND_NVALUE, command, Settings.light_pixels);
|
||||||
}
|
}
|
||||||
else if ((CMND_ROTATION == command_code) && (LT_WS2812 == light_type)) {
|
else if ((CMND_ROTATION == command_code) && (LT_WS2812 == light_type)) {
|
||||||
if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload < Settings.light_pixels)) {
|
if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload < Settings.light_pixels)) {
|
||||||
Settings.light_rotation = XdrvMailbox.payload;
|
Settings.light_rotation = XdrvMailbox.payload;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, Settings.light_rotation);
|
Response_P(S_JSON_COMMAND_NVALUE, command, Settings.light_rotation);
|
||||||
}
|
}
|
||||||
else if ((CMND_WIDTH == command_code) && (LT_WS2812 == light_type) && (XdrvMailbox.index > 0) && (XdrvMailbox.index <= 4)) {
|
else if ((CMND_WIDTH == command_code) && (LT_WS2812 == light_type) && (XdrvMailbox.index > 0) && (XdrvMailbox.index <= 4)) {
|
||||||
if (1 == XdrvMailbox.index) {
|
if (1 == XdrvMailbox.index) {
|
||||||
if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 4)) {
|
if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 4)) {
|
||||||
Settings.light_width = XdrvMailbox.payload;
|
Settings.light_width = XdrvMailbox.payload;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, Settings.light_width);
|
Response_P(S_JSON_COMMAND_NVALUE, command, Settings.light_width);
|
||||||
} else {
|
} else {
|
||||||
if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload < 32)) {
|
if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload < 32)) {
|
||||||
Settings.ws_width[XdrvMailbox.index -2] = XdrvMailbox.payload;
|
Settings.ws_width[XdrvMailbox.index -2] = XdrvMailbox.payload;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_NVALUE, command, XdrvMailbox.index, Settings.ws_width[XdrvMailbox.index -2]);
|
Response_P(S_JSON_COMMAND_INDEX_NVALUE, command, XdrvMailbox.index, Settings.ws_width[XdrvMailbox.index -2]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif // USE_WS2812 ************************************************************************
|
#endif // USE_WS2812 ************************************************************************
|
||||||
@ -1454,7 +1453,7 @@ bool LightCommand(void)
|
|||||||
// Publish state message for Hass
|
// Publish state message for Hass
|
||||||
if (Settings.flag3.hass_tele_on_power) { MqttPublishTeleState(); }
|
if (Settings.flag3.hass_tele_on_power) { MqttPublishTeleState(); }
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, Settings.light_scheme);
|
Response_P(S_JSON_COMMAND_NVALUE, command, Settings.light_scheme);
|
||||||
}
|
}
|
||||||
else if (CMND_WAKEUP == command_code) {
|
else if (CMND_WAKEUP == command_code) {
|
||||||
if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 100)) {
|
if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 100)) {
|
||||||
@ -1463,7 +1462,7 @@ bool LightCommand(void)
|
|||||||
light_wakeup_active = 3;
|
light_wakeup_active = 3;
|
||||||
Settings.light_scheme = LS_WAKEUP;
|
Settings.light_scheme = LS_WAKEUP;
|
||||||
LightPowerOn();
|
LightPowerOn();
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, D_JSON_STARTED);
|
Response_P(S_JSON_COMMAND_SVALUE, command, D_JSON_STARTED);
|
||||||
}
|
}
|
||||||
else if ((CMND_COLORTEMPERATURE == command_code) && ((LST_COLDWARM == light_subtype) || (LST_RGBWC == light_subtype))) { // ColorTemp
|
else if ((CMND_COLORTEMPERATURE == command_code) && ((LST_COLDWARM == light_subtype) || (LST_RGBWC == light_subtype))) { // ColorTemp
|
||||||
if (option != '\0') {
|
if (option != '\0') {
|
||||||
@ -1479,7 +1478,7 @@ bool LightCommand(void)
|
|||||||
LightSetColorTemp(XdrvMailbox.payload);
|
LightSetColorTemp(XdrvMailbox.payload);
|
||||||
coldim = true;
|
coldim = true;
|
||||||
} else {
|
} else {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, LightGetColorTemp());
|
Response_P(S_JSON_COMMAND_NVALUE, command, LightGetColorTemp());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (CMND_DIMMER == command_code) {
|
else if (CMND_DIMMER == command_code) {
|
||||||
@ -1494,7 +1493,7 @@ bool LightCommand(void)
|
|||||||
light_update = 1;
|
light_update = 1;
|
||||||
coldim = true;
|
coldim = true;
|
||||||
} else {
|
} else {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, Settings.light_dimmer);
|
Response_P(S_JSON_COMMAND_NVALUE, command, Settings.light_dimmer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (CMND_LEDTABLE == command_code) {
|
else if (CMND_LEDTABLE == command_code) {
|
||||||
@ -1510,7 +1509,7 @@ bool LightCommand(void)
|
|||||||
}
|
}
|
||||||
light_update = 1;
|
light_update = 1;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, GetStateText(Settings.light_correction));
|
Response_P(S_JSON_COMMAND_SVALUE, command, GetStateText(Settings.light_correction));
|
||||||
}
|
}
|
||||||
else if (CMND_RGBWWTABLE == command_code) {
|
else if (CMND_RGBWWTABLE == command_code) {
|
||||||
bool validtable = (XdrvMailbox.data_len > 0);
|
bool validtable = (XdrvMailbox.data_len > 0);
|
||||||
@ -1536,7 +1535,7 @@ bool LightCommand(void)
|
|||||||
for (uint8_t i = 0; i < LST_RGBWC; i++) {
|
for (uint8_t i = 0; i < LST_RGBWC; i++) {
|
||||||
snprintf_P(scolor, 25, PSTR("%s%s%d"), scolor, (i > 0) ? "," : "", Settings.rgbwwTable[i]);
|
snprintf_P(scolor, 25, PSTR("%s%s%d"), scolor, (i > 0) ? "," : "", Settings.rgbwwTable[i]);
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_SVALUE, command, XdrvMailbox.index, scolor);
|
Response_P(S_JSON_COMMAND_INDEX_SVALUE, command, XdrvMailbox.index, scolor);
|
||||||
}
|
}
|
||||||
else if (CMND_FADE == command_code) {
|
else if (CMND_FADE == command_code) {
|
||||||
switch (XdrvMailbox.payload) {
|
switch (XdrvMailbox.payload) {
|
||||||
@ -1548,7 +1547,7 @@ bool LightCommand(void)
|
|||||||
Settings.light_fade ^= 1;
|
Settings.light_fade ^= 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, GetStateText(Settings.light_fade));
|
Response_P(S_JSON_COMMAND_SVALUE, command, GetStateText(Settings.light_fade));
|
||||||
}
|
}
|
||||||
else if (CMND_SPEED == command_code) { // 1 - fast, 20 - very slow
|
else if (CMND_SPEED == command_code) { // 1 - fast, 20 - very slow
|
||||||
if (('+' == option) && (Settings.light_speed > 1)) {
|
if (('+' == option) && (Settings.light_speed > 1)) {
|
||||||
@ -1560,20 +1559,19 @@ bool LightCommand(void)
|
|||||||
if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload <= STATES)) {
|
if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload <= STATES)) {
|
||||||
Settings.light_speed = XdrvMailbox.payload;
|
Settings.light_speed = XdrvMailbox.payload;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, Settings.light_speed);
|
Response_P(S_JSON_COMMAND_NVALUE, command, Settings.light_speed);
|
||||||
}
|
}
|
||||||
else if (CMND_WAKEUPDURATION == command_code) {
|
else if (CMND_WAKEUPDURATION == command_code) {
|
||||||
if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload < 3001)) {
|
if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload < 3001)) {
|
||||||
Settings.light_wakeup = XdrvMailbox.payload;
|
Settings.light_wakeup = XdrvMailbox.payload;
|
||||||
light_wakeup_active = 0;
|
light_wakeup_active = 0;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, Settings.light_wakeup);
|
Response_P(S_JSON_COMMAND_NVALUE, command, Settings.light_wakeup);
|
||||||
}
|
}
|
||||||
else if (CMND_UNDOCA == command_code) { // Theos legacy status
|
else if (CMND_UNDOCA == command_code) { // Theos legacy status
|
||||||
LightGetColor(1, scolor);
|
LightGetColor(1, scolor);
|
||||||
scolor[6] = '\0'; // RGB only
|
scolor[6] = '\0'; // RGB only
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,%d,%d,%d,%d,%d"),
|
Response_P(PSTR("%s,%d,%d,%d,%d,%d"), scolor, Settings.light_fade, Settings.light_correction, Settings.light_scheme, Settings.light_speed, Settings.light_width);
|
||||||
scolor, Settings.light_fade, Settings.light_correction, Settings.light_scheme, Settings.light_speed, Settings.light_width);
|
|
||||||
MqttPublishPrefixTopic_P(STAT, XdrvMailbox.topic);
|
MqttPublishPrefixTopic_P(STAT, XdrvMailbox.topic);
|
||||||
mqtt_data[0] = '\0';
|
mqtt_data[0] = '\0';
|
||||||
}
|
}
|
||||||
|
@ -131,19 +131,19 @@ void IrReceiveCheck(void)
|
|||||||
} else {
|
} else {
|
||||||
snprintf_P(stemp, sizeof(stemp), PSTR("\"0x%lX\""), (uint32_t)results.value);
|
snprintf_P(stemp, sizeof(stemp), PSTR("\"0x%lX\""), (uint32_t)results.value);
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_IRRECEIVED "\":{\"" D_JSON_IR_PROTOCOL "\":\"%s\",\"" D_JSON_IR_BITS "\":%d,\"" D_JSON_IR_DATA "\":%s"),
|
Response_P(PSTR("{\"" D_JSON_IRRECEIVED "\":{\"" D_JSON_IR_PROTOCOL "\":\"%s\",\"" D_JSON_IR_BITS "\":%d,\"" D_JSON_IR_DATA "\":%s"),
|
||||||
GetTextIndexed(sirtype, sizeof(sirtype), iridx, kIrRemoteProtocols), results.bits, stemp);
|
GetTextIndexed(sirtype, sizeof(sirtype), iridx, kIrRemoteProtocols), results.bits, stemp);
|
||||||
|
|
||||||
if (Settings.flag3.receive_raw) {
|
if (Settings.flag3.receive_raw) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"" D_JSON_IR_RAWDATA "\":["), mqtt_data);
|
ResponseAppend_P(PSTR(",\"" D_JSON_IR_RAWDATA "\":["));
|
||||||
uint16_t i;
|
uint16_t i;
|
||||||
for (i = 1; i < results.rawlen; i++) {
|
for (i = 1; i < results.rawlen; i++) {
|
||||||
if (i > 1) { snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,"), mqtt_data); }
|
if (i > 1) { ResponseAppend_P(PSTR(",")); }
|
||||||
uint32_t usecs;
|
uint32_t usecs;
|
||||||
for (usecs = results.rawbuf[i] * kRawTick; usecs > UINT16_MAX; usecs -= UINT16_MAX) {
|
for (usecs = results.rawbuf[i] * kRawTick; usecs > UINT16_MAX; usecs -= UINT16_MAX) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s%d,0,"), mqtt_data, UINT16_MAX);
|
ResponseAppend_P(PSTR("%d,0,"), UINT16_MAX);
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s%d"), mqtt_data, usecs);
|
ResponseAppend_P(PSTR("%d"), usecs);
|
||||||
if (strlen(mqtt_data) > sizeof(mqtt_data) - 40) { break; } // Quit if char string becomes too long
|
if (strlen(mqtt_data) > sizeof(mqtt_data) - 40) { break; } // Quit if char string becomes too long
|
||||||
}
|
}
|
||||||
uint16_t extended_length = results.rawlen - 1;
|
uint16_t extended_length = results.rawlen - 1;
|
||||||
@ -152,10 +152,10 @@ void IrReceiveCheck(void)
|
|||||||
// Add two extra entries for multiple larger than UINT16_MAX it is.
|
// Add two extra entries for multiple larger than UINT16_MAX it is.
|
||||||
extended_length += (usecs / (UINT16_MAX + 1)) * 2;
|
extended_length += (usecs / (UINT16_MAX + 1)) * 2;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s],\"" D_JSON_IR_RAWDATA "Info\":[%d,%d,%d]"), mqtt_data, extended_length, i -1, results.overflow);
|
ResponseAppend_P(PSTR("],\"" D_JSON_IR_RAWDATA "Info\":[%d,%d,%d]"), extended_length, i -1, results.overflow);
|
||||||
}
|
}
|
||||||
|
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s}}"), mqtt_data);
|
ResponseAppend_P(PSTR("}}"));
|
||||||
MqttPublishPrefixTopic_P(RESULT_OR_TELE, PSTR(D_JSON_IRRECEIVED));
|
MqttPublishPrefixTopic_P(RESULT_OR_TELE, PSTR(D_JSON_IRRECEIVED));
|
||||||
|
|
||||||
if (iridx) {
|
if (iridx) {
|
||||||
@ -516,7 +516,7 @@ bool IrSendCommand(void)
|
|||||||
}
|
}
|
||||||
else if (CMND_IRSEND == command_code) {
|
else if (CMND_IRSEND == command_code) {
|
||||||
if (XdrvMailbox.data_len) {
|
if (XdrvMailbox.data_len) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, D_JSON_DONE);
|
Response_P(S_JSON_COMMAND_SVALUE, command, D_JSON_DONE);
|
||||||
|
|
||||||
if (!strstr(XdrvMailbox.data, "{")) { // If no JSON it must be rawdata
|
if (!strstr(XdrvMailbox.data, "{")) { // If no JSON it must be rawdata
|
||||||
// IRSend frequency, rawdata, rawdata ...
|
// IRSend frequency, rawdata, rawdata ...
|
||||||
@ -540,11 +540,11 @@ bool IrSendCommand(void)
|
|||||||
irsend_active = true;
|
irsend_active = true;
|
||||||
irsend->sendRaw(raw_array, count, freq);
|
irsend->sendRaw(raw_array, count, freq);
|
||||||
if (!count) {
|
if (!count) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, D_JSON_FAILED);
|
Response_P(S_JSON_COMMAND_SVALUE, command, D_JSON_FAILED);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, D_JSON_INVALID_RAWDATA);
|
Response_P(S_JSON_COMMAND_SVALUE, command, D_JSON_INVALID_RAWDATA);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -553,7 +553,7 @@ bool IrSendCommand(void)
|
|||||||
StaticJsonBuffer<128> jsonBuf;
|
StaticJsonBuffer<128> jsonBuf;
|
||||||
JsonObject &root = jsonBuf.parseObject(dataBufUc);
|
JsonObject &root = jsonBuf.parseObject(dataBufUc);
|
||||||
if (!root.success()) {
|
if (!root.success()) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, D_JSON_INVALID_JSON);
|
Response_P(S_JSON_COMMAND_SVALUE, command, D_JSON_INVALID_JSON);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// IRsend { "protocol": "SAMSUNG", "bits": 32, "data": 551502015 }
|
// IRsend { "protocol": "SAMSUNG", "bits": 32, "data": 551502015 }
|
||||||
@ -588,7 +588,7 @@ bool IrSendCommand(void)
|
|||||||
irsend->sendPanasonic(bits, data); break;
|
irsend->sendPanasonic(bits, data); break;
|
||||||
default:
|
default:
|
||||||
irsend_active = false;
|
irsend_active = false;
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, D_JSON_PROTOCOL_NOT_SUPPORTED);
|
Response_P(S_JSON_COMMAND_SVALUE, command, D_JSON_PROTOCOL_NOT_SUPPORTED);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -601,7 +601,7 @@ bool IrSendCommand(void)
|
|||||||
error = true;
|
error = true;
|
||||||
}
|
}
|
||||||
if (error) {
|
if (error) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_IRSEND "\":\"" D_JSON_NO " " D_JSON_IR_PROTOCOL ", " D_JSON_IR_BITS " " D_JSON_OR " " D_JSON_IR_DATA "\"}"));
|
Response_P(PSTR("{\"" D_CMND_IRSEND "\":\"" D_JSON_NO " " D_JSON_IR_PROTOCOL ", " D_JSON_IR_BITS " " D_JSON_OR " " D_JSON_IR_DATA "\"}"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#ifdef USE_IR_HVAC
|
#ifdef USE_IR_HVAC
|
||||||
@ -618,10 +618,10 @@ bool IrSendCommand(void)
|
|||||||
StaticJsonBuffer<164> jsonBufer;
|
StaticJsonBuffer<164> jsonBufer;
|
||||||
JsonObject &root = jsonBufer.parseObject(dataBufUc);
|
JsonObject &root = jsonBufer.parseObject(dataBufUc);
|
||||||
if (!root.success()) {
|
if (!root.success()) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, D_JSON_INVALID_JSON);
|
Response_P(S_JSON_COMMAND_SVALUE, command, D_JSON_INVALID_JSON);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, D_JSON_DONE);
|
Response_P(S_JSON_COMMAND_SVALUE, command, D_JSON_DONE);
|
||||||
HVAC_Vendor = root[D_JSON_IRHVAC_VENDOR];
|
HVAC_Vendor = root[D_JSON_IRHVAC_VENDOR];
|
||||||
HVAC_Power = root[D_JSON_IRHVAC_POWER];
|
HVAC_Power = root[D_JSON_IRHVAC_POWER];
|
||||||
HVAC_Mode = root[D_JSON_IRHVAC_MODE];
|
HVAC_Mode = root[D_JSON_IRHVAC_MODE];
|
||||||
@ -650,7 +650,7 @@ bool IrSendCommand(void)
|
|||||||
error = true;
|
error = true;
|
||||||
}
|
}
|
||||||
if (error) {
|
if (error) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_IRHVAC "\":\"" D_JSON_WRONG " " D_JSON_IRHVAC_VENDOR ", " D_JSON_IRHVAC_MODE " " D_JSON_OR " " D_JSON_IRHVAC_FANSPEED "\"}"));
|
Response_P(PSTR("{\"" D_CMND_IRHVAC "\":\"" D_JSON_WRONG " " D_JSON_IRHVAC_VENDOR ", " D_JSON_IRHVAC_MODE " " D_JSON_OR " " D_JSON_IRHVAC_FANSPEED "\"}"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif // USE_IR_HVAC
|
#endif // USE_IR_HVAC
|
||||||
|
@ -208,17 +208,17 @@ void SonoffBridgeReceivedRaw(void)
|
|||||||
|
|
||||||
if (0xB1 == serial_in_buffer[1]) { buckets = serial_in_buffer[2] << 1; } // Bucket sniffing
|
if (0xB1 == serial_in_buffer[1]) { buckets = serial_in_buffer[2] << 1; } // Bucket sniffing
|
||||||
|
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_RFRAW "\":{\"" D_JSON_DATA "\":\""));
|
Response_P(PSTR("{\"" D_CMND_RFRAW "\":{\"" D_JSON_DATA "\":\""));
|
||||||
for (int i = 0; i < serial_in_byte_counter; i++) {
|
for (int i = 0; i < serial_in_byte_counter; i++) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s%02X"), mqtt_data, serial_in_buffer[i]);
|
ResponseAppend_P(PSTR("%02X"), serial_in_buffer[i]);
|
||||||
if (0xB1 == serial_in_buffer[1]) {
|
if (0xB1 == serial_in_buffer[1]) {
|
||||||
if ((i > 3) && buckets) { buckets--; }
|
if ((i > 3) && buckets) { buckets--; }
|
||||||
if ((i < 3) || (buckets % 2) || (i == serial_in_byte_counter -2)) {
|
if ((i < 3) || (buckets % 2) || (i == serial_in_byte_counter -2)) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s "), mqtt_data);
|
ResponseAppend_P(PSTR(" "));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s\"}}"), mqtt_data);
|
ResponseAppend_P(PSTR("\"}}"));
|
||||||
MqttPublishPrefixTopic_P(RESULT_OR_TELE, PSTR(D_CMND_RFRAW));
|
MqttPublishPrefixTopic_P(RESULT_OR_TELE, PSTR(D_CMND_RFRAW));
|
||||||
XdrvRulesProcess();
|
XdrvRulesProcess();
|
||||||
}
|
}
|
||||||
@ -228,7 +228,7 @@ void SonoffBridgeReceivedRaw(void)
|
|||||||
void SonoffBridgeLearnFailed(void)
|
void SonoffBridgeLearnFailed(void)
|
||||||
{
|
{
|
||||||
sonoff_bridge_learn_active = 0;
|
sonoff_bridge_learn_active = 0;
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_SVALUE, D_CMND_RFKEY, sonoff_bridge_learn_key, D_JSON_LEARN_FAILED);
|
Response_P(S_JSON_COMMAND_INDEX_SVALUE, D_CMND_RFKEY, sonoff_bridge_learn_key, D_JSON_LEARN_FAILED);
|
||||||
MqttPublishPrefixTopic_P(RESULT_OR_STAT, PSTR(D_CMND_RFKEY));
|
MqttPublishPrefixTopic_P(RESULT_OR_STAT, PSTR(D_CMND_RFKEY));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -254,7 +254,7 @@ void SonoffBridgeReceived(void)
|
|||||||
for (uint8_t i = 0; i < 9; i++) {
|
for (uint8_t i = 0; i < 9; i++) {
|
||||||
Settings.rf_code[sonoff_bridge_learn_key][i] = serial_in_buffer[i +1];
|
Settings.rf_code[sonoff_bridge_learn_key][i] = serial_in_buffer[i +1];
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_SVALUE, D_CMND_RFKEY, sonoff_bridge_learn_key, D_JSON_LEARNED);
|
Response_P(S_JSON_COMMAND_INDEX_SVALUE, D_CMND_RFKEY, sonoff_bridge_learn_key, D_JSON_LEARNED);
|
||||||
MqttPublishPrefixTopic_P(RESULT_OR_STAT, PSTR(D_CMND_RFKEY));
|
MqttPublishPrefixTopic_P(RESULT_OR_STAT, PSTR(D_CMND_RFKEY));
|
||||||
} else {
|
} else {
|
||||||
SonoffBridgeLearnFailed();
|
SonoffBridgeLearnFailed();
|
||||||
@ -288,7 +288,7 @@ void SonoffBridgeReceived(void)
|
|||||||
} else {
|
} else {
|
||||||
snprintf_P(stemp, sizeof(stemp), PSTR("\"%06X\""), received_id);
|
snprintf_P(stemp, sizeof(stemp), PSTR("\"%06X\""), received_id);
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_RFRECEIVED "\":{\"" D_JSON_SYNC "\":%d,\"" D_JSON_LOW "\":%d,\"" D_JSON_HIGH "\":%d,\"" D_JSON_DATA "\":%s,\"" D_CMND_RFKEY "\":%s}}"),
|
Response_P(PSTR("{\"" D_JSON_RFRECEIVED "\":{\"" D_JSON_SYNC "\":%d,\"" D_JSON_LOW "\":%d,\"" D_JSON_HIGH "\":%d,\"" D_JSON_DATA "\":%s,\"" D_CMND_RFKEY "\":%s}}"),
|
||||||
sync_time, low_time, high_time, stemp, rfkey);
|
sync_time, low_time, high_time, stemp, rfkey);
|
||||||
MqttPublishPrefixTopic_P(RESULT_OR_TELE, PSTR(D_JSON_RFRECEIVED));
|
MqttPublishPrefixTopic_P(RESULT_OR_TELE, PSTR(D_JSON_RFRECEIVED));
|
||||||
XdrvRulesProcess();
|
XdrvRulesProcess();
|
||||||
@ -470,7 +470,7 @@ bool SonoffBridgeCommand(void)
|
|||||||
} else {
|
} else {
|
||||||
snprintf_P(stemp, sizeof(stemp), PSTR("\"#%X\""), code);
|
snprintf_P(stemp, sizeof(stemp), PSTR("\"#%X\""), code);
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_XVALUE, command, stemp);
|
Response_P(S_JSON_COMMAND_XVALUE, command, stemp);
|
||||||
}
|
}
|
||||||
else if ((CMND_RFKEY == command_code) && (XdrvMailbox.index > 0) && (XdrvMailbox.index <= 16)) {
|
else if ((CMND_RFKEY == command_code) && (XdrvMailbox.index > 0) && (XdrvMailbox.index <= 16)) {
|
||||||
unsigned long now = millis();
|
unsigned long now = millis();
|
||||||
@ -478,11 +478,11 @@ bool SonoffBridgeCommand(void)
|
|||||||
sonoff_bridge_learn_active = 0;
|
sonoff_bridge_learn_active = 0;
|
||||||
if (2 == XdrvMailbox.payload) { // Learn RF data
|
if (2 == XdrvMailbox.payload) { // Learn RF data
|
||||||
SonoffBridgeLearn(XdrvMailbox.index);
|
SonoffBridgeLearn(XdrvMailbox.index);
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_SVALUE, command, XdrvMailbox.index, D_JSON_START_LEARNING);
|
Response_P(S_JSON_COMMAND_INDEX_SVALUE, command, XdrvMailbox.index, D_JSON_START_LEARNING);
|
||||||
}
|
}
|
||||||
else if (3 == XdrvMailbox.payload) { // Unlearn RF data
|
else if (3 == XdrvMailbox.payload) { // Unlearn RF data
|
||||||
Settings.rf_code[XdrvMailbox.index][0] = 0; // Reset sync_time MSB
|
Settings.rf_code[XdrvMailbox.index][0] = 0; // Reset sync_time MSB
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_SVALUE, command, XdrvMailbox.index, D_JSON_SET_TO_DEFAULT);
|
Response_P(S_JSON_COMMAND_INDEX_SVALUE, command, XdrvMailbox.index, D_JSON_SET_TO_DEFAULT);
|
||||||
}
|
}
|
||||||
else if (4 == XdrvMailbox.payload) { // Save RF data provided by RFSync, RfLow, RfHigh and last RfCode
|
else if (4 == XdrvMailbox.payload) { // Save RF data provided by RFSync, RfLow, RfHigh and last RfCode
|
||||||
for (uint8_t i = 0; i < 6; i++) {
|
for (uint8_t i = 0; i < 6; i++) {
|
||||||
@ -491,7 +491,7 @@ bool SonoffBridgeCommand(void)
|
|||||||
Settings.rf_code[XdrvMailbox.index][6] = (sonoff_bridge_last_send_code >> 16) & 0xff;
|
Settings.rf_code[XdrvMailbox.index][6] = (sonoff_bridge_last_send_code >> 16) & 0xff;
|
||||||
Settings.rf_code[XdrvMailbox.index][7] = (sonoff_bridge_last_send_code >> 8) & 0xff;
|
Settings.rf_code[XdrvMailbox.index][7] = (sonoff_bridge_last_send_code >> 8) & 0xff;
|
||||||
Settings.rf_code[XdrvMailbox.index][8] = sonoff_bridge_last_send_code & 0xff;
|
Settings.rf_code[XdrvMailbox.index][8] = sonoff_bridge_last_send_code & 0xff;
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_SVALUE, command, XdrvMailbox.index, D_JSON_SAVED);
|
Response_P(S_JSON_COMMAND_INDEX_SVALUE, command, XdrvMailbox.index, D_JSON_SAVED);
|
||||||
} else if (5 == XdrvMailbox.payload) { // Show default or learned RF data
|
} else if (5 == XdrvMailbox.payload) { // Show default or learned RF data
|
||||||
uint8_t key = XdrvMailbox.index;
|
uint8_t key = XdrvMailbox.index;
|
||||||
uint8_t index = (0 == Settings.rf_code[key][0]) ? 0 : key; // Use default if sync_time MSB = 0
|
uint8_t index = (0 == Settings.rf_code[key][0]) ? 0 : key; // Use default if sync_time MSB = 0
|
||||||
@ -505,19 +505,19 @@ bool SonoffBridgeCommand(void)
|
|||||||
} else {
|
} else {
|
||||||
code |= Settings.rf_code[index][8];
|
code |= Settings.rf_code[index][8];
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"%s%d\":{\"" D_JSON_SYNC "\":%d,\"" D_JSON_LOW "\":%d,\"" D_JSON_HIGH "\":%d,\"" D_JSON_DATA "\":\"%06X\"}}"),
|
Response_P(PSTR("{\"%s%d\":{\"" D_JSON_SYNC "\":%d,\"" D_JSON_LOW "\":%d,\"" D_JSON_HIGH "\":%d,\"" D_JSON_DATA "\":\"%06X\"}}"),
|
||||||
command, XdrvMailbox.index, sync_time, low_time, high_time, code);
|
command, XdrvMailbox.index, sync_time, low_time, high_time, code);
|
||||||
} else {
|
} else {
|
||||||
if ((1 == XdrvMailbox.payload) || (0 == Settings.rf_code[XdrvMailbox.index][0])) { // Test sync_time MSB
|
if ((1 == XdrvMailbox.payload) || (0 == Settings.rf_code[XdrvMailbox.index][0])) { // Test sync_time MSB
|
||||||
SonoffBridgeSend(0, XdrvMailbox.index); // Send default RF data
|
SonoffBridgeSend(0, XdrvMailbox.index); // Send default RF data
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_SVALUE, command, XdrvMailbox.index, D_JSON_DEFAULT_SENT);
|
Response_P(S_JSON_COMMAND_INDEX_SVALUE, command, XdrvMailbox.index, D_JSON_DEFAULT_SENT);
|
||||||
} else {
|
} else {
|
||||||
SonoffBridgeSend(XdrvMailbox.index, 0); // Send learned RF data
|
SonoffBridgeSend(XdrvMailbox.index, 0); // Send learned RF data
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_SVALUE, command, XdrvMailbox.index, D_JSON_LEARNED_SENT);
|
Response_P(S_JSON_COMMAND_INDEX_SVALUE, command, XdrvMailbox.index, D_JSON_LEARNED_SENT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_SVALUE, command, sonoff_bridge_learn_key, D_JSON_LEARNING_ACTIVE);
|
Response_P(S_JSON_COMMAND_INDEX_SVALUE, command, sonoff_bridge_learn_key, D_JSON_LEARNING_ACTIVE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (CMND_RFRAW == command_code) {
|
else if (CMND_RFRAW == command_code) {
|
||||||
@ -548,7 +548,7 @@ bool SonoffBridgeCommand(void)
|
|||||||
sonoff_bridge_receive_raw_flag = 1;
|
sonoff_bridge_receive_raw_flag = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, GetStateText(sonoff_bridge_receive_raw_flag));
|
Response_P(S_JSON_COMMAND_SVALUE, command, GetStateText(sonoff_bridge_receive_raw_flag));
|
||||||
} else serviced = false; // Unknown command
|
} else serviced = false; // Unknown command
|
||||||
|
|
||||||
return serviced;
|
return serviced;
|
||||||
|
@ -79,8 +79,7 @@ void MqttPublishDomoticzFanState()
|
|||||||
|
|
||||||
int fan_speed = GetFanspeed();
|
int fan_speed = GetFanspeed();
|
||||||
snprintf_P(svalue, sizeof(svalue), PSTR("%d"), fan_speed * 10);
|
snprintf_P(svalue, sizeof(svalue), PSTR("%d"), fan_speed * 10);
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), DOMOTICZ_MESSAGE,
|
Response_P(DOMOTICZ_MESSAGE, (int)Settings.domoticz_relay_idx[1], (0 == fan_speed) ? 0 : 2, svalue, DomoticzBatteryQuality(), DomoticzRssiQuality());
|
||||||
(int)Settings.domoticz_relay_idx[1], (0 == fan_speed) ? 0 : 2, svalue, DomoticzBatteryQuality(), DomoticzRssiQuality());
|
|
||||||
MqttPublish(domoticz_in_topic);
|
MqttPublish(domoticz_in_topic);
|
||||||
|
|
||||||
fan_debounce = millis();
|
fan_debounce = millis();
|
||||||
@ -106,8 +105,7 @@ void MqttPublishDomoticzPowerState(uint8_t device)
|
|||||||
char svalue[8]; // Dimmer value
|
char svalue[8]; // Dimmer value
|
||||||
|
|
||||||
snprintf_P(svalue, sizeof(svalue), PSTR("%d"), Settings.light_dimmer);
|
snprintf_P(svalue, sizeof(svalue), PSTR("%d"), Settings.light_dimmer);
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), DOMOTICZ_MESSAGE,
|
Response_P(DOMOTICZ_MESSAGE, (int)Settings.domoticz_relay_idx[device -1], (power & (1 << (device -1))) ? 1 : 0, (light_type) ? svalue : "", DomoticzBatteryQuality(), DomoticzRssiQuality());
|
||||||
(int)Settings.domoticz_relay_idx[device -1], (power & (1 << (device -1))) ? 1 : 0, (light_type) ? svalue : "", DomoticzBatteryQuality(), DomoticzRssiQuality());
|
|
||||||
MqttPublish(domoticz_in_topic);
|
MqttPublish(domoticz_in_topic);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -301,31 +299,31 @@ bool DomoticzCommand(void)
|
|||||||
Settings.domoticz_relay_idx[XdrvMailbox.index -1] = XdrvMailbox.payload;
|
Settings.domoticz_relay_idx[XdrvMailbox.index -1] = XdrvMailbox.payload;
|
||||||
restart_flag = 2;
|
restart_flag = 2;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_DOMOTICZ_COMMAND_INDEX_LVALUE, command, XdrvMailbox.index, Settings.domoticz_relay_idx[XdrvMailbox.index -1]);
|
Response_P(S_JSON_DOMOTICZ_COMMAND_INDEX_LVALUE, command, XdrvMailbox.index, Settings.domoticz_relay_idx[XdrvMailbox.index -1]);
|
||||||
}
|
}
|
||||||
else if ((CMND_KEYIDX == command_code) && (XdrvMailbox.index > 0) && (XdrvMailbox.index <= MAX_DOMOTICZ_IDX)) {
|
else if ((CMND_KEYIDX == command_code) && (XdrvMailbox.index > 0) && (XdrvMailbox.index <= MAX_DOMOTICZ_IDX)) {
|
||||||
if (XdrvMailbox.payload >= 0) {
|
if (XdrvMailbox.payload >= 0) {
|
||||||
Settings.domoticz_key_idx[XdrvMailbox.index -1] = XdrvMailbox.payload;
|
Settings.domoticz_key_idx[XdrvMailbox.index -1] = XdrvMailbox.payload;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_DOMOTICZ_COMMAND_INDEX_LVALUE, command, XdrvMailbox.index, Settings.domoticz_key_idx[XdrvMailbox.index -1]);
|
Response_P(S_JSON_DOMOTICZ_COMMAND_INDEX_LVALUE, command, XdrvMailbox.index, Settings.domoticz_key_idx[XdrvMailbox.index -1]);
|
||||||
}
|
}
|
||||||
else if ((CMND_SWITCHIDX == command_code) && (XdrvMailbox.index > 0) && (XdrvMailbox.index <= MAX_DOMOTICZ_IDX)) {
|
else if ((CMND_SWITCHIDX == command_code) && (XdrvMailbox.index > 0) && (XdrvMailbox.index <= MAX_DOMOTICZ_IDX)) {
|
||||||
if (XdrvMailbox.payload >= 0) {
|
if (XdrvMailbox.payload >= 0) {
|
||||||
Settings.domoticz_switch_idx[XdrvMailbox.index -1] = XdrvMailbox.payload;
|
Settings.domoticz_switch_idx[XdrvMailbox.index -1] = XdrvMailbox.payload;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_DOMOTICZ_COMMAND_INDEX_NVALUE, command, XdrvMailbox.index, Settings.domoticz_switch_idx[XdrvMailbox.index -1]);
|
Response_P(S_JSON_DOMOTICZ_COMMAND_INDEX_NVALUE, command, XdrvMailbox.index, Settings.domoticz_switch_idx[XdrvMailbox.index -1]);
|
||||||
}
|
}
|
||||||
else if ((CMND_SENSORIDX == command_code) && (XdrvMailbox.index > 0) && (XdrvMailbox.index <= DZ_MAX_SENSORS)) {
|
else if ((CMND_SENSORIDX == command_code) && (XdrvMailbox.index > 0) && (XdrvMailbox.index <= DZ_MAX_SENSORS)) {
|
||||||
if (XdrvMailbox.payload >= 0) {
|
if (XdrvMailbox.payload >= 0) {
|
||||||
Settings.domoticz_sensor_idx[XdrvMailbox.index -1] = XdrvMailbox.payload;
|
Settings.domoticz_sensor_idx[XdrvMailbox.index -1] = XdrvMailbox.payload;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_DOMOTICZ_COMMAND_INDEX_NVALUE, command, XdrvMailbox.index, Settings.domoticz_sensor_idx[XdrvMailbox.index -1]);
|
Response_P(S_JSON_DOMOTICZ_COMMAND_INDEX_NVALUE, command, XdrvMailbox.index, Settings.domoticz_sensor_idx[XdrvMailbox.index -1]);
|
||||||
}
|
}
|
||||||
else if (CMND_UPDATETIMER == command_code) {
|
else if (CMND_UPDATETIMER == command_code) {
|
||||||
if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload < 3601)) {
|
if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload < 3601)) {
|
||||||
Settings.domoticz_update_timer = XdrvMailbox.payload;
|
Settings.domoticz_update_timer = XdrvMailbox.payload;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_DOMOTICZ "%s\":%d}"), command, Settings.domoticz_update_timer);
|
Response_P(PSTR("{\"" D_CMND_DOMOTICZ "%s\":%d}"), command, Settings.domoticz_update_timer);
|
||||||
}
|
}
|
||||||
else serviced = false; // Unknown command
|
else serviced = false; // Unknown command
|
||||||
}
|
}
|
||||||
@ -340,7 +338,7 @@ bool DomoticzSendKey(uint8_t key, uint8_t device, uint8_t state, uint8_t svalflg
|
|||||||
|
|
||||||
if (device <= MAX_DOMOTICZ_IDX) {
|
if (device <= MAX_DOMOTICZ_IDX) {
|
||||||
if ((Settings.domoticz_key_idx[device -1] || Settings.domoticz_switch_idx[device -1]) && (svalflg)) {
|
if ((Settings.domoticz_key_idx[device -1] || Settings.domoticz_switch_idx[device -1]) && (svalflg)) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"command\":\"switchlight\",\"idx\":%d,\"switchcmd\":\"%s\"}"),
|
Response_P(PSTR("{\"command\":\"switchlight\",\"idx\":%d,\"switchcmd\":\"%s\"}"),
|
||||||
(key) ? Settings.domoticz_switch_idx[device -1] : Settings.domoticz_key_idx[device -1], (state) ? (2 == state) ? "Toggle" : "On" : "Off");
|
(key) ? Settings.domoticz_switch_idx[device -1] : Settings.domoticz_key_idx[device -1], (state) ? (2 == state) ? "Toggle" : "On" : "Off");
|
||||||
MqttPublish(domoticz_in_topic);
|
MqttPublish(domoticz_in_topic);
|
||||||
result = 1;
|
result = 1;
|
||||||
@ -375,14 +373,14 @@ uint8_t DomoticzHumidityState(char *hum)
|
|||||||
void DomoticzSensor(uint8_t idx, char *data)
|
void DomoticzSensor(uint8_t idx, char *data)
|
||||||
{
|
{
|
||||||
if (Settings.domoticz_sensor_idx[idx]) {
|
if (Settings.domoticz_sensor_idx[idx]) {
|
||||||
char dmess[90];
|
char dmess[100];
|
||||||
|
|
||||||
memcpy(dmess, mqtt_data, sizeof(dmess));
|
memcpy(dmess, mqtt_data, sizeof(dmess));
|
||||||
if (DZ_AIRQUALITY == idx) {
|
if (DZ_AIRQUALITY == idx) {
|
||||||
snprintf_P(mqtt_data, sizeof(dmess), PSTR("{\"idx\":%d,\"nvalue\":%s,\"Battery\":%d,\"RSSI\":%d}"),
|
Response_P(PSTR("{\"idx\":%d,\"nvalue\":%s,\"Battery\":%d,\"RSSI\":%d}"),
|
||||||
Settings.domoticz_sensor_idx[idx], data, DomoticzBatteryQuality(), DomoticzRssiQuality());
|
Settings.domoticz_sensor_idx[idx], data, DomoticzBatteryQuality(), DomoticzRssiQuality());
|
||||||
} else {
|
} else {
|
||||||
snprintf_P(mqtt_data, sizeof(dmess), DOMOTICZ_MESSAGE,
|
Response_P(DOMOTICZ_MESSAGE,
|
||||||
Settings.domoticz_sensor_idx[idx], 0, data, DomoticzBatteryQuality(), DomoticzRssiQuality());
|
Settings.domoticz_sensor_idx[idx], 0, data, DomoticzBatteryQuality(), DomoticzRssiQuality());
|
||||||
}
|
}
|
||||||
MqttPublish(domoticz_in_topic);
|
MqttPublish(domoticz_in_topic);
|
||||||
|
@ -68,13 +68,13 @@ void SerialBridgeInput(void)
|
|||||||
if (serial_bridge_in_byte_counter && (millis() > (serial_bridge_polling_window + SERIAL_POLLING))) {
|
if (serial_bridge_in_byte_counter && (millis() > (serial_bridge_polling_window + SERIAL_POLLING))) {
|
||||||
serial_bridge_buffer[serial_bridge_in_byte_counter] = 0; // Serial data completed
|
serial_bridge_buffer[serial_bridge_in_byte_counter] = 0; // Serial data completed
|
||||||
if (!serial_bridge_raw) {
|
if (!serial_bridge_raw) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_SSERIALRECEIVED "\":\"%s\"}"), serial_bridge_buffer);
|
Response_P(PSTR("{\"" D_JSON_SSERIALRECEIVED "\":\"%s\"}"), serial_bridge_buffer);
|
||||||
} else {
|
} else {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_SSERIALRECEIVED "\":\""));
|
Response_P(PSTR("{\"" D_JSON_SSERIALRECEIVED "\":\""));
|
||||||
for (int i = 0; i < serial_bridge_in_byte_counter; i++) {
|
for (int i = 0; i < serial_bridge_in_byte_counter; i++) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s%02x"), mqtt_data, serial_bridge_buffer[i]);
|
ResponseAppend_P(PSTR("%02x"), serial_bridge_buffer[i]);
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s\"}"), mqtt_data);
|
ResponseAppend_P(PSTR("\"}"));
|
||||||
}
|
}
|
||||||
MqttPublishPrefixTopic_P(RESULT_OR_TELE, PSTR(D_JSON_SSERIALRECEIVED));
|
MqttPublishPrefixTopic_P(RESULT_OR_TELE, PSTR(D_JSON_SSERIALRECEIVED));
|
||||||
// XdrvRulesProcess();
|
// XdrvRulesProcess();
|
||||||
@ -144,7 +144,7 @@ bool SerialBridgeCommand(void)
|
|||||||
codes += 2;
|
codes += 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, D_JSON_DONE);
|
Response_P(S_JSON_COMMAND_SVALUE, command, D_JSON_DONE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (CMND_SBAUDRATE == command_code) {
|
else if (CMND_SBAUDRATE == command_code) {
|
||||||
@ -155,7 +155,7 @@ bool SerialBridgeCommand(void)
|
|||||||
Settings.sbaudrate = (1 == XdrvMailbox.payload) ? SOFT_BAUDRATE / 1200 : baud;
|
Settings.sbaudrate = (1 == XdrvMailbox.payload) ? SOFT_BAUDRATE / 1200 : baud;
|
||||||
SerialBridgeSerial->begin(Settings.sbaudrate * 1200); // Reinitialize serial port with new baud rate
|
SerialBridgeSerial->begin(Settings.sbaudrate * 1200); // Reinitialize serial port with new baud rate
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, Settings.sbaudrate * 1200);
|
Response_P(S_JSON_COMMAND_NVALUE, command, Settings.sbaudrate * 1200);
|
||||||
}
|
}
|
||||||
else serviced = false; // Unknown command
|
else serviced = false; // Unknown command
|
||||||
|
|
||||||
|
@ -325,11 +325,11 @@ void PrepShowTimer(uint8_t index)
|
|||||||
sign[0] = '-';
|
sign[0] = '-';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s\"" D_CMND_TIMER "%d\":{\"" D_JSON_TIMER_ARM "\":%d,\"" D_JSON_TIMER_MODE "\":%d,\"" D_JSON_TIMER_TIME "\":\"%s%02d:%02d\",\"" D_JSON_TIMER_WINDOW "\":%d,\"" D_JSON_TIMER_DAYS "\":\"%s\",\"" D_JSON_TIMER_REPEAT "\":%d%s,\"" D_JSON_TIMER_ACTION "\":%d}"),
|
ResponseAppend_P(PSTR("\"" D_CMND_TIMER "%d\":{\"" D_JSON_TIMER_ARM "\":%d,\"" D_JSON_TIMER_MODE "\":%d,\"" D_JSON_TIMER_TIME "\":\"%s%02d:%02d\",\"" D_JSON_TIMER_WINDOW "\":%d,\"" D_JSON_TIMER_DAYS "\":\"%s\",\"" D_JSON_TIMER_REPEAT "\":%d%s,\"" D_JSON_TIMER_ACTION "\":%d}"),
|
||||||
mqtt_data, index, xtimer.arm, xtimer.mode, sign, hour, xtimer.time % 60, xtimer.window, days, xtimer.repeat, soutput, xtimer.power);
|
index, xtimer.arm, xtimer.mode, sign, hour, xtimer.time % 60, xtimer.window, days, xtimer.repeat, soutput, xtimer.power);
|
||||||
#else
|
#else
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s\"" D_CMND_TIMER "%d\":{\"" D_JSON_TIMER_ARM "\":%d,\"" D_JSON_TIMER_TIME "\":\"%02d:%02d\",\"" D_JSON_TIMER_WINDOW "\":%d,\"" D_JSON_TIMER_DAYS "\":\"%s\",\"" D_JSON_TIMER_REPEAT "\":%d%s,\"" D_JSON_TIMER_ACTION "\":%d}"),
|
ResponseAppend_P(PSTR("\"" D_CMND_TIMER "%d\":{\"" D_JSON_TIMER_ARM "\":%d,\"" D_JSON_TIMER_TIME "\":\"%02d:%02d\",\"" D_JSON_TIMER_WINDOW "\":%d,\"" D_JSON_TIMER_DAYS "\":\"%s\",\"" D_JSON_TIMER_REPEAT "\":%d%s,\"" D_JSON_TIMER_ACTION "\":%d}"),
|
||||||
mqtt_data, index, xtimer.arm, xtimer.time / 60, xtimer.time % 60, xtimer.window, days, xtimer.repeat, soutput, xtimer.power);
|
index, xtimer.arm, xtimer.time / 60, xtimer.time % 60, xtimer.window, days, xtimer.repeat, soutput, xtimer.power);
|
||||||
#endif // USE_SUNRISE
|
#endif // USE_SUNRISE
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -365,7 +365,7 @@ bool TimerCommand(void)
|
|||||||
StaticJsonBuffer<256> jsonBuffer;
|
StaticJsonBuffer<256> jsonBuffer;
|
||||||
JsonObject& root = jsonBuffer.parseObject(dataBufUc);
|
JsonObject& root = jsonBuffer.parseObject(dataBufUc);
|
||||||
if (!root.success()) {
|
if (!root.success()) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_TIMER "%d\":\"" D_JSON_INVALID_JSON "\"}"), index); // JSON decode failed
|
Response_P(PSTR("{\"" D_CMND_TIMER "%d\":\"" D_JSON_INVALID_JSON "\"}"), index); // JSON decode failed
|
||||||
error = 1;
|
error = 1;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -439,16 +439,16 @@ bool TimerCommand(void)
|
|||||||
}
|
}
|
||||||
#ifndef USE_RULES
|
#ifndef USE_RULES
|
||||||
} else {
|
} else {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_TIMER "%d\":\"" D_JSON_TIMER_NO_DEVICE "\"}"), index); // No outputs defined so nothing to control
|
Response_P(PSTR("{\"" D_CMND_TIMER "%d\":\"" D_JSON_TIMER_NO_DEVICE "\"}"), index); // No outputs defined so nothing to control
|
||||||
error = 1;
|
error = 1;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!error) {
|
if (!error) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{"));
|
Response_P(PSTR("{"));
|
||||||
PrepShowTimer(index);
|
PrepShowTimer(index);
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s}"), mqtt_data);
|
ResponseAppend_P(PSTR("}"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (CMND_TIMERS == command_code) {
|
else if (CMND_TIMERS == command_code) {
|
||||||
@ -461,21 +461,21 @@ bool TimerCommand(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, GetStateText(Settings.flag3.timers_enable));
|
Response_P(S_JSON_COMMAND_SVALUE, command, GetStateText(Settings.flag3.timers_enable));
|
||||||
MqttPublishPrefixTopic_P(RESULT_OR_STAT, command);
|
MqttPublishPrefixTopic_P(RESULT_OR_STAT, command);
|
||||||
|
|
||||||
uint8_t jsflg = 0;
|
uint8_t jsflg = 0;
|
||||||
uint8_t lines = 1;
|
uint8_t lines = 1;
|
||||||
for (uint8_t i = 0; i < MAX_TIMERS; i++) {
|
for (uint8_t i = 0; i < MAX_TIMERS; i++) {
|
||||||
if (!jsflg) {
|
if (!jsflg) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_TIMERS "%d\":{"), lines++);
|
Response_P(PSTR("{\"" D_CMND_TIMERS "%d\":{"), lines++);
|
||||||
} else {
|
} else {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,"), mqtt_data);
|
ResponseAppend_P(PSTR(","));
|
||||||
}
|
}
|
||||||
jsflg++;
|
jsflg++;
|
||||||
PrepShowTimer(i +1);
|
PrepShowTimer(i +1);
|
||||||
if (jsflg > 3) {
|
if (jsflg > 3) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s}}"), mqtt_data);
|
ResponseAppend_P(PSTR("}}"));
|
||||||
MqttPublishPrefixTopic_P(RESULT_OR_STAT, PSTR(D_CMND_TIMERS));
|
MqttPublishPrefixTopic_P(RESULT_OR_STAT, PSTR(D_CMND_TIMERS));
|
||||||
jsflg = 0;
|
jsflg = 0;
|
||||||
}
|
}
|
||||||
@ -489,7 +489,7 @@ bool TimerCommand(void)
|
|||||||
}
|
}
|
||||||
char lbuff[33];
|
char lbuff[33];
|
||||||
dtostrfd(((double)Settings.longitude) /1000000, 6, lbuff);
|
dtostrfd(((double)Settings.longitude) /1000000, 6, lbuff);
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, lbuff);
|
Response_P(S_JSON_COMMAND_SVALUE, command, lbuff);
|
||||||
}
|
}
|
||||||
else if (CMND_LATITUDE == command_code) {
|
else if (CMND_LATITUDE == command_code) {
|
||||||
if (XdrvMailbox.data_len) {
|
if (XdrvMailbox.data_len) {
|
||||||
@ -497,7 +497,7 @@ bool TimerCommand(void)
|
|||||||
}
|
}
|
||||||
char lbuff[33];
|
char lbuff[33];
|
||||||
dtostrfd(((double)Settings.latitude) /1000000, 6, lbuff);
|
dtostrfd(((double)Settings.latitude) /1000000, 6, lbuff);
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, lbuff);
|
Response_P(S_JSON_COMMAND_SVALUE, command, lbuff);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
else serviced = false; // Unknown command
|
else serviced = false; // Unknown command
|
||||||
|
@ -369,7 +369,7 @@ bool RuleSetProcess(uint8_t rule_set, String &event_saved)
|
|||||||
|
|
||||||
AddLog_P2(LOG_LEVEL_INFO, PSTR("RUL: %s performs \"%s\""), event_trigger.c_str(), command);
|
AddLog_P2(LOG_LEVEL_INFO, PSTR("RUL: %s performs \"%s\""), event_trigger.c_str(), command);
|
||||||
|
|
||||||
// snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, D_CMND_RULE, D_JSON_INITIATED);
|
// Response_P(S_JSON_COMMAND_SVALUE, D_CMND_RULE, D_JSON_INITIATED);
|
||||||
// MqttPublishPrefixTopic_P(RESULT_OR_STAT, PSTR(D_CMND_RULE));
|
// MqttPublishPrefixTopic_P(RESULT_OR_STAT, PSTR(D_CMND_RULE));
|
||||||
|
|
||||||
ExecuteCommand(command, SRC_RULE);
|
ExecuteCommand(command, SRC_RULE);
|
||||||
@ -544,7 +544,7 @@ void RulesEvery100ms(void)
|
|||||||
tele_period = tele_period_save;
|
tele_period = tele_period_save;
|
||||||
if (strlen(mqtt_data)) {
|
if (strlen(mqtt_data)) {
|
||||||
mqtt_data[0] = '{'; // {"INA219":{"Voltage":4.494,"Current":0.020,"Power":0.089}
|
mqtt_data[0] = '{'; // {"INA219":{"Voltage":4.494,"Current":0.020,"Power":0.089}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s}"), mqtt_data);
|
ResponseAppend_P(PSTR("}"));
|
||||||
RulesProcess();
|
RulesProcess();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1139,15 +1139,15 @@ bool RulesCommand(void)
|
|||||||
}
|
}
|
||||||
mqtt_data[0] = '\0';
|
mqtt_data[0] = '\0';
|
||||||
for (uint8_t i = 0; i < MAX_RULE_TIMERS; i++) {
|
for (uint8_t i = 0; i < MAX_RULE_TIMERS; i++) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s%c\"T%d\":%d"), mqtt_data, (i) ? ',' : '{', i +1, (rules_timer[i]) ? (rules_timer[i] - millis()) / 1000 : 0);
|
ResponseAppend_P(PSTR("%c\"T%d\":%d"), (i) ? ',' : '{', i +1, (rules_timer[i]) ? (rules_timer[i] - millis()) / 1000 : 0);
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s}"), mqtt_data);
|
ResponseAppend_P(PSTR("}"));
|
||||||
}
|
}
|
||||||
else if (CMND_EVENT == command_code) {
|
else if (CMND_EVENT == command_code) {
|
||||||
if (XdrvMailbox.data_len > 0) {
|
if (XdrvMailbox.data_len > 0) {
|
||||||
strlcpy(event_data, XdrvMailbox.data, sizeof(event_data));
|
strlcpy(event_data, XdrvMailbox.data, sizeof(event_data));
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, D_JSON_DONE);
|
Response_P(S_JSON_COMMAND_SVALUE, command, D_JSON_DONE);
|
||||||
}
|
}
|
||||||
else if ((CMND_VAR == command_code) && (index > 0) && (index <= MAX_RULE_VARS)) {
|
else if ((CMND_VAR == command_code) && (index > 0) && (index <= MAX_RULE_VARS)) {
|
||||||
if (XdrvMailbox.data_len > 0) {
|
if (XdrvMailbox.data_len > 0) {
|
||||||
@ -1158,7 +1158,7 @@ bool RulesCommand(void)
|
|||||||
#endif //USE_EXPRESSION
|
#endif //USE_EXPRESSION
|
||||||
bitSet(vars_event, index -1);
|
bitSet(vars_event, index -1);
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_SVALUE, command, index, vars[index -1]);
|
Response_P(S_JSON_COMMAND_INDEX_SVALUE, command, index, vars[index -1]);
|
||||||
}
|
}
|
||||||
else if ((CMND_MEM == command_code) && (index > 0) && (index <= MAX_RULE_MEMS)) {
|
else if ((CMND_MEM == command_code) && (index > 0) && (index <= MAX_RULE_MEMS)) {
|
||||||
if (XdrvMailbox.data_len > 0) {
|
if (XdrvMailbox.data_len > 0) {
|
||||||
@ -1169,13 +1169,13 @@ bool RulesCommand(void)
|
|||||||
#endif //USE_EXPRESSION
|
#endif //USE_EXPRESSION
|
||||||
bitSet(mems_event, index -1);
|
bitSet(mems_event, index -1);
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_SVALUE, command, index, Settings.mems[index -1]);
|
Response_P(S_JSON_COMMAND_INDEX_SVALUE, command, index, Settings.mems[index -1]);
|
||||||
}
|
}
|
||||||
else if (CMND_CALC_RESOLUTION == command_code) {
|
else if (CMND_CALC_RESOLUTION == command_code) {
|
||||||
if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 7)) {
|
if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 7)) {
|
||||||
Settings.flag2.calc_resolution = XdrvMailbox.payload;
|
Settings.flag2.calc_resolution = XdrvMailbox.payload;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, Settings.flag2.calc_resolution);
|
Response_P(S_JSON_COMMAND_NVALUE, command, Settings.flag2.calc_resolution);
|
||||||
}
|
}
|
||||||
else if ((CMND_ADD == command_code) && (index > 0) && (index <= MAX_RULE_VARS)) {
|
else if ((CMND_ADD == command_code) && (index > 0) && (index <= MAX_RULE_VARS)) {
|
||||||
if (XdrvMailbox.data_len > 0) {
|
if (XdrvMailbox.data_len > 0) {
|
||||||
@ -1183,7 +1183,7 @@ bool RulesCommand(void)
|
|||||||
dtostrfd(tempvar, Settings.flag2.calc_resolution, vars[index -1]);
|
dtostrfd(tempvar, Settings.flag2.calc_resolution, vars[index -1]);
|
||||||
bitSet(vars_event, index -1);
|
bitSet(vars_event, index -1);
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_SVALUE, command, index, vars[index -1]);
|
Response_P(S_JSON_COMMAND_INDEX_SVALUE, command, index, vars[index -1]);
|
||||||
}
|
}
|
||||||
else if ((CMND_SUB == command_code) && (index > 0) && (index <= MAX_RULE_VARS)) {
|
else if ((CMND_SUB == command_code) && (index > 0) && (index <= MAX_RULE_VARS)) {
|
||||||
if (XdrvMailbox.data_len > 0) {
|
if (XdrvMailbox.data_len > 0) {
|
||||||
@ -1191,7 +1191,7 @@ bool RulesCommand(void)
|
|||||||
dtostrfd(tempvar, Settings.flag2.calc_resolution, vars[index -1]);
|
dtostrfd(tempvar, Settings.flag2.calc_resolution, vars[index -1]);
|
||||||
bitSet(vars_event, index -1);
|
bitSet(vars_event, index -1);
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_SVALUE, command, index, vars[index -1]);
|
Response_P(S_JSON_COMMAND_INDEX_SVALUE, command, index, vars[index -1]);
|
||||||
}
|
}
|
||||||
else if ((CMND_MULT == command_code) && (index > 0) && (index <= MAX_RULE_VARS)) {
|
else if ((CMND_MULT == command_code) && (index > 0) && (index <= MAX_RULE_VARS)) {
|
||||||
if (XdrvMailbox.data_len > 0) {
|
if (XdrvMailbox.data_len > 0) {
|
||||||
@ -1199,7 +1199,7 @@ bool RulesCommand(void)
|
|||||||
dtostrfd(tempvar, Settings.flag2.calc_resolution, vars[index -1]);
|
dtostrfd(tempvar, Settings.flag2.calc_resolution, vars[index -1]);
|
||||||
bitSet(vars_event, index -1);
|
bitSet(vars_event, index -1);
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_SVALUE, command, index, vars[index -1]);
|
Response_P(S_JSON_COMMAND_INDEX_SVALUE, command, index, vars[index -1]);
|
||||||
}
|
}
|
||||||
else if ((CMND_SCALE == command_code) && (index > 0) && (index <= MAX_RULE_VARS)) {
|
else if ((CMND_SCALE == command_code) && (index > 0) && (index <= MAX_RULE_VARS)) {
|
||||||
if (XdrvMailbox.data_len > 0) {
|
if (XdrvMailbox.data_len > 0) {
|
||||||
@ -1216,14 +1216,14 @@ bool RulesCommand(void)
|
|||||||
bitSet(vars_event, index -1);
|
bitSet(vars_event, index -1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_SVALUE, command, index, vars[index -1]);
|
Response_P(S_JSON_COMMAND_INDEX_SVALUE, command, index, vars[index -1]);
|
||||||
#ifdef SUPPORT_MQTT_EVENT
|
#ifdef SUPPORT_MQTT_EVENT
|
||||||
} else if (CMND_SUBSCRIBE == command_code) { //MQTT Subscribe command. Subscribe <Event>, <Topic> [, <Key>]
|
} else if (CMND_SUBSCRIBE == command_code) { //MQTT Subscribe command. Subscribe <Event>, <Topic> [, <Key>]
|
||||||
String result = RulesSubscribe(XdrvMailbox.data, XdrvMailbox.data_len);
|
String result = RulesSubscribe(XdrvMailbox.data, XdrvMailbox.data_len);
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, result.c_str());
|
Response_P(S_JSON_COMMAND_SVALUE, command, result.c_str());
|
||||||
} else if (CMND_UNSUBSCRIBE == command_code) { //MQTT Un-subscribe command. UnSubscribe <Event>
|
} else if (CMND_UNSUBSCRIBE == command_code) { //MQTT Un-subscribe command. UnSubscribe <Event>
|
||||||
String result = RulesUnsubscribe(XdrvMailbox.data, XdrvMailbox.data_len);
|
String result = RulesUnsubscribe(XdrvMailbox.data, XdrvMailbox.data_len);
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, result.c_str());
|
Response_P(S_JSON_COMMAND_SVALUE, command, result.c_str());
|
||||||
#endif //SUPPORT_MQTT_EVENT
|
#endif //SUPPORT_MQTT_EVENT
|
||||||
}
|
}
|
||||||
else serviced = false; // Unknown command
|
else serviced = false; // Unknown command
|
||||||
|
@ -540,8 +540,7 @@ void HAssAnnounceStatusSensor(void)
|
|||||||
|
|
||||||
void HAssPublishStatus(void)
|
void HAssPublishStatus(void)
|
||||||
{
|
{
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data),
|
Response_P(PSTR("{\"" D_JSON_VERSION "\":\"%s%s\",\"" D_JSON_BUILDDATETIME "\":\"%s\","
|
||||||
PSTR("{\"" D_JSON_VERSION "\":\"%s%s\",\"" D_JSON_BUILDDATETIME "\":\"%s\","
|
|
||||||
"\"" D_JSON_COREVERSION "\":\"" ARDUINO_ESP8266_RELEASE "\",\"" D_JSON_SDKVERSION "\":\"%s\","
|
"\"" D_JSON_COREVERSION "\":\"" ARDUINO_ESP8266_RELEASE "\",\"" D_JSON_SDKVERSION "\":\"%s\","
|
||||||
"\"" D_CMND_MODULE "\":\"%s\",\"" D_JSON_RESTARTREASON "\":\"%s\",\"" D_JSON_UPTIME "\":\"%s\","
|
"\"" D_CMND_MODULE "\":\"%s\",\"" D_JSON_RESTARTREASON "\":\"%s\",\"" D_JSON_UPTIME "\":\"%s\","
|
||||||
"\"WiFi " D_JSON_LINK_COUNT "\":%d,\"WiFi " D_JSON_DOWNTIME "\":\"%s\",\"" D_JSON_MQTT_COUNT "\":%d,"
|
"\"WiFi " D_JSON_LINK_COUNT "\":%d,\"WiFi " D_JSON_DOWNTIME "\":\"%s\",\"" D_JSON_MQTT_COUNT "\":%d,"
|
||||||
|
@ -465,7 +465,7 @@ void DisplayText(void)
|
|||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
// unknown escape
|
// unknown escape
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("Unknown Escape"));
|
Response_P(PSTR("Unknown Escape"));
|
||||||
goto exit;
|
goto exit;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -921,7 +921,7 @@ bool DisplayCommand(void)
|
|||||||
serviced = false; // Unknown command
|
serviced = false; // Unknown command
|
||||||
}
|
}
|
||||||
else if (CMND_DISPLAY == command_code) {
|
else if (CMND_DISPLAY == command_code) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_DISPLAY "\":{\"" D_CMND_DISP_MODEL "\":%d,\"" D_CMND_DISP_MODE "\":%d,\"" D_CMND_DISP_DIMMER "\":%d,\""
|
Response_P(PSTR("{\"" D_CMND_DISPLAY "\":{\"" D_CMND_DISP_MODEL "\":%d,\"" D_CMND_DISP_MODE "\":%d,\"" D_CMND_DISP_DIMMER "\":%d,\""
|
||||||
D_CMND_DISP_SIZE "\":%d,\"" D_CMND_DISP_FONT "\":%d,\"" D_CMND_DISP_ROTATE "\":%d,\"" D_CMND_DISP_REFRESH "\":%d,\"" D_CMND_DISP_COLS "\":[%d,%d],\"" D_CMND_DISP_ROWS "\":%d}}"),
|
D_CMND_DISP_SIZE "\":%d,\"" D_CMND_DISP_FONT "\":%d,\"" D_CMND_DISP_ROTATE "\":%d,\"" D_CMND_DISP_REFRESH "\":%d,\"" D_CMND_DISP_COLS "\":[%d,%d],\"" D_CMND_DISP_ROWS "\":%d}}"),
|
||||||
Settings.display_model, Settings.display_mode, Settings.display_dimmer, Settings.display_size, Settings.display_font, Settings.display_rotate, Settings.display_refresh,
|
Settings.display_model, Settings.display_mode, Settings.display_dimmer, Settings.display_size, Settings.display_font, Settings.display_rotate, Settings.display_refresh,
|
||||||
Settings.display_cols[0], Settings.display_cols[1], Settings.display_rows);
|
Settings.display_cols[0], Settings.display_cols[1], Settings.display_rows);
|
||||||
@ -936,7 +936,7 @@ bool DisplayCommand(void)
|
|||||||
Settings.display_model = last_display_model;
|
Settings.display_model = last_display_model;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_DISPLAY_COMMAND_NVALUE, command, Settings.display_model);
|
Response_P(S_JSON_DISPLAY_COMMAND_NVALUE, command, Settings.display_model);
|
||||||
}
|
}
|
||||||
else if (CMND_DISP_MODE == command_code) {
|
else if (CMND_DISP_MODE == command_code) {
|
||||||
#ifdef USE_DISPLAY_MODES1TO5
|
#ifdef USE_DISPLAY_MODES1TO5
|
||||||
@ -964,7 +964,7 @@ bool DisplayCommand(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif // USE_DISPLAY_MODES1TO5
|
#endif // USE_DISPLAY_MODES1TO5
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_DISPLAY_COMMAND_NVALUE, command, Settings.display_mode);
|
Response_P(S_JSON_DISPLAY_COMMAND_NVALUE, command, Settings.display_mode);
|
||||||
}
|
}
|
||||||
else if (CMND_DISP_DIMMER == command_code) {
|
else if (CMND_DISP_DIMMER == command_code) {
|
||||||
if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 100)) {
|
if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 100)) {
|
||||||
@ -976,19 +976,19 @@ bool DisplayCommand(void)
|
|||||||
ExecuteCommandPower(disp_device, POWER_OFF, SRC_DISPLAY);
|
ExecuteCommandPower(disp_device, POWER_OFF, SRC_DISPLAY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_DISPLAY_COMMAND_NVALUE, command, Settings.display_dimmer);
|
Response_P(S_JSON_DISPLAY_COMMAND_NVALUE, command, Settings.display_dimmer);
|
||||||
}
|
}
|
||||||
else if (CMND_DISP_SIZE == command_code) {
|
else if (CMND_DISP_SIZE == command_code) {
|
||||||
if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload <= 4)) {
|
if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload <= 4)) {
|
||||||
Settings.display_size = XdrvMailbox.payload;
|
Settings.display_size = XdrvMailbox.payload;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_DISPLAY_COMMAND_NVALUE, command, Settings.display_size);
|
Response_P(S_JSON_DISPLAY_COMMAND_NVALUE, command, Settings.display_size);
|
||||||
}
|
}
|
||||||
else if (CMND_DISP_FONT == command_code) {
|
else if (CMND_DISP_FONT == command_code) {
|
||||||
if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload <= 4)) {
|
if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload <= 4)) {
|
||||||
Settings.display_font = XdrvMailbox.payload;
|
Settings.display_font = XdrvMailbox.payload;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_DISPLAY_COMMAND_NVALUE, command, Settings.display_font);
|
Response_P(S_JSON_DISPLAY_COMMAND_NVALUE, command, Settings.display_font);
|
||||||
}
|
}
|
||||||
else if (CMND_DISP_ROTATE == command_code) {
|
else if (CMND_DISP_ROTATE == command_code) {
|
||||||
if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload < 4)) {
|
if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload < 4)) {
|
||||||
@ -1011,7 +1011,7 @@ bool DisplayCommand(void)
|
|||||||
#endif // USE_DISPLAY_MODES1TO5
|
#endif // USE_DISPLAY_MODES1TO5
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_DISPLAY_COMMAND_NVALUE, command, Settings.display_rotate);
|
Response_P(S_JSON_DISPLAY_COMMAND_NVALUE, command, Settings.display_rotate);
|
||||||
}
|
}
|
||||||
else if (CMND_DISP_TEXT == command_code) {
|
else if (CMND_DISP_TEXT == command_code) {
|
||||||
mqtt_data[0] = '\0';
|
mqtt_data[0] = '\0';
|
||||||
@ -1026,23 +1026,23 @@ bool DisplayCommand(void)
|
|||||||
}
|
}
|
||||||
#endif // USE_DISPLAY_MODES1TO5
|
#endif // USE_DISPLAY_MODES1TO5
|
||||||
} else {
|
} else {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("No Text"));
|
Response_P(PSTR("No Text"));
|
||||||
}
|
}
|
||||||
if (mqtt_data[0] == '\0') {
|
if (mqtt_data[0] == '\0') {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_DISPLAY_COMMAND_VALUE, command, XdrvMailbox.data);
|
Response_P(S_JSON_DISPLAY_COMMAND_VALUE, command, XdrvMailbox.data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ((CMND_DISP_ADDRESS == command_code) && (XdrvMailbox.index > 0) && (XdrvMailbox.index <= 8)) {
|
else if ((CMND_DISP_ADDRESS == command_code) && (XdrvMailbox.index > 0) && (XdrvMailbox.index <= 8)) {
|
||||||
if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 255)) {
|
if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 255)) {
|
||||||
Settings.display_address[XdrvMailbox.index -1] = XdrvMailbox.payload;
|
Settings.display_address[XdrvMailbox.index -1] = XdrvMailbox.payload;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_DISPLAY_COMMAND_INDEX_NVALUE, command, XdrvMailbox.index, Settings.display_address[XdrvMailbox.index -1]);
|
Response_P(S_JSON_DISPLAY_COMMAND_INDEX_NVALUE, command, XdrvMailbox.index, Settings.display_address[XdrvMailbox.index -1]);
|
||||||
}
|
}
|
||||||
else if (CMND_DISP_REFRESH == command_code) {
|
else if (CMND_DISP_REFRESH == command_code) {
|
||||||
if ((XdrvMailbox.payload >= 1) && (XdrvMailbox.payload <= 7)) {
|
if ((XdrvMailbox.payload >= 1) && (XdrvMailbox.payload <= 7)) {
|
||||||
Settings.display_refresh = XdrvMailbox.payload;
|
Settings.display_refresh = XdrvMailbox.payload;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_DISPLAY_COMMAND_NVALUE, command, Settings.display_refresh);
|
Response_P(S_JSON_DISPLAY_COMMAND_NVALUE, command, Settings.display_refresh);
|
||||||
}
|
}
|
||||||
else if ((CMND_DISP_COLS == command_code) && (XdrvMailbox.index > 0) && (XdrvMailbox.index <= 2)) {
|
else if ((CMND_DISP_COLS == command_code) && (XdrvMailbox.index > 0) && (XdrvMailbox.index <= 2)) {
|
||||||
if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload <= DISPLAY_MAX_COLS)) {
|
if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload <= DISPLAY_MAX_COLS)) {
|
||||||
@ -1054,7 +1054,7 @@ bool DisplayCommand(void)
|
|||||||
}
|
}
|
||||||
#endif // USE_DISPLAY_MODES1TO5
|
#endif // USE_DISPLAY_MODES1TO5
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_DISPLAY_COMMAND_INDEX_NVALUE, command, XdrvMailbox.index, Settings.display_cols[XdrvMailbox.index -1]);
|
Response_P(S_JSON_DISPLAY_COMMAND_INDEX_NVALUE, command, XdrvMailbox.index, Settings.display_cols[XdrvMailbox.index -1]);
|
||||||
}
|
}
|
||||||
else if (CMND_DISP_ROWS == command_code) {
|
else if (CMND_DISP_ROWS == command_code) {
|
||||||
if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload <= DISPLAY_MAX_ROWS)) {
|
if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload <= DISPLAY_MAX_ROWS)) {
|
||||||
@ -1064,7 +1064,7 @@ bool DisplayCommand(void)
|
|||||||
DisplayReAllocScreenBuffer();
|
DisplayReAllocScreenBuffer();
|
||||||
#endif // USE_DISPLAY_MODES1TO5
|
#endif // USE_DISPLAY_MODES1TO5
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_DISPLAY_COMMAND_NVALUE, command, Settings.display_rows);
|
Response_P(S_JSON_DISPLAY_COMMAND_NVALUE, command, Settings.display_rows);
|
||||||
}
|
}
|
||||||
else serviced = false; // Unknown command
|
else serviced = false; // Unknown command
|
||||||
}
|
}
|
||||||
|
@ -200,7 +200,7 @@ bool MP3PlayerCmd(void) {
|
|||||||
if (command_code == CMND_MP3_DEVICE) { MP3_CMD(MP3_CMD_DEVICE, XdrvMailbox.payload); }
|
if (command_code == CMND_MP3_DEVICE) { MP3_CMD(MP3_CMD_DEVICE, XdrvMailbox.payload); }
|
||||||
if (command_code == CMND_MP3_DAC) { MP3_CMD(MP3_CMD_DAC, XdrvMailbox.payload); }
|
if (command_code == CMND_MP3_DAC) { MP3_CMD(MP3_CMD_DAC, XdrvMailbox.payload); }
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_MP3_COMMAND_NVALUE, command, XdrvMailbox.payload);
|
Response_P(S_JSON_MP3_COMMAND_NVALUE, command, XdrvMailbox.payload);
|
||||||
break;
|
break;
|
||||||
case CMND_MP3_PLAY:
|
case CMND_MP3_PLAY:
|
||||||
case CMND_MP3_PAUSE:
|
case CMND_MP3_PAUSE:
|
||||||
@ -211,7 +211,7 @@ bool MP3PlayerCmd(void) {
|
|||||||
if (command_code == CMND_MP3_PAUSE) { MP3_CMD(MP3_CMD_PAUSE, 0); }
|
if (command_code == CMND_MP3_PAUSE) { MP3_CMD(MP3_CMD_PAUSE, 0); }
|
||||||
if (command_code == CMND_MP3_STOP) { MP3_CMD(MP3_CMD_STOP, 0); }
|
if (command_code == CMND_MP3_STOP) { MP3_CMD(MP3_CMD_STOP, 0); }
|
||||||
if (command_code == CMND_MP3_RESET) { MP3_CMD(MP3_CMD_RESET, 0); }
|
if (command_code == CMND_MP3_RESET) { MP3_CMD(MP3_CMD_RESET, 0); }
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_MP3_COMMAND, command, XdrvMailbox.payload);
|
Response_P(S_JSON_MP3_COMMAND, command, XdrvMailbox.payload);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
// else for Unknown command
|
// else for Unknown command
|
||||||
|
@ -60,7 +60,7 @@ void PCA9685_Reset(void)
|
|||||||
PCA9685_SetPWM(pin,0,false);
|
PCA9685_SetPWM(pin,0,false);
|
||||||
pca9685_pin_pwm_value[pin] = 0;
|
pca9685_pin_pwm_value[pin] = 0;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"PCA9685\":{\"RESET\":\"OK\"}}"));
|
Response_P(PSTR("{\"PCA9685\":{\"RESET\":\"OK\"}}"));
|
||||||
}
|
}
|
||||||
|
|
||||||
void PCA9685_SetPWMfreq(double freq) {
|
void PCA9685_SetPWMfreq(double freq) {
|
||||||
@ -127,11 +127,11 @@ bool PCA9685_Command(void)
|
|||||||
uint16_t new_freq = atoi(subStr(sub_string, XdrvMailbox.data, ",", 2));
|
uint16_t new_freq = atoi(subStr(sub_string, XdrvMailbox.data, ",", 2));
|
||||||
if ((new_freq >= 24) && (new_freq <= 1526)) {
|
if ((new_freq >= 24) && (new_freq <= 1526)) {
|
||||||
PCA9685_SetPWMfreq(new_freq);
|
PCA9685_SetPWMfreq(new_freq);
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"PCA9685\":{\"PWMF\":%i, \"Result\":\"OK\"}}"),new_freq);
|
Response_P(PSTR("{\"PCA9685\":{\"PWMF\":%i, \"Result\":\"OK\"}}"),new_freq);
|
||||||
return serviced;
|
return serviced;
|
||||||
}
|
}
|
||||||
} else { // No parameter was given for setfreq, so we return current setting
|
} else { // No parameter was given for setfreq, so we return current setting
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"PCA9685\":{\"PWMF\":%i}}"),pca9685_freq);
|
Response_P(PSTR("{\"PCA9685\":{\"PWMF\":%i}}"),pca9685_freq);
|
||||||
return serviced;
|
return serviced;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -141,20 +141,20 @@ bool PCA9685_Command(void)
|
|||||||
if (paramcount > 2) {
|
if (paramcount > 2) {
|
||||||
if (!strcmp(subStr(sub_string, XdrvMailbox.data, ",", 3), "ON")) {
|
if (!strcmp(subStr(sub_string, XdrvMailbox.data, ",", 3), "ON")) {
|
||||||
PCA9685_SetPWM(pin, 4096, false);
|
PCA9685_SetPWM(pin, 4096, false);
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"PCA9685\":{\"PIN\":%i,\"PWM\":%i}}"),pin,4096);
|
Response_P(PSTR("{\"PCA9685\":{\"PIN\":%i,\"PWM\":%i}}"),pin,4096);
|
||||||
serviced = true;
|
serviced = true;
|
||||||
return serviced;
|
return serviced;
|
||||||
}
|
}
|
||||||
if (!strcmp(subStr(sub_string, XdrvMailbox.data, ",", 3), "OFF")) {
|
if (!strcmp(subStr(sub_string, XdrvMailbox.data, ",", 3), "OFF")) {
|
||||||
PCA9685_SetPWM(pin, 0, false);
|
PCA9685_SetPWM(pin, 0, false);
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"PCA9685\":{\"PIN\":%i,\"PWM\":%i}}"),pin,0);
|
Response_P(PSTR("{\"PCA9685\":{\"PIN\":%i,\"PWM\":%i}}"),pin,0);
|
||||||
serviced = true;
|
serviced = true;
|
||||||
return serviced;
|
return serviced;
|
||||||
}
|
}
|
||||||
uint16_t pwm = atoi(subStr(sub_string, XdrvMailbox.data, ",", 3));
|
uint16_t pwm = atoi(subStr(sub_string, XdrvMailbox.data, ",", 3));
|
||||||
if ((pin >= 0 && pin <= 15) && (pwm >= 0 && pwm <= 4096)) {
|
if ((pin >= 0 && pin <= 15) && (pwm >= 0 && pwm <= 4096)) {
|
||||||
PCA9685_SetPWM(pin, pwm, false);
|
PCA9685_SetPWM(pin, pwm, false);
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"PCA9685\":{\"PIN\":%i,\"PWM\":%i}}"),pin,pwm);
|
Response_P(PSTR("{\"PCA9685\":{\"PIN\":%i,\"PWM\":%i}}"),pin,pwm);
|
||||||
serviced = true;
|
serviced = true;
|
||||||
return serviced;
|
return serviced;
|
||||||
}
|
}
|
||||||
@ -166,12 +166,12 @@ bool PCA9685_Command(void)
|
|||||||
|
|
||||||
void PCA9685_OutputTelemetry(bool telemetry) {
|
void PCA9685_OutputTelemetry(bool telemetry) {
|
||||||
if (0 == pca9685_detected) { return; } // We do not do this if the PCA9685 has not been detected
|
if (0 == pca9685_detected) { return; } // We do not do this if the PCA9685 has not been detected
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_TIME "\":\"%s\",\"PCA9685\": {"), GetDateAndTime(DT_LOCAL).c_str());
|
Response_P(PSTR("{\"" D_JSON_TIME "\":\"%s\",\"PCA9685\": {"), GetDateAndTime(DT_LOCAL).c_str());
|
||||||
snprintf_P(mqtt_data,sizeof(mqtt_data), PSTR("%s\"PWM_FREQ\":%i,"),mqtt_data,pca9685_freq);
|
ResponseAppend_P(PSTR("\"PWM_FREQ\":%i,"),pca9685_freq);
|
||||||
for (uint8_t pin=0;pin<16;pin++) {
|
for (uint8_t pin=0;pin<16;pin++) {
|
||||||
snprintf_P(mqtt_data,sizeof(mqtt_data), PSTR("%s\"PWM%i\":%i,"),mqtt_data,pin,pca9685_pin_pwm_value[pin]);
|
ResponseAppend_P(PSTR("\"PWM%i\":%i,"),pin,pca9685_pin_pwm_value[pin]);
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data,sizeof(mqtt_data),PSTR("%s\"END\":1}}"),mqtt_data);
|
ResponseAppend_P(PSTR("\"END\":1}}"));
|
||||||
if (telemetry) {
|
if (telemetry) {
|
||||||
MqttPublishPrefixTopic_P(TELE, PSTR(D_RSLT_SENSOR), Settings.flag.mqtt_sensor_retain);
|
MqttPublishPrefixTopic_P(TELE, PSTR(D_RSLT_SENSOR), Settings.flag.mqtt_sensor_retain);
|
||||||
}
|
}
|
||||||
|
@ -61,7 +61,7 @@ void RfReceiveCheck(void)
|
|||||||
} else {
|
} else {
|
||||||
snprintf_P(stemp, sizeof(stemp), PSTR("\"0x%lX\""), (uint32_t)data);
|
snprintf_P(stemp, sizeof(stemp), PSTR("\"0x%lX\""), (uint32_t)data);
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_RFRECEIVED "\":{\"" D_JSON_RF_DATA "\":%s,\"" D_JSON_RF_BITS "\":%d,\"" D_JSON_RF_PROTOCOL "\":%d,\"" D_JSON_RF_PULSE "\":%d}}"),
|
Response_P(PSTR("{\"" D_JSON_RFRECEIVED "\":{\"" D_JSON_RF_DATA "\":%s,\"" D_JSON_RF_BITS "\":%d,\"" D_JSON_RF_PROTOCOL "\":%d,\"" D_JSON_RF_PULSE "\":%d}}"),
|
||||||
stemp, bits, protocol, delay);
|
stemp, bits, protocol, delay);
|
||||||
MqttPublishPrefixTopic_P(RESULT_OR_TELE, PSTR(D_JSON_RFRECEIVED));
|
MqttPublishPrefixTopic_P(RESULT_OR_TELE, PSTR(D_JSON_RFRECEIVED));
|
||||||
XdrvRulesProcess();
|
XdrvRulesProcess();
|
||||||
@ -145,7 +145,7 @@ bool RfSendCommand(void)
|
|||||||
if (!bits) { bits = 24; } // Default 24 bits
|
if (!bits) { bits = 24; } // Default 24 bits
|
||||||
if (data) {
|
if (data) {
|
||||||
mySwitch.send(data, bits);
|
mySwitch.send(data, bits);
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_RFSEND "\":\"" D_JSON_DONE "\"}"));
|
Response_P(PSTR("{\"" D_CMND_RFSEND "\":\"" D_JSON_DONE "\"}"));
|
||||||
} else {
|
} else {
|
||||||
error = true;
|
error = true;
|
||||||
}
|
}
|
||||||
@ -153,7 +153,7 @@ bool RfSendCommand(void)
|
|||||||
error = true;
|
error = true;
|
||||||
}
|
}
|
||||||
if (error) {
|
if (error) {
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_RFSEND "\":\"" D_JSON_NO " " D_JSON_RF_DATA ", " D_JSON_RF_BITS ", " D_JSON_RF_PROTOCOL ", " D_JSON_RF_REPEAT " " D_JSON_OR " " D_JSON_RF_PULSE "\"}"));
|
Response_P(PSTR("{\"" D_CMND_RFSEND "\":\"" D_JSON_NO " " D_JSON_RF_DATA ", " D_JSON_RF_BITS ", " D_JSON_RF_PROTOCOL ", " D_JSON_RF_REPEAT " " D_JSON_OR " " D_JSON_RF_PULSE "\"}"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else serviced = false; // Unknown command
|
else serviced = false; // Unknown command
|
||||||
|
@ -419,28 +419,28 @@ bool DebugCommand(void)
|
|||||||
}
|
}
|
||||||
else if (CMND_HELP == command_code) {
|
else if (CMND_HELP == command_code) {
|
||||||
AddLog_P(LOG_LEVEL_INFO, kDebugCommands);
|
AddLog_P(LOG_LEVEL_INFO, kDebugCommands);
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, D_JSON_DONE);
|
Response_P(S_JSON_COMMAND_SVALUE, command, D_JSON_DONE);
|
||||||
}
|
}
|
||||||
else if (CMND_RTCDUMP == command_code) {
|
else if (CMND_RTCDUMP == command_code) {
|
||||||
DebugRtcDump(XdrvMailbox.data);
|
DebugRtcDump(XdrvMailbox.data);
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, D_JSON_DONE);
|
Response_P(S_JSON_COMMAND_SVALUE, command, D_JSON_DONE);
|
||||||
}
|
}
|
||||||
else if (CMND_CFGDUMP == command_code) {
|
else if (CMND_CFGDUMP == command_code) {
|
||||||
DebugCfgDump(XdrvMailbox.data);
|
DebugCfgDump(XdrvMailbox.data);
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, D_JSON_DONE);
|
Response_P(S_JSON_COMMAND_SVALUE, command, D_JSON_DONE);
|
||||||
}
|
}
|
||||||
else if (CMND_CFGPEEK == command_code) {
|
else if (CMND_CFGPEEK == command_code) {
|
||||||
DebugCfgPeek(XdrvMailbox.data);
|
DebugCfgPeek(XdrvMailbox.data);
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, D_JSON_DONE);
|
Response_P(S_JSON_COMMAND_SVALUE, command, D_JSON_DONE);
|
||||||
}
|
}
|
||||||
else if (CMND_CFGPOKE == command_code) {
|
else if (CMND_CFGPOKE == command_code) {
|
||||||
DebugCfgPoke(XdrvMailbox.data);
|
DebugCfgPoke(XdrvMailbox.data);
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, D_JSON_DONE);
|
Response_P(S_JSON_COMMAND_SVALUE, command, D_JSON_DONE);
|
||||||
}
|
}
|
||||||
#ifdef USE_DEBUG_SETTING_NAMES
|
#ifdef USE_DEBUG_SETTING_NAMES
|
||||||
else if (CMND_CFGSHOW == command_code) {
|
else if (CMND_CFGSHOW == command_code) {
|
||||||
DebugCfgShow(XdrvMailbox.payload);
|
DebugCfgShow(XdrvMailbox.payload);
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, D_JSON_DONE);
|
Response_P(S_JSON_COMMAND_SVALUE, command, D_JSON_DONE);
|
||||||
}
|
}
|
||||||
#endif // USE_DEBUG_SETTING_NAMES
|
#endif // USE_DEBUG_SETTING_NAMES
|
||||||
#ifdef USE_WEBSERVER
|
#ifdef USE_WEBSERVER
|
||||||
@ -448,13 +448,13 @@ bool DebugCommand(void)
|
|||||||
if (XdrvMailbox.data_len > 0) {
|
if (XdrvMailbox.data_len > 0) {
|
||||||
config_xor_on_set = XdrvMailbox.payload;
|
config_xor_on_set = XdrvMailbox.payload;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, config_xor_on_set);
|
Response_P(S_JSON_COMMAND_NVALUE, command, config_xor_on_set);
|
||||||
}
|
}
|
||||||
#endif // USE_WEBSERVER
|
#endif // USE_WEBSERVER
|
||||||
#ifdef DEBUG_THEO
|
#ifdef DEBUG_THEO
|
||||||
else if (CMND_EXCEPTION == command_code) {
|
else if (CMND_EXCEPTION == command_code) {
|
||||||
if (XdrvMailbox.data_len > 0) ExceptionTest(XdrvMailbox.payload);
|
if (XdrvMailbox.data_len > 0) ExceptionTest(XdrvMailbox.payload);
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, D_JSON_DONE);
|
Response_P(S_JSON_COMMAND_SVALUE, command, D_JSON_DONE);
|
||||||
}
|
}
|
||||||
#endif // DEBUG_THEO
|
#endif // DEBUG_THEO
|
||||||
else if (CMND_CPUCHECK == command_code) {
|
else if (CMND_CPUCHECK == command_code) {
|
||||||
@ -462,26 +462,26 @@ bool DebugCommand(void)
|
|||||||
CPU_load_check = XdrvMailbox.payload;
|
CPU_load_check = XdrvMailbox.payload;
|
||||||
CPU_last_millis = CPU_last_loop_time;
|
CPU_last_millis = CPU_last_loop_time;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, CPU_load_check);
|
Response_P(S_JSON_COMMAND_NVALUE, command, CPU_load_check);
|
||||||
}
|
}
|
||||||
else if (CMND_FREEMEM == command_code) {
|
else if (CMND_FREEMEM == command_code) {
|
||||||
if (XdrvMailbox.data_len > 0) {
|
if (XdrvMailbox.data_len > 0) {
|
||||||
CPU_show_freemem = XdrvMailbox.payload;
|
CPU_show_freemem = XdrvMailbox.payload;
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, CPU_show_freemem);
|
Response_P(S_JSON_COMMAND_NVALUE, command, CPU_show_freemem);
|
||||||
}
|
}
|
||||||
else if ((CMND_SETSENSOR == command_code) && (XdrvMailbox.index < MAX_XSNS_DRIVERS)) {
|
else if ((CMND_SETSENSOR == command_code) && (XdrvMailbox.index < MAX_XSNS_DRIVERS)) {
|
||||||
if ((XdrvMailbox.payload >= 0) && XsnsPresent(XdrvMailbox.index)) {
|
if ((XdrvMailbox.payload >= 0) && XsnsPresent(XdrvMailbox.index)) {
|
||||||
bitWrite(Settings.sensors[XdrvMailbox.index / 32], XdrvMailbox.index % 32, XdrvMailbox.payload &1);
|
bitWrite(Settings.sensors[XdrvMailbox.index / 32], XdrvMailbox.index % 32, XdrvMailbox.payload &1);
|
||||||
if (1 == XdrvMailbox.payload) { restart_flag = 2; } // To safely re-enable a sensor currently most sensor need to follow complete restart init cycle
|
if (1 == XdrvMailbox.payload) { restart_flag = 2; } // To safely re-enable a sensor currently most sensor need to follow complete restart init cycle
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_XVALUE, command, XsnsGetSensors().c_str());
|
Response_P(S_JSON_COMMAND_XVALUE, command, XsnsGetSensors().c_str());
|
||||||
}
|
}
|
||||||
else if (CMND_FLASHMODE == command_code) {
|
else if (CMND_FLASHMODE == command_code) {
|
||||||
if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 3)) {
|
if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 3)) {
|
||||||
SetFlashMode(XdrvMailbox.payload);
|
SetFlashMode(XdrvMailbox.payload);
|
||||||
}
|
}
|
||||||
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, ESP.getFlashChipMode());
|
Response_P(S_JSON_COMMAND_NVALUE, command, ESP.getFlashChipMode());
|
||||||
}
|
}
|
||||||
else serviced = false; // Unknown command
|
else serviced = false; // Unknown command
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user