Рассмотрим подробнее аспект «азарт». После сделанных шагов умный дом стало трудно остановить в развитии. После WiFi-устройств USR IOT пришел черед любимого DIY-щиками микроконтроллера ESP8266. Я использовал сборки ESP8266-12 с USB портом LoLin v3 NodeMCU и Wemos D1 mini. Начал с подсветки картины, которая уже упоминалась выше. Скетчи под ESP8266 удобно разрабатывать в IDE Arduino после подключения соответствующего плагина. Там же можно найти множество примеров, которые делают разработку очень простой даже без подготовки. Поэтому, кстати, листинги выкладывать большого смысла нет.
На фото LoLin v3 NodeMCU с ESP8266-12. Разъём — micro USB.
Важно только договориться о протоколе взаимодействия с openHAB. Я не стал использовать MQTT, а сделал интеграцию напрямую, так как это более соответствует выбранной централизованной модели управления. На контроллере с ESP8266, поднимается простейший сервер, который получает запрос, разбирает его и выполняет извлеченную команду. Запрос отправляет openHAB (либо «вручную», либо в результате работы правила) с помощью утилиты curl. Подтверждение получения команды, величину измеряемых параметров, статус подключенных исполнительных устройств контроллер отправляет по локальной сети обратно в openHAB через его REST API. Всего на момент написания статьи по похожим схемам в умном доме интегрированы 4 контроллера на базе ESP8266 и один на Arduino с подключенным Ethernet модулем. Напомню, что все это делается не просто для того, чтобы получить возможность включить или выключить что-то со смартфона, а, в первую очередь для того, чтобы устройства включались автоматически при наступлении условий для этого.
На фото обычный выключатель Legrand, автоматизированный с помощью Wemos D1 Mini. Все компоненты поместились в стандартной коробке для наружного монтажа. Заодно измеряет температуру/влажность (датчик внизу) и освещенность (на будущее).
Например, подсветка картины включается только один раз в день, когда дом снят с охраны и когда уровень освещенности ниже определенного уровня и когда время близко к времени заката. Более того, некоторые устройства, например, уличные светильники вообще не имеют физических выключателей и используются главным образом в автоматическом режиме.
Все, кто бывал в Оби или Леруа Мерлен наверняка видели наборы дистанционно управляемых розеток или даже стартовые наборы с громким названием «умный дом». Большинство из них объединяет связь на 433МГц и эта связь односторонняя. Т.е. посылая команду невозможно узнать, получена она исполнительным устройством или нет. Компенсирует этот недостаток низкая стоимость. Например, можно купить управляемые розетки и плоский выключатель на батарейке для них за 1300 и 1400 рублей. Такие схемы удобно использовать для осветительных приборов с отдельным проводом, для перемещаемых или появившихся по мере развития дизайнерской мысли. У меня такими элементами стали бра, переделанный из антикварного подсвечника и небольшой торшер. Оба в спальне. А выключатель удобно разместился на прикроватной тумбочке. К чему такое длинное вступление? Нет смысла отказываться от устройств, делающих жизнь комфортнее и полнее, только потому, что они не поддерживаются установленной системой умного дома. В такую ситуацию легко попасть, сделав ставку на единственного поставщика или единственную технологию.
На фото комплект управляемых розеток и выключателя Brenin. 433МГц.
Но у нас-то technology agnostic умный дом! Поэтому смело ищем устройство-хаб для всех 433МГц компонентов. Такие хабы есть, Broadlink, например. Однако их существенным недостатком является непрямое управление, хаб должен быть подключен к облаку. Как вы помните из предыдущей статьи, я считаю такой подход неправильным, хотя и простым, и удобным. В итоге поиски заканчиваются тем, что принимается решение сделать упрощенный хаб на Arduino. В качестве периферии к Arduino подключаем приемник и передатчик 433МГц. Далее с помощью специального скетча прослушиваем код, посылаемый передатчиком в выключателе Brenin и учимся его передавать сами. Все скетчи полностью основываются на примерах к библиотекам и сложностей не вызывают. Более того, код сигнала управления можно представить в виде константы в openHAB и при желании расширить количество исполнительных устройств.
Самодельный хаб для 433МГц устройств. Со временем к нему добавилось детектирование движения и управление светом в котельной. И еще управление кондиционером (IR-светодиод на крышке). Кроме этого для повышения стабильности работы обмен данными с openHAB переведен с nRF24L01+ на Ethernet-плату ENC82J60, виден провод LAN.
Что получилось? Получилось управляемое беспроводным комплектом освещение в комнате. Кроме этого, появилась возможность управлять этим освещением из умного дома. Как вы помните проблема таких систем – отсутствие обратной связи. Частично решается в данном случае за счет того, что команды, передаваемые на 433МГц выключателем можно перехватывать разработанным хабом и отправлять их отработанным способом в openHAB, в котором срабатывает правило и изменяет состояние выключателя в интерфейсе. Т.е. получилась система с псевдообратной связью. Это лучше, чем ничего. Ну и конечно, понятно, что такой подход не годится для управления ответственными устройствами. Он недостаточно надежен и небезопасен с точки зрения перехвата.
Появившийся со временем элемент дизайна, бра. Управляется розеткой и выключателем Brenin
Дальше больше. Захотелось сделать красивые выключатели на втором этаже. И конечно, дистанционно управляемые. Выбор пал на сенсорные выключатели Livolo. Они тоже на 433Мгц и, что важно, могут подключаться «без нуля». Это актуально, если в подрозетники не подведены полноценные ноль и фаза, а выключатель стоит в разрыве цепи питания люстры. Хоть это и не мой случай, такие входные условия стоит учитывать. В результате в доме появились красивые выключатели, подключенные к умному дому с помощью разработанного ранее хаба.
Комплект из двух сенсорных выключателей и пульта Livolo.
Однако, есть два «но». Первое. Выключатели Livolo реально лишены обратной связи, они ничего не передают. Т.е. если включать их по старинке пальцем, умный дом изменения состояния не увидит. Это для самодельщика, конечно, не преграда, но я решил не городить огород из дополнительных датчиков включения, и больше подобных Livolo устройств не интегрировать. Второе. Стандартной библиотекой управляющие сигналы с пульта Livolo, купленного в комплекте с выключателями, расшифровать не удалось, пришлось искать библиотеки, разработанные энтузиастами специально для выключателей Livolo.
Закончить разговор об интегрировании новых компонентов хочется ровно с того, с чего начали в предыдущей статье: с Z-Wave. Как бы дороги не были устройства Z-Wave, их ассортимент постепенно расширяется и появляются исполнительные устройства, которые нет смысла делать самому или которых по каким-либо причинам нет у конкурирующих технологий. Самый яркий пример – управляемые термостатические головки для радиаторов отопления. Беспроводные. Другой пример – компактные реле и диммеры в подрозетники для превращения имеющихся выключателей в умные без изменения дизайна. Причем, с обратной связью, т.е. при сохранившемся механическом управлении, умный дом сможет видеть состояние выключателей.
На фото Z-Wave термостатическая головка Grundfos на радиаторе в прихожей.
Как устроена интеграция? У openHAB есть соответствующий binding для подключения USB Z-Wave stick. Кроме этого, в комплекте у openHAB есть специальное приложение HABmin для настройки работы сети Z-Wave устройств. Итак, подключаем USB-стик Z-Wave.Me, устанавливаем binding Z-Wave, запускаем HABmin, добавляем устройства в сеть. Далее настраиваем по документации к binding соответствующие items, пишем правила для выключателей, термоголовок, мультидатчиков и voila. Вроде все просто. Однако, так получилось лишь частично. Проблема в том, что HABmin работает только с зарегистрированными в открытой базе данных устройствами. Если вы купили какое-то новое устройство или модификацию старого, которой нет в базе данных, настроить такое устройство не получится. Можно сделать pull request в эту БД, однако я посчитал такой подход в корне неверным, так как у Z-Wave устройств есть функция self discovery. Это одна из причин высокой совместимости устройств и контроллеров разных производителей Z-Wave. В итоге пришлось купить лицензию на программный контроллер Z-Wave, Z-Way server, который установил на том же сервере/неттопе, что и openHAB. Он используется только когда необходимо добавить/удалить устройство в сеть Z-Wave и/или настроить его. В остальное время программный контроллер выключен.
На фото — обычные выключатели Legrand. Автоматизированы с помощью микромодулей Z-Wave в подрозетниках. Нижний стал диммером.
В итоге у меня появились термоголовки на радиаторах, диммер и выключатели в подрозетники, управляемые розетки, измеряющие напряжение и мощность и даже мультидатчик (движение, температура, освещенность). Следует заметить, что ассоциации на уровне Z-Wave я не настраивал, так как у меня пока централизованная модель управления. Т.е., несмотря на возможность прямого управления устройство-устройство, все они управляются централизованно из openHAB с помощью правил. Ну или дополнительно механически, как в случае с выключателями в подрозетники.
Что получилось с точки зрения умного дома:
- Автоматизировано управление светом.
- Контролируется движение у лестницы на втором этаже. В зависимости от состояния охраны либо срабатывает набор тревожных правил, либо зажигается свет на первом этаже, чтобы было светло спускаться по лестнице ночью. Поскольку использован мультидатчик, еще и температура воздуха измеряется.
- Автоматизировано управление несколькими радиаторами отопления. При постановке на охрану они переходят на установленную в настройках низкую температуру для экономии электроэнергии за счет более рационального распределения тепла. Кроме этого, сделано управление ночной температурой в спальне – она автоматически понижается на 1 градус для комфортного сна. Ну и конечно температуру можно устанавливать из умного дома.
- Автоматизировано управление полотенцесушителем. Теперь его не надо вручную включать/выключать. Кроме этого, его можно включать дистанционно, заблаговременно перед приездом.
Есть еще кое-что. До сих пор мы говорили об интеграции физических компонентов с умным домом. Однако, openHAB позволяет интегрироваться и с программными системами. Например, с программными видеорегистраторами или IP-камерами. Речь не только о выводе изображения в интерфейсе openHAB, что конечно же сделано, но и о реакции на события. Например, если регистратор или камера настроены на детектирование движения, это событие можно отправлять в openHAB и использовать в управлении. В описанном выше правиле включения света ночью при спуске по лестнице используется детектирование движения камерой на первом этаже (чтобы не зажигать свет, когда поднимаюсь по лестнице). Другой пример: в режиме охраны можно фотографировать нарушителя и отправлять фото по почте, причем нарушение можно фиксировать обычным PIR-датчиком движения, что гораздо эффективнее детектирования движения камерой или видеорегистратором. Причем PIR-датчик может быть подключен к умному дому по произвольной технологии.
Сделана также интеграция с медиацентром Kodi, для этого есть специальный binding. При запуске видео, в гостиной выключается свет, при остановке — включается. Сделано также, на всякий случай, управление из умного дома самим Kodi. Пользоваться им менее удобно чем штатным программным пультом Kore, зато есть возможность запустить Kodi из интерфейса умного дома, что Kore не умеет.
Страница интерфейса с управлением Kodi и кнопкой запуска. Выше показывает состояние проигрывателя, название композиции, оставшееся время и длительность.
Предвосхищая вопросы об использовании протокола MQTT, напомню, что при централизованной модели управления промежуточные звенья между сервером и устройствами возможны, но, естественно, снижают надежность. Поэтому до сих пор все интеграционные связи были прямыми, без посредников. Однако, если говорить о возможном в будущем переходе или частичном переходе к децентрализованному управлению, как потенциально более расширяемому и более отказоустойчивому, то выбор MQTT является стандартным. Это общепринятый транспорт для равноправных устройств в локальной сети.
Многофункциональный контроллер на базе Raspberry Pi 3B. Видны датчик температуры и влажности, датчик движения, камера, управляемая розетка, выключатель, ставший датчиком.
У openHAB, конечно, есть binding для MQTT. В качестве самого MQTT-сервера сам собой выбирается Mosquitto. А вот на чем его устанавливать – вопрос. Если подспудно или явно преследовать цель децентрализации управления, то ставить Mosquitto на неттоп, который и так уже стал единой точкой отказа – неправильно. И здесь сработала следующая логика. Единственное не автоматизированное помещение – гараж. Там есть что поделать: детектировать движение, зажигать свет внутри и снаружи на доме, открывать и контролировать состояние гаражных ворот, вести видеонаблюдение, управлять розеткой для садового оборудования. И даже еще кое-что, что можно делать только на полноценной операционной системе и что относится к обеспечению информационной безопасности. В итоге выбор падает на Raspberry Pi. У него есть и пины для подключения стандартной DIY-периферии и полноценный Linux с огромным количеством портированных приложений. И видеокамеру к нему можно подключить и транслировать поток в сеть. И, что важно, ресурсы системы, в отличие от Arduino, позволяют построить бизнес-логику практически любой разумной сложности, отвязавшись от openHAB. И программировать все это можно на привычных языках программирования.
В результате все перечисленные задачи решены, плюс в сети появился MQTT-сервер, через который организовано взаимодействие с openHAB и который будет использоваться в дальнейшем при появлении новых устройств с децентрализованным управлением.
Что получилось в итоге, если описать шаблонными терминами характеристики всей системы на момент написания статьи?
Сводка:
- Количество датчиков температуры: 25.
- Количество точек управления светом: 37, включая сдвоенные выключатели, диммер, и точки без механических выключателей.
- Кроме света, управляется скважинный насос, насос рециркуляции ГВС, краны на ветках отопления, котел, бойлер, автоматические ворота, радиаторы отопления и т.д. Измеряется влажность, напряжение, ток, освещенность, качество воздуха и т.д.
Использованные технологии:
- Центральное ПО: openHAB c bindings, Xeoma, Z-Way server, TTS, Mosquitto server, Kodi, отдельные приложения на C/C++. ОС – Ubuntu.
- Локальные контроллеры: Arduino+nRF24L01+, Arduino+ENC82J60, ESP8266-12, Raspberry Pi 3 B, ПО написано на C++.
- Готовые устройства: WiFi-устройства USR IOT, Z-Wave (реле, розетки, диммер, датчик, термоголовки) разных производителей, 433Мгц (выключатели с пультом Livolo, розетки и выключатель Brenin), TCP-Modbus шлюз Schneider Electric, датчики движения, открывания и др.
Вместо заключения. Мы не рассмотрели еще множество аспектов, например, голосовое управление, text-to-speech, IR-управление кондиционером и т.д. Все это сделано и работает. Целью данной статьи было показать ход мысли, поделиться опытом выбора решений, показать преимущества открытых стандартов и технологий через описание простоты интеграции. Все, что сделано, можно было сделать иначе, лучше или хуже, дороже или дешевле, функциональнее или надежнее. К хорошему привыкаешь быстро и через какое-то время вопросы членов семьи типа: «а разве ты не можешь это сделать со смартфона?» или «почему эту клумбу надо поливать вручную?» заставляют двигаться дальше, к недостижимому совершенству.
И еще я верю в безграничные возможности Интернета вещей. Все что сделано относится к этой категории, но это только малая часть. Если после прочтения этой статьи число энтузиастов Интернета вещей немного вырастет, я буду считать свою задачу полностью выполненной.
Комментарии (40)
LumberJack
06.08.2018 09:37Почему openHAB, а не Domoticz, например?
Medox Автор
06.08.2018 09:42Выбор openHAB я описывал в этом посте habr.com/company/sberbank/blog/415477
Сейчас всех нюансов не помню и сравнения провести без изучения не могу. Выбирал в 2015г. и тогда OH мне показался самым подходящим.
Medox Автор
06.08.2018 10:40Уже после написания статьи добавилось несколько z-wave устройств: два реле в подрозетники, датчик открывания окна, датчик движения в гостиной, еще один термостат на радиатор отопления. Осталось написать правила, чтобы закрывать термостат, когда окно открыто.
Tai_Neko
06.08.2018 12:08Интересная статья. Немного просматривается избыточность решений (отключение батарей при открытии окон), хотя в рамках вашей концепции «инженеринг фан» это не сильно режет глаз.
Есть в сети несколько материалов, по выводу изображения на зеркала (раз, два, три), вероятно, это появится и у вас.
ColdSUN
06.08.2018 14:02Я использую решение Samsung Smartthings. Нравится тем, что работает и с Z-Wave и ZigBee и достаточно большим сообществом. Таким образом можно выбирать лучшие или более дешёвые сенсоры, розетки и выключатели. Например магнитный сенсор на окна/двери от Xiaomi стоит 12-14 долларов, что очень даже приемлемо.
Так же я использую лампочки Ikea Tradfri. Получается управляемая лампочка всего в два раза дороже обычной глупой лампы от той же Ikea и можно обойтись вообще без физического выключателя для такой лампы.Medox Автор
06.08.2018 14:52Я тоже давний пользователь Samsung, но со SmartThings не разбирался пока. Касался умного дома от Xiaomi, но в итоге категорически отказался. Не считаю правильным работать через облако. А если SmartThings работает напрямую без облаков — это очень интересно.
Что касается цены, то Z-Wave даже в самых дешевых китайских вариантах как минимум на порядок дороже самодельных устройств на Arduino/ESP8266/ESP32 и их промышленных реализаций. О выборе технологического стека я писал здесь: habr.com/company/sberbank/blog/415477ProstoUser
06.08.2018 19:33Для ОпенХаб есть биндинг, который позволяет устройствам Xiaomi работать без всякого облака.
Medox Автор
07.08.2018 13:11Посмотрел. Да, интересно.
ProstoUser
08.08.2018 18:02А с учетом цен на Xiaomi устройства более, чем интересно. :-)
Приятель сделал полностью автономное отопление для загородного дома. Малина, релейная борда для управления термоголовками, Xiaomi термометры как датчики температуры.
Ну и потом еще сверху навернул свет от датчиков движения и т.п.
Medox Автор
07.08.2018 11:55Посмотрел на SmartThings. По умолчанию для удаленного управления используется облако. И в любом случае нужен Samsung account. Не то, чтобы у меня его не было. Но управление через облако я пока не готов принять. При этом в настройках вроде есть отключение управления через облако. Надо тестировать.
ColdSUN
07.08.2018 13:34+1Нет. Облако отключить не получится. Это конечно имеет свои минусы, но и имеет свои плюсы. Есть очень похожая железка: hubitat.com. Вроде часть разработчиков та же самая, но всё работает локально. Сам ещё не смотрел, только на форуме SmartThings сталкивался. Сейчас посмотрел, есть европейская версия. Для России конечно частоты отличаются, но всегда можно покупать только европейские Z-Wave устройства. Радиус действия маленький, вряд ли кто-то придёт. ZigBee по всему миру одинаковые частоты использует, так что тут без разницы.
Medox Автор
07.08.2018 13:46Думаю, в любом случае SmartThings не очень мне подходит, так как как все уже сделано на другом стеке. ZigBee у меня пока нет, не факт что появится, хотя устройства и стоят дешевле чем Z-Wave. И, я почти уверен, что в смысле автоматизации openHAB существенно мощнее чем SmartThings.
ColdSUN
07.08.2018 15:33Думаю, что в смысле автоматизации там будет почти паритет. Например webcore для SmartThings очень мощная штука. Однако openHAB имеет поддержку большего количества технологий. Плюс к тому на той же железке, где установлен openHAB можно крутить homebridge, для эмуляции homekit и подобные решения. Я же вынужден поднимать это всё на отдельном железе. С другой стороны, есть надежда на большую надёжность самого хаба от SmartThings по сравнению с DIY решениями.
Я вовсе не пытаюсь оспорить ваш выбор. Я хочу дать материал к размышлению людям, которые ещё не определились окончательно с платформой.Medox Автор
07.08.2018 16:44насчет DIY-решений. Нормально сделанный контроллер со стандартными комплектующими ничем не хуже в плане надежности промышленного решения. Например, у меня самодельный контроллер автоматического запуска генератора на Arduino работает 7 лет. И за это время завис кажется один единственный раз.
А вот в плане эстетики если не печатать корпуса самостоятельно на 3D-принтере, DIY конечно уступит промышленным решениям.
ColdSUN
07.08.2018 15:48ZigBee для меня интересен возможностью использовать относительно дешёвые сенсоры и кнопки от Xiaomi, а так же лампочки от Ikea и Philips Hue.
mkshma
06.08.2018 15:58Все юзкейсы умного дома выглядят настолько несерьезно, что выглядит это банально как игрушка и ничего более. Хотя любители поиграться, конечно, найдутся.
Medox Автор
06.08.2018 16:01Я решил одобрить отданный мне на модерацию комментарий. Он прекрасен. Сразу видно, что вы прочитали предыдущие три статьи, в которых рассказано, как и почему я пришел к тому, к чему пришел.
Очевидно также, что ваш умный дом гораздо умнее и юзкейзы неизмеримо серьезнее и получаете вы от него гораздо больше комфорта и прочих благ, чем автор статьи выше.
Не сомневаюсь также, что вы смогли описать ваш замечательный опыт простым и понятным языком и поделиться этими знаниями вам не составляет труда.
Medox Автор
06.08.2018 16:10Если же говорить об умном доме вообще, то да, все это от лукавого. Когда-то большинству людей было достаточно пещер, в которых не было даже водопровода с канализацией. Но с тех пор много что поменялось и продолжает меняться.
Можно этого не замечать.
Еще можно говорить, что Тесла — мыльный пузырь (ровно из той же оперы высказывание).
LumberJack
06.08.2018 18:29Именно эта «игрушка» сэкономила мне как-то порядка 45 000 рублей, вовремя оповестив о пропадании электричества зимой. Котлы и батареи нынче недёшевы.
iig
06.08.2018 22:14Там, где есть шанс замёрзнуть — лучше вместо воды использовать незамерзайку. Уведомление это хорошо, но когда в нем нет необходимости — прекрасно.
Medox Автор
07.08.2018 08:22Кроме разморозки системы отопления от замерзания пострадает также дом, причем не только водопровод, но и отделка. Так, что если дом — летняя дача, обшитая вагонкой, уведомления действительно не нужны. А если дом серьезный, то с этого начинается умный дом.
LumberJack
07.08.2018 13:50Некоторые шибко умные котлы имеют автоподпитку системы. В результате — ненулевой шанс получить разбодяженый теплоноситель. Конечно до температуры замерзания он не дойдёт, но какой тогда смысл в его использовании?
Doktorov
08.08.2018 11:23Отличный цикл статей. Сам пришёл к аналогичным решениям.
У меня сделано по аналогии, правда в квартире и не с таким масштабом. Всё на MQTT.
Выключатели везде Sesso, им танцы с бубнами не нужны, полностью совместимы с rc-switch.
Я полностью отказался от ардуинки в пользу ESP8266, цена та-же, а коннект по wifi уже есть.
Сейчас думаю автоматизировать гараж, выбираю в качестве контролера, либо ESP32 либо апельсинку с 2g. В качестве датчиков движения собираюсь использовать доплеровские.
По началу вытащил напрямую в инет весь сервис по белому айпи, но сейчас полностью перевёл всё на OpenVPN.
altrus
Согласно статистике у трети россиян туалет на улице, в форме деревянной кабинки. DIY.
Можно это как-то использовать в интернете вещей?
Areso
Думаю, да. Потому что следом, скорее всего, идет огород (системы полива). Да даже туалет, простите, можно автоматизировать… чтобы по датчику было понятно, когда вызывать ассенизаторскую машину. Кроме того, очень многие ставят датчики движения / объема для освещения. Можно придумать обратную связь, чтобы видеть, занята ли деревянная кабинка или нет прямо из дома.
altrus
Вы немножко неправильно представляете себе принципы работы сельского туалета.
С датчиком движения тоже промах — живность ходит по двору.
А занята «кабинка» или нет видно по внешнему запору.
trapwalker
Вы хотите сказать, что датчик должен показывать, когда сортир пора переставлять, а яму закапывать?
На счет этого умные дома тоже обычно обучают правильно реагировать. Если у вас по двору не ходит корова, то датчик вполне реально отрегулировать по чувствительности и зоне срабатывания. Правильно расположенный датчик не будет «видеть» ближнюю зону, где шныряют коты, а дальняя будет игнорироваться за счет отрегулированной чувствительности. Еще датчик можно поставить внутри кабинки и в совокупности с датчиком закрытия двери мы получим надежный источник информации о наличии присяжного заседателя на троне.
Положение щеколды — это хороший индикатор занятости для человека, но связывать с ней логику включения освещения не всегда хороший вариант. Да и некоторые, наверно любят держать дверь открытой=)
Кстати о щеколде. В качестве неё можно сейчас использовать старый айфон. У него есть датчик положения и беспроводный интерфейс, а заряжать можно раз в неделю.
natan555
о так и представил себе старый айрон побитый гвоздем посередине в качестве щеколоды-вертлюга. В вертикальном положении экран зеленый, а в горизонтальном — красный
LumberJack
Легко. Можно выводить на смартфон статус занятости туалета.
UA3MQJ
Можно даже вести трансляцию из кабинки )
Medox Автор
Конечно можно. Но, не нужно.
BelBES
В туалете типа "сортир" установка датчик загазованности — это просто must have...
trapwalker
Нормальный вайфай в сортире — вот мастхэв. Остальное от лукавого. Кратковременным отключением вайфая, кстати, можно форсировать свою очередь в кабину