Признаюсь, в этот раз я все хотел сделать правильно. Взял Raspbery Pi с полки. Пирожок тот самый, что я уже использовал в своем роботе-газонокосилке: ссылка на пост и ссылка на другой пост. Взял mosquitto, все должно было работать на mqtt, но от себя никуда не убежишь. Под катом море граблей, велосипедов, плохой пайки, сплошной ад для перфекциониста.
Все началось с желания дополнить мой проект Noorik, который я поставил себе на ворота. Если коротко — это DIY решение для GSM блока открытия ворот.
Для открытия ворот достаточно замкнуть определенные контакты на плате.
Заменил arduino на esp8266 и сделал веб-интерфейс с кнопкой открытия. Это оказалось интересно, но дальше я захотел единый интерфейс для открытия откатных ворот, гаражных секционных ворот и калитки.
Когда я стал расписывать все свои хотелки, оказалось, что мне нужно так же:
- система управления котельной
- охранная система
- мобильный интерфейс к камерам видеонаблюдения
- данные о температуре в доме и на улице
Бэкенд
Малинка работала нормально, но при очередном включении просто перестала включаться. Светодиод питания сначала загорается, затем плавно за 3-5 секунд гаснет, сильно греется элемент (polyfuse T075) около гнезда питания. А тут уже руки чесались применить mqtt, блэкджер, пригласить куртизанок и прочие прелести.
Не беда, благо своей участи ждал другой пациент. Orange pi zero в студию. Сколько я не мучился с этим чудом китайской мысли — вдохнуть жизнь в такой маленький пирожок оказалось делом выше моих сил. Я скачивал прошивки на официальном и левых сайтах, я покупал прошивки с рук и обменивал на криптовалюту. Думаю, мне просто попался бракованный образец.
Я понял, что сама судьба толкает меня в объятья велосипедостроительства, и что уж скрывать радость, я окунулся в это занятие с головой.
Первым делом я решил использовать как головное устройство (брокер, сервер) видавший виды смартфон. Знаете эти старые вещи просто так не уходят. Им пользовался я, жена, дочь, потом я управлял с этого смартфона своим роботом-снегоуборщиком, я пытался утопить его в реке( до Москвы-реки я так и не добрался, но в родной Пахре эта труба навела шороху). И вот она — новая жизнь для Samsung Galaxy S3.
Установил на смартфон Palapa Web Server и Ftp-сервер. Идея простая в базе данных MySQL всего три таблицы: values, logs, rules.
- В таблице values пары ключ/значение.
- В таблице logs история изменений значений.
- В таблице rules правила изменения одних ячеек в зависимости от значения в других.
Все это хозяйство обслуживает один скрипт php, который по http запросу записывает или выдает данные из базы, а так же обслуживает правила по расписанию.
Я даже не понимаю какой должен быть уровень программирования, чтобы человек захотел это увидеть, но я готов показать Вам код — пишите в ЛС.
Фронтенд
Не кидайте в меня камни, я признаюсь сам. Я использовал Bootstrap. Да, грешен.
Первоначальной мыслью было обернуть все это через Phonegap и получить полноценное приложение. Скажу больше я так и сделал, но в итоге более работоспособной оказалась online-версия. Себе и жене на телефоне просто сделал ярлык на рабочем столе для открытия нужной странице по внутреннему ip.
Каждый элемент реагирует на событие нажатие + проверяется состояние ajax запросами на сервер и изменяется в случае необходимости. Очень удобно, так как видишь все изменения, которые вступили в силу по правилу или сделаны другим пользователем.
Собственно, код по запросу без проблем.
ESP-8266
Я пробовал разные модули и чистый 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());
}
При включенном автоматическом режиме котельной по расписанию проверяется температура на улице и температура теплоносителя.
- При температуре ниже 14*С включается теплый пол первого этажа.
- При температуре ниже 4*С включаются все контуры.
Температура теплоносителя выбирается по таблице в зависимости от сечения труб и уличной температуры. При достижении необходимой комнатной температуры котел выключается. Ко всему применен некий гестерезис для сглаживания переходных значений.
Система охраны работает еще проще. В таблице есть правило о том, что при включенной системе охраны, если обнаружено движение у одного из PIR-датчиков происходит отправка SMS через API одного из сервисов.
Планы
- создание online-версии на удаленном сервере и синхронизация изменений для возможности удаленного управления.
- Отображения данных с GSM/GPS маячков в машине;
- Открытие ворот при появлении наших машин в определенной зоне;
- Подключение к системе пультовой охраны;
Голосование по фото. Какой проект делать следующим?
Спасибо за внимание. С Вами был СлаваГик.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Комментарии (45)
AllexIn
25.07.2017 20:33+1Зря вы так… ИМХО.
У самого старый андроид висит в качестве панели управления…
И я тоже делал свои странички с управлением.
Но все таки поборол себя и осилил за пару дней OpenHAB на RPI A+.
И не жалею. Красиво, удобно. И, что самое главное, мне(или не мне) не придется через пол года вспоминать как же оно работает. Ибо стандарт, а не велосипед.
Да и зачем тратить силы на то, что уже и так сделано?Hellsy22
26.07.2017 07:15Это зависит от специализации, КМК. Мне вот гораздо проще написать свой скрипт, в котором будет именно то, что мне надо и так, как мне надо, чем читать документацию по очередному самому стандартному на этот месяц «стандарту», написанному явно негуманоидами для своих загадочных целей. Времени займет примерно одинаково. Амнезией не страдаю, комментарии писать умею, в итоге за пару минут разбираюсь даже со скриптами, которые писал пять лет назад.
AllexIn
26.07.2017 09:07Конечно проще. Фатальный недостаток же!
Мне вот тоже было проще. И я потратил неделю только на то, чтобы сделать расписание для своей системы вентиляции. С удобным веб интерфесом и прочими плюшками.
А сейчас у меня есть возможность делать расписание вообще для любых устройств дома. И это потребовало от меня два дня разбираться «с стандартным решением».Hellsy22
26.07.2017 11:13+1А потом вы столкнетесь с чем-нибудь нестандартным, например, с невозможностью повесить обработчик события, чтобы ваша система, скажем, отправила вам СМС или письмо с указанием конкретных данных или зафиксировала что-то в логах. С невозможностью создавать сложные кастомные правила, например, будить вас плавным включением света только по будням и при этом учитывать праздники. С невозможностью добавить определение наличия кого-то дома по появлению смартфона в домашней wi-fi сети. И т.д. и т.п. после чего вы или наворотите костылей к «стандарной системе», изуродовав ее до неузнаваемости, или скажете что-то типа «зелен виноград».
AllexIn
26.07.2017 11:15OpenHAB расширяется плагинами.
Хотите велосипед — допишите.
И речь здесь не о «исправьте сорсы»(которое приведет к костылям и потере совместимости), речь здесь о «допишите».
Плагины пишутся чисто и красиво, так, как вам угодно.Hellsy22
26.07.2017 20:38Хотите велосипед — допишите.
Какая экономия времени! Изучить чужой фреймворк, собрать все его подводные камни, потом изучить язык плагинов для этого фреймворка и собрать уже его подводные камни. И в итоге все равно будет свой код, просто в виде плагина для фреймворка. Который конечно же потеряет со временем обратную совместимость.AllexIn
26.07.2017 20:41Ваши доводы противоречат всему опыту человечества в разработке ПО.
Даже по пунктам не интересно разбирать в силу очевидной слабости утверждений.Hellsy22
26.07.2017 20:58-1И это хорошо, ведь в мнении людей, высказывающихся от имени «всего опыта человечества», я не очень заинтересован.
rustavelli
26.07.2017 18:43+1будить вас плавным включением света только по будням и при этом учитывать праздники.
https://home-assistant.io/components/binary_sensor.workday/
С невозможностью добавить определение наличия кого-то дома по появлению смартфона в домашней wi-fi сети.
Определял так присутствие, потом сменил роутер и снова ничего не надо программировать, а только поправить одну строчку в конфиге
https://home-assistant.io/components/#presence-detection
В одиночку у меня бы ушли месяцы, чтобы самому это написать и с вероятностью 97.5% в моей самописной системе не было бы не списка праздников, ни парсера на десяток роутеров.
Hellsy22
26.07.2017 20:56В одиночку у меня бы ушли месяцы, чтобы самому это написать
Потому я и сказал про специализацию. Я за десяток минут могу написать парсер для вебморды роутера, чтобы получать оттуда список wifi-клиентов. А если там openwrt, то положить скрипт, который будет уведомлять мое устройство.
А вот чего я не люблю, так это обнаруживать через год-другой, что фреймворк сменил версию и часть функций отвалилась, у части изменились параметры, часть вообще исчезла поскольку авторы на них забили. И что хуже всего — не все проблемы всплывают сразу, например, изменится название у какого-нибудь события…
rustavelli
26.07.2017 18:35+1я два года писал свой велосипед… а потом у меня закончилось свободное время и проект встал. Да и далек он был от идеала с точки зрения архитектуры, стандартизации, расширяемости и вообще качества работы.
Потом перешел на home assistant, времени все так же нет, а новые фичи появляются сами раз в пару недель.AllexIn
26.07.2017 20:46HASS ИМХО сложноват для НЕ ITшников.
Как и OPenHAB 1.
Ибо текстовые конфиги — зло.
В этом плане OH2 мне приглянулся сильно как раз возможностью настроить всё через GUI. Даже биндинги.
Ну и расписание, конечно.rustavelli
27.07.2017 12:35+1openhab настройку я не осилил — очень сложно. Второй какой-то глючный показался… и тормозное всё. И на java- не залезешь в исходники, чтоб патч прописать.
Gryphon88
25.07.2017 23:21Извините, а зачем столько насосов на цикруляцию? У вас несколько ванных-туалетов, и на каждой ванной вы гоняете горячую воду, чтоб не ждать, пока нагреется, по кругу через котёл своим насосом? или это для тёплых полов? честно, не понимаю, зачем столько
divanus
25.07.2017 23:29просто автор перечитал форумхауса
а надо было просто сделать гидравлический расчет для системы один раз у профаEstranged01
26.07.2017 00:52У автора как раз все по фэншую. В теплый пол и радиаторы подается теплоноситель с разной температурой, поэтому раздельные контура. Плюс у него разбито по этажам, чтобы можно было отключить неиспользуемые контура.
vbifkol
26.07.2017 07:546 насосов на 2 этажа — много? А сколько норм?
webzuweb
26.07.2017 09:281 насос на теплый пол 1 этажа
1 насос на теплый пол цоколь
У меня полностью 1 этаж и цоколь в ТП, потому что по мрамору даже прохладным летом не очень комфортно.
по насосу на батареи цоколь, 1 этаж, 2 этаж, мансарда.
Есть еще 1 насос на котел, который через гидравлическую стрелку соединяется с коллектором и один специальный насос на рециркуляцию горячей воды по дому.mrigi
26.07.2017 18:26Т.е. вы летом кочегарите газовый котел и греете полы? Чтобы потом это охлаждать кондиционером? Стоил ли того мрамор?
diaskzn
26.07.2017 11:41На каждом этаже по коллектору теплого пола, то есть два. Работают от одного насоса.
ErshoffPeter
26.07.2017 12:26У меня 1 (один) на два уровня, шесть комнат и два десятка батарей. Когда электричество выключается (бывает и такое) гравитационно добивает на плечо 15 метров от котла с перепадом высот относительно котла с трех метров до двух (подъем в середине).
VIPDC
26.07.2017 05:28Тоже возник этот вопрос, вот что надо было ставить в голосовалку и о чем писать следующий пост.
Тем более насосы с электрическим задвижками, значит откуда то всё это управляется.
Dmitri-D
26.07.2017 04:59В щиток, конечно, впихивать слаботочку совершенно неправильно.
Выпихивайте в отдельный бокс.
Я для своих колхозов использую распаечные коробки. Они удобны и уже с готовой крышкой.cyberly
26.07.2017 05:37Да не, мне кажется, в использовании общего щита нет никакого особого криминала. Разве что провода проложить и закрепить поаккуратнее. Тем более, сети связанные (реле управляют нагрузкой).
Если придираться, там еще многожильный кабель под винтовыми клеммами без гильз и вообще, как я понимаю, там ШВВП (белый тонкий) и ПВС (белый толстый) — на каком-нибудь форуме электриков народ бы уже обязательно заклеймил автора за это.
А если по делу — провода из витой пары — неудачный выбор. Они довольно ломучие, причем часто ломаются где-нибудь под изоляцией недалеко от места пайки. Я бы на месте автора купил бы на авторынке разноцветных проводов.Dmitri-D
26.07.2017 06:50колхоз с силовой электрикой в щитке ясно не по теме. Но если обратить внимание — там атас — снизу белые, сверху синие. Это делал человек ничего не смыслящий в разводке щитков. Хоть бы форумы почитал. Я уж не говорю про ПУЭ, которые, вообще-то написаны кровью
darkslave
26.07.2017 09:35+7Может быть у вас найдется время написать статью на GT про разводку электрики в доме, хорошие практики, про скрытые грабли и прочее? Думаю, многим это будет интересно (мне вот точно интересно).
Nrs
26.07.2017 15:13http://www.mastergrad.com/blogs/post/11251/
в блоге автора несколько постов, как раз по вашим хотелкамDmitri-D
26.07.2017 16:39+2Посмотрел. 11251 — не совсем по теме. Вот рядом есть близкое http://www.mastergrad.com/blogs/post/11240/ и более адекватное, но во второй части на окончательной фотке есть явный ляп — негде не видно земли, как будто ее нет. Нет ни шины, ни желто-зеленых проводов. Писать на эту тему еще один пост, теперь в GT — надо подумать.
Nrs
27.07.2017 10:47Если вы про это фото — http://www.mastercity.ru/blogs/uploads/media/topic/2016/11/30/14/c4f82f0c17927751ef57.jpg
то откуда в собранном, но не установленном щитке взяться земле?
Земля в нормальных условиях никогда ничем не должна коммутироваться и просто собирается на шинке в удобном месте. Так что ляпом я это не назову.
Вот пример установленного щитка, земля собрана на шинке в верхнем правом углу
https://habrastorage.org/web/dd3/205/55b/dd320555b011458291a7a7a10e9ce4fc.jpgDmitri-D
28.07.2017 04:41c4f82f0c17927751ef57.jpg — действительно не заметил что щиток не установлен.
dd320555b011458291a7a7a10e9ce4fc.jpg
-нет подписей
-посмотрите на запитку шин свеху автоматов. Белые провода идут к УЗО в наконечниках. А снизу — нет. Если это многопроволочный провод (ПВС?) — то «приехали»
-одна из земель — черная. С какого бодуна?
-снизу вошло 3 земли, а до верху дошли лишь две. Где одна потерялась?
-снизу слева на нулевой шине 5 потребителей. А автоматов слева только четыре. Что за пятый потребитель занулен там?
-Ввод снизу, идет вдоль вывода с левых автоматов. Это не самая удачная компоновка. Я бы не стал делать ввод рядом с выводом и тем более не стал бы вести их вплотную параллельно. Лучше делать отдельно с зазором. Сдвинул бы автоматы максимально вправо и ставил зазор между вводными линиями и потребителями.cyberly
28.07.2017 07:29>> нет подписей
Возможно, они на крышке
>> Белые провода идут к УЗО в наконечниках. А снизу — нет.
Синие со стороны шины — тоже. Рискну предположить, что с наконечником не влезли. Возможно, они облужены или наконечник используется без пластиковой «юбочки».
>> одна из земель — черная. С какого бодуна?
У меня у родителей система уравнивания потенциалов в санузле была сделана черным проводом. Может, тут так же?
>> снизу вошло 3 земли, а до верху дошли лишь две. Где одна потерялась?
Возможно, ее закрывает L от правого УЗО
А число проводов у меня тоже не сошлось. Помимо «лишней» N, есть еще «лишняя» PE, но я не нашел еще одной фазы… Разве что, со второго слева автомата может выходить два провода, один идет наверх, его не видно, второй — вниз. Рискну предположить, что так питается какая-нибудь розетка для роутера в соседнем слаботочном щите.
Nrs
28.07.2017 08:09ну без нюансов да, распишу.
— подписи появились позже, после установки крышки
— щиток собирался гибким проводом ПуГВ-3, везде где должно стоят НШВИ и НШВ. Там, где вывод с УЗО подключается к автоматам с гребенкой, стоит НШВ, т.к. НШВИ своей изоляцией будет мешать нормально обжать гребенку
— провод от застройщика :) заземление ванной
— отдельная розетка под щитком, она подключена к автомату одной из силовых линий. Почему землю не видно, проверю вечером :)
— аналогично предыдущему
— Имхо, это на вкус и цвет, и в каждом варианте есть свои преимущества. Или есть регламент?Nrs
28.07.2017 08:17про дополнительную землю торможу с утра — провод просто не видно, по кол-ву подключений на шине заземления все сходится
Dmitri-D
29.07.2017 20:22+1В первом приближении — ликбез готов.
Надо еще подготовить картинки, и подумать, может что-то еще существенное осталось.
https://docs.google.com/document/d/1WfW8pjWDOLy74uqUPzgs5K3PO32_1P1h-OBnjBMSgyA/pub
Axedem
26.07.2017 20:15Кстати говоря подобные модули 8266 могут ловить помехи от с электросети, от такого соседства. Сам пару раз сталкивался с подобным.
MaximYuAl
26.07.2017 09:35Сколько времени работает (без перезагрузок)?
Просто смартфон вроде бы как не самое стабильное устройство, что бы использовать его в качестве сервера… Железяку типа малинки можно по сторожевому таймеру рестартовать, а смартфон то проблематично вроде бы так сделать. Зависнет в самый неподходящий момент.AllexIn
26.07.2017 10:54У мну древний Highscreen Jet Duo в качестве будильника и панели управления. Последний раз перезагружался год или два назад.
Стабильность не проблема класса устроств, а проблема конкретных устройств.
Ну и ничто не мешает также перезагружать смарт по сторожевому таймеру. Подпаяться к кнопке — плевое дело.
constantined
26.07.2017 12:26Orange pi zero в студию. Сколько я не мучился с этим чудом китайской мысли — вдохнуть жизнь в такой маленький пирожок оказалось делом выше моих сил. Я скачивал прошивки на официальном и левых сайтах, я покупал прошивки с рук и обменивал на криптовалюту. Думаю, мне просто попался бракованный образец.
Для Orange Pi есть смысл сразу начинать со сборки мейнлайновых U-Boot и ядра. Хотя, вполне вероятно, действительно брак.
Alex_Bogdanovich
Привет! Писал тебе в приват — прочти плиз ;) — спасибо!