mirror of https://github.com/arendst/Tasmota.git
Add command Time 1/2/3 to select JSON time format ISO + Epoch, ISO or Epoch
* Add time to more events (#6337) * Add command Time 1/2/3 to select JSON time format ISO + Epoch, ISO or Epoch
This commit is contained in:
parent
138ed6def9
commit
af1edb0cdb
|
@ -7,6 +7,8 @@
|
|||
* Add Zigbee support phase 2 - cc2530 initialization and basic ZCL decoding
|
||||
* Add driver USE_SDM120_2 with Domoticz P1 Smart Meter functionality as future replacement for USE_SDM120 - Pls test and report
|
||||
* Add command Power0 0/1/2/Off/On/Toggle to control all power outputs at once (#6340)
|
||||
* Add time to more events (#6337)
|
||||
* Add command Time 1/2/3 to select JSON time format ISO + Epoch, ISO or Epoch
|
||||
*
|
||||
* 6.6.0.8 20190827
|
||||
* Add Tuya Energy monitoring by Shantur Rathore
|
||||
|
|
|
@ -105,8 +105,7 @@ typedef union {
|
|||
uint32_t spare01 : 1;
|
||||
uint32_t spare02 : 1;
|
||||
uint32_t spare03 : 1;
|
||||
uint32_t spare04 : 1;
|
||||
uint32_t spare05 : 1;
|
||||
uint32_t time_format : 2; // (v6.6.0.9) - CMND_TIME
|
||||
uint32_t calc_resolution : 3;
|
||||
uint32_t weight_resolution : 2;
|
||||
uint32_t frequency_resolution : 2;
|
||||
|
|
|
@ -1234,7 +1234,7 @@ void SerialInput(void)
|
|||
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
|
||||
char hex_char[(serial_in_byte_counter * 2) + 2];
|
||||
Response_P(PSTR("{\"" D_JSON_SERIALRECEIVED "\":\"%s\"}"),
|
||||
ResponseTime_P(PSTR(",\"" D_JSON_SERIALRECEIVED "\":\"%s\"}"),
|
||||
(Settings.flag.mqtt_serial_raw) ? ToHex_P((unsigned char*)serial_in_buffer, serial_in_byte_counter, hex_char, sizeof(hex_char)) : serial_in_buffer);
|
||||
MqttPublishPrefixTopic_P(RESULT_OR_TELE, PSTR(D_JSON_SERIALRECEIVED));
|
||||
XdrvRulesProcess();
|
||||
|
|
|
@ -870,7 +870,24 @@ uint32_t WebColor(uint32_t i)
|
|||
* Response data handling
|
||||
\*********************************************************************************************/
|
||||
|
||||
int Response_P(const char* format, ...) // Content send snprintf_P char data
|
||||
const uint16_t TIMESZ = 100; // Max number of characters in time string
|
||||
|
||||
char* ResponseGetTime(uint32_t format, char* time_str)
|
||||
{
|
||||
switch (format) {
|
||||
case 1:
|
||||
snprintf_P(time_str, TIMESZ, PSTR("{\"" D_JSON_TIME "\":\"%s\""), GetDateAndTime(DT_LOCAL).c_str());
|
||||
break;
|
||||
case 2:
|
||||
snprintf_P(time_str, TIMESZ, PSTR("{\"" D_JSON_TIME "\":%u"), UtcTime());
|
||||
break;
|
||||
default:
|
||||
snprintf_P(time_str, TIMESZ, PSTR("{\"" D_JSON_TIME "\":\"%s\",\"Epoch\":%u"), GetDateAndTime(DT_LOCAL).c_str(), UtcTime());
|
||||
}
|
||||
return time_str;
|
||||
}
|
||||
|
||||
int Response_P(const char* format, ...) // Content send snprintf_P char data
|
||||
{
|
||||
// This uses char strings. Be aware of sending %% if % is needed
|
||||
va_list args;
|
||||
|
@ -880,6 +897,20 @@ int Response_P(const char* format, ...) // Content send snprintf_P char data
|
|||
return len;
|
||||
}
|
||||
|
||||
int ResponseTime_P(const char* format, ...) // Content send snprintf_P char data
|
||||
{
|
||||
// This uses char strings. Be aware of sending %% if % is needed
|
||||
va_list args;
|
||||
va_start(args, format);
|
||||
|
||||
ResponseGetTime(Settings.flag2.time_format, mqtt_data);
|
||||
|
||||
int mlen = strlen(mqtt_data);
|
||||
int len = vsnprintf_P(mqtt_data + mlen, sizeof(mqtt_data) - mlen, format, args);
|
||||
va_end(args);
|
||||
return len + mlen;
|
||||
}
|
||||
|
||||
int ResponseAppend_P(const char* format, ...) // Content send snprintf_P char data
|
||||
{
|
||||
// This uses char strings. Be aware of sending %% if % is needed
|
||||
|
@ -891,15 +922,15 @@ int ResponseAppend_P(const char* format, ...) // Content send snprintf_P char d
|
|||
return len + mlen;
|
||||
}
|
||||
|
||||
int ResponseAppendTime(void)
|
||||
int ResponseAppendTimeFormat(uint32_t format)
|
||||
{
|
||||
return ResponseAppend_P(PSTR("{\"" D_JSON_TIME "\":\"%s\",\"Epoch\":%u"), GetDateAndTime(DT_LOCAL).c_str(), UtcTime());
|
||||
char time_str[TIMESZ];
|
||||
return ResponseAppend_P(ResponseGetTime(format, time_str));
|
||||
}
|
||||
|
||||
int ResponseBeginTime(void)
|
||||
int ResponseAppendTime(void)
|
||||
{
|
||||
mqtt_data[0] = '\0';
|
||||
return ResponseAppendTime();
|
||||
return ResponseAppendTimeFormat(Settings.flag2.time_format);
|
||||
}
|
||||
|
||||
int ResponseJsonEnd(void)
|
||||
|
|
|
@ -1276,10 +1276,25 @@ void CmndReset(void)
|
|||
|
||||
void CmndTime(void)
|
||||
{
|
||||
// payload 0 = (re-)enable NTP
|
||||
// payload 1 = Time format {"Time":"2019-09-04T14:31:29","Epoch":1567600289}
|
||||
// payload 2 = Time format {"Time":"2019-09-04T14:31:29"}
|
||||
// payload 3 = Time format {"Time":1567600289}
|
||||
// payload 4 = reserved
|
||||
// payload 1451602800 - disable NTP and set time to epoch
|
||||
|
||||
uint32_t format = Settings.flag2.time_format;
|
||||
if (XdrvMailbox.data_len > 0) {
|
||||
RtcSetTime(XdrvMailbox.payload);
|
||||
if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload < 4)) {
|
||||
Settings.flag2.time_format = XdrvMailbox.payload -1;
|
||||
format = Settings.flag2.time_format;
|
||||
} else {
|
||||
format = 0; // {"Time":"2019-09-04T14:31:29","Epoch":1567600289}
|
||||
RtcSetTime(XdrvMailbox.payload);
|
||||
}
|
||||
}
|
||||
ResponseBeginTime();
|
||||
mqtt_data[0] = '\0';
|
||||
ResponseAppendTimeFormat(format);
|
||||
ResponseJsonEnd();
|
||||
}
|
||||
|
||||
|
|
|
@ -314,7 +314,7 @@ void EnergyMarginCheck(void)
|
|||
} else {
|
||||
Energy.mplh_counter--;
|
||||
if (!Energy.mplh_counter) {
|
||||
Response_P(PSTR("{\"" D_JSON_MAXPOWERREACHED "\":\"%d%s\"}"), energy_power_u, (Settings.flag.value_units) ? " " D_UNIT_WATT : "");
|
||||
ResponseTime_P(PSTR(",\"" D_JSON_MAXPOWERREACHED "\":\"%d%s\"}"), energy_power_u, (Settings.flag.value_units) ? " " D_UNIT_WATT : "");
|
||||
MqttPublishPrefixTopic_P(STAT, S_RSLT_WARNING);
|
||||
EnergyMqttShow();
|
||||
SetAllPower(POWER_ALL_OFF, SRC_MAXPOWER);
|
||||
|
@ -337,11 +337,11 @@ void EnergyMarginCheck(void)
|
|||
if (Energy.mplr_counter) {
|
||||
Energy.mplr_counter--;
|
||||
if (Energy.mplr_counter) {
|
||||
Response_P(PSTR("{\"" D_JSON_POWERMONITOR "\":\"%s\"}"), GetStateText(1));
|
||||
ResponseTime_P(PSTR(",\"" D_JSON_POWERMONITOR "\":\"%s\"}"), GetStateText(1));
|
||||
MqttPublishPrefixTopic_P(RESULT_OR_STAT, PSTR(D_JSON_POWERMONITOR));
|
||||
RestorePower(true, SRC_MAXPOWER);
|
||||
} else {
|
||||
Response_P(PSTR("{\"" D_JSON_MAXPOWERREACHEDRETRY "\":\"%s\"}"), GetStateText(0));
|
||||
ResponseTime_P(PSTR(",\"" D_JSON_MAXPOWERREACHEDRETRY "\":\"%s\"}"), GetStateText(0));
|
||||
MqttPublishPrefixTopic_P(STAT, S_RSLT_WARNING);
|
||||
EnergyMqttShow();
|
||||
}
|
||||
|
@ -355,14 +355,14 @@ void EnergyMarginCheck(void)
|
|||
energy_daily_u = (uint16_t)(Energy.daily * 1000);
|
||||
if (!Energy.max_energy_state && (RtcTime.hour == Settings.energy_max_energy_start)) {
|
||||
Energy.max_energy_state = 1;
|
||||
Response_P(PSTR("{\"" D_JSON_ENERGYMONITOR "\":\"%s\"}"), GetStateText(1));
|
||||
ResponseTime_P(PSTR(",\"" D_JSON_ENERGYMONITOR "\":\"%s\"}"), GetStateText(1));
|
||||
MqttPublishPrefixTopic_P(RESULT_OR_STAT, PSTR(D_JSON_ENERGYMONITOR));
|
||||
RestorePower(true, SRC_MAXENERGY);
|
||||
}
|
||||
else if ((1 == Energy.max_energy_state ) && (energy_daily_u >= Settings.energy_max_energy)) {
|
||||
Energy.max_energy_state = 2;
|
||||
dtostrfd(Energy.daily, 3, mqtt_data);
|
||||
Response_P(PSTR("{\"" D_JSON_MAXENERGYREACHED "\":\"%s%s\"}"), mqtt_data, (Settings.flag.value_units) ? " " D_UNIT_KILOWATTHOUR : "");
|
||||
ResponseTime_P(PSTR(",\"" D_JSON_MAXENERGYREACHED "\":\"%s%s\"}"), mqtt_data, (Settings.flag.value_units) ? " " D_UNIT_KILOWATTHOUR : "");
|
||||
MqttPublishPrefixTopic_P(STAT, S_RSLT_WARNING);
|
||||
EnergyMqttShow();
|
||||
SetAllPower(POWER_ALL_OFF, SRC_MAXENERGY);
|
||||
|
@ -376,9 +376,10 @@ void EnergyMarginCheck(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}}
|
||||
ResponseBeginTime();
|
||||
int tele_period_save = tele_period;
|
||||
tele_period = 2;
|
||||
mqtt_data[0] = '\0';
|
||||
ResponseAppendTime();
|
||||
EnergyShow(true);
|
||||
tele_period = tele_period_save;
|
||||
ResponseJsonEnd();
|
||||
|
|
|
@ -154,7 +154,7 @@ void IrReceiveCheck(void)
|
|||
} else {
|
||||
snprintf_P(svalue, sizeof(svalue), PSTR("\"0x%s\""), hvalue);
|
||||
}
|
||||
Response_P(PSTR("{\"" D_JSON_IRRECEIVED "\":{\"" D_JSON_IR_PROTOCOL "\":\"%s\",\"" D_JSON_IR_BITS "\":%d,\"" D_JSON_IR_DATA "\":%s"),
|
||||
ResponseTime_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, svalue);
|
||||
|
||||
if (Settings.flag3.receive_raw) {
|
||||
|
|
|
@ -220,7 +220,7 @@ void IrReceiveCheck(void)
|
|||
// if ((now - ir_lasttime > IR_TIME_AVOID_DUPLICATE) && (UNKNOWN != results.decode_type) && (results.bits > 0)) {
|
||||
if (!irsend_active && (now - ir_lasttime > IR_TIME_AVOID_DUPLICATE)) {
|
||||
ir_lasttime = now;
|
||||
Response_P(PSTR("{\"" D_JSON_IRRECEIVED "\":%s"), sendIRJsonState(results).c_str());
|
||||
ResponseTime_P(PSTR(",\"" D_JSON_IRRECEIVED "\":%s"), sendIRJsonState(results).c_str());
|
||||
|
||||
if (Settings.flag3.receive_raw) {
|
||||
ResponseAppend_P(PSTR(",\"" D_JSON_IR_RAWDATA "\":["));
|
||||
|
|
|
@ -214,7 +214,7 @@ void SonoffBridgeReceivedRaw(void)
|
|||
|
||||
if (0xB1 == serial_in_buffer[1]) { buckets = serial_in_buffer[2] << 1; } // Bucket sniffing
|
||||
|
||||
Response_P(PSTR("{\"" D_CMND_RFRAW "\":{\"" D_JSON_DATA "\":\""));
|
||||
ResponseTime_P(PSTR(",\"" D_CMND_RFRAW "\":{\"" D_JSON_DATA "\":\""));
|
||||
for (uint32_t i = 0; i < serial_in_byte_counter; i++) {
|
||||
ResponseAppend_P(PSTR("%02X"), serial_in_buffer[i]);
|
||||
if (0xB1 == serial_in_buffer[1]) {
|
||||
|
@ -226,6 +226,7 @@ void SonoffBridgeReceivedRaw(void)
|
|||
}
|
||||
ResponseAppend_P(PSTR("\"}}"));
|
||||
MqttPublishPrefixTopic_P(RESULT_OR_TELE, PSTR(D_CMND_RFRAW));
|
||||
|
||||
XdrvRulesProcess();
|
||||
}
|
||||
|
||||
|
@ -294,7 +295,7 @@ void SonoffBridgeReceived(void)
|
|||
} else {
|
||||
snprintf_P(stemp, sizeof(stemp), PSTR("\"%06X\""), received_id);
|
||||
}
|
||||
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}}"),
|
||||
ResponseTime_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);
|
||||
MqttPublishPrefixTopic_P(RESULT_OR_TELE, PSTR(D_JSON_RFRECEIVED));
|
||||
XdrvRulesProcess();
|
||||
|
|
|
@ -71,7 +71,7 @@ void SerialBridgeInput(void)
|
|||
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
|
||||
char hex_char[(serial_bridge_in_byte_counter * 2) + 2];
|
||||
Response_P(PSTR("{\"" D_JSON_SSERIALRECEIVED "\":\"%s\"}"),
|
||||
ResponseTime_P(PSTR(",\"" D_JSON_SSERIALRECEIVED "\":\"%s\"}"),
|
||||
(serial_bridge_raw) ? ToHex_P((unsigned char*)serial_bridge_buffer, serial_bridge_in_byte_counter, hex_char, sizeof(hex_char)) : serial_bridge_buffer);
|
||||
MqttPublishPrefixTopic_P(RESULT_OR_TELE, PSTR(D_JSON_SSERIALRECEIVED));
|
||||
XdrvRulesProcess();
|
||||
|
|
|
@ -166,8 +166,7 @@ bool PCA9685_Command(void)
|
|||
|
||||
void PCA9685_OutputTelemetry(bool telemetry) {
|
||||
if (0 == pca9685_detected) { return; } // We do not do this if the PCA9685 has not been detected
|
||||
ResponseBeginTime();
|
||||
ResponseAppend_P(PSTR(",\"PCA9685\":{\"PWM_FREQ\":%i,"),pca9685_freq);
|
||||
ResponseTime_P(PSTR(",\"PCA9685\":{\"PWM_FREQ\":%i,"),pca9685_freq);
|
||||
for (uint32_t pin=0;pin<16;pin++) {
|
||||
ResponseAppend_P(PSTR("\"PWM%i\":%i,"),pin,pca9685_pin_pwm_value[pin]);
|
||||
}
|
||||
|
|
|
@ -67,7 +67,7 @@ void RfReceiveCheck(void)
|
|||
} else {
|
||||
snprintf_P(stemp, sizeof(stemp), PSTR("\"0x%lX\""), (uint32_t)data);
|
||||
}
|
||||
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}}"),
|
||||
ResponseTime_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);
|
||||
MqttPublishPrefixTopic_P(RESULT_OR_TELE, PSTR(D_JSON_RFRECEIVED));
|
||||
XdrvRulesProcess();
|
||||
|
|
|
@ -156,10 +156,10 @@ public:
|
|||
void publishMQTTReceived(void) {
|
||||
char hex_char[_payload.len()*2+2];
|
||||
ToHex_P((unsigned char*)_payload.getBuffer(), _payload.len(), hex_char, sizeof(hex_char));
|
||||
Response_P(PSTR("{\"" D_JSON_ZIGBEEZCLRECEIVED "\":{\"fc\":\"0x%02X\",\"manuf\":\"0x%04X\",\"transact\":%d,"
|
||||
"\"cmdid\":\"0x%02X\",\"payload\":\"%s\"}}"),
|
||||
_frame_control, _manuf_code, _transact_seq, _cmd_id,
|
||||
hex_char);
|
||||
ResponseTime_P(PSTR(",\"" D_JSON_ZIGBEEZCLRECEIVED "\":{\"fc\":\"0x%02X\",\"manuf\":\"0x%04X\",\"transact\":%d,"
|
||||
"\"cmdid\":\"0x%02X\",\"payload\":\"%s\"}}"),
|
||||
_frame_control, _manuf_code, _transact_seq, _cmd_id,
|
||||
hex_char);
|
||||
MqttPublishPrefixTopic_P(RESULT_OR_TELE, PSTR(D_JSON_ZIGBEEZCLSENT));
|
||||
XdrvRulesProcess();
|
||||
}
|
||||
|
@ -834,7 +834,7 @@ void ZigbeeInput(void)
|
|||
SBuffer znp_buffer = zigbee_buffer->subBuffer(2, zigbee_frame_len - 3); // remove SOF, LEN and FCS
|
||||
|
||||
ToHex_P((unsigned char*)znp_buffer.getBuffer(), znp_buffer.len(), hex_char, sizeof(hex_char));
|
||||
Response_P(PSTR("{\"" D_JSON_ZIGBEEZNPRECEIVED "\":\"%s\"}"), hex_char);
|
||||
ResponseTime_P(PSTR(",\"" D_JSON_ZIGBEEZNPRECEIVED "\":\"%s\"}"), hex_char);
|
||||
MqttPublishPrefixTopic_P(RESULT_OR_TELE, PSTR(D_JSON_ZIGBEEZNPRECEIVED));
|
||||
XdrvRulesProcess();
|
||||
|
||||
|
|
|
@ -124,8 +124,7 @@ void ILI9488_InitDriver()
|
|||
|
||||
#ifdef USE_TOUCH_BUTTONS
|
||||
void ILI9488_MQTT(uint8_t count,const char *cp) {
|
||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_TIME "\":\"%s\""), GetDateAndTime(DT_LOCAL).c_str());
|
||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"RA8876\":{\"%s%d\":\"%d\"}}"), mqtt_data,cp,count+1,(buttons[count]->vpower&0x80)>>7);
|
||||
ResponseTime_P(PSTR(",\"RA8876\":{\"%s%d\":\"%d\"}}"), cp,count+1,(buttons[count]->vpower&0x80)>>7);
|
||||
MqttPublishPrefixTopic_P(TELE, PSTR(D_RSLT_SENSOR), Settings.flag.mqtt_sensor_retain);
|
||||
}
|
||||
// check digitizer hit
|
||||
|
|
|
@ -109,8 +109,7 @@ void RA8876_InitDriver()
|
|||
|
||||
#ifdef USE_TOUCH_BUTTONS
|
||||
void RA8876_MQTT(uint8_t count,const char *cp) {
|
||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_TIME "\":\"%s\""), GetDateAndTime(DT_LOCAL).c_str());
|
||||
snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"RA8876\":{\"%s%d\":\"%d\"}}"), mqtt_data,cp,count+1,(buttons[count]->vpower&0x80)>>7);
|
||||
ResponseTime_P(PSTR(",\"RA8876\":{\"%s%d\":\"%d\"}}"), cp,count+1,(buttons[count]->vpower&0x80)>>7);
|
||||
MqttPublishPrefixTopic_P(TELE, PSTR(D_RSLT_SENSOR), Settings.flag.mqtt_sensor_retain);
|
||||
}
|
||||
|
||||
|
|
|
@ -303,8 +303,7 @@ void MCP230xx_CheckForInterrupt(void) {
|
|||
break;
|
||||
}
|
||||
if (int_tele) {
|
||||
ResponseBeginTime();
|
||||
ResponseAppend_P(PSTR(",\"MCP230XX_INT\":{\"D%i\":%i,\"MS\":%lu}}"),
|
||||
ResponseTime_P(PSTR(",\"MCP230XX_INT\":{\"D%i\":%i,\"MS\":%lu}}"),
|
||||
intp+(mcp230xx_port*8), ((mcp230xx_intcap >> intp) & 0x01),millis_since_last_int);
|
||||
MqttPublishPrefixTopic_P(RESULT_OR_STAT, PSTR("MCP230XX_INT"));
|
||||
}
|
||||
|
@ -730,8 +729,7 @@ void MCP230xx_OutputTelemetry(void) {
|
|||
}
|
||||
if (outputcount) {
|
||||
char stt[7];
|
||||
ResponseBeginTime();
|
||||
ResponseAppend_P(PSTR(",\"MCP230_OUT\":{"));
|
||||
ResponseTime_P(PSTR(",\"MCP230_OUT\":{"));
|
||||
for (uint32_t pinx = 0;pinx < mcp230xx_pincount;pinx++) {
|
||||
if (Settings.mcp230xx_config[pinx].pinmode >= 5) {
|
||||
sprintf(stt,ConvertNumTxt(((gpiototal>>pinx)&1),Settings.mcp230xx_config[pinx].pinmode));
|
||||
|
@ -746,8 +744,7 @@ void MCP230xx_OutputTelemetry(void) {
|
|||
#endif // USE_MCP230xx_OUTPUT
|
||||
|
||||
void MCP230xx_Interrupt_Counter_Report(void) {
|
||||
ResponseBeginTime();
|
||||
ResponseAppend_P(PSTR(",\"MCP230_INTTIMER\":{"));
|
||||
ResponseTime_P(PSTR(",\"MCP230_INTTIMER\":{"));
|
||||
for (uint32_t pinx = 0;pinx < mcp230xx_pincount;pinx++) {
|
||||
if (Settings.mcp230xx_config[pinx].int_count_en) { // Counting is enabled for this pin so we add to report
|
||||
ResponseAppend_P(PSTR("\"INTCNT_D%i\":%i,"),pinx,mcp230xx_int_counter[pinx]);
|
||||
|
@ -761,8 +758,7 @@ void MCP230xx_Interrupt_Counter_Report(void) {
|
|||
|
||||
void MCP230xx_Interrupt_Retain_Report(void) {
|
||||
uint16_t retainresult = 0;
|
||||
ResponseBeginTime();
|
||||
ResponseAppend_P(PSTR(",\"MCP_INTRETAIN\":{"));
|
||||
ResponseTime_P(PSTR(",\"MCP_INTRETAIN\":{"));
|
||||
for (uint32_t pinx = 0;pinx < mcp230xx_pincount;pinx++) {
|
||||
if (Settings.mcp230xx_config[pinx].int_retain_flag) {
|
||||
ResponseAppend_P(PSTR("\"D%i\":%i,"),pinx,mcp230xx_int_retainer[pinx]);
|
||||
|
|
|
@ -494,12 +494,10 @@ void PN532_ScanForTag(void)
|
|||
pn532_function = 0;
|
||||
#endif // USE_PN532_DATA_FUNCTION
|
||||
|
||||
ResponseBeginTime();
|
||||
|
||||
#ifdef USE_PN532_DATA_FUNCTION
|
||||
ResponseAppend_P(PSTR(",\"PN532\":{\"UID\":\"%s\", \"DATA\":\"%s\"}}"), uids, card_datas);
|
||||
ResponseTime_P(PSTR(",\"PN532\":{\"UID\":\"%s\", \"DATA\":\"%s\"}}"), uids, card_datas);
|
||||
#else
|
||||
ResponseAppend_P(PSTR(",\"PN532\":{\"UID\":\"%s\"}}"), uids);
|
||||
ResponseTime_P(PSTR(",\"PN532\":{\"UID\":\"%s\"}}"), uids);
|
||||
#endif // USE_PN532_DATA_FUNCTION
|
||||
|
||||
MqttPublishPrefixTopic_P(TELE, PSTR(D_RSLT_SENSOR), Settings.flag.mqtt_sensor_retain);
|
||||
|
@ -541,8 +539,7 @@ bool PN532_Command(void)
|
|||
if (!strcmp(subStr(sub_string, XdrvMailbox.data, ",", 1),"E")) {
|
||||
pn532_function = 1; // Block 1 of next card/tag will be reset to 0x00...
|
||||
AddLog_P(LOG_LEVEL_INFO, PSTR("NFC: PN532 NFC - Next scanned tag data block 1 will be erased"));
|
||||
ResponseBeginTime();
|
||||
ResponseAppend_P(PSTR(",\"PN532\":{\"COMMAND\":\"E\"}}"));
|
||||
ResponseTime_P(PSTR(",\"PN532\":{\"COMMAND\":\"E\"}}"));
|
||||
return serviced;
|
||||
}
|
||||
if (!strcmp(subStr(sub_string, XdrvMailbox.data, ",", 1),"S")) {
|
||||
|
@ -558,8 +555,7 @@ bool PN532_Command(void)
|
|||
pn532_newdata[pn532_newdata_len] = 0x00; // Null terminate the string
|
||||
pn532_function = 2;
|
||||
AddLog_P2(LOG_LEVEL_INFO, PSTR("NFC: PN532 NFC - Next scanned tag data block 1 will be set to '%s'"), pn532_newdata);
|
||||
ResponseBeginTime();
|
||||
ResponseAppend_P(PSTR(",\"PN532\":{\"COMMAND\":\"S\"}}"));
|
||||
ResponseTime_P(PSTR(",\"PN532\":{\"COMMAND\":\"S\"}}"));
|
||||
return serviced;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -253,8 +253,7 @@ void SPS30_Show(bool json) {
|
|||
|
||||
void CmdClean(void) {
|
||||
sps30_cmd(SPS_CMD_CLEAN);
|
||||
ResponseBeginTime();
|
||||
ResponseAppend_P(PSTR(",\"SPS30\":{\"CFAN\":\"true\"}}"));
|
||||
ResponseTime_P(PSTR(",\"SPS30\":{\"CFAN\":\"true\"}}"));
|
||||
MqttPublishPrefixTopic_P(TELE, PSTR(D_RSLT_SENSOR), Settings.flag.mqtt_sensor_retain);
|
||||
}
|
||||
|
||||
|
|
|
@ -106,8 +106,7 @@ void RDM6300_ScanForTag() {
|
|||
memcpy(rdm_uid_str,&rdm_buffer[2],8);
|
||||
rdm_uid_str[9]=0;
|
||||
|
||||
Response_P(PSTR("{\"" D_JSON_TIME "\":\"%s\""), GetDateAndTime(DT_LOCAL).c_str());
|
||||
ResponseAppend_P(PSTR(",\"RDM6300\":{\"UID\":\"%s\"}}"), rdm_uid_str);
|
||||
ResponseTime_P(PSTR(",\"RDM6300\":{\"UID\":\"%s\"}}"), rdm_uid_str);
|
||||
MqttPublishPrefixTopic_P(TELE, PSTR(D_RSLT_SENSOR), Settings.flag.mqtt_sensor_retain);
|
||||
/*
|
||||
char command[24];
|
||||
|
|
|
@ -547,8 +547,7 @@ void ibeacon_mqtt(const char *mac,const char *rssi) {
|
|||
memcpy(s_rssi,rssi,4);
|
||||
s_rssi[4]=0;
|
||||
int16_t n_rssi=atoi(s_rssi);
|
||||
ResponseBeginTime();
|
||||
ResponseAppend_P(PSTR(",\"" D_CMND_IBEACON "_%s\":{\"RSSI\":%d}}"),s_mac,n_rssi);
|
||||
ResponseTime_P(PSTR(",\"" D_CMND_IBEACON "_%s\":{\"RSSI\":%d}}"),s_mac,n_rssi);
|
||||
MqttPublishPrefixTopic_P(TELE, PSTR(D_RSLT_SENSOR), Settings.flag.mqtt_sensor_retain);
|
||||
}
|
||||
|
||||
|
|
|
@ -1505,8 +1505,7 @@ void SML_Immediate_MQTT(const char *mp,uint8_t index,uint8_t mindex) {
|
|||
if (dp&0x10) {
|
||||
// immediate mqtt
|
||||
dtostrfd(meter_vars[index],dp&0xf,tpowstr);
|
||||
ResponseBeginTime();
|
||||
ResponseAppend_P(PSTR(",\"%s\":{\"%s\":%s}}"),meter_desc_p[mindex].prefix,jname,tpowstr);
|
||||
ResponseTime_P(PSTR(",\"%s\":{\"%s\":%s}}"),meter_desc_p[mindex].prefix,jname,tpowstr);
|
||||
MqttPublishPrefixTopic_P(TELE, PSTR(D_RSLT_SENSOR), Settings.flag.mqtt_sensor_retain);
|
||||
}
|
||||
}
|
||||
|
@ -2136,8 +2135,7 @@ bool XSNS_53_cmd(void) {
|
|||
// set dump mode
|
||||
cp++;
|
||||
dump2log=atoi(cp);
|
||||
ResponseBeginTime();
|
||||
ResponseAppend_P(PSTR(",\"SML\":{\"CMD\":\"dump: %d\"}}"),dump2log);
|
||||
ResponseTime_P(PSTR(",\"SML\":{\"CMD\":\"dump: %d\"}}"),dump2log);
|
||||
} else if (*cp=='c') {
|
||||
// set ounter
|
||||
cp++;
|
||||
|
@ -2157,12 +2155,10 @@ bool XSNS_53_cmd(void) {
|
|||
}
|
||||
}
|
||||
}
|
||||
ResponseBeginTime();
|
||||
ResponseAppend_P(PSTR(",\"SML\":{\"CMD\":\"counter%d: %d\"}}"),index,RtcSettings.pulse_counter[index-1]);
|
||||
ResponseTime_P(PSTR(",\"SML\":{\"CMD\":\"counter%d: %d\"}}"),index,RtcSettings.pulse_counter[index-1]);
|
||||
} else if (*cp=='r') {
|
||||
// restart
|
||||
ResponseBeginTime();
|
||||
ResponseAppend_P(PSTR(",\"SML\":{\"CMD\":\"restart\"}}"));
|
||||
ResponseTime_P(PSTR(",\"SML\":{\"CMD\":\"restart\"}}"));
|
||||
SML_CounterSaveState();
|
||||
SML_Init();
|
||||
} else {
|
||||
|
|
Loading…
Reference in New Issue