- PVSM.RU - https://www.pvsm.ru -
Здравствуйте, дорогие читатели! Очередная история о том, как менеджер самого среднего звена, сдувая пыль с залежавшихся железок на полке, творит такое, от чего у профессионалов всех мастей боль в глазах. ¡Но, это работает, amigo!
Признаюсь, в этот раз я все хотел сделать правильно. Взял Raspbery Pi с полки. Пирожок тот самый, что я уже использовал в своем роботе-газонокосилке: ссылка на пост [1] и ссылка на другой пост [2]. Взял mosquitto, все должно было работать на mqtt, но от себя никуда не убежишь. Под катом море граблей, велосипедов, плохой пайки, сплошной ад для перфекциониста.
Все началось с желания дополнить мой проект Noorik [3], который я поставил себе на ворота. Если коротко — это DIY решение для GSM блока открытия ворот.
Для открытия ворот достаточно замкнуть определенные контакты на плате.
Заменил arduino на esp8266 и сделал веб-интерфейс с кнопкой открытия. Это оказалось интересно, но дальше я захотел единый интерфейс для открытия откатных ворот, гаражных секционных ворот и калитки.
Когда я стал расписывать все свои хотелки, оказалось, что мне нужно так же:
Малинка работала нормально, но при очередном включении просто перестала включаться. Светодиод питания сначала загорается, затем плавно за 3-5 секунд гаснет, сильно греется элемент (polyfuse T075) около гнезда питания. А тут уже руки чесались применить mqtt, блэкджер, пригласить куртизанок и прочие прелести.
Не беда, благо своей участи ждал другой пациент. Orange pi zero в студию. Сколько я не мучился с этим чудом китайской мысли — вдохнуть жизнь в такой маленький пирожок оказалось делом выше моих сил. Я скачивал прошивки на официальном и левых сайтах, я покупал прошивки с рук и обменивал на криптовалюту. Думаю, мне просто попался бракованный образец.
Я понял, что сама судьба толкает меня в объятья велосипедостроительства, и что уж скрывать радость, я окунулся в это занятие с головой.
Первым делом я решил использовать как головное устройство (брокер, сервер) видавший виды смартфон. Знаете эти старые вещи просто так не уходят. Им пользовался я, жена, дочь, потом я управлял с этого смартфона своим роботом-снегоуборщиком [4], я пытался утопить его в реке [5]( до Москвы-реки я так и не добрался, но в родной Пахре эта труба навела шороху). И вот она — новая жизнь для Samsung Galaxy S3.
Установил на смартфон Palapa Web Server и Ftp-сервер. Идея простая в базе данных MySQL всего три таблицы: values, logs, rules.
Все это хозяйство обслуживает один скрипт php, который по http запросу записывает или выдает данные из базы, а так же обслуживает правила по расписанию.
Я даже не понимаю какой должен быть уровень программирования, чтобы человек захотел это увидеть, но я готов показать Вам код — пишите в ЛС.
Не кидайте в меня камни, я признаюсь сам. Я использовал Bootstrap. Да, грешен.
Первоначальной мыслью было обернуть все это через Phonegap и получить полноценное приложение. Скажу больше я так и сделал, но в итоге более работоспособной оказалась online-версия. Себе и жене на телефоне просто сделал ярлык на рабочем столе для открытия нужной странице по внутреннему ip.
Каждый элемент реагирует на событие нажатие + проверяется состояние ajax запросами на сервер и изменяется в случае необходимости. Очень удобно, так как видишь все изменения, которые вступили в силу по правилу или сделаны другим пользователем.
Собственно, код по запросу без проблем.
Я пробовал разные модули и чистый ESP-8266. В итоге самым удобным вариантом оказался модуль LOLIN V3.
Питание с помощью импульсных блоков питания.
Модули для ворота требовали реле и у меня были опасения, что контактные реле будут срабатывать. В итоге работют и твердотельные и контактные. Проблема с тем, что большое количество модулей даже без маркировки об этом являются low-triggered.
При включении модуля происходит кратковременное открытие, которые приводит к непроизвольному открытию при включении питания. Решается подтяжкой к нулю и объявлением состояния до объявления типа выхода.
digitalWrite(rele, 1);
digitalWrite(rele2, 1);
pinMode(rele, OUTPUT);
pinMode(rele2, OUTPUT);
В итоге модуль для гаража в сборе выглядит так. PIR-датчик для определения движения аккуратно вгрызан в родную обшивку.
В котельной у меня котел очень простой и ни о какой сложной автоматике и речи не идет.
При этом каждый контур обслуживает отдельный насос.
Последовательно с автоматами были включены реле для управления насосами и котлом.
Аккуратно впихивает все хозяйство в щиток.
Решил использовать для прошивки Arduino IDE, чтобы не связываться с nodemcu и lua. В интернете и на GT в частности огромное количество информации для начинающих.
Из интересного, мне кажется, функция соединения с wifi. Дело в том, что у меня в доме 4 сети wifi и может добавиться. Чтобы жестко не задавать название сети предварительно проводим сканирование доступных сетей.
void setupWiFi()
{
WiFi.mode(WIFI_STA);
WiFi.disconnect();
delay(100);
while(WiFi.status() != WL_CONNECTED)
{
int n = WiFi.scanNetworks();
Serial.println("scan done");
if (n == 0)
Serial.println("no networks found");
else
{
Serial.print(n);
Serial.println(" networks found");
for (int i = 0; i < n; ++i)
{
Serial.println("");
Serial.print(i + 1);
Serial.print(": ");
Serial.print(WiFi.SSID(i));
Serial.print(" (");
Serial.print(WiFi.RSSI(i));
Serial.print(")");
Serial.println((WiFi.encryptionType(i) == ENC_TYPE_NONE)?" ":"*");
j=0;
ssid=WiFi.SSID(i);
Serial.print("Connecting");
ssid.toCharArray(charBuf, 50);
WiFi.begin(charBuf,WIFI_PASS);
while(WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
j++;
if(j>20){
break;
}
}
if((WiFi.status() == WL_CONNECTED)){
break;
}
}
}
}
Serial.println("Connected");
Serial.println(WiFi.localIP());
}
При включенном автоматическом режиме котельной по расписанию проверяется температура на улице и температура теплоносителя.
Температура теплоносителя выбирается по таблице в зависимости от сечения труб и уличной температуры. При достижении необходимой комнатной температуры котел выключается. Ко всему применен некий гестерезис для сглаживания переходных значений.
Система охраны работает еще проще. В таблице есть правило о том, что при включенной системе охраны, если обнаружено движение у одного из PIR-датчиков происходит отправка SMS через API одного из сервисов.
Голосование по фото. Какой проект делать следующим?
Спасибо за внимание. С Вами был СлаваГик.
Автор: webzuweb
Источник [7]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/android/261155
Ссылки в тексте:
[1] ссылка на пост: https://geektimes.ru/company/robogazon/blog/280374/
[2] ссылка на другой пост: https://geektimes.ru/post/261248/
[3] Noorik: https://geektimes.ru/post/275052/
[4] своим роботом-снегоуборщиком: https://geektimes.ru/company/robogazon/blog/268484/
[5] утопить его в реке: https://geektimes.ru/company/robogazon/blog/267450/
[6] https://geektimes.ru/post/281716/: https://geektimes.ru/post/281716/
[7] Источник: https://geektimes.ru/post/291431/
Нажмите здесь для печати.