Добрый вечер. Как то собирал сигнализацию на дачу по данной схеме
Отработала пару лет нормально, появилось желание добавить управление по смс.
Попалась статья про управление нагрузкой по смс
Попробовал их объединить что бы при получении смс сигнализация отключалась и включалась но без реле, а назначенные пины меняли свои параметры....или значения
получилось так:
код не дописан до конца так как возникла проблема, с смс.
после отправки смс к примеру об отключении, все срабатывает светодиоды один тухнет другой загорается датчики отключаются...приходит смс о том что все отключено и вот тут начинается....
Эта смс просто повторяется и повторяется... бесконечно...
кто может подсказать с чем это связанно...??
Отработала пару лет нормально, появилось желание добавить управление по смс.
Попалась статья про управление нагрузкой по смс
Попробовал их объединить что бы при получении смс сигнализация отключалась и включалась но без реле, а назначенные пины меняли свои параметры....или значения
получилось так:
C++:
String numberCall_1 = "7951*******"; // Номер абонента №1 для звонка
String numberSMS_1 = "+7951*******"; // Номер абонента №1 для СМС (отличается только знаком +)
//
String numberCall_2 = "7951*******"; // Номер абонента №2 для звонка
String numberSMS_2 = "+7951*******"; // Номер абонента №2 для СМС (отличается только знаком +)
//
String textZone_1 = "OPEN! 1-Front door"; // Свое название зоны , на латинице.
String textZone_2 = "OPEN! 2-Home door"; // Свое название зоны , на латинице.
String textZone_3 = "OPEN! 3-Back door"; // Свое название зоны , на латинице.
String textZone_4 = "220V OFF"; // Свое название зоны , на латинице.
//
#include <SoftwareSerial.h> // Подключение библиотеки
SoftwareSerial mySerial(11, 12); // 11 - RX Arduino к (TX mySerialL), 12 - TX Arduino к (RX mySerialL)
//Далее создаем переменную «incomingByte» для хранения SMS сообщения и указываем к каким выводам подключено реле.
char incomingByte;
String inputString;
int sens_1 = A0; // Вывод управления светодиода красного
int sens_2 = A1; // Вывод управления светодиода зеленого
int sens_3 = A2;
const int pinSensor_0 = 4; // контакты Arduino D4
const int pinSensor_1 = 5; // контакты Arduino D5
const int pinSensor_2 = 6; // контакты Arduino D6
const int pinSensor_3 = 7; // контакты Arduino D7
const int pinSensor_4 = 8; // контакты Arduino D8
void initGSM(void) {
pinMode(sens_1, OUTPUT); // Установим вывод как выход
digitalWrite(sens_1, HIGH); // Устанавливаем высокий уровень
pinMode(sens_2, OUTPUT); // Установим вывод как выход
digitalWrite(sens_2, LOW); // Устанавливаем высокий уровень
delay(2000);
mySerial.begin(9600); // Выставляем скорость общения с GSM-модулем 9600 Бод/сек.
Serial.begin(9600); // подключаем монитор порта
while(!mySerial.available()){ // Зацикливаем и ждем инициализацию mySerialL
mySerial.println("AT"); // Отправка команды AT
delay(1000); // Пауза
Serial.println("Подключение к SIM800L"); // Печатаем текст
}
Serial.println("Подключено!"); // Печатаем текст
mySerial.println("AT+CMGF=1"); // Включаем текстовый режим
delay(1000); // Задержка времени
mySerial.println("AT+CNMI=1,2,0,0,0"); // Отправка команды AT+CNMI=1,2,0,0,0
delay(1000); // Пауза
mySerial.println("AT+CMGL=\"REC UNREAD\"");
mySerial.println("AT+CLIP=1"); // Включение АОН
Serial.print(" Настройки установлены "); // выводим текст на монитор
delay(300); // Задержка времени
}
void sendSMS(String text, String phone) // Процедура Отправка SMS
{
Serial.println("SMS send started");
mySerial.println("AT+CMGS=\"" + phone + "\"");
delay(500);
mySerial.print(text);
delay(500);
mySerial.print((char)26);
delay(500);
Serial.println("SMS send complete");
delay(2500);
}
unsigned long timerTemp = 0;
uint8_t hours = 0;
uint8_t flagSensor_0 = 0;
uint8_t flagSensor_1 = 0;
uint8_t flagSensor_2 = 0;
uint8_t flagSensor_3 = 0;
uint8_t flagSensor_4 = 0;
void setup() {
mySerial.begin(9600);
initGSM();
pinMode(pinSensor_0, INPUT);
pinMode(pinSensor_1, INPUT);
pinMode(pinSensor_2, INPUT);
pinMode(pinSensor_3, INPUT);
pinMode(pinSensor_4, INPUT);
timerTemp = millis();
}
void loop() {
if(mySerial.available()){ // Проверяем, если есть доступные данные
delay(100); // Пауза
while(mySerial.available()){ // Проверяем, есть ли еще данные.
incomingByte = mySerial.read(); // Считываем байт и записываем в переменную incomingByte
inputString += incomingByte; // Записываем считанный байт в массив inputString
}
delay(1000); // Пауза
Serial.println(inputString); // Отправка в "Мониторинг порта" считанные данные
inputString.toUpperCase(); // Меняем все буквы на заглавные
if (inputString.indexOf("OFF") > -1){ // Проверяем полученные данные, если OFF выключаем все каналы
digitalWrite(sens_1, LOW); digitalWrite(sens_2, HIGH);
if(flagSensor_0 <= 3 ) flagSensor_0 = 3;
// if(flagSensor_0 <= 3 ) flagSensor_0 = 3; Serial.println(flagSensor_0);
if(flagSensor_1 <= 3 ) flagSensor_1 = 3;
if(flagSensor_2 <= 3 ) flagSensor_2 = 3;
if(flagSensor_3 <= 3 ) flagSensor_3 = 3;
if(flagSensor_4 <= 3 ) flagSensor_4 = 3;
//flagSensor_0 = 3; flagSensor_1 = 3; flagSensor_2 = 3; flagSensor_3 = 3; flagSensor_4 = 3;
sendSMS(String("Power OFF"), numberSMS_1);} // Отправка SMS
if (inputString.indexOf("ON") > -1){ // Проверяем полученные данные, если ON включаем все каналы
digitalWrite(sens_1, HIGH); digitalWrite(sens_2, LOW);
if(flagSensor_0 <= 3 ) flagSensor_0 = 0;
// if(flagSensor_0 <= 3 ) flagSensor_0 = 0; Serial.println(flagSensor_0);
if(flagSensor_1 <= 3 ) flagSensor_1 = 0;
if(flagSensor_2 <= 3 ) flagSensor_2 = 0;
if(flagSensor_3 <= 3 ) flagSensor_3 = 0;
if(flagSensor_4 <= 3 ) flagSensor_4 = 0;
// flagSensor_0 = 0; flagSensor_1 = 0; flagSensor_2 = 0; flagSensor_3 = 0; flagSensor_4 = 0;
sendSMS(String("Power ON"), numberSMS_1);} // Отправка SMS
// if (inputString.indexOf("ON_2") > -1){ // Проверяем полученные данные, если ON_2 включаем реле 2
// digitalWrite(sens_3, HIGH);
// sendSMS(String("Relay 2 - ON"), numberSMS_1);} // Отправка SMS
// if (inputString.indexOf("OFF_2") > -1){ // Проверяем полученные данные, если OFF_2 выключаем реле 2
// digitalWrite(sens_3, LOW);
// sendSMS(String("Relay 2 - OFF"), numberSMS_1);} // Отправка SMS
delay(2000);
if (inputString.indexOf("OK") == -1){
mySerial.println("AT+CMGDA=\"DEL ALL\"");
delay(1000);}
inputString = "";}
if(millis() - timerTemp >= 3600000) {timerTemp = millis(); hours++;}
if(hours >= 144) {// Меняем время контроля системы на свое,144 часа.кол-во часов .
sendSMS(String("The system works normally.OK"), numberSMS_1);
delay(10000);
hours = 0;
timerTemp = millis();
}
if(flagSensor_0 == 0 && digitalRead(pinSensor_0) == 0) flagSensor_0 = 1;
if(flagSensor_1 == 0 && digitalRead(pinSensor_1) == 0) flagSensor_1 = 1;
if(flagSensor_2 == 0 && digitalRead(pinSensor_2) == 0) flagSensor_2 = 1;
if(flagSensor_3 == 0 && digitalRead(pinSensor_3) == 0) flagSensor_3 = 1;
if(flagSensor_4 == 0 && digitalRead(pinSensor_4) == 0) flagSensor_4 = 1;
// Зона 0 вывод D4
if(flagSensor_0 == 1) {
String command;
command = "ATD+" + numberCall_1 + ";"; // Звонок на номер 1
mySerial.println(command);
Serial.println(" Вызов абонента "); // выводим текст на монитор
Serial.println( numberCall_1); // выводим текст на монитор 1 раз
// delay(20000);
// mySerial.println("ATH");
// command = "ATD+" + numberCall_2 + ";"; // Звонок на номер 2
// mySerial.println(command);
// Serial.println(" Вызов абонента "); // выводим текст на монитор
// Serial.println( numberCall_2); // выводим текст на монитор 1 раз
delay(20000);
mySerial.println("ATH");
delay(10000);
flagSensor_0 = 2;
}
// Зона 1
if(flagSensor_1 == 1) {
sendSMS(textZone_1, numberSMS_1);
Serial.println( textZone_1);//
delay(10000);
flagSensor_1 = 2;
}
// Зона 2
if(flagSensor_2 == 1) {
sendSMS(textZone_2, numberSMS_1);
Serial.println( textZone_2);//
delay(10000);
flagSensor_2 = 2;
}
// Зона 3
if(flagSensor_3 == 1) {
sendSMS(textZone_3, numberSMS_1);
Serial.println( textZone_3);//
delay(10000);
flagSensor_3 = 2;
}
// Зона 4
if(flagSensor_4 == 1) {
sendSMS(textZone_4, numberSMS_1);
Serial.println( textZone_4);//
delay(10000);
flagSensor_4 = 2;
}
if(flagSensor_0 == 2 && digitalRead(pinSensor_0) != 0) flagSensor_0 = 0;
if(flagSensor_1 == 2 && digitalRead(pinSensor_1) != 0) flagSensor_1 = 0;
if(flagSensor_2 == 2 && digitalRead(pinSensor_2) != 0) flagSensor_2 = 0;
if(flagSensor_3 == 2 && digitalRead(pinSensor_3) != 0) flagSensor_3 = 0;
if(flagSensor_4 == 2 && digitalRead(pinSensor_4) != 0) flagSensor_4 = 0;
}
после отправки смс к примеру об отключении, все срабатывает светодиоды один тухнет другой загорается датчики отключаются...приходит смс о том что все отключено и вот тут начинается....
Эта смс просто повторяется и повторяется... бесконечно...
кто может подсказать с чем это связанно...??