From 1b52a80b151dc6847d3cc467323e65f2cbccc62a Mon Sep 17 00:00:00 2001 From: Mathieu Maret Date: Sat, 10 Sep 2022 21:53:06 +0200 Subject: [PATCH] Fix teleinfo configuration --- WifiControlSensor/Teleinfo.h | 10 +++---- WifiControlSensor/Teleinfo.ino | 40 ++++++++++++++++++------- WifiControlSensor/WifiControlSensor.ino | 22 +++++++------- WifiControlSensor/config.h | 18 +++++++---- WifiControlSensor/config_device.h | 2 +- 5 files changed, 58 insertions(+), 34 deletions(-) diff --git a/WifiControlSensor/Teleinfo.h b/WifiControlSensor/Teleinfo.h index 3931f23..576635f 100644 --- a/WifiControlSensor/Teleinfo.h +++ b/WifiControlSensor/Teleinfo.h @@ -4,18 +4,18 @@ #ifdef CONFIG_ENABLE_TELEINFO #include int TeleinfoSetup(); -//int TeleinfoProcess(); int TeleinfoProcess(std::vector &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 &){ +inline int TeleinfoProcess(std::vector &){ + return 0; +}; +int TeleinfoProcess(float &iinst, float &papp, float &base){ return 0; }; #endif diff --git a/WifiControlSensor/Teleinfo.ino b/WifiControlSensor/Teleinfo.ino index 4a7cf20..ce0439a 100644 --- a/WifiControlSensor/Teleinfo.ino +++ b/WifiControlSensor/Teleinfo.ino @@ -1,19 +1,14 @@ #ifdef CONFIG_ENABLE_TELEINFO #include "Teleinfo.h" #include - +#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 &batchInfo) { int c; - while ((c = Serial.read()) >= 0) { + while ((c = TELESerial.read()) >= 0) { tinfo.process(c); } ValueList *me = tinfo.getList(); - //std::vector batchInfo; if (me) me = me->next; while (me) { @@ -44,8 +38,32 @@ int TeleinfoProcess(std::vector &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; } diff --git a/WifiControlSensor/WifiControlSensor.ino b/WifiControlSensor/WifiControlSensor.ino index 4efb40d..5a8817f 100644 --- a/WifiControlSensor/WifiControlSensor.ino +++ b/WifiControlSensor/WifiControlSensor.ino @@ -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; } - } } diff --git a/WifiControlSensor/config.h b/WifiControlSensor/config.h index 5ac590d..5132ef1 100644 --- a/WifiControlSensor/config.h +++ b/WifiControlSensor/config.h @@ -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 diff --git a/WifiControlSensor/config_device.h b/WifiControlSensor/config_device.h index af35e47..c9a60ba 100644 --- a/WifiControlSensor/config_device.h +++ b/WifiControlSensor/config_device.h @@ -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