Здравствуйте, дорогие читатели! Очередная история о том, как менеджер самого среднего звена, сдувая пыль с залежавшихся железок на полке, творит такое, от чего у профессионалов всех мастей боль в глазах. ¡Но, это работает, amigo!
![](https://habrastorage.org/r/w780q1/web/f60/376/42b/f6037642b6b94e65a098cf7d930fbc45.jpg)
Признаюсь, в этот раз я все хотел сделать правильно. Взял Raspbery Pi с полки. Пирожок тот самый, что я уже использовал в своем роботе-газонокосилке: ссылка на пост и ссылка на другой пост. Взял mosquitto, все должно было работать на mqtt, но от себя никуда не убежишь. Под катом море граблей, велосипедов, плохой пайки, сплошной ад для перфекциониста.
![image](https://habrastorage.org/r/w780q1/files/4c5/827/fc2/4c5827fc2a714b56bb64c18700b69382.jpg)
Все началось с желания дополнить мой проект Noorik, который я поставил себе на ворота. Если коротко — это DIY решение для GSM блока открытия ворот.
Для открытия ворот достаточно замкнуть определенные контакты на плате.
![image](https://habrastorage.org/r/w780q1/files/5f3/8e2/40c/5f38e240c82f4e4692737b0f5e600041.jpg)
Заменил arduino на esp8266 и сделал веб-интерфейс с кнопкой открытия. Это оказалось интересно, но дальше я захотел единый интерфейс для открытия откатных ворот, гаражных секционных ворот и калитки.
Когда я стал расписывать все свои хотелки, оказалось, что мне нужно так же:
Малинка работала нормально, но при очередном включении просто перестала включаться. Светодиод питания сначала загорается, затем плавно за 3-5 секунд гаснет, сильно греется элемент (polyfuse T075) около гнезда питания. А тут уже руки чесались применить mqtt, блэкджер, пригласить куртизанок и прочие прелести.
![](https://habrastorage.org/r/w780q1/web/62d/d94/26c/62dd9426ccc24ae5ae0a851147fb62ae.jpg)
Не беда, благо своей участи ждал другой пациент. Orange pi zero в студию. Сколько я не мучился с этим чудом китайской мысли — вдохнуть жизнь в такой маленький пирожок оказалось делом выше моих сил. Я скачивал прошивки на официальном и левых сайтах, я покупал прошивки с рук и обменивал на криптовалюту. Думаю, мне просто попался бракованный образец.
![](https://habrastorage.org/r/w780q1/web/63c/64d/d6f/63c64dd6f17f48c687b33e036ef859f6.jpg)
Я понял, что сама судьба толкает меня в объятья велосипедостроительства, и что уж скрывать радость, я окунулся в это занятие с головой.
![](https://habrastorage.org/r/w780q1/web/206/f40/1e3/206f401e31ff4a06b895f513756e181e.jpg)
Первым делом я решил использовать как головное устройство (брокер, сервер) видавший виды смартфон. Знаете эти старые вещи просто так не уходят. Им пользовался я, жена, дочь, потом я управлял с этого смартфона своим роботом-снегоуборщиком, я пытался утопить его в реке( до Москвы-реки я так и не добрался, но в родной Пахре эта труба навела шороху). И вот она — новая жизнь для Samsung Galaxy S3.
Установил на смартфон Palapa Web Server и Ftp-сервер. Идея простая в базе данных MySQL всего три таблицы: values, logs, rules.
Все это хозяйство обслуживает один скрипт php, который по http запросу записывает или выдает данные из базы, а так же обслуживает правила по расписанию.
Я даже не понимаю какой должен быть уровень программирования, чтобы человек захотел это увидеть, но я готов показать Вам код — пишите в ЛС.
![](https://habrastorage.org/r/w780q1/web/f60/376/42b/f6037642b6b94e65a098cf7d930fbc45.jpg)
Не кидайте в меня камни, я признаюсь сам. Я использовал Bootstrap. Да, грешен.
Первоначальной мыслью было обернуть все это через Phonegap и получить полноценное приложение. Скажу больше я так и сделал, но в итоге более работоспособной оказалась online-версия. Себе и жене на телефоне просто сделал ярлык на рабочем столе для открытия нужной странице по внутреннему ip.
Каждый элемент реагирует на событие нажатие + проверяется состояние ajax запросами на сервер и изменяется в случае необходимости. Очень удобно, так как видишь все изменения, которые вступили в силу по правилу или сделаны другим пользователем.
Собственно, код по запросу без проблем.
![](https://habrastorage.org/r/w780q1/web/900/20a/853/90020a8530cc491cadc9aa15c8fb4e5c.jpg)
Я пробовал разные модули и чистый ESP-8266. В итоге самым удобным вариантом оказался модуль LOLIN V3.
![](https://habrastorage.org/r/w780q1/web/325/c58/cda/325c58cda83f4c9a8cef58f7a1d88e8a.jpg)
Питание с помощью импульсных блоков питания.
![](https://habrastorage.org/r/w780q1/web/268/d77/8ee/268d778ee71443c9a369bea9bb71491a.jpg)
Модули для ворота требовали реле и у меня были опасения, что контактные реле будут срабатывать. В итоге работют и твердотельные и контактные. Проблема с тем, что большое количество модулей даже без маркировки об этом являются low-triggered.
![](https://habrastorage.org/r/w780q1/web/c81/9a8/130/c819a813070a47b5b6ebcb23a6d1bc8d.jpg)
При включении модуля происходит кратковременное открытие, которые приводит к непроизвольному открытию при включении питания. Решается подтяжкой к нулю и объявлением состояния до объявления типа выхода.
В итоге модуль для гаража в сборе выглядит так. PIR-датчик для определения движения аккуратно вгрызан в родную обшивку.
![](https://habrastorage.org/r/w780q1/web/2ed/8f6/3b6/2ed8f63b60ea4b7abfb7bda9c04697c6.jpg)
В котельной у меня котел очень простой и ни о какой сложной автоматике и речи не идет.
![](https://habrastorage.org/r/w780q1/web/49a/966/18a/49a96618a1ec46b28d2ac11a79096533.jpg)
При этом каждый контур обслуживает отдельный насос.
![](https://habrastorage.org/r/w780q1/web/220/bc5/af7/220bc5af7fcd43e0b90dcbf335f9b66a.jpg)
Последовательно с автоматами были включены реле для управления насосами и котлом.
![](https://habrastorage.org/r/w780q1/web/ae4/8b6/e04/ae48b6e0415047b58588b2a2cbfc5b1d.jpg)
Аккуратно впихивает все хозяйство в щиток.
![](https://habrastorage.org/r/w780q1/web/0cc/5d3/28d/0cc5d328d26b4f2a83450df8e2ced105.jpg)
Решил использовать для прошивки Arduino IDE, чтобы не связываться с nodemcu и lua. В интернете и на GT в частности огромное количество информации для начинающих.
Из интересного, мне кажется, функция соединения с wifi. Дело в том, что у меня в доме 4 сети wifi и может добавиться. Чтобы жестко не задавать название сети предварительно проводим сканирование доступных сетей.
При включенном автоматическом режиме котельной по расписанию проверяется температура на улице и температура теплоносителя.
Температура теплоносителя выбирается по таблице в зависимости от сечения труб и уличной температуры. При достижении необходимой комнатной температуры котел выключается. Ко всему применен некий гестерезис для сглаживания переходных значений.
Система охраны работает еще проще. В таблице есть правило о том, что при включенной системе охраны, если обнаружено движение у одного из PIR-датчиков происходит отправка SMS через API одного из сервисов.
Голосование по фото. Какой проект делать следующим?
Спасибо за внимание. С Вами был СлаваГик.
![](https://habrastorage.org/r/w780q1/web/ebc/aa9/11a/ebcaa911ade648528ae7128e3031e563.jpg)
![](https://habrastorage.org/web/f60/376/42b/f6037642b6b94e65a098cf7d930fbc45.jpg)
Признаюсь, в этот раз я все хотел сделать правильно. Взял Raspbery Pi с полки. Пирожок тот самый, что я уже использовал в своем роботе-газонокосилке: ссылка на пост и ссылка на другой пост. Взял mosquitto, все должно было работать на mqtt, но от себя никуда не убежишь. Под катом море граблей, велосипедов, плохой пайки, сплошной ад для перфекциониста.
![image](https://habrastorage.org/files/4c5/827/fc2/4c5827fc2a714b56bb64c18700b69382.jpg)
Все началось с желания дополнить мой проект Noorik, который я поставил себе на ворота. Если коротко — это DIY решение для GSM блока открытия ворот.
Для открытия ворот достаточно замкнуть определенные контакты на плате.
![image](https://habrastorage.org/files/5f3/8e2/40c/5f38e240c82f4e4692737b0f5e600041.jpg)
Заменил arduino на esp8266 и сделал веб-интерфейс с кнопкой открытия. Это оказалось интересно, но дальше я захотел единый интерфейс для открытия откатных ворот, гаражных секционных ворот и калитки.
Когда я стал расписывать все свои хотелки, оказалось, что мне нужно так же:
- система управления котельной
- охранная система
- мобильный интерфейс к камерам видеонаблюдения
- данные о температуре в доме и на улице
Бэкенд
Малинка работала нормально, но при очередном включении просто перестала включаться. Светодиод питания сначала загорается, затем плавно за 3-5 секунд гаснет, сильно греется элемент (polyfuse T075) около гнезда питания. А тут уже руки чесались применить mqtt, блэкджер, пригласить куртизанок и прочие прелести.
![](https://habrastorage.org/web/62d/d94/26c/62dd9426ccc24ae5ae0a851147fb62ae.jpg)
Не беда, благо своей участи ждал другой пациент. Orange pi zero в студию. Сколько я не мучился с этим чудом китайской мысли — вдохнуть жизнь в такой маленький пирожок оказалось делом выше моих сил. Я скачивал прошивки на официальном и левых сайтах, я покупал прошивки с рук и обменивал на криптовалюту. Думаю, мне просто попался бракованный образец.
![](https://habrastorage.org/web/63c/64d/d6f/63c64dd6f17f48c687b33e036ef859f6.jpg)
Я понял, что сама судьба толкает меня в объятья велосипедостроительства, и что уж скрывать радость, я окунулся в это занятие с головой.
![](https://habrastorage.org/web/206/f40/1e3/206f401e31ff4a06b895f513756e181e.jpg)
Первым делом я решил использовать как головное устройство (брокер, сервер) видавший виды смартфон. Знаете эти старые вещи просто так не уходят. Им пользовался я, жена, дочь, потом я управлял с этого смартфона своим роботом-снегоуборщиком, я пытался утопить его в реке( до Москвы-реки я так и не добрался, но в родной Пахре эта труба навела шороху). И вот она — новая жизнь для Samsung Galaxy S3.
Установил на смартфон Palapa Web Server и Ftp-сервер. Идея простая в базе данных MySQL всего три таблицы: values, logs, rules.
- В таблице values пары ключ/значение.
- В таблице logs история изменений значений.
- В таблице rules правила изменения одних ячеек в зависимости от значения в других.
Все это хозяйство обслуживает один скрипт php, который по http запросу записывает или выдает данные из базы, а так же обслуживает правила по расписанию.
Я даже не понимаю какой должен быть уровень программирования, чтобы человек захотел это увидеть, но я готов показать Вам код — пишите в ЛС.
Фронтенд
![](https://habrastorage.org/web/f60/376/42b/f6037642b6b94e65a098cf7d930fbc45.jpg)
Не кидайте в меня камни, я признаюсь сам. Я использовал Bootstrap. Да, грешен.
Первоначальной мыслью было обернуть все это через Phonegap и получить полноценное приложение. Скажу больше я так и сделал, но в итоге более работоспособной оказалась online-версия. Себе и жене на телефоне просто сделал ярлык на рабочем столе для открытия нужной странице по внутреннему ip.
Каждый элемент реагирует на событие нажатие + проверяется состояние ajax запросами на сервер и изменяется в случае необходимости. Очень удобно, так как видишь все изменения, которые вступили в силу по правилу или сделаны другим пользователем.
Собственно, код по запросу без проблем.
ESP-8266
![](https://habrastorage.org/web/900/20a/853/90020a8530cc491cadc9aa15c8fb4e5c.jpg)
Я пробовал разные модули и чистый ESP-8266. В итоге самым удобным вариантом оказался модуль LOLIN V3.
![](https://habrastorage.org/web/325/c58/cda/325c58cda83f4c9a8cef58f7a1d88e8a.jpg)
Питание с помощью импульсных блоков питания.
![](https://habrastorage.org/web/268/d77/8ee/268d778ee71443c9a369bea9bb71491a.jpg)
Модули для ворота требовали реле и у меня были опасения, что контактные реле будут срабатывать. В итоге работют и твердотельные и контактные. Проблема с тем, что большое количество модулей даже без маркировки об этом являются low-triggered.
![](https://habrastorage.org/web/c81/9a8/130/c819a813070a47b5b6ebcb23a6d1bc8d.jpg)
При включении модуля происходит кратковременное открытие, которые приводит к непроизвольному открытию при включении питания. Решается подтяжкой к нулю и объявлением состояния до объявления типа выхода.
digitalWrite(rele, 1);
digitalWrite(rele2, 1);
pinMode(rele, OUTPUT);
pinMode(rele2, OUTPUT);
В итоге модуль для гаража в сборе выглядит так. PIR-датчик для определения движения аккуратно вгрызан в родную обшивку.
![](https://habrastorage.org/web/2ed/8f6/3b6/2ed8f63b60ea4b7abfb7bda9c04697c6.jpg)
В котельной у меня котел очень простой и ни о какой сложной автоматике и речи не идет.
![](https://habrastorage.org/web/49a/966/18a/49a96618a1ec46b28d2ac11a79096533.jpg)
При этом каждый контур обслуживает отдельный насос.
![](https://habrastorage.org/web/220/bc5/af7/220bc5af7fcd43e0b90dcbf335f9b66a.jpg)
Последовательно с автоматами были включены реле для управления насосами и котлом.
![](https://habrastorage.org/web/ae4/8b6/e04/ae48b6e0415047b58588b2a2cbfc5b1d.jpg)
Аккуратно впихивает все хозяйство в щиток.
![](https://habrastorage.org/web/0cc/5d3/28d/0cc5d328d26b4f2a83450df8e2ced105.jpg)
Прошивка
Решил использовать для прошивки Arduino IDE, чтобы не связываться с nodemcu и lua. В интернете и на GT в частности огромное количество информации для начинающих.
Из интересного, мне кажется, функция соединения с wifi. Дело в том, что у меня в доме 4 сети wifi и может добавиться. Чтобы жестко не задавать название сети предварительно проводим сканирование доступных сетей.
Код setupWiFi()
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());
}
При включенном автоматическом режиме котельной по расписанию проверяется температура на улице и температура теплоносителя.
- При температуре ниже 14*С включается теплый пол первого этажа.
- При температуре ниже 4*С включаются все контуры.
Температура теплоносителя выбирается по таблице в зависимости от сечения труб и уличной температуры. При достижении необходимой комнатной температуры котел выключается. Ко всему применен некий гестерезис для сглаживания переходных значений.
Система охраны работает еще проще. В таблице есть правило о том, что при включенной системе охраны, если обнаружено движение у одного из PIR-датчиков происходит отправка SMS через API одного из сервисов.
Планы
- создание online-версии на удаленном сервере и синхронизация изменений для возможности удаленного управления.
- Отображения данных с GSM/GPS маячков в машине;
- Открытие ворот при появлении наших машин в определенной зоне;
- Подключение к системе пультовой охраны;
Голосование по фото. Какой проект делать следующим?
Доделать KickBrick
Доделать дельта 3D-принтер на строительных шпильках![](https://habrastorage.org/r/w780q1/web/7ff/ec2/55e/7ffec255ec8b4196a7f1c9cc92ca9c4e.jpg)
![](https://habrastorage.org/web/7ff/ec2/55e/7ffec255ec8b4196a7f1c9cc92ca9c4e.jpg)
Стабилизатор для зеркальной камеры![](https://habrastorage.org/r/w780q1/web/138/3b8/b61/1383b8b61f724649b6cb832d0e69b6da.jpg)
![](https://habrastorage.org/web/138/3b8/b61/1383b8b61f724649b6cb832d0e69b6da.jpg)
Спасибо за внимание. С Вами был СлаваГик.
![](https://habrastorage.org/web/ebc/aa9/11a/ebcaa911ade648528ae7128e3031e563.jpg)
Only registered users can participate in poll. Log in, please.
Так какой же проект делать следующим?
23.41% Доделать KickBrick59
34.52% Доделать дельта 3D-принтер на строительных шпильках87
42.06% Стабилизатор для зеркальной камеры106
252 users voted. 159 users abstained.