Fix teleinfo configuration

This commit is contained in:
Mathieu Maret 2022-09-10 21:53:06 +02:00
parent 8f471fc0bf
commit 1b52a80b15
5 changed files with 58 additions and 34 deletions

View File

@ -4,18 +4,18 @@
#ifdef CONFIG_ENABLE_TELEINFO
#include <LibTeleinfo.h>
int TeleinfoSetup();
//int TeleinfoProcess();
int TeleinfoProcess(std::vector<struct mqttInfo> &batchInfo);
int TeleinfoProcess(float &iinst, float &papp, float &base);
#else
typedef struct _ValueList {
} ValueList;
int TeleinfoSetup() {
SKETCH_DEBUG_PRINTLN("Teleinfo is disabled at build time");
return -1;
};
//int TeleinfoProcess(){
int TeleinfoProcess(std::vector<struct mqttInfo> &){
inline int TeleinfoProcess(std::vector<struct mqttInfo> &){
return 0;
};
int TeleinfoProcess(float &iinst, float &papp, float &base){
return 0;
};
#endif

View File

@ -1,19 +1,14 @@
#ifdef CONFIG_ENABLE_TELEINFO
#include "Teleinfo.h"
#include <LibTeleinfo.h>
#define TELESerial Serial
TInfo tinfo;
void onNewFrame(ValueList *me)
{
SKETCH_DEBUG_PRINTLN("New Frame available");
}
int TeleinfoSetup()
{
Serial.begin(1200, SERIAL_7E1);
TELESerial.begin(1200, SERIAL_7E1);
tinfo.init();
tinfo.attachNewFrame(onNewFrame);
return 0;
}
@ -22,11 +17,10 @@ int TeleinfoProcess(std::vector<struct mqttInfo> &batchInfo)
{
int c;
while ((c = Serial.read()) >= 0) {
while ((c = TELESerial.read()) >= 0) {
tinfo.process(c);
}
ValueList *me = tinfo.getList();
//std::vector<struct mqttInfo> batchInfo;
if (me)
me = me->next;
while (me) {
@ -44,8 +38,32 @@ int TeleinfoProcess(std::vector<struct mqttInfo> &batchInfo)
}
me = me->next;
}
//if (mode == BOOTMODE_NORMAL)
// MqttBatchPublish(batchInfo, conf.mqttUser, conf.host);
return 0;
}
int TeleinfoProcess(float &iinst, float &papp, float &base )
{
int c;
while ((c = TELESerial.read()) >= 0) {
tinfo.process(c);
}
ValueList *me = tinfo.getList();
if (me)
me = me->next;
while (me) {
if (strcmp(me->name, "IINST") == 0) {
iinst = atof(me->value);
}
if (strcmp(me->name, "PAPP") == 0) {
papp = atof(me->value);
}
if (strcmp(me->name, "BASE") == 0) {
base = atof(me->value);
}
me = me->next;
}
return 0;
}

View File

@ -219,7 +219,8 @@ void OTASetup() {
#endif
}
void setup() {
void setup()
{
#ifdef CONFIG_SETUP_BUTTON
new HIB(CONFIG_SETUP_BUTTON, HIGH, NULL, NULL, onLongButtonPressed);
#endif
@ -230,16 +231,16 @@ void setup() {
SKETCH_DEBUG_PRINTLN();
// Get GPIO 3 Status
//#if CONFIG_SERIAL_SHOULD_SWAP
// SKETCH_DEBUG_PRINTLN("SWAP UART");
// Serial.swap(); //Switch Serial on GPIO 13 & 15
//#endif
#if CONFIG_SERIAL_SHOULD_SWAP
SKETCH_DEBUG_PRINTLN("SWAP UART");
Serial.swap(); // Switch Serial on GPIO 13 & 15
#endif
pinMode(CONFIG_SETUP_GPIO, INPUT_PULLUP);
int txStatus = digitalRead(CONFIG_SETUP_GPIO);
//#if !defined(CONFIG_ENABLE_EXTRA_GPIO) && CONFIG_SERIAL_SHOULD_SWAP
// Serial.swap(); // Switch back on GPIO 1 & 3
// SKETCH_DEBUG_PRINTLN("SWAP UART");
//#endif
#if !defined(CONFIG_ENABLE_EXTRA_GPIO) && CONFIG_SERIAL_SHOULD_SWAP
Serial.swap(); // Switch back on GPIO 1 & 3
SKETCH_DEBUG_PRINTLN("SWAP UART");
#endif
EEPROM.begin(CONFIG_EEPROM_SIZE);
EepromReadConfig(conf);
@ -363,11 +364,10 @@ void loop() {
batchInfo.push_back({bme680BSECIaq, BME680_IAQ_FEED_FORMAT, 0, 0});
batchInfo.push_back({bme680BSECIaqAcc, BME680_IAQ_ACC_FEED_FORMAT, 0, 0});
}
TeleinfoProcess(batchInfo);
TeleinfoProcess(batchInfo);
if (mode == BOOTMODE_NORMAL)
MqttBatchPublish(batchInfo, conf.mqttUser, conf.host);
nbCycle = 0;
}
}
}

View File

@ -39,11 +39,6 @@
#define CONFIG_DHT_PIN 0
#endif
#if defined(CONFIG_ENABLE_TELEINFO)
#warning "TELEINFO is using SERIAL for communication. Debug will be on Serial1 (D4)"
#define DEBUG_PRINTER_WIFICONTROLSENSOR Serial1
#endif
#ifndef CONFIG_DRY_POWER_PIN
#define CONFIG_DRY_POWER_PIN -1
#endif
@ -69,7 +64,7 @@
#endif
#ifndef CONFIG_SETUP_GPIO
#define CONFIG_SETUP_GPIO 3
#define CONFIG_SETUP_GPIO 14
#endif
#ifndef CONFIG_DHT_TYPE
@ -79,3 +74,14 @@
#if CONFIG_SETUP_GPIO == 3 || CONFIG_SETUP_GPIO == 1
#define CONFIG_SERIAL_SHOULD_SWAP
#endif
#if defined(CONFIG_ENABLE_TELEINFO)
#warning "TELEINFO is using SERIAL for communication. Debug will be on Serial1 (D4)"
#define DEBUG_PRINTER_WIFICONTROLSENSOR Serial1
#if defined(CONFIG_SERIAL_SHOULD_SWAP)
#error "When enabling TELEINFO, SERIAL_SHOULD_SWAP cannot be enabled (SETUP_GPIO == 1 or 3)"
#endif
#if defined(CONFIG_ENABLE_EXTRA_GPIO)
#error "When enabling TELEINFO, ENABLE_EXTRA_CPIO cannot be enabled"
#endif
#endif

View File

@ -15,7 +15,7 @@
// Enable the temperature, pressure, humidity and gaz Sensor BME680 on standard i2c esp8266 pins
// It use default i2c pin GPIO4(D2): SDA, GPIO5(D1):SCL
// Should be powered by 3.3v and sampled every 3sec or 300s (Or you should adapt bsec_config_iaq in BME680_BSEC.ino )
#define CONFIG_BME680_BSEC_ENABLE
//#define CONFIG_BME680_BSEC_ENABLE
#define CONFIG_BME680_BSEC_I2C_ADDR 0x77
// Enable the temperature, pressure, humidity and gaz Sensor BME680 on standard i2c esp8266 pins