From add5a8cfd9e3e78e8dd57e82fb9ac72c22a49176 Mon Sep 17 00:00:00 2001 From: ayyoob Date: Sun, 21 Jun 2015 00:38:44 +0530 Subject: [PATCH] Few changes --- .../src/sketches/arduino/PushData.ino | 120 +++++++++++ .../src/sketches/sensebot_wifi/PushData.ino | 186 ++++++++++++++++++ 2 files changed, 306 insertions(+) create mode 100644 modules/distribution/src/sketches/arduino/PushData.ino create mode 100644 modules/distribution/src/sketches/sensebot_wifi/PushData.ino diff --git a/modules/distribution/src/sketches/arduino/PushData.ino b/modules/distribution/src/sketches/arduino/PushData.ino new file mode 100644 index 00000000..0879c14a --- /dev/null +++ b/modules/distribution/src/sketches/arduino/PushData.ino @@ -0,0 +1,120 @@ +#include "ArduinoBoardSketch.h" + +/********************************************************************************************** + This method will traverse the array of digital pins and batch the data from the those pins together. + It makes a single call to the server and sends all pin values as a batch. + Server dis-assembles it accordingly and makes multiple publish calls for each sensor type. + ***********************************************************************************************/ + +void pushData(){ + String payLoad = "Data"; + payLoad = payLoad + "\",\"value\":\""; + + + payLoad+=cpuTemperature; + + + payLoad += "\"}"; + + client.fastrprint(F("POST ")); + client.fastrprint(SERVICE_EPOINT); client.fastrprint(F("pushdata")); + client.fastrprint(F(" HTTP/1.1")); client.fastrprint(F("\n")); + client.fastrprint(host.c_str()); client.fastrprint(F("\n")); + client.fastrprint(F("Content-Type: application/json")); client.fastrprint(F("\n")); + client.fastrprint(F("Content-Length: ")); + + int payLength = jsonPayLoad.length() + payLoad.length(); + + client.fastrprint(String(payLength).c_str()); client.fastrprint(F("\n")); + client.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()) { + client.print(jsonPayLoad.substring(i*chunkSize, jsonPayLoad.length())); + if(DEBUG) Serial.print(jsonPayLoad.substring(i*chunkSize, jsonPayLoad.length())); + i = jsonPayLoad.length(); + } else { + client.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()) { + client.print(payLoad.substring(i*chunkSize, payLoad.length())); + if(DEBUG) Serial.print(payLoad.substring(i*chunkSize, payLoad.length())); + i = payLoad.length(); + } else { + client.print(payLoad.substring(i*chunkSize, (i+1)*chunkSize)); + if(DEBUG) Serial.print(payLoad.substring(i*chunkSize, (i+1)*chunkSize)); + } + } + + client.fastrprint(F("\n")); + if(DEBUG) Serial.println(); + + delay(1000); + + + while (client.available()) { + char response = client.read(); + if(DEBUG) Serial.print(response); + } + + + if(DEBUG) { + Serial.println(); + Serial.println("-------------------------------"); + } + + payLoad = ""; +} + + + + +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/sensebot_wifi/PushData.ino b/modules/distribution/src/sketches/sensebot_wifi/PushData.ino new file mode 100644 index 00000000..04ccb3ac --- /dev/null +++ b/modules/distribution/src/sketches/sensebot_wifi/PushData.ino @@ -0,0 +1,186 @@ + + +void pushData(){ + String payLoad = "Data"; + payLoad = payLoad + "\",\"value\":\""; + + + payLoad += temperature; + payLoad += ":"; + payLoad += pir; + payLoad += ":"; + payLoad += sonar; // returns distance if < MAX_DISTANCE else returns -1, + sonar=-1; // Pushed accordingly inside JAX-RS + payLoad += ":"; + payLoad += ldr; + payLoad += "\"}"; + + client.fastrprint(F("POST ")); + client.fastrprint(SERVICE_EPOINT); client.fastrprint(F("pushsensordata")); + client.fastrprint(F(" HTTP/1.1")); client.fastrprint(F("\n")); + client.fastrprint(host.c_str()); client.fastrprint(F("\n")); + client.fastrprint(F("Content-Type: application/json")); client.fastrprint(F("\n")); + client.fastrprint(F("Content-Length: ")); + + int payLength = jsonPayLoad.length() + payLoad.length() + 2; + + client.fastrprint(String(payLength).c_str()); client.fastrprint(F("\n")); + client.fastrprint(F("\n")); + + if(DEBUG) { + Serial.print("POST "); + Serial.print(SERVICE_EPOINT); Serial.print("pushsensordata"); + 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()) { + client.print(jsonPayLoad.substring(i*chunkSize, jsonPayLoad.length())); + if(DEBUG) Serial.print(jsonPayLoad.substring(i*chunkSize, jsonPayLoad.length())); + i = jsonPayLoad.length(); + } else { + client.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()) { + client.print(payLoad.substring(i*chunkSize, payLoad.length())); + if(DEBUG) Serial.print(payLoad.substring(i*chunkSize, payLoad.length())); + i = payLoad.length(); + } else { + client.print(payLoad.substring(i*chunkSize, (i+1)*chunkSize)); + if(DEBUG) Serial.print(payLoad.substring(i*chunkSize, (i+1)*chunkSize)); + } + } + + client.fastrprint(F("\r\n")); + + if(DEBUG) Serial.println(); + + delay(100); + client.flush(); + client.close(); + wdt_reset(); +// if(true) { +// while (client.available()) { +// char response = client.read(); +// if(DEBUG) Serial.print(response); +// } +// } + + if(DEBUG) { + Serial.println(); + Serial.println("-------------------------------"); + } + + payLoad = ""; +} + + + + + + + + + +double getTemperature(){ + int chk = DHT.read11(TEMP_PIN); + if(DEBUG){ + Serial.println("-------------------------------"); + Serial.println("Type,\tstatus,\tHumidity (%),\tTemperature (C)"); + Serial.print("DHT11, \t"); + + switch (chk) + { + case DHTLIB_OK: + Serial.print("OK,\t"); + break; + case DHTLIB_ERROR_CHECKSUM: + Serial.print("Checksum error,\t"); + break; + case DHTLIB_ERROR_TIMEOUT: + Serial.print("Time out error,\t"); + break; + case DHTLIB_ERROR_CONNECT: + Serial.print("Connect error,\t"); + break; + case DHTLIB_ERROR_ACK_L: + Serial.print("Ack Low error,\t"); + break; + case DHTLIB_ERROR_ACK_H: + Serial.print("Ack High error,\t"); + break; + default: + Serial.print("Unknown error,\t"); + break; + } + // DISPLAY DATA + Serial.print("\t"); + Serial.print(DHT.temperature, 1); + Serial.print(",\t\t"); + Serial.println(DHT.humidity, 1); + Serial.println("-------------------------------"); + } + + temperature= DHT.temperature; +} + + +void getSonar() +{ + long duration, inches, cm; + + pinMode(SONAR_TRIG, OUTPUT);// attach pin 3 to Trig + digitalWrite(SONAR_TRIG, LOW); + delayMicroseconds(2); + digitalWrite(SONAR_TRIG, HIGH); + delayMicroseconds(5); + digitalWrite(SONAR_TRIG, LOW); + + pinMode (SONAR_ECHO, INPUT);//attach pin 4 to Echo + duration = pulseIn(SONAR_ECHO, HIGH); + + // convert the time into a distance + inches = microsecondsToInches(duration); + cm = microsecondsToCentimeters(duration); + + if(DEBUG){ + Serial.print("SONAR : "); + Serial.print(cm); + Serial.print(" , "); + Serial.println(inches); + Serial.println("-----------------------------------"); + } + + if (cm > MAX_DISTANCE || cm <= 0){ + //Serial.println("Out of range"); + noTone(BUZZER); + + + + } else { + tone(BUZZER, BUZZER_SOUND); + sonar= (uint8_t)cm; + } +} + +long microsecondsToInches(long microseconds){ + return microseconds / 74 / 2; +} + +long microsecondsToCentimeters(long microseconds){ + return microseconds / 29 / 2; +} + +