forked from community/product-iots
parent
bbd09ae509
commit
add5a8cfd9
@ -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);
|
||||||
|
}
|
||||||
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in new issue