Статья

Кладём на лопатки NodeRed и HomeAssistant с помощью iOS 13.1 & HomeKit

Многие используют HomeKit, но ещё многие ругают его за куцые автоматизации, и с гордо поднятой головой рассказывают (-ли), как они умеет включать свет через 3 часа 33 минуты после рассвета, или мигать лампочками, ну и ещё всякими бесполезными вещами. Нет, может оно и полезно, и зачастую нужно, но хотите ли вы вникать синтаксис nodeJS или JavaScript? А может вы хотите написать автоматизацию в блокноте (ниже, как пример, автоматизация HomeAssistant)?

- alias: 'ESP Button Lights' trigger: - platform: state entity_id: binary_sensor.matt_lights to: 'on' - platform: state entity_id: binary_sensor.matt_lights to: 'off' action: service: switch.toggle entity_id: - switch.matts_bed_lamp - switch.matts_desk_light

Думаю, что у большинства простых обывателей, накупивших недорогих HomeKit аксессуаров, волосы встанут от количества нужных статей (например, 10 штук), которые им необходимо будет прочитать, не считая других мануалов и примеров, чтобы только установить и настроить одну/две автоматизации в HomeAssistant.

Или сутками «торчать» в чате NodeRed, чтобы задать ещё кучу вопросов, получив пример от другого, более опытного пользователя в чате. Безусловно, NodeRed хорош, если нужно из реле сделать ворота, или из геркон - датчик движения. А ещё он хранит переменные (значения, которые можно передавать между автоматизациями). Но на этом основные преимущества для HomeKit заканчиваются.

В iOS 13 Apple дала возможность использовать Shortcuts, или Быстрые Команды, в связке с HomeKit. Возможно, кто-то уже был ранее с ними знаком. Кто-то писал свои, или использовал написанные другими. На их основе сделано множество отличных «приложений», от простых, вроде скачать видео с YouTube, или планировщика Cron внутри iOS.

Но сегодня мы научимся писать свои сложные автоматизации, используя только HomeKit, тратя на это в десятки раз меньше времени и сил, чем в других системах. Также не потребуется больше ничего, кроме этой статьи. Если же это покажется вам сложным, я рекомендую вам погрузиться в дебри HomeAssistant и зайти сюда вновь через месяц, когда вы освободитесь.

Итак. Любая автоматизация включает в себя такие базовые вещи, как:

  • Триггер. Событие, после которого будет стартовать наша автоматизация.
  • Условия. Некие ограничения, которые не будут давать старт нашей автоматизации, если не соблюдены все условия.
  • Сценарии. Само действие, например - включить свет.

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

Теперь придумаем первый «сложный» (ранее недоступный в HomeKit) сценарий. Например.

Хотим, чтобы вытяжка в ванной комнате включалась при превышении влажности 75%, при условии, что закрыта дверь. Отключалась - при условии, когда влажность ниже 75%, или открыта дверь. Также хотим получить в телеграмм уведомление о том, что кто-то начал и закончил мыться.

Создавайте автоматизацию, выбираете любой триггер, на выборе аксессуаров в самый низ - Преобразовать в быструю команду.А далее - просто посмотрите видео. Не нужно описывать такие простые действия, как создание автоматизации в HomeKit. Посмотрите один раз и попробуйте создать свою. У вас должно получиться:

Посмотрели? Теперь пройдёмся по важным моментам.

После изменения триггера в программе Home, автоматизация будет запускаться каждый раз, как будет изменятся влажность. Первое условие Если - проверяет, включена вытяжка или нет, и если включена, переходит к проверке следующего условия - закрыта ли дверь. Если и дверь закрыта, останется проверить влажность. Если она опустилась ниже 75, то остаётся выключить вытяжку и отправить уведомление в Telegram.

Если же вытяжка выключена, опять проверим условие влажности. Если значение больше 75, проверим дверь, и если она закрыта - запустим вытяжку и отправим уведомление в Telegram. Если у вас есть Sonoff iFAN, можно усложнить сценарий, включая разные режимы, в зависимости от нужных вам порогов влажности.

На видео не хватает некоторых данных, а именно, URL и chat_id. Последнее - это ID чата, или ваш ID (ник), в зависимости от того, куда вы хотите получать уведомления.

URL - https://api.telegram.org/botTOKEN/sendMessage, где слово TOKEN замените на токен, который вы получите от @BotFather для созданного вами бота (для создания нужно указать имя и ник) и все, токен у вас.

Отличительная особенность выполнения быстрой команды - последовательное выполнение всех действий. Добавляя новые условия, вы каждый раз сможете запускать ее для проверки и смотреть на результат (да, не нужно читать логи и мануалы, что означает та или иная ошибка). Действие или будет выполнятся, или нет, с паузой на том моменте, с которым возникают проблемы.

Теперь немного поговорим о возможностях. Если вы хотите включать вашу вытяжку в зависимости от влажности в Зимбабве, то на это действие у вас уйдёт не более 5 минут, без изучения различных языков программирования. Воспользуйтесь компонентами - Получить содержимое URL, получить словарь, получить значение словаря (расположите их последовательно), а ещё лучше, воспользуйтесь приведённым ниже примером:

https://www.icloud.com/shortcuts/3e6c78475f86443599ca93417bb863b2В

В нем мы в несколько действий извлечём влажность для нужного с API Яндекс Погоды, и далее, на основе ее, вы сможете построить свой сценарий.

Также есть множество вариантов работы с геопозицией, подробным прогнозом погоды, перевода текста, обработки фотографий, и многое, многое другое. У вас даже получится диммировать лампу, просто нажимая простую круглую кнопку Xiaomi.

Конечно, это самая малая часть новых автоматизаций в HomeKit, и мы попробуем уложить все самые сложные сценарии в три статьи, и при этом, больше будем говорить о глобальных вещах, чем о рутине, чем не могут похвастать монструозные HomeAssistant и NodeRed.

Также в качестве примера посмотрите ещё пару видео, где демонстрируются возможности быстрых команд, которые вы с легкостью сможете внедрить в свои автоматизации HomeKit.

Опрос камеры в комнате на наличие людей (лиц) и выдача результата:

Опрос счетчика и отправка всех расчетов в Telegram:

Если Вам интересны примеры этих команд, обращайтесь в сообщество, я пришлю вам доработанные под ваши условия команды!


Хорошая статья, найдутся последователи. Но насчет Node Red так и не переубедил, но тем не менее Спасибо.

😱наконец-то.  Отличная статья. Подписался на канал

Приложения Home и Дом - это одно и тоже?

Я тоже не понял

да, конечно, оно же Homekit

Супер статья, а то не знал с какой стороны подходить к этим автоматизациям.

Супер. У вас ссылка на icloud не рабочая. А можно забубенить сценарий чтоб включался свет при срабатывании датчиков но в определенной последовательности, например с начала датчик открытия двери, а потом датчик движения? Жду не дождусь ios 13, не хочу бету ставить. 

А еще вопрос, а как вы Sonoff iFAN в homekit пробросили, прошивка? Какая?

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

через телегу быстрее узнал. автор подсказал что связка через Tasmota

И похоже нужна уже отдельный чат в telegram для автоматизаций через команды в ios13. Чтоб там все делились

Перестали работать быстрые команды, записываются и при нажатии на протестировать действие выполняются. А дольше не работают( может знает кто в чём дело

Я тут сижу второй день, не могу ладу дать! Спасибо тебе мил человек - та же проблема!

Подскажите пожалуйста, а вместо телеграмм можно вывести уведомление с триггера на телефон? Уже двое суток пытаюсь)

Есть триггер - датчик температуры (zeegbee) aqara. в homekit.  как при понижении до определённой темп послать уведомление в iPhone?

У меня попытки подружиться с автоматизациями оборвались на близкой к невозможному выставлению точной яркости и температуры программно, т.е. в зависимости от освещения за окном, например. Сложная реализация прогрессивного таймера. А уж то, что сами автоматизации работают, как звёзды сойдутся, это вообще отдельная песня. Наверное, последнее, даже более решающее. Средств для отладки тоже никаких нет, т.е. при сложных автоматизациях, это тот ещё адок, гораздо, на порядки хуже любых ha yaml или node-red.

Добрый день! Большое спасибо за Ваши статьи! Они очень полезны. Попытался сделать небольшую автоматизацию по Вашим инструкциям и столкнулся с проблемой которую уже третий день не могу победить. Может Вы мне поможете. Если я создаю автоматизацию через HomeKit (датчик обнаружил открытие двери и через быструю команду отправляет сообщение в телеграмм) то при отправке сообщения выдаётся ошибка «Не удалось найти сервер с указанным именем хоста», при этом если я просто создаю быструю команду и запускаю ее, то все работает и в телеграмм приходит сообщение. В чем может быть проблема? И ещё один вопрос, а можно как-то в HomeKit вызвать на исполнение уже готовую и сохранённую быструю команду?


Вернуться назад
Вернуться назад