From 07bae690626e0fda473b09630400d84e78292a4d Mon Sep 17 00:00:00 2001 From: ayyoob Date: Wed, 17 Jun 2015 00:59:26 +0530 Subject: [PATCH] Android Device Type Updated --- .../sketches/arduino/ArduinoBoardSketch.ino | 99 ++++++++ .../src/sketches/arduino/Arduinoboardwifi.h | 39 +++ .../src/sketches/arduino/Connect.ino | 151 ++++++++---- .../sketches/arduino/FireAlarmEthernetAgent.h | 48 ---- .../arduino/FireAlarmEthernetAgent.ino | 143 ----------- .../src/sketches/arduino/PollServer.ino | 100 +++----- .../src/sketches/arduino/PushData.ino | 231 +++++------------- .../src/sketches/arduino/sketch.properties | 4 +- 8 files changed, 346 insertions(+), 469 deletions(-) create mode 100644 modules/distribution/src/sketches/arduino/ArduinoBoardSketch.ino create mode 100644 modules/distribution/src/sketches/arduino/Arduinoboardwifi.h delete mode 100644 modules/distribution/src/sketches/arduino/FireAlarmEthernetAgent.h delete mode 100644 modules/distribution/src/sketches/arduino/FireAlarmEthernetAgent.ino diff --git a/modules/distribution/src/sketches/arduino/ArduinoBoardSketch.ino b/modules/distribution/src/sketches/arduino/ArduinoBoardSketch.ino new file mode 100644 index 00000000..2c1b87b0 --- /dev/null +++ b/modules/distribution/src/sketches/arduino/ArduinoBoardSketch.ino @@ -0,0 +1,99 @@ +#include "Arduinoboardwifi.h" + +#include +#include + +Adafruit_CC3000 cc3000 = Adafruit_CC3000(ADAFRUIT_CC3000_CS, ADAFRUIT_CC3000_IRQ, ADAFRUIT_CC3000_VBAT, + SPI_CLOCK_DIVIDER); // you can change this clock speed + +Adafruit_CC3000_Client pushClient; +Adafruit_CC3000_Client pollClient; + +uint32_t sserver; + + /********************************************************************************************** + 0. Check with a sample Wifi code of the Adafruit_CC3000 library to ensure that the sheild is working + 1. Set the ip of the server(byte array below) where the Web-Rest API for the FireAlarm is running + 2. Check whether the "SERVICE_EPOINT" is correct in the 'FireAlarmWifiAgent.h' file + 3. Check whether the "SERVICE_PORT" is the same (9763) for the server running. Change it if needed + 4. Check whether the pins have been attached accordingly in the Arduino + 5. Check whether all reqquired pins are added to the 'digitalPins' array + ***********************************************************************************************/ + +byte server[4] = { 192, 168, 1, 101 }; +String host, jsonPayLoad, replyMsg; +String responseMsg, subStrn; + +void setup() +{ + Serial.begin(9600); + + Serial.println(F("Internal Temperature Sensor")); + pinMode(6, OUTPUT); + connectHttp(); + setupResource(); +} + +void loop() +{ + + if (pushClient.connected() && pollClient.connected()) { + pushData(); + delay(POLL_INTERVAL); + + boolean valid = readControls(); + + responseMsg=""; + } else { + if(DEBUG) { + Serial.println("client not found..."); + Serial.println("disconnecting."); + } + pushClient.close(); + pollClient.close(); + cc3000.disconnect(); + + connectHttp(); + } + + + delay(1000); +} + + + + + + +double getBoardTemp(void) +{ + unsigned int wADC; + double t; + + // The internal temperature has to be used + // with the internal reference of 1.1V. + // Channel 8 can not be selected with + // the analogRead function yet. + + // Set the internal reference and mux. + ADMUX = (_BV(REFS1) | _BV(REFS0) | _BV(MUX3)); + ADCSRA |= _BV(ADEN); // enable the ADC + + delay(20); // wait for voltages to become stable. + + ADCSRA |= _BV(ADSC); // Start the ADC + + // Detect end-of-conversion + while (bit_is_set(ADCSRA,ADSC)); + + // Reading register "ADCW" takes care of how to read ADCL and ADCH. + wADC = ADCW; + + // The offset of 324.31 could be wrong. It is just an indication. + t = (wADC - 324.31 ) / 1.22; + + // The returned temperature is in degrees Celcius. + return (t); +} + + diff --git a/modules/distribution/src/sketches/arduino/Arduinoboardwifi.h b/modules/distribution/src/sketches/arduino/Arduinoboardwifi.h new file mode 100644 index 00000000..a9f26427 --- /dev/null +++ b/modules/distribution/src/sketches/arduino/Arduinoboardwifi.h @@ -0,0 +1,39 @@ +#ifndef ArduinoWifiAgent_H +#define ArduinoWifiAgent_H + +#if (ARDUINO >= 100) + #include "Arduino.h" +#else + #include "WProgram.h" +#endif + +// These are the interrupt and control pins +#define ADAFRUIT_CC3000_IRQ 3 // MUST be an interrupt pin! +// These can be any two pins +#define ADAFRUIT_CC3000_VBAT 5 +#define ADAFRUIT_CC3000_CS 10 + +#define WLAN_SSID "SSID" // cannot be longer than 32 characters! +#define WLAN_PASS "Password" + +#define WLAN_SECURITY WLAN_SEC_WPA + // Security can be WLAN_SEC_UNSEC, WLAN_SEC_WEP, WLAN_SEC_WPA or WLAN_SEC_WPA2 +#define IDLE_TIMEOUT_MS 3000 + +#define DEVICE_OWNER "${DEVICE_OWNER}" +#define DEVICE_ID "${DEVICE_ID}" +#define DEVICE_TOKEN "${DEVICE_TOKEN}" + + +#define SERVICE_PORT 9763 +#define SERVICE_EPOINT "/arduino/controller/" + + + +#define POLL_INTERVAL 1000 +#define DEBUG false +#define CON_DEBUG true + +#endif + + diff --git a/modules/distribution/src/sketches/arduino/Connect.ino b/modules/distribution/src/sketches/arduino/Connect.ino index 808fbe7e..5661aade 100644 --- a/modules/distribution/src/sketches/arduino/Connect.ino +++ b/modules/distribution/src/sketches/arduino/Connect.ino @@ -1,42 +1,97 @@ -byte mac[6] = { 0x90, 0xA2, 0xDA, 0x0D, 0x30, 0xD7}; //mac - 90a2da0d30d7 -byte dns2[] = { 8, 8, 8, 8 }; -byte subnet[] = { 255, 255, 255, 0 }; -byte gateway[] = { 192, 168, 1, 1 }; + /********************************************************************************************** + Use the below variables when required to set a static IP for the WifiSheild + ***********************************************************************************************/ +// byte dns2[] = { 8, 8, 8, 8 }; +// byte subnet[] = { 255, 255, 255, 0 }; +// byte gateway[] = { 10, 100, 9, 254 }; +// byte deviceIP[4] = { 10, 100, 9, 9 }; +// byte gateway[] = { 192, 168, 1, 1 }; +// byte deviceIP[4] = { 192, 168, 1, 219 }; -byte deviceIP[4] = { 192, 168, 1, 219 }; -byte server[4] = { 192, 168, 1, 216 }; +// uint32_t ip, ddns, ssubnet, ggateway; +// 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 String connecting = "connecting.... "; void connectHttp() { - if(DEBUG) Serial.println("-------------------------------"); + /* Initialise the module */ + if(DEBUG) Serial.println(F("\nInitializing...")); + if (!cc3000.begin()) + { + if(DEBUG) Serial.println(F("Couldn't begin()! Check your wiring?")); + while(1); + } - Ethernet.begin(mac, deviceIP, dns2, gateway, subnet); - delay(2000); +// if( cc3000.setMacAddress(mac) ) { // Set your own mac and print it to re-check +// uint8_t address[6]; +// cc3000.getMacAddress(address); +// if(DEBUG){ +// Serial.print(address[0], HEX); Serial.print(":"); +// Serial.print(address[1], HEX); Serial.print(":"); +// Serial.print(address[2], HEX); Serial.print(":"); +// Serial.print(address[3], HEX); Serial.print(":"); +// Serial.print(address[4], HEX); Serial.print(":"); +// Serial.println(address[5], HEX); +// } +// } - if(DEBUG) { - Serial.print("My IP: "); - Serial.println(Ethernet.localIP()); + /********************************************************************************************** + Only required if using static IP for the WifiSheild + ***********************************************************************************************/ + +// ip = cc3000.IP2U32(deviceIP[0], deviceIP[1], deviceIP[2], deviceIP[3]); +// ddns = cc3000.IP2U32(dns2[0], dns2[1], dns2[2], dns2[3]); +// ssubnet = cc3000.IP2U32(subnet[0], subnet[1], subnet[2], subnet[3]); +// ggateway = cc3000.IP2U32(gateway[0], gateway[1], gateway[2], gateway[3]); +// cc3000.setStaticIPAddress(ip, ssubnet, ggateway, ddns); // required for setting static IP + + /***********************************************************************************************/ + + sserver = cc3000.IP2U32(server[0], server[1], server[2], server[3]); + + if(CON_DEBUG) { + Serial.print(F("\nAttempting to connect to ")); + Serial.println(WLAN_SSID); } - connecting += httpClient.connect(server, SERVICE_PORT); - delay(2000); - if(DEBUG) Serial.println(connecting); + if (!cc3000.connectToAP(WLAN_SSID, WLAN_PASS, WLAN_SECURITY)) { + if(CON_DEBUG) Serial.println(F("Failed!")); + while(1); + } + + if(CON_DEBUG) Serial.println(F("Connected to Wifi network!")); + + if(CON_DEBUG) Serial.println(F("Request DHCP")); + while (!cc3000.checkDHCP()) + { + delay(100); // ToDo: Insert a DHCP timeout! + } + + /* Display the IP address DNS, Gateway, etc. */ + while (! displayConnectionDetails()) { + delay(1000); + } - if (httpClient.connected()) { - if(DEBUG) Serial.println("connected"); + pushClient = cc3000.connectTCP(sserver, SERVICE_PORT); //SERVICE_PORT + if (pushClient.connected()) { + if(CON_DEBUG) Serial.println("PushClient Connected to server"); } else { - if(DEBUG) Serial.println("connection failed"); - - while(!httpClient.connected()){ - if(DEBUG) Serial.println("retrying to connect......"); - httpClient.connect(server, SERVICE_PORT); - delay(2000); - } - - if(DEBUG) Serial.println("connected to server!"); + cc3000.disconnect(); + if(CON_DEBUG) Serial.println(F("PushClient Connection failed")); + } + + + 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(DEBUG) Serial.println("-------------------------------"); + + if(CON_DEBUG) Serial.println(F("-------------------------------------")); } @@ -47,11 +102,11 @@ void setupResource(){ host = "Host: " + hostIP + ":" + port; if(DEBUG) Serial.println(host); - jsonPayLoad = String(OWNER_JSON); + jsonPayLoad = "{\"owner\":\""; jsonPayLoad += String(DEVICE_OWNER); - jsonPayLoad += String(DEVICE_ID_JSON); + jsonPayLoad += "\",\"deviceId\":\""; jsonPayLoad += String(DEVICE_ID); - jsonPayLoad += String(REPLY_JSON); + jsonPayLoad += "\",\"reply\":\""; if(DEBUG) { Serial.print("JSON Payload: "); @@ -60,18 +115,6 @@ void setupResource(){ } } - -String getMyIP(){ - String myIP = ""; - myIP = String(Ethernet.localIP()[0]); - - for ( int index = 1; index < 4; index++) { - myIP += "." + String(Ethernet.localIP()[index]); - } - return myIP; -} - - String getHostIP(byte server[4]){ String hostIP = String(server[0]); @@ -81,3 +124,27 @@ String getHostIP(byte server[4]){ return hostIP; } + + +bool displayConnectionDetails(void) +{ + uint32_t ipAddress, netmask, gateway, dhcpserv, dnsserv; + + if(!cc3000.getIPAddress(&ipAddress, &netmask, &gateway, &dhcpserv, &dnsserv)) + { + if(DEBUG) Serial.println(F("Unable to retrieve the IP Address!\r\n")); + return false; + } + else + { + 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.println(); + } + return true; + } +} diff --git a/modules/distribution/src/sketches/arduino/FireAlarmEthernetAgent.h b/modules/distribution/src/sketches/arduino/FireAlarmEthernetAgent.h deleted file mode 100644 index ba97ed8a..00000000 --- a/modules/distribution/src/sketches/arduino/FireAlarmEthernetAgent.h +++ /dev/null @@ -1,48 +0,0 @@ -#ifndef FireAlarmEthernetAgent_H -#define FireAlarmEthernetAgent_H - -#if (ARDUINO >= 100) - #include "Arduino.h" -#else - #include "WProgram.h" -#endif - -#define HTTP_POST "POST" -#define HTTP_GET "GET" -#define HTTP_VERSION "HTTP/1.1" -#define HTTP_CONTENT_TYPE "Content-Type: application/json" -#define HTTP_CONTENT_LEN "Content-Length: " - -#define DEVICE_OWNER "${DEVICE_OWNER}" //"Smeansbeer" -#define DEVICE_ID "${DEVICE_ID}" //"vbhenqyt85yq" -#define DEVICE_TOKEN "${DEVICE_TOKEN}" - -#define PUSH_ALARM_DATA "pushalarmdata" -#define READ_CONTROLS "readcontrols/" -#define REPLY "reply" - -#define OWNER_JSON "{\"owner\":\"" -#define DEVICE_ID_JSON "\",\"deviceId\":\"" -#define REPLY_JSON "\",\"replyMessage\":\"" -#define TIME_JSON "\",\"time\":\"" -#define KEY_JSON "\",\"key\":\"" -#define VALUE_JSON "\",\"value\":\"" -#define END_JSON "\"}" - -#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 TEMP_PIN 3 -#define BULB_PIN 4 -#define FAN_PIN 5 - -#define DEBUG false -#define POLL_INTERVAL 1000 - - -#endif - - diff --git a/modules/distribution/src/sketches/arduino/FireAlarmEthernetAgent.ino b/modules/distribution/src/sketches/arduino/FireAlarmEthernetAgent.ino deleted file mode 100644 index 7ad0d86d..00000000 --- a/modules/distribution/src/sketches/arduino/FireAlarmEthernetAgent.ino +++ /dev/null @@ -1,143 +0,0 @@ -#include "FireAlarmEthernetAgent.h" - -#include -#include -#include "dht.h" - - /********************************************************************************************** - 0. Check with a sample Ethernet code of the Ethernet library to ensure that the sheild is working - 1. Set the ip of the server(byte array below) where the Web-Rest API for the FireAlarm is running - 2. Check whether the "SERVICE_EPOINT" is correct in the 'FireAlarmWifiAgent.h' file - 3. Check whether the "SERVICE_PORT" is the same (9763) for the server running. Change it if needed - 4. Check whether the pins have been attached accordingly in the Arduino - 5. Check whether all reqquired pins are added to the 'digitalPins' array - ***********************************************************************************************/ - -int digitalPins[] = { TEMP_PIN, BULB_PIN, FAN_PIN }; -int analogPins[] = { 0, 1, 2, 3, 4, 5 }; - -EthernetClient httpClient; -String host, jsonPayLoad, replyMsg; - -void setup() { - if(DEBUG) Serial.begin(9600); - pinMode(BULB_PIN, OUTPUT); - pinMode(FAN_PIN, OUTPUT); - connectHttp(); - setupResource(); -} - -void loop() { - if (httpClient.connected()) { - pushDigitalPinData(); -// pushData(); // Use this method to batch all data together and send in one call - - delay(POLL_INTERVAL); - - String responseMsg = readControls(); - int index = responseMsg.lastIndexOf(":"); - int newLine = responseMsg.lastIndexOf("\n"); - String subStrn = responseMsg.substring(index + 1); - - if (subStrn.equals("IN")) { - responseMsg = responseMsg.substring(newLine + 1, index); - if (responseMsg.equals("TEMPERATURE")) { - replyMsg = "Temperature is " + String(getTemperature()) + "C."; - reply(replyMsg); - } else if (responseMsg.equals("BULB")) { - replyMsg = "Bulb was switched " + switchBulb(); - } else if (responseMsg.equals("FAN")) { - replyMsg = "Bulb was switched " + switchFan(); - } - } - } else { - if(DEBUG) { - Serial.println("client not found..."); - Serial.println("disconnecting."); - } - httpClient.stop(); - connectHttp(); - - } -} - - -String getDataType(int pin){ - switch(pin){ - case TEMP_PIN: - return "Temperature"; - case BULB_PIN: - return "Bulb"; - case FAN_PIN: - return "Fan"; - default: - return String(pin); - } - -} - -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"; - } -} - - -double getTemperature(){ - dht DHT; - if(DEBUG) { - Serial.println("-------------------------------"); - Serial.println("Type,\tstatus,\tHumidity (%),\tTemperature (C)"); - Serial.print("DHT11, \t"); - } - - int chk = DHT.read11(TEMP_PIN); - switch (chk) - { - case DHTLIB_OK: - if(DEBUG) Serial.print("OK,\t"); - break; - case DHTLIB_ERROR_CHECKSUM: - if(DEBUG) Serial.print("Checksum error,\t"); - break; - case DHTLIB_ERROR_TIMEOUT: - if(DEBUG) Serial.print("Time out error,\t"); - break; - case DHTLIB_ERROR_CONNECT: - if(DEBUG) Serial.print("Connect error,\t"); - break; - case DHTLIB_ERROR_ACK_L: - if(DEBUG) Serial.print("Ack Low error,\t"); - break; - case DHTLIB_ERROR_ACK_H: - if(DEBUG) Serial.print("Ack High error,\t"); - break; - default: - if(DEBUG) Serial.print("Unknown error,\t"); - break; - } - - // DISPLAY DATA - if(DEBUG) { - Serial.print("\t"); - Serial.print(DHT.temperature, 1); - Serial.print(",\t\t"); - Serial.println(DHT.humidity, 1); - Serial.println("-------------------------------"); - } - return DHT.temperature; -} diff --git a/modules/distribution/src/sketches/arduino/PollServer.ino b/modules/distribution/src/sketches/arduino/PollServer.ino index fc36ce60..31e5f97f 100644 --- a/modules/distribution/src/sketches/arduino/PollServer.ino +++ b/modules/distribution/src/sketches/arduino/PollServer.ino @@ -1,77 +1,53 @@ -String readControls() { - String responseMsg; - String resource = " " + String(SERVICE_EPOINT) + String(READ_CONTROLS) + String(DEVICE_OWNER) + "/" + String(DEVICE_ID) + " "; +boolean readControls() { +// String responseMsg; + + pollClient.fastrprint(F("GET ")); + pollClient.fastrprint(SERVICE_EPOINT); + pollClient.fastrprint(F("readcontrols/")); + pollClient.fastrprint(DEVICE_ID); + pollClient.fastrprint(F("?owner=")); + pollClient.fastrprint(DEVICE_OWNER); + pollClient.fastrprint(F(" HTTP/1.1")); pollClient.fastrprint(F("\n")); + pollClient.fastrprint(host.c_str()); pollClient.fastrprint(F("\n")); + pollClient.println(); - httpClient.print(HTTP_GET); - httpClient.print(resource); - httpClient.println(HTTP_VERSION); - httpClient.println(host); - httpClient.println(); + delay(1000); - if(DEBUG) { - Serial.print(HTTP_GET); - Serial.print(resource); - Serial.println(HTTP_VERSION); - Serial.println(host); - Serial.println(); - } - delay(1000); + while (pollClient.available()) { + char response = pollClient.read(); + responseMsg += response; + + } - while (httpClient.available()) { - char response = httpClient.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("-------------------------------"); } - delay(1000); - return responseMsg; -} - -void reply(String replyMsg) { - String resource = " " + String(SERVICE_EPOINT) + String(REPLY) + " "; - String payLoad = jsonPayLoad + replyMsg + String(END_JSON); - - httpClient.print(HTTP_POST); - httpClient.print(resource); - httpClient.println(HTTP_VERSION); - httpClient.println(host); - httpClient.println(HTTP_CONTENT_TYPE); - httpClient.print(HTTP_CONTENT_LEN); - httpClient.println(payLoad.length()); - httpClient.println(); - httpClient.println(payLoad); - httpClient.println(); - - if(DEBUG) { - Serial.print(HTTP_POST); - Serial.print(resource); - Serial.println(HTTP_VERSION); - Serial.println(host); - Serial.println(HTTP_CONTENT_TYPE); - Serial.print(HTTP_CONTENT_LEN); - Serial.println(payLoad.length()); - Serial.println(); - Serial.println(payLoad); - Serial.println(); - } - delay(1000); - - while (httpClient.available()) { - char response = httpClient.read(); - if(DEBUG) Serial.print(response); - } + if (subStrn.equals("ON")) { + Serial.println("ITS ON"); + //digitalWrite(13, HIGH); + digitalWrite(6, HIGH); + } else if (subStrn.equals("OFF")){ + + Serial.println("ITS OFF"); + //digitalWrite(13, LOW); + digitalWrite(6, LOW); + + } + if (responseMsg.equals("BULB")) { + return false; + } - if(DEBUG) { - Serial.println(); - Serial.println("-------------------------------"); - } - delay(1000); + + return true; } diff --git a/modules/distribution/src/sketches/arduino/PushData.ino b/modules/distribution/src/sketches/arduino/PushData.ino index 6b7f8a40..9eaf33ac 100644 --- a/modules/distribution/src/sketches/arduino/PushData.ino +++ b/modules/distribution/src/sketches/arduino/PushData.ino @@ -6,193 +6,80 @@ ***********************************************************************************************/ void pushData(){ - String resource = " " + String(SERVICE_EPOINT) + String(PUSH_ALARM_DATA) + " "; - String payLoad = jsonPayLoad + "DigitalPinData"; - payLoad = payLoad + String(TIME_JSON) + "9999"; - payLoad = payLoad + String(KEY_JSON) + "Data"; - payLoad += String(VALUE_JSON); + String payLoad = "Data"; + payLoad = payLoad + "\",\"value\":\""; - for ( int pin = 0; pin < (sizeof(digitalPins)/sizeof(int)); pin++) { - if ( digitalPins[pin] == TEMP_PIN ) { - payLoad += String(getTemperature()); - } else if ( digitalRead(digitalPins[pin]) == HIGH ) { - payLoad += "ON"; - } else if ( digitalRead(digitalPins[pin]) == LOW ) { - payLoad += "OFF"; - } - - if ( ((sizeof(digitalPins)/sizeof(int)) - 1) != pin ) { - payLoad += "-"; - } - - } - - payLoad = payLoad + String(END_JSON); - if(DEBUG) Serial.println(payLoad); - - httpClient.print(HTTP_POST); - httpClient.print(resource); - httpClient.println(HTTP_VERSION); - httpClient.println(host); - httpClient.println(HTTP_CONTENT_TYPE); - httpClient.print(HTTP_CONTENT_LEN); - httpClient.println(payLoad.length()); - httpClient.println(); - httpClient.println(payLoad); - httpClient.println(); - - if(DEBUG) { - Serial.print(HTTP_POST); - Serial.print(resource); - Serial.println(HTTP_VERSION); - Serial.println(host); - Serial.println(HTTP_CONTENT_TYPE); - Serial.print(HTTP_CONTENT_LEN); - Serial.println(payLoad.length()); - Serial.println(); - Serial.println(payLoad); - Serial.println(); - } - - delay(1000); - - while (httpClient.available()) { - char response = httpClient.read(); - if(DEBUG) Serial.print(response); - } + payLoad+=getBoardTemp(); - if(DEBUG) { - Serial.println(); - Serial.println("-------------------------------"); - } - delay(1000); -} - - /********************************************************************************************** - 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 resource = " " + String(SERVICE_EPOINT) + String(PUSH_ALARM_DATA) + " "; + + payLoad += "\"}"; - String payLoad = jsonPayLoad + "DigitalPinData"; - payLoad = payLoad + String(TIME_JSON) + "9999"; - payLoad = payLoad + String(KEY_JSON) + getDataType(digitalPins[pin]); - payLoad += String(VALUE_JSON); - - - if ( digitalPins[pin] == TEMP_PIN ) { - payLoad += String(getTemperature()); - } else if ( digitalRead(digitalPins[pin]) == HIGH ) { - payLoad += "ON"; - } else if ( digitalRead(digitalPins[pin]) == LOW ) { - payLoad += "OFF"; - } + pushClient.fastrprint(F("POST ")); + pushClient.fastrprint(SERVICE_EPOINT); pushClient.fastrprint(F("pushdata")); + 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: ")); - payLoad = payLoad + String(END_JSON); - - if(DEBUG) Serial.println(payLoad); - - httpClient.print(HTTP_POST); - httpClient.print(resource); - httpClient.println(HTTP_VERSION); - httpClient.println(host); - httpClient.println(HTTP_CONTENT_TYPE); - httpClient.print(HTTP_CONTENT_LEN); - httpClient.println(payLoad.length()); - httpClient.println(); - httpClient.println(payLoad); - httpClient.println(); + int payLength = jsonPayLoad.length() + payLoad.length(); - if(DEBUG) { - Serial.print(HTTP_POST); - Serial.print(resource); - Serial.println(HTTP_VERSION); - Serial.println(host); - Serial.println(HTTP_CONTENT_TYPE); - Serial.print(HTTP_CONTENT_LEN); - Serial.println(payLoad.length()); - Serial.println(); - Serial.println(payLoad); + 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("pushdata"); + 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); - - while (httpClient.available()) { - char response = httpClient.read(); - if(DEBUG) Serial.print(response); - } - - if(DEBUG) { - Serial.println(); - Serial.println("-------------------------------"); - } - 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 resource = " " + String(SERVICE_EPOINT) + String(PUSH_ALARM_DATA) + " "; - - String payLoad = jsonPayLoad + "AnalogPinData"; - payLoad = payLoad + String(TIME_JSON) + "9999"; - payLoad = payLoad + String(KEY_JSON) + getDataType(analogPins[pin]); - payLoad = payLoad + String(VALUE_JSON) + analogRead(analogPins[pin]); - payLoad = payLoad + String(END_JSON); - - if(DEBUG) Serial.println(payLoad); - - httpClient.print(HTTP_POST); - httpClient.print(resource); - httpClient.println(HTTP_VERSION); - httpClient.println(host); - httpClient.println(HTTP_CONTENT_TYPE); - httpClient.print(HTTP_CONTENT_LEN); - httpClient.println(payLoad.length()); - httpClient.println(); - httpClient.println(payLoad); - httpClient.println(); + + while (pushClient.available()) { + char response = pushClient.read(); + if(DEBUG) Serial.print(response); + } - if(DEBUG) { - Serial.print(HTTP_POST); - Serial.print(resource); - Serial.println(HTTP_VERSION); - Serial.println(host); - Serial.println(HTTP_CONTENT_TYPE); - Serial.print(HTTP_CONTENT_LEN); - Serial.println(payLoad.length()); - Serial.println(); - Serial.println(payLoad); + + if(DEBUG) { Serial.println(); + Serial.println("-------------------------------"); } - delay(1000); - - while (httpClient.available()) { - char response = httpClient.read(); - if(DEBUG) Serial.print(response); - } - - if(DEBUG) { - Serial.println(); - Serial.println("-------------------------------"); - } - delay(1000); - } + payLoad = ""; } diff --git a/modules/distribution/src/sketches/arduino/sketch.properties b/modules/distribution/src/sketches/arduino/sketch.properties index b466c6ce..6248ada7 100644 --- a/modules/distribution/src/sketches/arduino/sketch.properties +++ b/modules/distribution/src/sketches/arduino/sketch.properties @@ -1,2 +1,2 @@ -templates=FireAlarmEthernetAgent.h -zipfilename=Arduino.zip \ No newline at end of file +templates=Arduinoboardwifi.h +zipfilename=ArduinoBoardSketch.zip \ No newline at end of file