From 92358c413546284063f896174314e238395cdcda Mon Sep 17 00:00:00 2001 From: Shabir Mohamed Date: Thu, 18 Jun 2015 17:26:17 +0530 Subject: [PATCH] added new firealarm sketch --- .../src/sketches/firealarm_wifi/Connect.ino | 60 ++++-- .../firealarm_wifi/FireAlarmWifiAgent.h | 36 +++- .../firealarm_wifi/FireAlarmWifiAgent.ino | 120 +++++------ .../src/sketches/firealarm_wifi/Listener.ino | 100 ++++++++++ .../sketches/firealarm_wifi/PollServer.ino | 140 +++---------- .../src/sketches/firealarm_wifi/PushData.ino | 188 +----------------- 6 files changed, 256 insertions(+), 388 deletions(-) create mode 100644 modules/distribution/src/sketches/firealarm_wifi/Listener.ino diff --git a/modules/distribution/src/sketches/firealarm_wifi/Connect.ino b/modules/distribution/src/sketches/firealarm_wifi/Connect.ino index 5661aade..60513b59 100644 --- a/modules/distribution/src/sketches/firealarm_wifi/Connect.ino +++ b/modules/distribution/src/sketches/firealarm_wifi/Connect.ino @@ -13,10 +13,11 @@ // byte mac[6] = { 0xC0, 0x4A, 0x00, 0x1A, 0x08, 0xDA }; //mac - c0:4a:00:1a:08:da // c0:4a:00:1a:03:f8 // b8:27:eb:88:37:7a +uint32_t ipAddress; String connecting = "connecting.... "; -void connectHttp() { - /* Initialise the module */ +void connectWifi() { +/* Initialise the module */ if(DEBUG) Serial.println(F("\nInitializing...")); if (!cc3000.begin()) { @@ -61,6 +62,8 @@ void connectHttp() { while(1); } + wdt_reset(); + if(CON_DEBUG) Serial.println(F("Connected to Wifi network!")); if(CON_DEBUG) Serial.println(F("Request DHCP")); @@ -74,23 +77,42 @@ void connectHttp() { delay(1000); } + wdt_reset(); + +// deviceIP = String((uint8_t)(ipAddress >> 24)) + "." +// + String((uint8_t)(ipAddress >> 16)) + "." +// + String((uint8_t)(ipAddress >> 8)) + "." +// + String((uint8_t)ipAddress); + + if(DEBUG) { + Serial.print("(String) IP: "); +// Serial.println(deviceIP); + } + + if( cc3000.checkConnected() ){ +// pinMode(13, HIGH); + connectToAndUpServer(); + } +} + +void connectToAndUpServer() { pushClient = cc3000.connectTCP(sserver, SERVICE_PORT); //SERVICE_PORT + wdt_reset(); + + httpServer.begin(); + wdt_reset(); + if(CON_DEBUG) Serial.println(F("Listening for connections...")); + if (pushClient.connected()) { + registerIP(); + wdt_reset(); + if(CON_DEBUG) Serial.println("PushClient Connected to server"); } else { - cc3000.disconnect(); - if(CON_DEBUG) Serial.println(F("PushClient Connection failed")); + if(CON_DEBUG) Serial.println(F("PushClient Connection failed")); + reconnectInterval = millis(); } - - pollClient = cc3000.connectTCP(sserver, SERVICE_PORT); //SERVICE_PORT - if (pollClient.connected()) { - if(CON_DEBUG) Serial.println("PollClient Connected to server"); - } else { - cc3000.disconnect(); - if(CON_DEBUG) Serial.println(F("PollClient Connection failed")); - } - if(CON_DEBUG) Serial.println(F("-------------------------------------")); } @@ -128,7 +150,7 @@ String getHostIP(byte server[4]){ bool displayConnectionDetails(void) { - uint32_t ipAddress, netmask, gateway, dhcpserv, dnsserv; + uint32_t netmask, gateway, dhcpserv, dnsserv; if(!cc3000.getIPAddress(&ipAddress, &netmask, &gateway, &dhcpserv, &dnsserv)) { @@ -139,12 +161,12 @@ bool displayConnectionDetails(void) { if(CON_DEBUG) { Serial.print(F("\nIP Addr: ")); cc3000.printIPdotsRev(ipAddress); - Serial.print(F("\nNetmask: ")); cc3000.printIPdotsRev(netmask); - Serial.print(F("\nGateway: ")); cc3000.printIPdotsRev(gateway); - Serial.print(F("\nDHCPsrv: ")); cc3000.printIPdotsRev(dhcpserv); - Serial.print(F("\nDNSserv: ")); cc3000.printIPdotsRev(dnsserv); +// Serial.print(F("\nNetmask: ")); cc3000.printIPdotsRev(netmask); +// Serial.print(F("\nGateway: ")); cc3000.printIPdotsRev(gateway); +// Serial.print(F("\nDHCPsrv: ")); cc3000.printIPdotsRev(dhcpserv); +// Serial.print(F("\nDNSserv: ")); cc3000.printIPdotsRev(dnsserv); Serial.println(); } return true; } -} +} \ No newline at end of file diff --git a/modules/distribution/src/sketches/firealarm_wifi/FireAlarmWifiAgent.h b/modules/distribution/src/sketches/firealarm_wifi/FireAlarmWifiAgent.h index ef322104..4a7780a0 100644 --- a/modules/distribution/src/sketches/firealarm_wifi/FireAlarmWifiAgent.h +++ b/modules/distribution/src/sketches/firealarm_wifi/FireAlarmWifiAgent.h @@ -13,8 +13,27 @@ #define ADAFRUIT_CC3000_VBAT 5 #define ADAFRUIT_CC3000_CS 10 -#define WLAN_SSID "YourAP-SSID" // cannot be longer than 32 characters! -#define WLAN_PASS "Your-Password" +#define LISTEN_PORT 80 // What TCP port to listen on for connections. + // The HTTP protocol uses port 80 by default. + +#define MAX_ACTION 6 // Maximum length of the HTTP action that can be parsed. + +#define MAX_PATH 10 // Maximum length of the HTTP request path that can be parsed. + // There isn't much memory available so keep this short! + +#define BUFFER_SIZE MAX_ACTION + MAX_PATH + 10 // Size of buffer for incoming request data. + // Since only the first line is parsed this + // needs to be as large as the maximum action + // and path plus a little for whitespace and + // HTTP version. + +#define TIMEOUT_MS 500 // Amount of time in milliseconds to wait for + // an incoming request to finish. Don't set this + // too high or your server could be slow to respond. + + +//#define WLAN_SSID "YourAP-SSID" // cannot be longer than 32 characters! +//#define WLAN_PASS "Your-Password" #define WLAN_SECURITY WLAN_SEC_WPA2 // Security can be WLAN_SEC_UNSEC, WLAN_SEC_WEP, WLAN_SEC_WPA or WLAN_SEC_WPA2 @@ -26,19 +45,14 @@ #define SERVICE_PORT 9763 -#define SERVICE_EPOINT "/firealarm/controller/" - // pushalarmdata - application/json - {"owner":"","deviceId":"","replyMessage":"","time":"","key":"","value":""} - // readcontrols/{owner}/{deviceId} - // reply - application/json - {"owner":"","deviceId":"","replyMessage":""} +#define SERVICE_EPOINT "/firealarm/controller/" -#define TEMP_PIN 6 -#define BULB_PIN 7 -#define FAN_PIN 8 +#define TEMP_PIN A5 +#define BULB_PIN A4 +#define FAN_PIN A3 -#define POLL_INTERVAL 1000 #define DEBUG false #define CON_DEBUG true #endif - diff --git a/modules/distribution/src/sketches/firealarm_wifi/FireAlarmWifiAgent.ino b/modules/distribution/src/sketches/firealarm_wifi/FireAlarmWifiAgent.ino index 93e0b8ff..2f53d9eb 100644 --- a/modules/distribution/src/sketches/firealarm_wifi/FireAlarmWifiAgent.ino +++ b/modules/distribution/src/sketches/firealarm_wifi/FireAlarmWifiAgent.ino @@ -1,6 +1,7 @@ #include "FireAlarmWifiAgent.h" #include +#include #include #include "dht.h" #include @@ -9,8 +10,12 @@ Adafruit_CC3000 cc3000 = Adafruit_CC3000(ADAFRUIT_CC3000_CS, ADAFRUIT_CC3000_IRQ SPI_CLOCK_DIVIDER); // you can change this clock speed Adafruit_CC3000_Client pushClient; -Adafruit_CC3000_Client pollClient; +Adafruit_CC3000_Server httpServer(LISTEN_PORT); + static struct pt pushThread; +static unsigned long reconnectInterval = 0; +static unsigned long pushInterval = 0; +//String deviceIP; uint32_t sserver; @@ -23,75 +28,47 @@ uint32_t sserver; 5. Check whether all reqquired pins are added to the 'digitalPins' array ***********************************************************************************************/ -byte server[4] = { 10, 100, 7, 38 }; +//byte server[4] = { 10, 100, 7, 38 }; +byte server[4] = { 192, 168, 2, 1 }; int digitalPins[] = { TEMP_PIN, BULB_PIN, FAN_PIN }; -String host, jsonPayLoad, replyMsg; +String host, jsonPayLoad; String responseMsg, subStrn; void setup() { - if(true) Serial.begin(115200); + if(CON_DEBUG) Serial.begin(115200); + pinMode(BULB_PIN, OUTPUT); - pinMode(FAN_PIN, OUTPUT); + pinMode(FAN_PIN, OUTPUT); +// pinMode(13, OUTPUT); PT_INIT(&pushThread); - connectHttp(); setupResource(); + + while( !cc3000.checkConnected() ){ + connectWifi(); + } + + wdt_enable(WDTO_8S); } void loop() { - if (pushClient.connected() && pollClient.connected()) { - pushData(); // batches all the required pin values together and pushes once + wdt_reset(); + protothread1(&pushThread); // Pushes data and waits for control signals to be received -// pushDigitalPinData(); // pushes pin data via multiple calls with a single pin data per call -// protothread1(&pushThread, 1000); // Pushes data and waits for control signals to be received - delay(POLL_INTERVAL); - - boolean valid = readControls(); - - if (!valid) { - if (responseMsg.equals("TEMPERATURE")) { - int temperature = (uint8_t)getTemperature(); - replyMsg = "Temperature is " + String(temperature) + " C"; - reply(); - } else if (responseMsg.equals("BULB")) { - replyMsg = "Bulb was switched " + switchBulb(); + if ( subStrn.equals("ON") ) { + if (responseMsg.equals("BULB")) { + digitalWrite(BULB_PIN, HIGH); } else if (responseMsg.equals("FAN")) { - replyMsg = "Buzzer was switched " + switchFan(); + digitalWrite(FAN_PIN, HIGH); + } + } else if ( subStrn.equals("OFF") ) { + if (responseMsg.equals("BULB")) { + digitalWrite(BULB_PIN, LOW); + } else if (responseMsg.equals("FAN")) { + digitalWrite(FAN_PIN, LOW); } - } - } else { - if(DEBUG) { - Serial.println("client not found..."); - Serial.println("disconnecting."); - } - pushClient.close(); - pollClient.close(); - cc3000.disconnect(); - - connectHttp(); - } -} - - -String switchBulb() { - if (digitalRead(BULB_PIN) == HIGH) { - digitalWrite(BULB_PIN, LOW); - return "OFF"; - } else { - digitalWrite(BULB_PIN, HIGH); - return "ON"; - } -} - -String switchFan() { - if (digitalRead(FAN_PIN) == HIGH) { - digitalWrite(FAN_PIN, LOW); - return "OFF"; - } else { - digitalWrite(FAN_PIN, HIGH); - return "ON"; } } @@ -129,7 +106,6 @@ double getTemperature(){ if(DEBUG) Serial.print("Unknown error,\t"); break; } - // DISPLAY DATA if(DEBUG) { Serial.print("\t"); @@ -142,15 +118,39 @@ double getTemperature(){ } -static int protothread1(struct pt *pt, int interval) { - static unsigned long timestamp = 0; +static int protothread1(struct pt *pt) { PT_BEGIN(pt); while(1) { // never stop /* each time the function it is checked whether any control signals are sent * if so exit this proto thread */ - PT_WAIT_UNTIL(pt, readControls() ); - pushData(); + PT_WAIT_UNTIL(pt, listen() ); + + if (pushClient.connected()) { + if ((millis() - pushInterval) > 2000) { + pushData(); + pushInterval = millis(); + wdt_reset(); + } + } else { + if(DEBUG) { + Serial.println("client not found..."); + Serial.println("disconnecting."); + } + + pushClient.flush(); + + if(CON_DEBUG) Serial.println("Disconnection!!!!"); + + if ( (millis() - reconnectInterval) > 3000 ) { + if (cc3000.checkConnected()) { + connectToAndUpServer(); + } else { +// pinMode(13, LOW); + while(1); + } + } + } } PT_END(pt); -} +} \ No newline at end of file diff --git a/modules/distribution/src/sketches/firealarm_wifi/Listener.ino b/modules/distribution/src/sketches/firealarm_wifi/Listener.ino new file mode 100644 index 00000000..30baefd8 --- /dev/null +++ b/modules/distribution/src/sketches/firealarm_wifi/Listener.ino @@ -0,0 +1,100 @@ +uint8_t buffer[BUFFER_SIZE+1]; +int bufindex = 0; +char action[MAX_ACTION+1]; +char path[MAX_PATH+1]; + +boolean listen() { + // Try to get a client which is connected. + Adafruit_CC3000_ClientRef client = httpServer.available(); + if (client) { + //Serial.println(F("Client connected.")); + // Process this request until it completes or times out. + // Note that this is explicitly limited to handling one request at a time! + + // Clear the incoming data buffer and point to the beginning of it. + bufindex = 0; + memset(&buffer, 0, sizeof(buffer)); + + // Clear action and path strings. + memset(&action, 0, sizeof(action)); + memset(&path, 0, sizeof(path)); + + // Set a timeout for reading all the incoming data. + unsigned long endtime = millis() + TIMEOUT_MS; + + // Read all the incoming data until it can be parsed or the timeout expires. + bool parsed = false; + while (!parsed && (millis() < endtime) && (bufindex < BUFFER_SIZE)) { + if (client.available()) { + buffer[bufindex++] = client.read(); + } + parsed = parseRequest(buffer, bufindex, action, path); + } + + wdt_reset(); + + if (parsed) { + if (strcmp(action, "GET") == 0) { + responseMsg = path; + + if(DEBUG) { + Serial.println(responseMsg); + } + + int index = responseMsg.lastIndexOf("/"); + int newLine = responseMsg.indexOf("/"); + subStrn = responseMsg.substring(index + 1); + responseMsg = responseMsg.substring(newLine + 1, index); + + if(DEBUG) { + Serial.print(responseMsg); + Serial.print(" - "); + Serial.println(subStrn); + Serial.println("-------------------------------"); + } + } + + if (responseMsg == "TEMP") { + int temperature = (uint8_t)getTemperature(); + + client.fastrprintln(F("HTTP/1.1 200 OK")); + client.fastrprintln(F("Connection: close")); + client.fastrprintln(F("")); + client.fastrprint(String(temperature).c_str()); + } + } + + delay(100); + + // Close the connection when done. + Serial.println(F("Client disconnected")); + client.close(); + wdt_reset(); + return false; + } else { + return true; + } +} + +bool parseRequest(uint8_t* buf, int bufSize, char* action, char* path) { + // Check if the request ends with \r\n to signal end of first line. + if (bufSize < 2) + return false; + if (buf[bufSize-2] == '\r' && buf[bufSize-1] == '\n') { + parseFirstLine((char*)buf, action, path); + return true; + } + return false; +} + +// Parse the action and path from the first line of an HTTP request. +void parseFirstLine(char* line, char* action, char* path) { + // Parse first word up to whitespace as action. + char* lineaction = strtok(line, " "); + if (lineaction != NULL) + strncpy(action, lineaction, MAX_ACTION); + // Parse second word up to whitespace as path. + char* linepath = strtok(NULL, " "); + if (linepath != NULL) + strncpy(path, linepath, MAX_PATH); +} \ No newline at end of file diff --git a/modules/distribution/src/sketches/firealarm_wifi/PollServer.ino b/modules/distribution/src/sketches/firealarm_wifi/PollServer.ino index 665f8791..50562e2c 100644 --- a/modules/distribution/src/sketches/firealarm_wifi/PollServer.ino +++ b/modules/distribution/src/sketches/firealarm_wifi/PollServer.ino @@ -1,120 +1,32 @@ -boolean readControls() { -// String responseMsg; - - pollClient.fastrprint(F("GET ")); - pollClient.fastrprint(SERVICE_EPOINT); pollClient.fastrprint(F("readcontrols/")); - pollClient.fastrprint(DEVICE_OWNER); pollClient.fastrprint(F("/")); pollClient.fastrprint(DEVICE_ID); - pollClient.fastrprint(F(" HTTP/1.1")); pollClient.fastrprint(F("\n")); - pollClient.fastrprint(host.c_str()); pollClient.fastrprint(F("\n")); - pollClient.println(); - - delay(1000); - - if (true) { - while (pollClient.available()) { - char response = pollClient.read(); - responseMsg += response; - } - } - - - int index = responseMsg.lastIndexOf(":"); - int newLine = responseMsg.lastIndexOf("\n"); - subStrn = responseMsg.substring(index + 1); - responseMsg = responseMsg.substring(newLine + 1, index); - - if(DEBUG) { - Serial.print(responseMsg); - Serial.println(); - Serial.println("-------------------------------"); - } - - - if (subStrn.equals("IN")) { - return false; - } - - return true; -} - - - -void reply() { - String payLoad = replyMsg + "\"}"; - - if(DEBUG) { - Serial.print(jsonPayLoad); Serial.println(payLoad); - } - - pollClient.fastrprint(F("POST ")); - pollClient.fastrprint(SERVICE_EPOINT); pollClient.fastrprint(F("reply")); - pollClient.fastrprint(F(" HTTP/1.1")); pollClient.fastrprint(F("\n")); - pollClient.fastrprint(host.c_str()); pollClient.fastrprint(F("\n")); - pollClient.fastrprint(F("Content-Type: application/json")); pollClient.fastrprint(F("\n")); - pollClient.fastrprint(F("Content-Length: ")); - - int payLength = jsonPayLoad.length() + payLoad.length(); - - pollClient.fastrprint(String(payLength).c_str()); pollClient.fastrprint(F("\n")); - pollClient.fastrprint(F("\n")); - - if(DEBUG) { - Serial.print("POST "); - Serial.print(SERVICE_EPOINT); Serial.print("reply"); +void registerIP() { + pushClient.fastrprint(F("GET ")); + pushClient.fastrprint(SERVICE_EPOINT); pushClient.fastrprint(F("register/")); + pushClient.fastrprint(DEVICE_OWNER); pushClient.fastrprint(F("/")); + pushClient.fastrprint(DEVICE_ID); pushClient.fastrprint(F("/")); + +// pushClient.fastrprint(deviceIP.c_str()); + pushClient.fastrprint(String((uint8_t)(ipAddress >> 24)).c_str()); + pushClient.fastrprint("."); + pushClient.fastrprint(String((uint8_t)(ipAddress >> 16)).c_str()); + pushClient.fastrprint("."); + pushClient.fastrprint(String((uint8_t)(ipAddress >> 8)).c_str()); + pushClient.fastrprint("."); + pushClient.fastrprint(String((uint8_t)ipAddress).c_str()); + + pushClient.fastrprint(F(" HTTP/1.1")); pushClient.fastrprint(F("\n")); + pushClient.fastrprint(host.c_str()); pushClient.fastrprint(F("\n")); + pushClient.println(); + + if (DEBUG) { + Serial.print("GET "); Serial.print(SERVICE_EPOINT); Serial.print("register/"); + Serial.print(DEVICE_OWNER); Serial.print("/"); Serial.print(DEVICE_ID); + Serial.print("/"); +// Serial.print(deviceIP); Serial.print(" HTTP/1.1"); Serial.println(); - Serial.print(host); Serial.println(); - Serial.print("Content-Type: application/json"); Serial.println(); - Serial.print("Content-Length: "); - Serial.print(payLength); Serial.println(); - Serial.println(); + Serial.print(host); Serial.println(); Serial.println(); } - - int chunkSize = 50; - for (int i = 0; i < jsonPayLoad.length(); i++) { - if ( (i+1)*chunkSize > jsonPayLoad.length()) { - pollClient.print(jsonPayLoad.substring(i*chunkSize, jsonPayLoad.length())); - if(DEBUG) Serial.print(jsonPayLoad.substring(i*chunkSize, jsonPayLoad.length())); - i = jsonPayLoad.length(); - } else { - pollClient.print(jsonPayLoad.substring(i*chunkSize, (i+1)*chunkSize)); - if(DEBUG) Serial.print(jsonPayLoad.substring(i*chunkSize, (i+1)*chunkSize)); - } - } - - for (int i = 0; i < payLoad.length(); i++) { - if ( (i+1)*chunkSize > payLoad.length()) { - pollClient.print(payLoad.substring(i*chunkSize, payLoad.length())); - if(DEBUG) Serial.print(payLoad.substring(i*chunkSize, payLoad.length())); - i = payLoad.length(); - } else { - pollClient.print(payLoad.substring(i*chunkSize, (i+1)*chunkSize)); - if(DEBUG) Serial.print(payLoad.substring(i*chunkSize, (i+1)*chunkSize)); - } - } - - pollClient.fastrprint(F("\n")); - if(DEBUG) Serial.println(); - delay(1000); - - if(true) { - while (pollClient.available()) { - char response = pollClient.read(); - if(DEBUG) Serial.print(response); - } - } - - if(DEBUG) { - Serial.println(); - Serial.println("-------------------------------"); - } - - payLoad = ""; -// delay(1000); + pushClient.flush(); } - - - - diff --git a/modules/distribution/src/sketches/firealarm_wifi/PushData.ino b/modules/distribution/src/sketches/firealarm_wifi/PushData.ino index ea5bfc6e..9b67d08b 100644 --- a/modules/distribution/src/sketches/firealarm_wifi/PushData.ino +++ b/modules/distribution/src/sketches/firealarm_wifi/PushData.ino @@ -20,7 +20,7 @@ void pushData(){ } if ( ((sizeof(digitalPins)/sizeof(int)) - 1) != pin ) { - payLoad += "-"; + payLoad += ":"; } } @@ -77,7 +77,9 @@ void pushData(){ if(DEBUG) Serial.println(); delay(1000); - + + wdt_reset(); + if(true) { while (pushClient.available()) { char response = pushClient.read(); @@ -94,186 +96,4 @@ void pushData(){ } - /********************************************************************************************** - This method will traverse the array of digital pins and publish the data from the those pins. - It differs from the above method such that the pin data is published one after the other in - seperate calls to the server - ***********************************************************************************************/ - - -//void pushDigitalPinData(){ -// for ( int pin = 0; pin < (sizeof(digitalPins)/sizeof(int)); pin++) { -// String payLoad = getDataType(digitalPins[pin]); -// payLoad = payLoad + "\",\"value\":\""; -// -// if ( digitalPins[pin] == TEMP_PIN ) { -// int temperature = (uint8_t)getTemperature(); -// payLoad += temperature; -// } else if ( digitalRead(digitalPins[pin]) == HIGH ) { -// payLoad += "ON"; -// } else if ( digitalRead(digitalPins[pin]) == LOW ) { -// payLoad += "OFF"; -// } -// -// payLoad += "\"}"; -// -// pushClient.fastrprint(F("POST ")); -// pushClient.fastrprint(SERVICE_EPOINT); pushClient.fastrprint(F("pushalarmdata")); -// pushClient.fastrprint(F(" HTTP/1.1")); pushClient.fastrprint(F("\n")); -// pushClient.fastrprint(host.c_str()); pushClient.fastrprint(F("\n")); -// pushClient.fastrprint(F("Content-Type: application/json")); pushClient.fastrprint(F("\n")); -// pushClient.fastrprint(F("Content-Length: ")); -// -// int payLength = jsonPayLoad.length() + payLoad.length(); -// -// pushClient.fastrprint(String(payLength).c_str()); pushClient.fastrprint(F("\n")); -// pushClient.fastrprint(F("\n")); -// -// if(DEBUG) { -// Serial.print("POST "); -// Serial.print(SERVICE_EPOINT); Serial.print("pushalarmdata"); -// Serial.print(" HTTP/1.1"); Serial.println(); -// Serial.print(host); Serial.println(); -// Serial.print("Content-Type: application/json"); Serial.println(); -// Serial.print("Content-Length: "); -// Serial.print(payLength); Serial.println(); -// Serial.println(); -// } -// -// int chunkSize = 50; -// -// for (int i = 0; i < jsonPayLoad.length(); i++) { -// if ( (i+1)*chunkSize > jsonPayLoad.length()) { -// pushClient.print(jsonPayLoad.substring(i*chunkSize, jsonPayLoad.length())); -// if(DEBUG) Serial.print(jsonPayLoad.substring(i*chunkSize, jsonPayLoad.length())); -// i = jsonPayLoad.length(); -// } else { -// pushClient.print(jsonPayLoad.substring(i*chunkSize, (i+1)*chunkSize)); -// if(DEBUG) Serial.print(jsonPayLoad.substring(i*chunkSize, (i+1)*chunkSize)); -// } -// } -// -// for (int i = 0; i < payLoad.length(); i++) { -// if ( (i+1)*chunkSize > payLoad.length()) { -// pushClient.print(payLoad.substring(i*chunkSize, payLoad.length())); -// if(DEBUG) Serial.print(payLoad.substring(i*chunkSize, payLoad.length())); -// i = payLoad.length(); -// } else { -// pushClient.print(payLoad.substring(i*chunkSize, (i+1)*chunkSize)); -// if(DEBUG) Serial.print(payLoad.substring(i*chunkSize, (i+1)*chunkSize)); -// } -// } -// -// pushClient.fastrprint(F("\n")); -// if(DEBUG) Serial.println(); -// -// delay(1000); -// -// if(true) { -// while (pushClient.available()) { -// char response = pushClient.read(); -// if(DEBUG) Serial.print(response); -// } -// } -// -// if(DEBUG) { -// Serial.println(); -// Serial.println("-------------------------------"); -// } -// -// payLoad = ""; -//// delay(1000); -// } -//} - - /********************************************************************************************** - Only required for cases of reading analog pin values. - An int Array of analog pins that needs to be read has to be initialised. - This method will traverse the array and publish the data from the selected pins - ***********************************************************************************************/ - -//void pushAnalogPinData(){ -// for ( int pin = 0; pin < (sizeof(analogPins)/sizeof(int)); pin++) { -// String payLoad = jsonPayLoad + "AnalogPinData"; -// payLoad = payLoad + "\",\"time\":\"" + "9999"; -// payLoad = payLoad + "\",\"key\":\"" + getDataType(analogPins[pin]); -// payLoad = payLoad + "\",\"value\":\"" + analogRead(analogPins[pin]); -// payLoad = payLoad + "\"}"; -// -// pushClient.fastrprint(F("POST ")); -// pushClient.fastrprint(SERVICE_EPOINT); pushClient.fastrprint(F("pushalarmdata")); -// pushClient.fastrprint(F(" HTTP/1.1")); pushClient.fastrprint(F("\n")); -// pushClient.fastrprint(host.c_str()); pushClient.fastrprint(F("\n")); -// pushClient.fastrprint(F("Content-Type: application/json")); pushClient.fastrprint(F("\n")); -// pushClient.fastrprint(F("Content-Length: ")); -// -// int payLength = payLoad.length(); -// -// pushClient.fastrprint(String(payLength).c_str()); pushClient.fastrprint(F("\n")); -// pushClient.fastrprint(F("\n")); -// -// if(DEBUG) { -// Serial.print("POST "); -// Serial.print(SERVICE_EPOINT); Serial.print("pushalarmdata"); -// Serial.print(" HTTP/1.1"); Serial.println(); -// Serial.print(host); Serial.println(); -// Serial.print("Content-Type: application/json"); Serial.println(); -// Serial.print("Content-Length: "); -// Serial.print(payLength); Serial.println(); -// Serial.println(); -// } -// -// int chunkSize = 50; -// -// for (int i = 0; i < payLength; i++) { -// if ( (i+1)*chunkSize > payLength) { -// pushClient.print(payLoad.substring(i*chunkSize, payLength)); -// if(DEBUG) Serial.print(payLoad.substring(i*chunkSize, payLength)); -// i = payLength; -// } else { -// pushClient.print(payLoad.substring(i*chunkSize, (i+1)*chunkSize)); -// if(DEBUG) Serial.print(payLoad.substring(i*chunkSize, (i+1)*chunkSize)); -// } -// } -// -// pushClient.fastrprint(F("\n")); -// if(DEBUG) Serial.println(); -// -// delay(1000); -// -// if(true) { -// while (pushClient.available()) { -// char response = pushClient.read(); -// if(DEBUG) Serial.print(response); -// } -// } -// -// if(DEBUG) { -// Serial.println(); -// Serial.println("-------------------------------"); -// } -// -// payLoad = ""; -// delay(1000); -// } -//} - - - - -String getDataType(int pin){ - switch(pin){ - case TEMP_PIN: - return "TEMP"; - case BULB_PIN: - return "BULB"; - case FAN_PIN: - return "FAN"; - default: - return String(pin); - } - -} - -