- PVSM.RU - https://www.pvsm.ru -

Умный дом из старого смартфона или антипаттерны домашней автоматизации

Здравствуйте, дорогие читатели! Очередная история о том, как менеджер самого среднего звена, сдувая пыль с залежавшихся железок на полке, творит такое, от чего у профессионалов всех мастей боль в глазах. ¡Но, это работает, amigo!

Умный дом из старого смартфона или антипаттерны домашней автоматизации - 1

Признаюсь, в этот раз я все хотел сделать правильно. Взял Raspbery Pi с полки. Пирожок тот самый, что я уже использовал в своем роботе-газонокосилке: ссылка на пост [1] и ссылка на другой пост [2]. Взял mosquitto, все должно было работать на mqtt, но от себя никуда не убежишь. Под катом море граблей, велосипедов, плохой пайки, сплошной ад для перфекциониста.

image

Все началось с желания дополнить мой проект Noorik [3], который я поставил себе на ворота. Если коротко — это DIY решение для GSM блока открытия ворот.
Для открытия ворот достаточно замкнуть определенные контакты на плате.

image

Заменил arduino на esp8266 и сделал веб-интерфейс с кнопкой открытия. Это оказалось интересно, но дальше я захотел единый интерфейс для открытия откатных ворот, гаражных секционных ворот и калитки.

Когда я стал расписывать все свои хотелки, оказалось, что мне нужно так же:

  1. система управления котельной
  2. охранная система
  3. мобильный интерфейс к камерам видеонаблюдения
  4. данные о температуре в доме и на улице

Бэкенд

Малинка работала нормально, но при очередном включении просто перестала включаться. Светодиод питания сначала загорается, затем плавно за 3-5 секунд гаснет, сильно греется элемент (polyfuse T075) около гнезда питания. А тут уже руки чесались применить mqtt, блэкджер, пригласить куртизанок и прочие прелести.

Умный дом из старого смартфона или антипаттерны домашней автоматизации - 4

Не беда, благо своей участи ждал другой пациент. Orange pi zero в студию. Сколько я не мучился с этим чудом китайской мысли — вдохнуть жизнь в такой маленький пирожок оказалось делом выше моих сил. Я скачивал прошивки на официальном и левых сайтах, я покупал прошивки с рук и обменивал на криптовалюту. Думаю, мне просто попался бракованный образец.

Умный дом из старого смартфона или антипаттерны домашней автоматизации - 5

Я понял, что сама судьба толкает меня в объятья велосипедостроительства, и что уж скрывать радость, я окунулся в это занятие с головой.

Умный дом из старого смартфона или антипаттерны домашней автоматизации - 6

Первым делом я решил использовать как головное устройство (брокер, сервер) видавший виды смартфон. Знаете эти старые вещи просто так не уходят. Им пользовался я, жена, дочь, потом я управлял с этого смартфона своим роботом-снегоуборщиком [4], я пытался утопить его в реке [5]( до Москвы-реки я так и не добрался, но в родной Пахре эта труба навела шороху). И вот она — новая жизнь для Samsung Galaxy S3.

Установил на смартфон Palapa Web Server и Ftp-сервер. Идея простая в базе данных MySQL всего три таблицы: values, logs, rules.

  • В таблице values пары ключ/значение.
  • В таблице logs история изменений значений.
  • В таблице rules правила изменения одних ячеек в зависимости от значения в других.

Все это хозяйство обслуживает один скрипт php, который по http запросу записывает или выдает данные из базы, а так же обслуживает правила по расписанию.
Я даже не понимаю какой должен быть уровень программирования, чтобы человек захотел это увидеть, но я готов показать Вам код — пишите в ЛС.

Фронтенд

Умный дом из старого смартфона или антипаттерны домашней автоматизации - 7

Не кидайте в меня камни, я признаюсь сам. Я использовал Bootstrap. Да, грешен.
Первоначальной мыслью было обернуть все это через Phonegap и получить полноценное приложение. Скажу больше я так и сделал, но в итоге более работоспособной оказалась online-версия. Себе и жене на телефоне просто сделал ярлык на рабочем столе для открытия нужной странице по внутреннему ip.

Каждый элемент реагирует на событие нажатие + проверяется состояние ajax запросами на сервер и изменяется в случае необходимости. Очень удобно, так как видишь все изменения, которые вступили в силу по правилу или сделаны другим пользователем.
Собственно, код по запросу без проблем.

ESP-8266

Умный дом из старого смартфона или антипаттерны домашней автоматизации - 8

Я пробовал разные модули и чистый ESP-8266. В итоге самым удобным вариантом оказался модуль LOLIN V3.

Умный дом из старого смартфона или антипаттерны домашней автоматизации - 9

Питание с помощью импульсных блоков питания.

Умный дом из старого смартфона или антипаттерны домашней автоматизации - 10

Модули для ворота требовали реле и у меня были опасения, что контактные реле будут срабатывать. В итоге работют и твердотельные и контактные. Проблема с тем, что большое количество модулей даже без маркировки об этом являются low-triggered.

Умный дом из старого смартфона или антипаттерны домашней автоматизации - 11

При включении модуля происходит кратковременное открытие, которые приводит к непроизвольному открытию при включении питания. Решается подтяжкой к нулю и объявлением состояния до объявления типа выхода.

  digitalWrite(rele, 1);
  digitalWrite(rele2, 1);
  pinMode(rele, OUTPUT);
  pinMode(rele2, OUTPUT);

В итоге модуль для гаража в сборе выглядит так. PIR-датчик для определения движения аккуратно вгрызан в родную обшивку.

Умный дом из старого смартфона или антипаттерны домашней автоматизации - 12

В котельной у меня котел очень простой и ни о какой сложной автоматике и речи не идет.

Умный дом из старого смартфона или антипаттерны домашней автоматизации - 13

При этом каждый контур обслуживает отдельный насос.

Умный дом из старого смартфона или антипаттерны домашней автоматизации - 14

Последовательно с автоматами были включены реле для управления насосами и котлом.

Умный дом из старого смартфона или антипаттерны домашней автоматизации - 15

Аккуратно впихивает все хозяйство в щиток.

Умный дом из старого смартфона или антипаттерны домашней автоматизации - 16

Прошивка

Решил использовать для прошивки 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-принтер на строительных шпильках

Умный дом из старого смартфона или антипаттерны домашней автоматизации - 18

Стабилизатор для зеркальной камеры

Умный дом из старого смартфона или антипаттерны домашней автоматизации - 19

Спасибо за внимание. С Вами был СлаваГик.

Умный дом из старого смартфона или антипаттерны домашней автоматизации - 20

Автор: 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/