diff --git a/WS3/Serial-ESP/Serial-ESP.ino b/WS3/Serial-ESP/Serial-ESP.ino index 7cc452f..f84173c 100644 --- a/WS3/Serial-ESP/Serial-ESP.ino +++ b/WS3/Serial-ESP/Serial-ESP.ino @@ -138,11 +138,11 @@ struct WS3Packet { // The 8th field is "H0000" - Number of rain bucket in the last minute, (0-9999) int rt_rain_bucket; // The 9th field is "I0000" - Rain fall in 1 minute, unit: 0.1mm - float rain_1m; + unsigned int rain_1m; // The 10th field is "J0000" - the previous hour's rainfall ( 0.1 mm) - float rain_1h; + unsigned int rain_1h; // The 11th field is "K0000" - rainfall during the first 24 hours ( 0.1 mm) - float rain_24h; + unsigned int rain_24h; // The 12th field is "L0000" - temperature, unit: degree C (unit 0.1 Degree) float temp_f; // The 13th field is "M000" - humidity ( 00 % - 99 %), unit 0.1% @@ -410,15 +410,15 @@ void parse_packet(String payload, WS3Packet* p) { // Then move on to I0000 - rain last minute (0.1mm) int rain1m_idx = payload.indexOf('I'); - p->rain_1m = payload.substring(rain1m_idx+1, rain1m_idx+5).toInt() *.1; + p->rain_1m = payload.substring(rain1m_idx+1, rain1m_idx+5).toInt(); // Then move on to J0000 - rain last hour (0.1mm) int rain1h_idx = payload.indexOf('J'); - p->rain_1h = payload.substring(rain1h_idx+1, rain1h_idx+5).toInt() *.1; + p->rain_1h = payload.substring(rain1h_idx+1, rain1h_idx+5).toInt(); // Then move on to K0000 - rain last 24h (0.1mm) int rain24h_idx = payload.indexOf('K'); - p->rain_24h = payload.substring(rain24h_idx+1, rain24h_idx+5).toInt()*.1; + p->rain_24h = payload.substring(rain24h_idx+1, rain24h_idx+5).toInt(); // Then move on to L0200 - temp (0.1°C) // XXX: Check with minus zero temperatures @@ -439,6 +439,7 @@ void parse_packet(String payload, WS3Packet* p) { WindGust = p->wind_speed; debugln("Update WindGust"); } + if(loopcount >= 300) { loopcount = 0; WindGust = p->wind_speed; @@ -498,11 +499,11 @@ void print_weather(WS3Packet* p){ Serial.println(p->rt_rain_bucket, DEC); Serial.print("Rain 1m / 1H / 24H: "); - Serial.print(p->rain_1m, DEC); + Serial.print(p->rain_1m*0.1, DEC); Serial.print(" / "); - Serial.print(p->rain_1h, DEC); + Serial.print(p->rain_1h*0.1, DEC); Serial.print(" / "); - Serial.print(p->rain_24h, DEC); + Serial.print(p->rain_24h*.1, DEC); Serial.println(" mm"); Serial.print("humidity: "); @@ -524,8 +525,8 @@ void push_weather(WS3Packet* p) { float pression = 0.0; // Pression float wct = 0.0; // Windchill temperature - // Rain is mm x 100 -> Have to compute this. - MQPayload = "{ \"idx\" : "+ String(idx_rain) +",\"nvalue\" : 0, \"svalue\" :\"" + String(p->rain_1h) + ";" + String(p->rain_1m) + "\"}"; + // Rain + MQPayload = "{ \"idx\" : "+ String(idx_rain) +",\"nvalue\" : 0, \"svalue\": \"" + String(p->rain_1h*10) + ";" + String(p->rain_1m*0.1) + "\"}"; sendMQTTPayload(MQPayload); // Temperature / Humidity / Baro @@ -634,6 +635,7 @@ void loop() { if (!client.connected()) { reconnect(); } + // While data comes in and we don't have a pending packet to process... while (WS3.available() && pkt_ok !=true) {