"Бомж" Умный дом, финальная настройка системы. Часть 4

29 апреля 2019, 19:25

В предыдущих сериях...

Когда-то в юности с заворожением смотрел Star Trek и Babylon 5, где автоматизированные системы корабля следили за уровнем кислорода, двери кают открывались для членов экипажа автоматически, включая освещение и мягкую музыку. С тех пор прошло уже достаточно времени, и теперь все эти технологии автоматизации стали доступны и до безобразия просты в интеграции. Самое важное в умном доме - это логика его работы, то, как все системы взаимодействуют друг с другом с одной лишь целью - сделать нашу жизнь проще, комфортней и безопасней. Для этого не нужны космические технологии. Все, что для этого нужно  - это лишь желание, умный дом для себя сделать не сложно и это может каждый. Статья получилась немного длинной, но я решил не дробить ее на две части, приятного прочтения!

Domoticz, первоначальная настройка

В качестве системы управления умным домом я выбрал Domoticz, главным образом из-за простоты настройки и гибкого языка скриптов DzVents, специально заточенного для написания логики умного дома. Приступим к настройке. Для начала установим современную тему Machinon  и службу автоматического обнаружения и добавления новых устройств для Domoticz.

cd /home/smarthomeless/domoticz/www/styles
git clone https://github.com/EdddieN/machinon-domoticz_theme.git machinon
cd /home/smarthomeless/domoticz/plugins
git clone https://github.com/emontnemery/domoticz_mqtt_discovery.git
sudo systemctl restart domoticz

Применяем тему в настройках. Если до этого Domoticz запускался в браузере, необходимо предварительно очистить кэш. Дальше нам необходимо создать план дома. Это можно сделать в любом дизайнере помещений (я нарисовал тестовую квартиру в Home Design 3D), графическом редакторе, отсканировать план квартиры, который передал застройщик либо просто дать своему ребенку лист бумаги, карандаш и попросить нарисовать вашу квартиру - как видит это он =). Далее идем в настройки -> план комнаты -> план помещения, добавляем новый план, загрузив нашу картинку. Пришло время добавить оборудование. Для этого открываем Настройки -> оборудование и добавляем следующие элементы:

Dummy - виртуальные элементы, MQTT - необходим для подслушивания всего того, что о нас думают наши датчики, Weather - служба прогноза погоды (она может понадобится в системе поддержания микроклимата), можно также подключить внутренние датчики апельсинки для того, чтобы следить за динамикой использования ресурсов и температурой. Для включения MQTT Discovery Service на нашей ESP необходимо зайти в веб интерфейс ESP8266 в браузере и ввести в консоле команду publish sonoffs/cmnd/SetOption19 1. После этого наша ESP перезагрузится, в меню Domoticz Настройка -> Устройства автоматически подтянутся все наши подключенные датчики и реле. Easiest!

В поле Имя отображается "дружественное имя", которое для удобства можно поменять в настройках прошивки Sonoff-Tasmota в меню Конфигурация -> Конфигурация прочее. Все, что теперь нам нужно - это уточнить спецификацию устройств. Мы помним, что первый переключатель - это датчик дыма,  заходим в редактирование датчика и выбираем тип переключателя Smoke Detector, сохраняем. Второй переключатель у нас датчик движения, аналогичным образом выбираем тип переключателя Motion Sensor. Третий переключатель связан с реле, он будет в системе управления умным домом подключен к вентилятору. Здесь нам нужно только поменять для него значок на Fan. К четвертому выключателю будет подключен увлажнитель - меняем значок на Water. Пятый - это датчик протечки, для него так же выберем значок Water. Что у нас вышло?

Все на месте, при срабатывании датчика проходит индикация в Domoticz, при нажатии на элементы управления - переключение физических реле. Красота! Теперь нам нужно красиво разместить все наши элементы на плане помещения. Для этого заходим в настройки -> план комнаты, нажимаем добавить план и выбираем его. Снизу появится список устройств, которые можно добавить. Добавляем поочередно все, что нам понадобится. Далее идем в меню план помещения, выбираем наш ранее созданный план. Все добавленные в комнату устройства отображаются слева, все что нам нужно - это перетащить их в нужное место в комнате. 

Здесь я добавил несколько дополнительных устройств, а также создал виртуальный селекторный переключатель Radio, уточнив его спецификацию как Media Player и элемент "Уровень громкости" для управления уровнем звука в нашем доме. Пора двигаться дальше. 

Где логика?

Пришло время поработать немного над интеллектом нашего дома. Какие системы у нас будут работать на данной сборке?

  • Система поддержания микроклимата
  • Система управления освещением
  • Система безопасности
  • Мультимедиа система

Сценарии:

  • Я пришел / Я ушел
  • Ночь / Утро / Вечер
  • Пожар / Авария
  • Проникновение

Итак, приступим. Для создания автоматизации заходим в настройки -> события, там создаем событие iCame, выбираем триггер Device - Domoticz, который сразу подгрузит нужный нам шаблон. В данном сценарии у нас будет участвовать устройство Entrance door, при ее открытии загорается свет в прихожей и включается мягкая музыка с уровнем громкости 60%. 

return {
on = {
devices = {
            'Entrance door'
}
},
execute = function(domoticz, door)

    if (door.state == 'Open') then 
          domoticz.devices('Hallway Light').switchOn() 
          domoticz.devices('Volume Control').dimTo(60)
          domoticz.devices('Radio').switchSelector(10)
   end

end
}

Сценарий iLeft. В данном сценарии будут участвовать датчики движения и вызываться оно будет по таймеру каждые полчаса. 

return {
on = {
timer = {
            'every 30 minutes'
        }
},
execute = function(domoticz)
    
        if (domoticz.devices('Motion Sensor').lastUpdate.minutesAgo > 60) then 
            domoticz.groups('Light').switchOff()
            domoticz.groups('Appliances').switchOff()
        end

end
}

Если датчик не обнаруживает движения в комнате более, чем 60 минут, наш дом понимает, что никого нет и выключает группу освещения и бытовых приборов. Скрипт прекрасно работает и в случае, если вы просто задремали. Добавить устройства в группы можно в меню сцены, выбрав тип "группа". Для точности срабатывания сценария можно добавить в качестве условия другие датчики движения/касания, ограничить выполнение скрипта определенным временем. Самое точное срабатывание происходит по геозонам, т.е. когда вы действительно ушли из заданных координат. Задать геозоны можно в приложении Pilot Home Control

Сценарий Ночь / Утро. Хотите засыпать под звуки океана, а просыпаться под пение птиц? С умным домом это возможно! В качестве триггера у нас будет выступать виртуальный переключатель Night (создается как Dummy устройство). 

return {
on = {
devices = {
'Night'
}
},
execute = function(domoticz, switch)
    if (switch.state == 'On') then

            domoticz.groups('Light').switchOff()
            domoticz.groups('Appliances').switchOff()
            
            domoticz.devices('Volume Control').dimTo(10)
            domoticz.devices('Radio').switchSelector(30)
            domoticz.devices('Volume Control').switchOn().forMin(15)

   end
end
}

При включении переключателя Night отключается свет и бытовые приборы (как в сценарии "я ушел"), включается потоковое вещание шума океана. Уровень громкости устанавливается на 10%, функция forMin() задает таймер отключения.  При активном переключателе Night, свет дома не будет включаться, даже если датчик движения будет активен. После выключения ночного режима, свет в доме будет работать в обычном режиме. Сценарий GoodMorning активируется по таймеру в рабочие дни: сначала включается потоковое вещание утреннего пения птиц, затем, через 15 минут, включается свет в доме. Как вам такой умный будильник? Если к изголовью кровати подключена светодиодная лента, можно настроить "умное пробуждение", моделируя восход солнца, когда тон цвета плавно меняется с красных оттенков на теплые, планомерно наращивая яркость. Получится "умная кровать"! 

return {
on = {
timer = {
            'at 06:45 mon,tue,wed,thu,fri'
        }
},
execute = function(domoticz)
    
        domoticz.groups('Light').switchOn().afterMin(15)

        domoticz.devices('Volume Control').dimTo(10)
        domoticz.devices('Radio').switchSelector(30)
        domoticz.devices('Night').switchOff()

end
}


Сценарии Пожар / Авария. Сценарий Пожар активируется датчиками дыма, протечки и является частью системы безопасности. К сожалению все, что мы можем в данной сборке - это информирование о произошедшем событии. Однако, если добавить вот такой кран на электрическом управлении - получится система защиты от протечки! Я себе сделал такую. Итак, вернемся к нашему дому. Информировать нас о важных событиях Domoticz может через e-mail, push уведомления либо с помощью Telegram. Подключить службу оповещения можно в настройках системы Domoticz. Пример скрипта:

return {
on = {
devices = {
'Smoke Detector',
'Water Leak'
}
},
execute = function(domoticz, device)

    if (device.name == 'Smoke Detector') 
        then domoticz.notify('Система безопаности', 'Аааа... дом в огне! Копируюсь в облако!', domoticz.PRIORITY_EMERGENCY) end

    if (device.name == 'Water Leak') 
        then domoticz.notify('Система безопаности', 'Обнаружена протечка в санузле.', domoticz.PRIORITY_EMERGENCY) end

end
}

В данном случае в сценарии участвуют сразу два триггера и скрипт вызывается каждый раз, когда срабатывает хотя бы один из них. Для того, чтобы система распознавала сработавшее устройство и реагировала на них по-разному, введена проверка по имени инициатора. Для сценария Проникновение также предусмотрено информирование. 

return {
on = {
devices = {
'Entrance door',
'Loggia door',
'Window'
}
},
execute = function(domoticz, device)

    if (domoticz.time.matchesRule('at 8:00-18:00 on mon,tue,wed,thu,fri'))
        then domoticz.notify('Система безопаности', 'Обнаружено проникновение в дом!', domoticz.PRIORITY_EMERGENCY) end

end
}

В этом сценарии триггерами являются источники возможного проникновения - входная дверь, дверь лоджии, окно. Обычно, при срабатывании такого сценария, включается веб камера и снимок с камеры отправляется на e-mail. Выполнение информирования ограничено временем предположительного отсутствия хозяев. Как и в примере сценария "Я пришел", скрипт будет более корректно срабатывать при отслеживании нашего местоположения по геотегам. 

Система поддержания микроклимата. В данной автоматизации в качестве триггеров будут использоваться датчики температуры и влажности, также дверь на балкон. Скрипт выглядит так: 

return {
on = {
devices = {
'Room TempHyum',
'BathRoom TempHyum',
'Loggia Door'
}
},
execute = function(domoticz, TH)
    if (domoticz.devices('Motion Sensor').lastUpdate.minutesAgo < 60) then

      if (domoticz.devices('Room TempHyum').temperature > 24) then 
        domoticz.devices('Fan').switchOn() else domoticz.devices('Fan').switchOff()
      end

    if (domoticz.devices('Room TempHyum').humidityStatusValue == domoticz.HUM_DRY) then 
        domoticz.devices('Humidifier').switchOn() else  domoticz.devices('Humidifier').switchOff()
    end
        
    if (domoticz.devices('Loggia Door').state == 'Open') then domoticz.devices('Humidifier').switchOff() end
    
    if (domoticz.devices('BathRoom TempHyum').humidityStatusValue == domoticz.HUM_WET) then 
      domoticz.devices('BathroomFan').switchOn() else domoticz.devices('BathroomFan').switchOff() end
end
    
end
}

Если дома жарко, то включается вентилятор, и выключается, когда температура понизится естественным способом. Если дома сухо, включается увлажнитель, выключается он автоматически, когда дома станет комфортно. Если открывается дверь в лоджию, система автоматически отключает увлажнитель. Если в ванной комнате становится влажно, включается принудительная вытяжка. Все эти действия выполняются только в присутствии дома людей, для этого отслеживается активность датчиков движения. 

Система управления освещением. Система будет состоять из двух модулей: первый модуль будет включать свет, второй модуль будет отключать свет. В качестве триггеров  будут использоваться датчики движения. 

return {
on = {
devices = {
'Motion Sensor',
'Motion Sensor Hallway'
}
},
execute = function(domoticz, MotionSensor)
    
    if (domoticz.devices('Night').state == 'Off') then
    
    if (MotionSensor.name == 'Motion Sensor' 
        and domoticz.devices('Room Lux Sensor').lux < 25) then domoticz.devices('Room Light').switchOn() end 

    if (MotionSensor.name == 'Motion Sensor Hallway' 
        and domoticz.devices('HallWay Lux Sensor').lux < 35) then domoticz.devices('Hallway Light').switchOn() end 

    end
end
}
return {
on = {
timer = {
            'every 30 minutes'
        }
},

execute = function(domoticz)

    if (domoticz.devices('Motion Sensor').lastUpdate.minutesAgo > 30) then domoticz.devices('Room Light').switchOff() end 

    if (domoticz.devices('Motion Sensor Hallway').lastUpdate.minutesAgo > 30) 
      then domoticz.devices('Hallway Light').switchOff() end 

    end
}

Первый скрипт включает свет в зоне работы датчика движения, но только в том случае, если дома темно. Второй скрипт запускается по таймеру каждые полчаса и опрашивает датчик движения, если движение не фиксируется в зоне покрытия датчика в течение 30 минут, тогда свет выключается. Тайминги и уровни освещенности настраиваются индивидуально. 

Мультимедиа система. Для воспроизведения музыки будем использовать mpd сервер, настроенный в части 2 данного цикла статей. Для начала нужно создать несколько скриптов для управления потоковым воспроизведением из Domoticz. Создаем файл mpcstop.sh с содержимым:

#!/bin/bash -x
mpc stop

Данный скрипт останавливает воспроизведение музыки. Нам понадобится еще несколько скриптов для запуска потокового вещания. 

#!/bin/bash -x
mpc stop
mpc clear
mpc load nature
mpc play

Скрипт останавливает воспроизведение, очищает плейлист и загружает новый. Сами плейлисты хранятся в ранее сконфигурированной папке. Скачать нужный плейлист можно из огромной базы потокового вещания SHOUTcast, а можно просто загрузить свои любимые альбомы на апельсинку и создать для них плейлисты. Добавляем наши скрипты в ранее созданный элемент Radio.  

Теперь осталось прописать логику работы плеера в Domoticz. 

return {
on = {
devices = {
'Volume Control',
'Radio'
}
},
execute = function(domoticz, volume)
    if (volume.name == 'Volume Control' and (volume.state == 'Off' or volume.level == 0)) then 
      domoticz.devices('Radio').switchSelector(0) 
        else
            if (volume.name == 'Volume Control') then domoticz.utils.osExecute("mpc volume ".. volume.level) end
        end
    
    if (volume.name == 'Volume Control' and (volume.state == 'On' or volume.level ~= 0)) then 
      domoticz.utils.osExecute("mpc play ") end
    
-- корректировка состояния уровня громкости при внешнем управлении
    if (volume.name == 'Radio' and volume.level ~= 0) then domoticz.devices('Volume Control').switchOn().silent() end
    if (volume.name == 'Radio' and volume.level == 0) then domoticz.devices('Volume Control').switchOff().silent() end

end
}

Ну вот и все... или нет?

Привет, Siri!

Ну какой же умный дом без голосового ассистента. Некоторые до сих пор считают, что умный дом - это когда хлопаешь в ладоши и свет включается. Нет! Это далеко не так, умный дом не должен заставлять вас прихлопывать и причмокивать, умный дом должен работать полностью в автоматическом режиме, как космический корабль! Пришло время познакомить наш "Бомж" Умный дом с Siri. Для добавления нашей сборки в HomeKit устанавливаем Homebridge. 

sudo curl -sL https://deb.nodesource.com/setup_12.x | bash -
sudo apt install -y nodejs
sudo npm install -g --unsafe-perm homebridge
sudo npm install -g homebridge-edomoticz
homebridge

Если все прошло успешно, то в консоли терминала мы увидим QR код, приглашающий подключить homebridge к Homekit. Но пока рано, необходимо сконфигурировать HomeBridge для работы с Domoticz. Нажимаем Ctrl-C, вводим следующую команду: 

sudo nano ~/.homebridge/config.json

И заменяем содержимое файла на:

{
    "bridge": {
        "name": "Homebridge",
        "username": "42:22:15:18:EA:B6",
        "port": 51826,
        "pin": "123-44-321"
    },
    "description": "Configuration file for (e)xtended Domoticz platform.",
    "platforms": [
        {
            "platform": "eDomoticz",
            "name": "eDomoticz",
            "server": "<Domoticz username>:<password>@127.0.0.1",
            "port": "8080",
            "ssl": 0,
            "roomid": 2,
            "mqtt": 1
        }
    ],
    "accessories": []
}

В качестве username вставляем mac адрес нашей апельсинки. Pin - это пароль для Homebridge, позволяющий добавить устройства в ручном режиме. Для запуска homebridge при старте системы нужно выполнить еще пару действий. 

sudo nano /etc/systemd/system/homebridge.service

Вставляем следующее содержимое:

[Unit]
        Description=Node.js HomeKit Server
        After=syslog.target network-online.target

[Service]
        Type=simple
        User=smarthomeless
        EnvironmentFile=/etc/default/homebridge
        ExecStart=/usr/bin/homebridge /home/smarthomeless/.homebridge
        Restart=on-failure
        RestartSec=1m
        KillMode=process

[Install]
        WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable homebridge
sudo systemctl start homebridge

Все! Теперь наш Homebridge действительно готов для добавления в HomeKit! Все сконфигурированные устройства Domoticz добавятся автоматически, вам нужно лишь дать им более понятное для вас имя и выбрать отображаемый устройством значок (при необходимости). Теперь нам доступно не только голосовое управление, мы можем создать сценарий "доброе утро" и "спокойной ночи", указав в качестве действия выключение или включение ранее созданного переключателя Night. После этого стоит только сказать "Привет, Siri! Спокойной ночи!" как свет тут же погаснет, а Siri пожелает нам доброй ночи, а после пробуждения - удачного дня. В HomeKit можно настроить отслеживание геолокации - так наш умный дом поймет, что мы покинули его и отключит свет и бытовые приборы. 

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

Спасибо всем, кто поддерживал лайками и оставлял комментарии на протяжении всего цикла статей, я делал это для вас. 


Все новости мира умных домов - t.me/SprutAI_News

Остались вопросы? Мы в Telegram - t.me/soprut

Хочешь умный дом но нет времени разбираться?
Посмотри примеры работ и выбери себе интегратора.
  1.  Георгий Александрович (Georgy_Benelli)

    Отличный цикл статей.Думаю многим пригодится.Со временем ждем 2й сезон:)

  2. (maikl)
    (maikl) 5 месяцев назад

    Спасибо за статью. Она дает представление как система создается и реализуется в жизни.
    Как вы сделали управление тв? Как управляется освещение? К выключателям провели ноль?

    • Антон Киселёв (Whilser)
      Антон Киселёв (Whilser) 5 месяцев назад

      Вообще, всеми приборами с ИК портом (в т.ч. и кондиционером) я управляю с помощью Broadlink, подойдет версия Mini, большинство ламп у меня "умные", к ним не нужен ноль в выключателе. Есть группы с обычными светодиодными лампами, для них я за гибсокартоном спрятал реле с ESP, ноль не нужен и в этом случае в выключателе - он просто всегда включен, свет управляется автоматически. 

К списку статей

Скидки для сообщества

УЮТНЫЙ ДОМ

+7 495 797-21-74
Промокод:
SPRUT
Размер скидки:
5%

Z-Wave Ukraine

+380 68 641 9670
Промокод:
Sprut-UA
Размер скидки:
15%

Интернет-магазин yourhomekit.ru

+7 914 550-51-11
Промокод:
SPRUT-BLG
Размер скидки:
8%
Cамый большой ассортимент в России аксессуаров Apple HomeKit

LifeControl

+7 495 240-81-01
Промокод:
sprut10
Размер скидки:
10%
На весь ассортимент Lifecontrol

Похожие статьи

17 июня 2019, 13:00
HomeKit - это программный framework от компании Apple, который позволяет пользователям iOS, macOS, watchOS и tvOS устройств управлять умными аксессуарами в доме, как через приложение "Дом", так и через голосовой ассистент Siri. Тем самым, делая ваш дом умным. При помощи Apple TV (tvOS) и HomePod управление возможно, но пока только на английском языке через Siri.
29 декабря 2018, 07:22
Ну что, в канун Нового года. Предлагаю небольшой провокационный список. Не надо его рассматривать как руководство к действию - это мои "мысли на тему". Позитива не ждите, но может кто-то сделает ответочку в позитивном стиле.
03 апреля 2019, 04:29
Разбираем простейшую задачу по электрическому подключению светодиодной ленты к источнику питания и управлению через Умный дом.
04 апреля 2019, 08:22
Личная жизнь мешает увлечению "умным домом"? Есть решение!
09 января 2019, 17:34
Небольшая статья о том, зачем нужна малина, почему автоматизации в HomeKit это не очень хорошо и чем USB стик лучше отдельного шлюза.
25 ноября 2018, 18:23
Умное зеркало добавляем модули Airplay и Google Calendar
04 апреля 2019, 17:48
Расскажу о том за ~1 час перевезти УД с 2мя USB стиками с Raspberry PI на Synology NAS.
11 марта 2019, 20:13
Пользование устройствами начального уровня, такие как лампы, датчики, мойка и пылесос. Опыт эксплуатации и мнение на счет необходимости покупки устройств.
01 августа 2019, 08:10
DIY Система полива
06 сентября 2019, 17:03
Кладём на лопатки NodeRed и HomeAssistant с помощью iOS 13.1 и Siri Shortcuts.