Рассмотрим решение следующей практической задачи:
Имеем датчик температуры и влажности типа DHT-11. Помимо мониторинга показаний датчика по проводной сети Ethernet необходимо иметь возможность проверить показания по GSM (с помощью SMS), а так же получать звонок на указанный номер в том случае, если показания влажности превысили тревожный порог.
Задачу будем решать с помощью модуля MP718m Laurent-5G у которого на борту в том числе есть GSM модем. Подключаем датчик влажности и температуры DHT-11 к модулю, к каналу 'B' шины 1-Wire.
Можно в том числе использовать готовый датчик DHT11 с длинным 10 метровым кабелем.
Заходим в WEB интерфейс платы по проводному Ethrenet соединению (IP по умолчанию 192.168.0.101) и в секции посвященной датчику влажности убеждаемся что все подключено верно и датчик выдает корректные показания.
Теперь наладим и настромим GSM. Считаем что SIM карта вставлена, GSM антенна подключена. Заходим в раздел посвященный GSM. Пока связи по GSM нет, модем не работает.
Проведем пуско-наладку GSM функционала. Наистроим его так что бы модуль сам автоматически выходил на связь (достаточно настроить один раз). Первым делом, укажем PIN код установленной SIM карты. Вводим код и нажимаем на кнопку "Изменить". Данные сохранятся в энергонезависимой памяти.
Далее, выбираем AUTO режим работы GSM модема - т.е. при наличии установленной SIM карты и коректном PIN коде модуль будет всегда пытаться выйти в сеть GSM и зарегестрироваться в ней что бы быть готовым к приему входящих SMS и звонков с управляющими командами а так же иметь возможность отправть SMS или совершить звонок в случае срабатывания логического правила CAT.
После этого автоматически будет произведена попытка выхода и регистрации в сети GSM. На рисунке ниже показан случай, когда регистрация в сети GSM успешно проведена, модуль готов к работе с SMS и звонками.
Если необходимо перезапустить процесс регистрации в сети (например, после исправления ошибки с установкой SIM карты или неверным PIN кодом), можно нажать на ссылку ниже (или воспрользоваться Ke-командой) что бы перезапустить процесс инициализации модема и регистрации в сети GSM.
Последним шагом, добавим наш телефонный номер (на который должен придти тревожный звонок от модуля в случае тревоги) в базу "белых" номеров. В дальнейшем по ID этого номера (в данном случае, ID=1) мы сможем автоматически отправлять SMS и совершать звноки с модуля при возникновении событий.
Теперь приступим непосредственно к автоматике. Предположим, что нам нужно "бить" тревогу если показания датчика влажности превысили порог в 70%. В качестве реакции, мы включим на 5 сек 1-ое реле (например, к нему подключена тревожная лампа или электропривод который открывает окно что бы уменьшить влажность в помещении) а так же совершим аварийный звонок на наш телефонный номер. Будем использовать систему логических правил CAT.
Создаем новое событие, тип [H] - показания датчика влажности DHT-11:
Задаем тревожный порог в 70%:
Указываем реакцию модуля на событие в виде списка Ke-команд управления. Полное описание всех поддерживаемых Ke-команд можно посмотреть в разделе Документация, "Описание Ke-команд управления".
С помощью команды $KE,REL мы включим реле, а с помощью $KE,RNG,DO совершим звонок на "белый" номер сохраненный в памяти модуля под ID=1.
$KE,REL,1,1,5 $KE,RNG,DO,1
Для собственного удобства, присвоим текстовое имя вновь создаваемому событию.
Правило CAT создано. Включаем его соответствующей кнопочкой в панели управления CAT событиями (по умолчанию, вновь созданное событие выключено).
Для теста, можно просто подуть на датчик DHT-11. Влага содержащяяся в выдыхаемом воздухе будет незамедлительно обработана датчиком и на короткое время его показания "подскочат" выше указанного нами порога что вызовет срабатывание события и выполнение заказанных действий. В скором времени раздастся звонок на телефон предупреждая нас о "аварийном" событии.
При этом, пока показания датчика не вернуться обратно в "зеленую" зону, событие будет находится в состоянии "ВЗВЕДЕНО". После того как влажность вернется в штатное положение, событие вновь будет в активном состоянии в ожидании превышения порога.
Теперь решим задачу контроля показаний датчика по GSM. Хочется сделать так что бы в любой момент времени с помощью SMS можно было бы запросить текущие показания датчика DHT-11. Создаем новое CAT событие на входящую SMS.
Настроим событие так что бы оно срабатывало когда на номер GSM модема в модуле Laurent-5G приходит SMS с текстом MONITOR.
Теперь самое интересное - реакция. Нам хотелось бы получить ответную SMS с показаниями датчика. Т.е. в текст SMS нужно динамически подставить текущие показания датчика DHT-11. Так же в теле SMS хочется увидеть текущее время и дату, т.к. иногда SMS могут быть задержены в доставке и придти заметно позже. Поэтому нам нужно подставить в текст SMS дату и время на момент отправки сообщения самим модулем.
Для отправки SMS сообщения следует использовать команду $KE,SMS,SND. Для реализации передачи динамических данных, будем использовать т.н. Динамические переменные, которые подменяются модулем на соответствующее значение непосредственно при формировании финального текста для отправки. Подробнее о этом можно почитать в разделе "Динамичсекие перемнные" в Описание Ke-команд управления.
Реакция на событие оформлена в виде вызова следующей KE-команды. Она произведет отправку SMS сообщения с текстом H=~Dh1~%~LF~T=~Dt1~C~LF~~DT~ ~TM~ (содержащим динамические переменные) на "белый" номер под ID=1.
$KE,SMS,SND,1,C,H=~Dh1~%~LF~T=~Dt1~C~LF~~DT~ ~TM~
Все динамические переменные начинаются и заканчиваются символами ~ (Тильда). Немного пояснений по использорванным переменным:
~Dh1~ | данная переменная будет заменена на текущие показания влажности датчика DHT-11 |
~LF~ | перенос строки (хочется видеть SMS отформатированной, так что бы показания температуры и влажности были на разных строках) |
~Dt1~ | данная переменная будет заменена на текущие показания температуры датчика DHT-11 |
~DT~ | текущая дата (год, месяц, день) из RTC (часы реального времени) |
~TM~ | текущее время в рамках дня (часы, минуты, секунды) из RTC (часы реального времени) |
Достаточно теперь отправить SMS с текстом "MONITOR" (регистр символом имеет значение) на номер SIM карты в модуле Laurent-5G как в скором времени нам придет ответная SMS с текущими показаниями датчика DHT-11:
© Дмитрий Иванов