The sms_text[100] char is containing the text in the incoming text.
To break things down:
position=sms.IsSMSPresent(SMS_ALL);
onOroff();
if(position >= 1)
{
nySMS = true;
hentSMS = sms.GetSMS(position, phone_number, sms_text, 100);
This bit of code checks to see, if there is a new message.
This bit, checks to see, if the text in the message is equivalent to "VP", and replies with a text, depending on the heater to be on (True) or off (false)
if (!strcmp(sms_text, "VP")) {
varme();
if (OnOff == true) {
sms.SendSMS(phone_number, "Varmepumpe Startet");
}
else if(OnOff == false) {
sms.SendSMS(phone_number, "Varmepumpe Slukket");
}
nySMS = false;
}
This next bit activates the 22 degrees function, returning a text stating if the function is activated or not, and if the heater is on or off:
if(!strcmp(sms_text, "22")) {
tempStyring22 = !tempStyring22;
tempStyring15 = false;
if (tempStyring22 == true) {
if (OnOff == true) {
sms.SendSMS(phone_number, "Du har aktiveret 22 graders styring, varmepumpe er on");
}
else if (OnOff == false) {
sms.SendSMS(phone_number, "Du har aktiveret 22 graders styring, varmepumpe er off");
}
}
else if (tempStyring22 == false) {
if (OnOff == true) {
sms.SendSMS(phone_number, "22 graders styring aktiv varmepumpe er on");
}
else if (OnOff == false) {
sms.SendSMS(phone_number, "22 graders styring deaktiv, varmepumpe er off");
}
}
//
nySMS = false;
}
This next bit is the same as above, only this time its 15 degrees instead of 22:
if(!strcmp(sms_text, "15")) {
tempStyring15 = !tempStyring15;
tempStyring22 = false;
if (tempStyring15 == true) {
if (OnOff == true) {
sms.SendSMS(phone_number, "Du har aktiveret 15 graders styring, varmepumpe er on");
}
else if (OnOff == false) {
sms.SendSMS(phone_number, "Du har aktiveret 15 graders styring, varmepumpe er off");
}
}
else if (tempStyring15 == false) {
if (OnOff == true) {
sms.SendSMS(phone_number, "15 graders styring aktiv varmepumpe er on");
}
else if (OnOff == false) {
sms.SendSMS(phone_number, "15 graders styring deaktiv, varmepumpe er off");
}
}
nySMS = false;
This next bit, is a status text. It should reply the current status of the system, wether or not a temperature control is activated, what temperature there is now, and if the heater is on or off:
if(!strcmp(sms_text, "Status")) {
tempSens.requestTemperatures();
float temperature = tempSens.getTempCByIndex(0);
int intTemperature = (int) temperature + 0.5;
String stringOne = "Temperaturen er lige nu: ";
stringOne += intTemperature;
if (OnOff == true) {
stringOne += "\nVarmepumpen er On";
}
else {
stringOne += "\nVarmepumpen er Off";
}
if (tempStyring22 == true) {
stringOne += "\n22 Graders funktion aktiv";
}
else if (tempStyring15 == true) {
stringOne += "\n15 Graders funktion aktiv";
}
else{
stringOne += "\nIngen temp. funktioner aktiv";
}
char textSMS[150];
stringOne.toCharArray(textSMS, 150);
sms.SendSMS(phone_number, textSMS);
}
The next bit, deletes the message it received, to make room for a new:
if(sms.DeleteSMS(position)){
Serial.println("\nSMS Slettet");
}
}
delay(2000);
}
And here is the functions, for the temperature control:
if (tempStyring22 == true) {
tempSens.requestTemperatures();
float temperature = tempSens.getTempCByIndex(0);
delay(100); //just here to slow down the output so it is easier to read
if (temperature <= 21) {
if (OnOff == false){
varme();
}
}
if (temperature >= 22) {
if (OnOff == true){
varme();
}
}
}
if (tempStyring15 == true) {
tempSens.requestTemperatures();
float temperature = tempSens.getTempCByIndex(0);
delay(100); //just here to slow down the output so it is easier to read
if (temperature <= 14) {
if (OnOff == false){
varme();
}
}
if (temperature >= 15) {
if (OnOff == true){
varme();
OnOff = !OnOff;
}
}
}
}
Could this be a memory problem with the arduino? it tells me i'm only using 19.064 bytes out of 32.256, but still?