Switch tinfo to standard mode
authorEmmanuel Lacour <elacour@easter-eggs.com>
Fri, 30 Apr 2021 20:44:42 +0000 (22:44 +0200)
committerEmmanuel Lacour <elacour@easter-eggs.com>
Fri, 30 Apr 2021 20:44:42 +0000 (22:44 +0200)
garage/garage.ino
serre-semis/serre-semis-config.h.in [new file with mode: 0644]
serre-semis/serre-semis.h.in [deleted file]

index 5128f1f..bb4ecaf 100644 (file)
@@ -1,6 +1,6 @@
 #include <WiFi.h>
 #include <WiFiUdp.h>
-#include <TeleInfo.h>
+#include <LibTeleinfo.h>
 #include <Adafruit_Sensor.h>
 #include <DHT.h>
 #include <DHT_U.h>
@@ -25,11 +25,11 @@ WiFiUDP Udp;
 #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);
 
@@ -42,9 +42,13 @@ void setup() {
   dht.temperature().getSensor(&sensor);
   dht.humidity().getSensor(&sensor);
 
+  tinfo.init(TINFO_MODE_STANDARD);
+  tinfo.attachNewFrame(NewTinfoFrame);
+
 }
 
 void loop() {
+  
   delay(POLL_INT);
 
   // Check wifi connexion
@@ -73,20 +77,8 @@ void loop() {
       } 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());
       }
   }
 }
@@ -98,3 +90,38 @@ void sendToInfluxDB(String measure, String key, String value) {
   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)));
+        }
+      }
+    }
+  }
+}
diff --git a/serre-semis/serre-semis-config.h.in b/serre-semis/serre-semis-config.h.in
new file mode 100644 (file)
index 0000000..4a1402d
--- /dev/null
@@ -0,0 +1,13 @@
+// Enable debug on serial port
+#define DEBUG 1
+// Wifi
+#define WIFI_SSID "XXXXXX"
+#define WIFI_PASS "xxxxxx"
+// InfluxDB
+#define INFLUXDB_IP {w,x,y,z}
+#define INFLUXDB_PORT xxxx
+// Polling interval (ms)
+#define POLL_INT 10000
+// Location informations
+#define CITY "xxxxx"
+#define LOCATION "xxxxx"
diff --git a/serre-semis/serre-semis.h.in b/serre-semis/serre-semis.h.in
deleted file mode 100644 (file)
index 4a1402d..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-// Enable debug on serial port
-#define DEBUG 1
-// Wifi
-#define WIFI_SSID "XXXXXX"
-#define WIFI_PASS "xxxxxx"
-// InfluxDB
-#define INFLUXDB_IP {w,x,y,z}
-#define INFLUXDB_PORT xxxx
-// Polling interval (ms)
-#define POLL_INT 10000
-// Location informations
-#define CITY "xxxxx"
-#define LOCATION "xxxxx"