Compare commits

...

3 Commits

Author SHA1 Message Date
Mathieu Maret f9985cc2c1 Fix wifi reconnect on wifi on/off 2023-03-28 14:27:45 +02:00
Mathieu Maret ef446ebd19 Teleinfo: pull data at every loop
to avoid overflow in libteleinfo
2023-03-28 14:05:14 +02:00
Mathieu Maret 5987bc28de Teleinfo: fix signature 2023-03-28 14:01:46 +02:00
3 changed files with 27 additions and 19 deletions

View File

@ -4,9 +4,8 @@
#ifdef CONFIG_ENABLE_TELEINFO
#include <LibTeleinfo.h>
int TeleinfoSetup();
int TeleinfoProcess(std::vector<struct mqttInfo> &batchInfo);
int TeleinfoProcess(float &iinst, float &papp, float &base);
int TeleinfoProcess(float &iinst, float &papp, float &base,
int TeleinfoRetrieve(float &iinst, float &papp, float &base);
int TeleinfoRetrieve(float &iinst, float &papp, float &base,
std::vector<struct mqttInfo> &batchInfo);
#else
int TeleinfoSetup() {
@ -14,8 +13,11 @@ int TeleinfoSetup() {
return -1;
};
int TeleinfoProcess(float &, float &, float &,
std::vector<struct mqttInfo> &){
return 0;
int TeleinfoRetrieve(float &, float &, float &){
return 0;
}
int TeleinfoRetrieve(float &, float &, float &, std::vector<struct mqttInfo> &)
{
return 0;
}
#endif

View File

@ -13,8 +13,8 @@ int TeleinfoSetup()
return 0;
}
int TeleinfoProcess(std::vector<struct mqttInfo> &batchInfo)
{
int TeleinfoRetrieve(float &iinst, float &papp, float &base){
int c;
while ((c = TELESerial.read()) >= 0) {
@ -25,16 +25,16 @@ int TeleinfoProcess(std::vector<struct mqttInfo> &batchInfo)
me = me->next;
while (me) {
if (strcmp(me->name, "IINST") == 0) {
float val = atof(me->value);
batchInfo.push_back({val, TELEINFO_IINST_FEED_FORMAT, 0, 0});
iinst = atof(me->value);
}
if (strcmp(me->name, "PAPP") == 0) {
float val = atof(me->value);
batchInfo.push_back({val, TELEINFO_PAPP_FEED_FORMAT, 0, 0});
papp = atof(me->value);
}
if (strcmp(me->name, "BASE") == 0) {
float val = atof(me->value);
batchInfo.push_back({val, TELEINFO_BASE_FEED_FORMAT, 0, 0});
float tmp = atof(me->value);
if(tmp != 0){
base = tmp;
}
}
me = me->next;
}
@ -42,7 +42,7 @@ int TeleinfoProcess(std::vector<struct mqttInfo> &batchInfo)
return 0;
}
int TeleinfoProcess(float &iinst, float &papp, float &base,
int TeleinfoRetrieve(float &iinst, float &papp, float &base,
std::vector<struct mqttInfo> &batchInfo)
{
int c;
@ -63,8 +63,11 @@ int TeleinfoProcess(float &iinst, float &papp, float &base,
batchInfo.push_back({papp, TELEINFO_PAPP_FEED_FORMAT, 0, 0});
}
if (strcmp(me->name, "BASE") == 0) {
base = atof(me->value);
batchInfo.push_back({base, TELEINFO_BASE_FEED_FORMAT, 0, 0});
float tmp = atof(me->value);
if(tmp != 0){
base = tmp;
batchInfo.push_back({base, TELEINFO_BASE_FEED_FORMAT, 0, 0});
}
}
me = me->next;
}

View File

@ -311,6 +311,7 @@ void loop() {
}
delay(CONFIG_WEB_DELAY_MS);
TeleinfoRetrieve(teleIinst, telePapp, teleBase);
nbCycle++;
if (nbCycle > samplingPeriod / CONFIG_WEB_DELAY_MS) {
std::vector<struct mqttInfo> batchInfo;
@ -365,10 +366,12 @@ void loop() {
batchInfo.push_back({bme680BSECIaqAcc, BME680_IAQ_ACC_FEED_FORMAT, 0, 0});
}
TeleinfoProcess(teleIinst, telePapp, teleBase, batchInfo);
TeleinfoRetrieve(teleIinst, telePapp, teleBase, batchInfo);
if (mode == BOOTMODE_NORMAL)
MqttBatchPublish(batchInfo, conf.mqttUser, conf.host);
if (MqttBatchPublish(batchInfo, conf.mqttUser, conf.host))
WifiSetup(conf);
nbCycle = 0;
}
}