mirror of
https://github.com/arendst/Tasmota.git
synced 2025-07-23 18:56:38 +00:00
Add influxdb power state info
This commit is contained in:
parent
bde66e18c5
commit
05d0507104
@ -817,6 +817,11 @@ void MqttPublishPowerState(uint32_t device) {
|
|||||||
Response_P(GetStateText(bitRead(TasmotaGlobal.power, device -1)));
|
Response_P(GetStateText(bitRead(TasmotaGlobal.power, device -1)));
|
||||||
MqttPublish(stopic, Settings->flag.mqtt_power_retain); // CMND_POWERRETAIN
|
MqttPublish(stopic, Settings->flag.mqtt_power_retain); // CMND_POWERRETAIN
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef USE_INFLUXDB
|
||||||
|
InfluxDbPublishPowerState(device);
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef USE_SONOFF_IFAN
|
#ifdef USE_SONOFF_IFAN
|
||||||
}
|
}
|
||||||
#endif // USE_SONOFF_IFAN
|
#endif // USE_SONOFF_IFAN
|
||||||
|
@ -43,7 +43,7 @@
|
|||||||
|
|
||||||
#define XSNS_90 90
|
#define XSNS_90 90
|
||||||
|
|
||||||
#define INFLUXDB_INITIAL 12 // Initial number of seconds after restart keeping in mind sensor initialization
|
#define INFLUXDB_INITIAL 7 // Initial number of seconds after wifi connect keeping in mind sensor initialization
|
||||||
|
|
||||||
#ifndef INFLUXDB_VERSION
|
#ifndef INFLUXDB_VERSION
|
||||||
#define INFLUXDB_VERSION 1 // Version of Influxdb 1 or 2
|
#define INFLUXDB_VERSION 1 // Version of Influxdb 1 or 2
|
||||||
@ -76,8 +76,8 @@ struct {
|
|||||||
String _serverUrl; // Connection info
|
String _serverUrl; // Connection info
|
||||||
String _writeUrl; // Cached full write url
|
String _writeUrl; // Cached full write url
|
||||||
String _lastErrorResponse; // Server reponse or library error message for last failed request
|
String _lastErrorResponse; // Server reponse or library error message for last failed request
|
||||||
uint32_t interval = INFLUXDB_INITIAL;
|
|
||||||
uint32_t _lastRequestTime = 0; // Last time in ms we made are a request to server
|
uint32_t _lastRequestTime = 0; // Last time in ms we made are a request to server
|
||||||
|
int interval = 0;
|
||||||
int _lastStatusCode = 0; // HTTP status code of last request to server
|
int _lastStatusCode = 0; // HTTP status code of last request to server
|
||||||
int _lastRetryAfter = 0; // Store retry timeout suggested by server after last request
|
int _lastRetryAfter = 0; // Store retry timeout suggested by server after last request
|
||||||
bool _connectionReuse; // true if HTTP connection should be kept open. Usable for frequent writes. Default false
|
bool _connectionReuse; // true if HTTP connection should be kept open. Usable for frequent writes. Default false
|
||||||
@ -233,6 +233,7 @@ char* InfluxDbMakeNumber(char* dest, const char* source) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void InfluxDbProcessJson(void) {
|
void InfluxDbProcessJson(void) {
|
||||||
|
if (!IFDB.init) { return; }
|
||||||
|
|
||||||
// AddLog(LOG_LEVEL_DEBUG, PSTR("IFX: JSON %s"), TasmotaGlobal.mqtt_data.c_str());
|
// AddLog(LOG_LEVEL_DEBUG, PSTR("IFX: JSON %s"), TasmotaGlobal.mqtt_data.c_str());
|
||||||
|
|
||||||
@ -328,7 +329,7 @@ void InfluxDbProcessJson(void) {
|
|||||||
(strcasecmp_P(type, PSTR(D_JSON_SPEED_UNIT)) == 0)
|
(strcasecmp_P(type, PSTR(D_JSON_SPEED_UNIT)) == 0)
|
||||||
)) {
|
)) {
|
||||||
// switch1,device=demo value=1
|
// switch1,device=demo value=1
|
||||||
snprintf_P(linebuf, sizeof(linebuf), PSTR("%s,device=%s value=%s\n"),
|
snprintf_P(linebuf, sizeof(linebuf), PSTR("%s,device=%s,sensor=device value=%s\n"),
|
||||||
type, TasmotaGlobal.mqtt_topic, value);
|
type, TasmotaGlobal.mqtt_topic, value);
|
||||||
data += linebuf;
|
data += linebuf;
|
||||||
}
|
}
|
||||||
@ -343,23 +344,31 @@ void InfluxDbProcessJson(void) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void InfluxDbPublishPowerState(uint32_t device) {
|
||||||
|
Response_P(PSTR("{\"power%d\":\"%d\"}"), device, bitRead(TasmotaGlobal.power, device -1));
|
||||||
|
InfluxDbProcessJson();
|
||||||
|
}
|
||||||
|
|
||||||
void InfluxDbLoop(void) {
|
void InfluxDbLoop(void) {
|
||||||
if (IFDB.interval) {
|
if (!TasmotaGlobal.global_state.network_down) {
|
||||||
IFDB.interval--;
|
IFDB.interval--;
|
||||||
if (0 == IFDB.interval || IFDB.interval > Settings->tele_period) {
|
if (IFDB.interval <= 0 || IFDB.interval > Settings->tele_period) {
|
||||||
IFDB.interval = Settings->tele_period;
|
IFDB.interval = Settings->tele_period;
|
||||||
if (!IFDB.init) {
|
if (!IFDB.init) {
|
||||||
if (InfluxDbParameterInit()) {
|
if (InfluxDbParameterInit()) {
|
||||||
IFDB.init = InfluxDbValidateConnection();
|
IFDB.init = InfluxDbValidateConnection();
|
||||||
|
if (IFDB.init) {
|
||||||
|
IFDB.interval = INFLUXDB_INITIAL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
ResponseClear();
|
ResponseClear();
|
||||||
if (MqttShowSensor()) { // Pull sensor data
|
if (MqttShowSensor()) { // Pull sensor data
|
||||||
InfluxDbProcessJson();
|
InfluxDbProcessJson();
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*********************************************************************************************\
|
/*********************************************************************************************\
|
||||||
|
Loading…
x
Reference in New Issue
Block a user