Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <OneWire.h>
- #include <DallasTemperature.h>
- #include <SoftwareSerial.h>
- #include <String.h>
- //#include "LowPower.h"
- #define ONE_WIRE_BUS 8 // Data wire is pin 4 on the Arduino
- #define TEMPERATURE_PRECISION 9 // 9 bit precision corresponds to 0.5 degrees C resolution
- // The period in milliseconds to wait in between reports. 1 hour = 1000 * 60 * 60 * 1
- //#define REPORT_INTERVAL 3600000
- #define REPORT_INTERVAL 60000
- String SENSOR_ID="68161"; // Our ID for reports
- String COSM_API_KEY="aBUpZ_sy_SeTdiYGic-7m4fkGMOSAKxjd00xR1BFc3lkST0g";
- String APN="internet.cxn";
- float waterTemp;
- float ambientTemp;
- // Create a 1-Wire bus for the temp sensors to use
- OneWire oneWire(ONE_WIRE_BUS);
- DallasTemperature sensors(&oneWire);
- // These device addresses were determined in advance by running some of the DallasTemperature library example code
- DeviceAddress waterSensor = {0x28, 0x5E, 0x7A, 0x14, 0x04, 0x00, 0x00, 0x5B};
- DeviceAddress ambientSensor = {0x28, 0x6F, 0x35, 0x14, 0x04, 0x00, 0x00, 0x07};
- // Used to save the last point in time that a report was sent
- unsigned long lastReportTime;
- // Used to save the last point in time we took a temperature reading
- unsigned long lastTempSampleTime;
- // Create a soft serial port on pins 7(RX) and 8(TX) for modem
- SoftwareSerial modem(7,8);
- char incoming_char = 0;
- unsigned char buffer[64]; // buffer array for data recieve over serial port
- int count=0; // counter for buffer array
- void ShowSerialData()
- {
- while(modem.available()!=0)
- Serial.write(modem.read());
- }
- void powerUpOrDown(void)
- {
- pinMode(9, OUTPUT);
- digitalWrite(9,LOW);
- delay(1000);
- digitalWrite(9,HIGH);
- delay(2000);
- digitalWrite(9,LOW);
- delay(10000);
- }
- void sendToCosm()
- {
- modem.println("AT+SAPBR=3,1,\"Contype\",\"GPRS\"");
- delay(500);
- ShowSerialData();
- modem.println("AT+SAPBR=3,1,\"APN\",\""+APN+"\"");
- delay(500);
- ShowSerialData();
- modem.println("AT+SAPBR=1,1");
- delay(5000);
- ShowSerialData();
- modem.println("AT+SAPBR=2,1");
- delay(5000);
- ShowSerialData();
- modem.println("AT+HTTPINIT");
- delay(200);
- ShowSerialData();
- modem.println("AT+HTTPPARA=\"CID\",1");
- delay(200);
- ShowSerialData();
- modem.print("AT+HTTPPARA=\"URL\",");
- delay(200);
- ShowSerialData();
- modem.print("\"http://api.cosm.com/v2/feeds/"+SENSOR_ID+".csv?");
- delay(200);
- ShowSerialData();
- modem.println("_method=put&key="+COSM_API_KEY+"\"");
- delay(200);
- ShowSerialData();
- modem.println("AT+HTTPDATA=28,3000");
- delay(200);
- modem.print("Water,");
- modem.println(waterTemp);
- delay(200);
- ShowSerialData();
- modem.print("Air,");
- modem.println(ambientTemp);
- delay(200);
- ShowSerialData();
- modem.println("AT+HTTPACTION=1");
- delay(200);
- ShowSerialData();
- modem.println("AT+HTTPTERM");
- delay(5000);
- ShowSerialData();
- modem.println("AT+SAPBR=0,1");
- delay(2000);
- ShowSerialData();
- }
- void setup()
- {
- // Start the serial ports
- Serial.begin(9600);
- modem.begin(9600);
- Serial.println("I'm Alive");
- // Start up the temperatue sensors
- sensors.begin();
- // Set the resolution to use for measurement
- sensors.setResolution(waterSensor, TEMPERATURE_PRECISION);
- sensors.setResolution(ambientSensor, TEMPERATURE_PRECISION);
- lastReportTime = lastTempSampleTime = millis();
- }
- void sampleTemps()
- {
- // Get the temperatures from both sensors
- sensors.requestTemperatures();
- waterTemp = sensors.getTempC(waterSensor);
- ambientTemp = sensors.getTempC(ambientSensor);
- }
- void loop()
- {
- //LowPower.idle(SLEEP_1S,ADC_OFF,TIMER2_OFF,TIMER1_OFF,TIMER0_ON,SPI_OFF,USART0_OFF,TWI_OFF);
- //LowPower.powerDown(SLEEP_1S,ADC_OFF,BOD_OFF);
- unsigned long newReportTime = millis();
- // Or send a message if we have reached the report interval
- if ((newReportTime - lastReportTime) > REPORT_INTERVAL)
- {
- lastReportTime = newReportTime;
- Serial.println("Sending Report");
- sampleTemps();
- //powerUpOrDown();
- sendToCosm();
- //powerUpOrDown();
- if (modem.available())
- Serial.write(modem.read());
- }
- if (modem.available())
- Serial.write(modem.read());
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement