WIP: working teleinfo

This commit is contained in:
Mathieu Maret 2021-02-18 23:50:54 +01:00
parent 8fed8bedf4
commit 8f471fc0bf
4 changed files with 26 additions and 18 deletions

View File

@ -20,6 +20,7 @@
#define BME680_IAQ_ACC_FEED_FORMAT "/feeds/%s/%s/bme680/iaqAcc" #define BME680_IAQ_ACC_FEED_FORMAT "/feeds/%s/%s/bme680/iaqAcc"
#define TELEINFO_IINST_FEED_FORMAT "/feeds/%s/%s/teleinfo/iinst" #define TELEINFO_IINST_FEED_FORMAT "/feeds/%s/%s/teleinfo/iinst"
#define TELEINFO_PAPP_FEED_FORMAT "/feeds/%s/%s/teleinfo/papp" #define TELEINFO_PAPP_FEED_FORMAT "/feeds/%s/%s/teleinfo/papp"
#define TELEINFO_BASE_FEED_FORMAT "/feeds/%s/%s/teleinfo/base"
#ifndef CONFIG_DISABLE_MQTT #ifndef CONFIG_DISABLE_MQTT
#include "Adafruit_MQTT.h" #include "Adafruit_MQTT.h"

View File

@ -4,7 +4,8 @@
#ifdef CONFIG_ENABLE_TELEINFO #ifdef CONFIG_ENABLE_TELEINFO
#include <LibTeleinfo.h> #include <LibTeleinfo.h>
int TeleinfoSetup(); int TeleinfoSetup();
int TeleinfoProcess(); //int TeleinfoProcess();
int TeleinfoProcess(std::vector<struct mqttInfo> &batchInfo);
#else #else
typedef struct _ValueList { typedef struct _ValueList {
} ValueList; } ValueList;
@ -13,7 +14,8 @@ int TeleinfoSetup() {
return -1; return -1;
}; };
int TeleinfoProcess(){ //int TeleinfoProcess(){
int TeleinfoProcess(std::vector<struct mqttInfo> &){
return 0; return 0;
}; };
#endif #endif

View File

@ -8,27 +8,28 @@ void onNewFrame(ValueList *me)
SKETCH_DEBUG_PRINTLN("New Frame available"); SKETCH_DEBUG_PRINTLN("New Frame available");
} }
int TeleinfoSetup() { int TeleinfoSetup()
Serial.begin(1200, SERIAL_7E1); {
Serial.begin(1200, SERIAL_7E1);
tinfo.init(); tinfo.init();
tinfo.attachNewFrame(onNewFrame); tinfo.attachNewFrame(onNewFrame);
return 0; return 0;
} }
int TeleinfoProcess() { int TeleinfoProcess(std::vector<struct mqttInfo> &batchInfo)
{
int c; int c;
while ((c = Serial.read()) >= 0) { while ((c = Serial.read()) >= 0) {
SKETCH_DEBUG_PRINTF("Got char %c\n", (char)c);
tinfo.process(c); tinfo.process(c);
} }
ValueList * me = tinfo.getList(); ValueList *me = tinfo.getList();
std::vector<struct mqttInfo> batchInfo; //std::vector<struct mqttInfo> batchInfo;
if (me)
me = me->next;
while (me) { while (me) {
SKETCH_DEBUG_PRINTF("info %s\n", me->name);
if (strcmp(me->name, "IINST") == 0) { if (strcmp(me->name, "IINST") == 0) {
float val = atof(me->value); float val = atof(me->value);
batchInfo.push_back({val, TELEINFO_IINST_FEED_FORMAT, 0, 0}); batchInfo.push_back({val, TELEINFO_IINST_FEED_FORMAT, 0, 0});
@ -37,10 +38,14 @@ int TeleinfoProcess() {
float val = atof(me->value); float val = atof(me->value);
batchInfo.push_back({val, TELEINFO_PAPP_FEED_FORMAT, 0, 0}); batchInfo.push_back({val, TELEINFO_PAPP_FEED_FORMAT, 0, 0});
} }
if (strcmp(me->name, "BASE") == 0) {
float val = atof(me->value);
batchInfo.push_back({val, TELEINFO_BASE_FEED_FORMAT, 0, 0});
}
me = me->next; me = me->next;
} }
if (mode == BOOTMODE_NORMAL) //if (mode == BOOTMODE_NORMAL)
MqttBatchPublish(batchInfo, conf.mqttUser, conf.host); // MqttBatchPublish(batchInfo, conf.mqttUser, conf.host);
return 0; return 0;
} }

View File

@ -230,10 +230,10 @@ void setup() {
SKETCH_DEBUG_PRINTLN(); SKETCH_DEBUG_PRINTLN();
// Get GPIO 3 Status // Get GPIO 3 Status
#if CONFIG_SERIAL_SHOULD_SWAP //#if CONFIG_SERIAL_SHOULD_SWAP
SKETCH_DEBUG_PRINTLN("SWAP UART"); // SKETCH_DEBUG_PRINTLN("SWAP UART");
Serial.swap(); //Switch Serial on GPIO 13 & 15 // Serial.swap(); //Switch Serial on GPIO 13 & 15
#endif //#endif
pinMode(CONFIG_SETUP_GPIO, INPUT_PULLUP); pinMode(CONFIG_SETUP_GPIO, INPUT_PULLUP);
int txStatus = digitalRead(CONFIG_SETUP_GPIO); int txStatus = digitalRead(CONFIG_SETUP_GPIO);
//#if !defined(CONFIG_ENABLE_EXTRA_GPIO) && CONFIG_SERIAL_SHOULD_SWAP //#if !defined(CONFIG_ENABLE_EXTRA_GPIO) && CONFIG_SERIAL_SHOULD_SWAP
@ -363,11 +363,11 @@ void loop() {
batchInfo.push_back({bme680BSECIaq, BME680_IAQ_FEED_FORMAT, 0, 0}); batchInfo.push_back({bme680BSECIaq, BME680_IAQ_FEED_FORMAT, 0, 0});
batchInfo.push_back({bme680BSECIaqAcc, BME680_IAQ_ACC_FEED_FORMAT, 0, 0}); batchInfo.push_back({bme680BSECIaqAcc, BME680_IAQ_ACC_FEED_FORMAT, 0, 0});
} }
TeleinfoProcess(batchInfo);
if (mode == BOOTMODE_NORMAL) if (mode == BOOTMODE_NORMAL)
MqttBatchPublish(batchInfo, conf.mqttUser, conf.host); MqttBatchPublish(batchInfo, conf.mqttUser, conf.host);
nbCycle = 0; nbCycle = 0;
} }
TeleinfoProcess();
} }
} }