#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; };