X-Git-Url: http://git.home-dn.net/?p=manu%2Farduino-maison.git;a=blobdiff_plain;f=garage%2Fgarage.ino;fp=garage%2Fgarage.ino;h=2467f07c189f0179ec215a8cecc6a983a9e5b655;hp=270d8d04b71be30ce52a8e9f19d6ea1a349d59d0;hb=bbec103a92a485df7c8341fdfc42aa6f8aa8bb99;hpb=151e38dfaf868630582342e499aa5f003f4d7beb diff --git a/garage/garage.ino b/garage/garage.ino index 270d8d0..2467f07 100644 --- a/garage/garage.ino +++ b/garage/garage.ino @@ -1,6 +1,6 @@ #include #include -#include +#include #include #include #include @@ -8,6 +8,8 @@ #include "garage-config.h" +// #define TI_DEBUG + const char* wifi_ssid = WIFI_SSID; const char* wifi_pass = WIFI_PASS; @@ -16,6 +18,7 @@ IPAddress influxdb_ip(INFLUXDB_IP); long influxdb_port = INFLUXDB_PORT; unsigned int localPort = 2390; // MilliSeconds +unsigned long previousMillis = millis(); long unsigned poll_int = POLL_INT; String city = CITY; String location = LOCATION; @@ -26,14 +29,36 @@ WiFiUDP Udp; #define DHTTYPE DHT22 DHT_Unified dht(DHTPIN, DHTTYPE); -HardwareSerial TinfoSerial(1); +// Uptime timer +boolean tick1sec=0;// one for interrupt, don't mess with +unsigned long uptime=0; // save value we can use in sketch even if we're interrupted + +// Used to indicate if we need to send all date or just modified ones +boolean fulldata = false; + +HardwareSerial TinfoSerial(2); TInfo tinfo; +String tinfo_SINSTS; +String tinfo_SINSTS1; +String tinfo_SINSTS2; +String tinfo_SINSTS3; +String tinfo_IRMS1; +String tinfo_IRMS2; +String tinfo_IRMS3; +String tinfo_URMS1; +String tinfo_URMS2; +String tinfo_URMS3; +String tinfo_EAST; + + void setup() { Serial.begin(115200); - TinfoSerial.begin(9600,SERIAL_8N1, 22, 23); + TinfoSerial.begin(9600,SERIAL_7E1,22,23); + pinMode(22, INPUT_PULLUP); + WiFi.mode(WIFI_STA); WiFi.begin(WIFI_SSID, WIFI_PASS); @@ -46,90 +71,105 @@ void setup() { dht.temperature().getSensor(&sensor); dht.humidity().getSensor(&sensor); - tinfo.init(TINFO_MODE_STANDARD); - // tinfo.attachNewFrame(NewTinfoFrame); - // tinfo.attachUpdatedFrame(NewTinfoFrame); - tinfo.attachData(NewTinfoFrame); + tinfo.init(TINFO_MODE_STD); + tinfo.attachDataStd(DataCallback); } void loop() { - - delay(POLL_INT); + if (millis() - previousMillis > POLL_INT) + { + fulldata = true; + previousMillis = millis(); + // 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); - } - } + 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); + } + } - if ( WiFi.status() == WL_CONNECTED ) { - Serial.println("DEBUG"); - 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 ( TinfoSerial.available() ) { - Serial.println("DEBUG: process tinfo"); - tinfo.process(TinfoSerial.read()); - } + if ( WiFi.status() == WL_CONNECTED ) { + Serial.println("DEBUG wifi connected, start temp measure"); + 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)); + } + sendToInfluxDB("teleinfo,city="+city+",location="+location, "SINSTS", tinfo_SINSTS); + sendToInfluxDB("teleinfo,city="+city+",location="+location, "SINSTS1", tinfo_SINSTS1); + sendToInfluxDB("teleinfo,city="+city+",location="+location, "SINSTS2", tinfo_SINSTS2); + sendToInfluxDB("teleinfo,city="+city+",location="+location, "SINSTS3", tinfo_SINSTS3); + sendToInfluxDB("teleinfo,city="+city+",location="+location, "IRMS1", tinfo_IRMS1); + sendToInfluxDB("teleinfo,city="+city+",location="+location, "IRMS2", tinfo_IRMS2); + sendToInfluxDB("teleinfo,city="+city+",location="+location, "IRMS3", tinfo_IRMS3); + sendToInfluxDB("teleinfo,city="+city+",location="+location, "URMS1", tinfo_URMS1); + sendToInfluxDB("teleinfo,city="+city+",location="+location, "URMS2", tinfo_URMS2); + sendToInfluxDB("teleinfo,city="+city+",location="+location, "URMS3", tinfo_URMS3); + sendToInfluxDB("teleinfo,city="+city+",location="+location, "EAST", tinfo_EAST); + } + } + if ( TinfoSerial.available() ) { + tinfo.process(TinfoSerial.read()); } } void sendToInfluxDB(String measure, String key, String value) { String line = measure+" "+key+"="+value; + Serial.println("Sending to influxdb: "+line); Udp.begin(localPort); Udp.beginPacket(influxdb_ip, influxdb_port); Udp.print(line); Udp.endPacket(); } -void NewTinfoFrame(ValueList * me, uint8_t flags) +void DataCallback(char * tilabel, char * tihoro, char * tivalue) { - Serial.println("DEBUG NewFrame"); - if ( me ) { - while (me->next) { - me = me->next; - Serial.println("DEBUG value"); - if (me->value && strlen(me->value)) { - Serial.println("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.println("DEBUG influx, name: "+String(me->name)+",value: "+String(atol(me->value))); - sendToInfluxDB("teleinfo,city="+city, String(me->name), String(atol(me->value))); - } + if (strcmp(tilabel, "SINSTS") == 0 ) { + tinfo_SINSTS = String(atol(tivalue)); + } + if (strcmp(tilabel, "SINSTS1") == 0 ) { + tinfo_SINSTS1 = String(atol(tivalue)); + } + if (strcmp(tilabel, "SINSTS2") == 0 ) { + tinfo_SINSTS2 = String(atol(tivalue)); + } + if (strcmp(tilabel, "SINSTS3") == 0 ) { + tinfo_SINSTS3 = String(atol(tivalue)); + } + if (strcmp(tilabel, "IRMS1") == 0 ) { + tinfo_IRMS1 = String(atol(tivalue)); + } + if (strcmp(tilabel, "IRMS2") == 0 ) { + tinfo_IRMS2 = String(atol(tivalue)); + } + if (strcmp(tilabel, "IRMS3") == 0 ) { + tinfo_IRMS3 = String(atol(tivalue)); + } + if (strcmp(tilabel, "URMS1") == 0 ) { + tinfo_URMS1 = String(atol(tivalue)); + } + if (strcmp(tilabel, "URMS2") == 0 ) { + tinfo_URMS2 = String(atol(tivalue)); + } + if (strcmp(tilabel, "URMS3") == 0 ) { + tinfo_URMS3 = String(atol(tivalue)); + } + if (strcmp(tilabel, "EAST") == 0 ) { + tinfo_EAST = String(atol(tivalue)); } - } - } }