#include "CumulocityPlatform.h"
#include "SIM900.h"
#include <SoftwareSerial.h>
#define moisture_input 0
CumulocityPlatform cPlatform("<<host>>", "<<tenantId>>", "<<user>>", "<<password>>", "<<applicationKey>>");
GSMModule* mod;
char id[8];
int result;
boolean reminder=false;
float moisture;
//_________________________________________
void setup()
{
//Serial connection.
Serial.begin(9600);
Serial.println(F("GSM Shield testing."));
mod = new GSMModule();
Serial.println(F("Attaching GPRS..."));
if(mod->attachGPRS("internet.telekom", "telekom", "tm")) {
Serial.println(F("GPRS attached."));
cPlatform.setGSM(mod);
Serial.println(F("Registering a device..."));
result = cPlatform.registerDevice("MyGarden", id, 8);
if(result<0) {
Serial.println(F("Registration error."));
Serial.println(result);
while(true);
}
else {
Serial.print(F("Arduino registered with id: "));
Serial.println(id);
}
}
else {
Serial.println(F("Could not attach GPRS."));
while(true);
}
};
//__________________________________________________
void loop()
{
Serial.println(F("Test_Anfang"));
int sensorValue = analogRead(1);
float Rsensor;
Rsensor=(float)(1023-sensorValue)*10/sensorValue;
Serial.println(Rsensor);
Serial.println(F("Sending measurement"));
result = cPlatform.sendMeasurement("LightMeasurement", "Ev", Rsensor, "lx");
if(result > 0) {
Serial.println(F("Measurement sent successfully."));
}
else {
Serial.println(result);
Serial.println(F("Measurement sending failed."));
}
moisture=SoilMoisture();
Serial.print(F("Soil moisture: "));
Serial.println(moisture);
float percent;
percent=(float)(moisture/1023)*100;
Serial.println(percent);
Serial.println(F("Sending measurement"));
result = cPlatform.sendMeasurement("MoistureMeasurement", "moisture", percent, "per");
if(result > 0) {
Serial.println(F("Measurement sent successfully."));
}
else {
Serial.println(result);
Serial.println(F("Measurement sending failed."));
}
if (moisture<200 && reminder==false){
Serial.println(F("trocken"));
//send alarm to the developer platform
int result = cPlatform.raiseAlarm("alarm_water_low", "active", "major", "moisture to low");
if(result < 0) {
Serial.println(F("Alarm failed."));
} else {
Serial.println(F("Alarm sent."));
}
reminder=true;
}
else
if (moisture>800 && reminder==true){
reminder=false;
Serial.println(F("gegossen"));
}
delay(300000);
};
//___________________________________________________
float SoilMoisture(){
float reading;
pinMode(9,OUTPUT);
pinMode(11,OUTPUT);
digitalWrite(9,LOW);
digitalWrite(11,HIGH);
delay(2000);
reading=analogRead(moisture_input);
digitalWrite(9,HIGH);
digitalWrite(11,LOW);
delay(1000);
digitalWrite(9,LOW);
return reading;
};