X-Git-Url: http://git.home-dn.net/?p=manu%2Farduino-maison.git;a=blobdiff_plain;f=station-meteo%2Fstation-meteo.ino;h=dc4cc211e92e8bc9a67fd681f59a94ad4e52fd66;hp=1cad98408354204d519f9e2a8679e9f723c6a722;hb=HEAD;hpb=a0bf5b9992c1f7da88d7c8fdd6b7ae63143d4a73 diff --git a/station-meteo/station-meteo.ino b/station-meteo/station-meteo.ino index 1cad984..dc4cc21 100644 --- a/station-meteo/station-meteo.ino +++ b/station-meteo/station-meteo.ino @@ -29,10 +29,8 @@ String location = LOCATION; int rainfall_sensor_pin = 2; float rain_incr = 0.2794; // this is mm/m2 for each sensor tick int rainfall_ticks = 0; - -// Timing -unsigned long previousMillis= 0; -unsigned long previousMillis2= 0; +long debouncing_time = 30; +volatile unsigned long last_micros; // Initiate udp client WiFiUDP udp; @@ -73,10 +71,15 @@ void setup(void) Serial.println(wifi_ssid); // Connect to WPA/WPA2 network WiFi.begin(wifi_ssid, wifi_pass); + delay(500); // attempt to connect to Wifi network: while (WiFi.status() != WL_CONNECTED) { + WiFi.begin(wifi_ssid, wifi_pass); delay(500); + if (WiFi.status() != WL_CONNECTED) { + delay(2000); + } } Serial.println("Connected to wifi"); @@ -92,13 +95,12 @@ void loop(void) { delay(POLL_INT); - // Check wifi connexion - if ( WiFi.status() != WL_CONNECTED ) { - int retry = 0; + // Reconnect if needed + while (WiFi.status() != WL_CONNECTED) { WiFi.begin(wifi_ssid, wifi_pass); - while (retry < 10 || WiFi.status() != WL_CONNECTED) { - retry++; - delay(500); + delay(500); + if (WiFi.status() != WL_CONNECTED) { + delay(2000); } } @@ -114,7 +116,7 @@ void loop(void) Serial.print("Rain mm/m2: "); Serial.println(rainfall_1min); Serial.println("Sending rain height to influxdb..."); - rain_influx_line = String("rain,city="+city+"location="+location+" value=" + String(rainfall_1min, 2)); + rain_influx_line = String("rain,city="+city+",location="+location+" value=" + String(rainfall_1min, 2)); udp.beginPacket(influxdb_host, influxdb_port); udp.print(rain_influx_line); udp.endPacket(); @@ -174,5 +176,8 @@ void printWifiStatus() { void getRain () { - rainfall_ticks ++ ; + if((long)(micros() - last_micros) >= debouncing_time * 1000) { + rainfall_ticks ++ ; + last_micros = micros(); + } }