#include <WiFi.h>
#include <WiFiUdp.h>
-#include <TeleInfo.h>
+#include <LibTeleinfo.h>
#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <DHT_U.h>
#define DHTTYPE DHT22
DHT_Unified dht(DHTPIN, DHTTYPE);
-TeleInfo teleinfo(&Serial);
+TInfo tinfo;
void setup() {
- Serial.begin(1200);
+ Serial.begin(9600);
WiFi.mode(WIFI_STA);
WiFi.begin(WIFI_SSID, WIFI_PASS);
dht.temperature().getSensor(&sensor);
dht.humidity().getSensor(&sensor);
+ tinfo.init(TINFO_MODE_STANDARD);
+ tinfo.attachNewFrame(NewTinfoFrame);
+
}
void loop() {
+
delay(POLL_INT);
// Check wifi connexion
} else {
sendToInfluxDB("humidity,city="+city+",location="+location, "value", String(event.relative_humidity));
}
-
- teleinfo.process();
- if(teleinfo.available()){
- long I1 = teleinfo.getLongVal("IINST1");
- long I2 = teleinfo.getLongVal("IINST2");
- long I3 = teleinfo.getLongVal("IINST3");
- long PAPP = teleinfo.getLongVal("PAPP");
- long BASE = teleinfo.getLongVal("BASE");
- sendToInfluxDB("teleinfo,city="+city+",phase=1", "IINST", String(I1));
- sendToInfluxDB("teleinfo,city="+city+",phase=2", "IINST", String(I2));
- sendToInfluxDB("teleinfo,city="+city+",phase=3", "IINST", String(I3));
- sendToInfluxDB("teleinfo,city="+city, "PAPP", String(PAPP));
- sendToInfluxDB("teleinfo,city="+city, "BASE", String(BASE));
- teleinfo.resetAvailable();
+ if ( Serial.available() ) {
+ tinfo.process(Serial.read());
}
}
}
Udp.print(line);
Udp.endPacket();
}
+
+void NewTinfoFrame(ValueList * me)
+{
+ Serial.print("DEBUG NewFrame");
+ if ( me ) {
+ while (me->next) {
+ me = me->next;
+ Serial.print("DEBUG value");
+ if (me->value && strlen(me->value)) {
+ Serial.print("DEBUG name: "+String(me->name)+",value: "+String(me->value));
+ boolean isNumber = true;
+ uint8_t c;
+ char * p = me->value;
+
+ // check if value is number
+ while (*p && isNumber) {
+ if ( *p < '0' || *p > '9' ) {
+ isNumber = false;
+ }
+ p++;
+ }
+
+ // this will add "" on not number values
+ if (!isNumber) {
+ // FIXME
+ }
+ // this will remove leading zero on numbers
+ else {
+ Serial.print("DEBUG influx, name: "+String(me->name)+",value: "+String(atol(me->value)));
+ sendToInfluxDB("teleinfo,city="+city, String(me->name), String(atol(me->value)));
+ }
+ }
+ }
+ }
+}