#include const String DEVID1 = "v0FD70F748D77134"; int del=600; char postmsg[100]; int k=0; char server[] = "api.pushingbox.com"; float waterFlow = 200; int flow; int remappedFlow; const byte mask = 0x7f; //Added by DaveB unsigned long uploadtimer; unsigned long uploadDelay = 120000; // MAC address for your Ethernet shield byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xEF }; // Analog pin which we're monitoring (0 and 1 are used by the Ethernet shield) int ledPin = 8; int AlarmPin = 9; int resetPin = 10; int ret = 0; unsigned long alarmDelay = 5000000; unsigned long alarmTimer; unsigned long alarmMillis; char sensorId[] = "Waterflow"; // Finally, wrap the datastreams into a feed EthernetClient client; void setup() { uploadtimer = millis(); Serial.begin(9600); pinMode(ledPin, OUTPUT); pinMode(AlarmPin, OUTPUT); pinMode(resetPin, OUTPUT); digitalWrite(AlarmPin, HIGH); digitalWrite(resetPin, LOW); while (Ethernet.begin(mac) != 1) { Serial.println("Error getting IP address via DHCP, trying again..."); delay(15000); } } void loop() { //reding serialconnection for flowdata from other adruino if (Serial.available() > 0) { Serial.println("Read sensor value "); waterFlow = readFlowFunc(); Serial.print("Waterflow of (l/hr): "); Serial.println(waterFlow); Serial.print("Timer is: "); //Serial.println((timer+uploadDelay)-millis()); } // put your main code here, to run repeatedly: //uploadtimer = millis(); Serial.println(uploadtimer); if(((uploadtimer+uploadDelay)-millis())<=2000){ googleUpload(); uploadtimer = millis(); } alarmMillis = millis(); //Serial.println((alarmTimer + alarmDelay)-alarmMillis); if(waterFlow < 250){ digitalWrite(AlarmPin, LOW); //Serial.println("Alarm on, to low flow"); }else if(alarmMillis > alarmTimer + alarmDelay){ digitalWrite(AlarmPin, LOW); //Serial.println("Alarm on by upload timer"); alarmTimer = alarmMillis - alarmDelay; digitalWrite(resetPin, HIGH); }else{ digitalWrite(AlarmPin, HIGH); //Serial.println("Alarm off"); } delay(10); } void googleUpload(){ Serial.println("Starting single google pushing..."); Serial.println(); // Post to Google Form............................................. if (client.connect(server, 80)) { k=0; Serial.println("connected"); client.print("GET /pushingbox?devid=" + DEVID1 + "&humidityData=" + (String) waterFlow + "&celData=" + (String) waterFlow + "&fehrData=" + (String) waterFlow + "&hicData=" + (String) waterFlow + "&hifData=" + (String) waterFlow ); client.println(" HTTP/1.1"); client.println("Host: api.pushingbox.com"); client.println("Connection: close"); client.println(); Serial.println(postmsg); Serial.println("Host: api.pushingbox.com"); Serial.println("Connection: close"); Serial.println(); delay(1000); client.stop(); } delay(1000); if (!client.connected()) { Serial.println(); Serial.println("disconnecting."); client.stop(); k==1; return; } } int readFlowFunc(){ // get incoming byte: Serial.print("Received byte, raw value: "); flow = Serial.read(); Serial.println(flow); remappedFlow = map(flow,0,257,0,2000); return(remappedFlow); }