X-Git-Url: http://git.home-dn.net/?p=manu%2Farduino-maison.git;a=blobdiff_plain;f=garage%2Fgarage.ino;h=bb4ecaf82f93f9996a8b2b6d67d7d22c9821589e;hp=0f0b7a7d432cedefc282211151bf0357f9d78b7b;hb=c2318af8b65624d7518d9c85ff4cdd245402c7b6;hpb=cf209e608c5a2e6d2662db6861e1ba5cecb11e4d diff --git a/garage/garage.ino b/garage/garage.ino index 0f0b7a7..bb4ecaf 100644 --- a/garage/garage.ino +++ b/garage/garage.ino @@ -1,6 +1,6 @@ #include #include -#include +#include #include #include #include @@ -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,39 +42,44 @@ void setup() { dht.temperature().getSensor(&sensor); dht.humidity().getSensor(&sensor); + tinfo.init(TINFO_MODE_STANDARD); + tinfo.attachNewFrame(NewTinfoFrame); + } void loop() { + delay(POLL_INT); - sensors_event_t event; - - dht.temperature().getEvent(&event); - if (isnan(event.temperature)) { - // Error - } else { - sendToInfluxDB("temperature,city="+city+",location="+location, "value", String(event.temperature)); + // Check wifi connexion + if ( WiFi.status() != WL_CONNECTED ) { + int retry = 0; + WiFi.mode(WIFI_STA); + WiFi.begin(WIFI_SSID, WIFI_PASS); + while (retry < 10 || WiFi.status() != WL_CONNECTED) { + retry++; + delay(500); + } } - dht.humidity().getEvent(&event); - if (isnan(event.relative_humidity)) { - // Error - } 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 ( WiFi.status() == WL_CONNECTED ) { + sensors_event_t event; + + dht.temperature().getEvent(&event); + if (isnan(event.temperature)) { + // Error + } else { + sendToInfluxDB("temperature,city="+city+",location="+location, "value", String(event.temperature)); + } + dht.humidity().getEvent(&event); + if (isnan(event.relative_humidity)) { + // Error + } else { + sendToInfluxDB("humidity,city="+city+",location="+location, "value", String(event.relative_humidity)); + } + if ( Serial.available() ) { + tinfo.process(Serial.read()); + } } } @@ -85,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))); + } + } + } + } +}