IFTTT Filters: как создавать умные апплеты
IFTTT Filters (в разделе IFTTT Platform) добавляют условную логику в обычные «If This Then That» апплеты. В статье показано, как настроить фильтры, примеры кода для временных ограничений и случайного выбора цвета для ламп, рекомендации по отладке, ограничения публикации и чек-листы для запуска и тестирования.

Что такое фильтры IFTTT?
IFTTT (If This Then That) — сервис автоматизации, который связывает разные онлайн-сервисы и устройства: мобильные телефоны, колонки, умный дом, соцсети и тому подобное. В классическом апплете есть триггер («if this») и действие («then that»). Фильтры добавляют промежуточный слой: вы можете описать условия, при которых действие будет выполнено, изменить параметры действия или вообще отменить его.
Определение в одну строку: фильтр — это фрагмент JavaScript-кода, который выполняется при срабатывании триггера и позволяет условно запускать или модифицировать действия апплета.
Ключевые преимущества:
- Условная логика (срабатывание только при нужных условиях).
- Динамическая подстановка параметров (например, выбрать любимую песню или цвет лампы в зависимости от контекста).
- Возможность препятствовать выполнению действия (например, не включать музыку ночью).
Важно: фильтры пишутся на JavaScript и выполняются внутри платформы IFTTT. Для публикации апплетов с фильтрами требуется платный аккаунт IFTTT; для личного использования платный аккаунт не обязателен.
Как настроить фильтры в IFTTT Platform
- Откройте сайт IFTTT Platform (это раздел для разработчиков, но им могут пользоваться и обычные пользователи).
- Войдите в аккаунт и нажмите «Dashboard» в правом верхнем углу.
- Откройте раздел «Private Applets», чтобы увидеть свои приватные апплеты.
- Нажмите «New Applet» → «Create a new Applet», чтобы начать создание нового апплета.
Создание нового апплета: пример «включать музыку при возвращении домой»
Шаги (с комментариями):
Шаг 1: Выберите триггер
- Нажмите в поле «Search services» и найдите «Android Device» (или другой ваш девайс).
- Выберите триггер из выпадающего списка «Please select».
- В нашем примере выберите триггер «Connects to a specific Wi-Fi network».
- В поле «Field label» укажите имя домашней Wi‑Fi сети в поле «Value».
Это означает: апплет будет запускаться, когда ваше устройство подключается к указанной сети.
Шаг 2: Выберите действие, прежде чем добавить фильтры
- Добавьте действие через кнопку «Add action».
- В поле «Search services» выберите «Sonos» (или другой проигрыватель).
- В выпадающем меню «Please select» выберите «Play Favorite».
- Параметры «What favorite do you want to play?» и «Where do you want to play?» оставьте как «Customizable by the user» — это позволит заполнить их при подключении апплета к аккаунту.
- В блоке «Add filter code» можно вставить JavaScript-код фильтра (смотри разделы ниже с примерами).
- В конце заполните «Applet title» и «Applet description», нажмите «Save».
После сохранения вы увидите баннер «Applet Created».
Шаг 3: Включение и тестирование апплета
- Вернитесь на «Dashboard» → «Private Applets» — там появится ваш апплет.
- Нажмите на апплет, чтобы открыть окно настройки.
- Нажмите «Connect», введите значения (какой favorite, где воспроизводить, и т.д.).
- Нажмите «Save» — апплет готов.
Как писать фильтры — примеры и разбор кода
Фильтры — это JavaScript, выполняющийся при срабатывании триггера. Код может читать метаданные триггера (включая время пользователя) и управлять действиями. Ниже — два практических примера с пояснениями.
Пример 1: запускать апплет только в дневное время
Цель: не включать музыку ночью, чтобы не беспокоить соседей.
Корректный и понятный пример кода:
var currentHour = Meta.currentUserTime.hour();
if (currentHour >= 8 && currentHour < 22) {
// Разрешаем выполнение действия – ничего дополнительно делать не нужно
} else {
// Если время не подходит — отменяем выполнение действия
// В платформе IFTTT блок без явных вызовов может означать пропуск действия
}Пояснение:
- Meta.currentUserTime.hour() возвращает текущий час в часовом поясе пользователя.
- Условие currentHour >= 8 && currentHour < 22 означает «с 08:00 до 21:59». В дневное окно действие должно срабатывать.
- В зависимости от платформы, чтобы действительно предотвратить выполнение действия, нужно либо не менять поля действия, либо использовать предусмотренный механизм отмены (на платформе IFTTT это реализуется через механизм фильтров — оставляя ветку else пустой, вы тем самым не передаёте данные в действие). Если требуется явная отмена, смотрите документацию IFTTT Platform — механизм отмены может обновляться.
Важно: проверяйте поведение в своём аккаунте и тестируйте на реальном устройстве — разные сервисы могут по-разному трактовать пустые поля в фильтре.
Пример 2: выбрать случайный цвет для ламп Lifx
Пример взят из документации: выбираем случайный цвет из списка и устанавливаем его для ламп Lifx.
var colors = ["#FF8400", "#FF0000", "#15FF00", "#FF00D4", "#00D4FF", "#003CFF"];
var index = Math.floor(Math.random() * colors.length);
Lifx.color.setAdvancedOptions('color: ' + colors[index] + '; brightness: 1; duration: 12');Пояснение:
- Массив colors содержит цвета в HEX.
- Math.floor(Math.random() * colors.length) возвращает случайный индекс в пределах массива.
- Вызов Lifx.color.setAdvancedOptions устанавливает цвет, яркость и длительность перехода. Этот вызов зависит от интеграции Lifx в IFTTT; используйте именно те методы, которые доступны для вашей интеграции.
Дополнительные паттерны фильтров (идеи)
- Ограничение по дню недели: выполняйте действие только в будни или только по выходным.
- Фильтрация по содержимому: например, отправлять уведомление только если текст SMS содержит ключевое слово.
- Частотное ограничение (rate limiting): не выполнять действие чаще N раз в час.
- Модификация полей действия: подставлять персональные значения, конструировать текст уведомления с данными триггера.
Пример: выполнить действие только по будням:
var day = Meta.currentUserTime.dayOfWeek(); // 0 = воскресенье, 1 = понедельник, ...
if (day >= 1 && day <= 5) {
// выполняем
} else {
// пропускаем
}(Проверьте названия методов в текущей версии IFTTT Platform; пример демонстрирует идею.)
Отладка фильтров и советы по тестированию
- Тестируйте локально логикой: сначала реализуйте простое условие (всегда true/false), чтобы убедиться, что сам фильтр срабатывает.
- Используйте подробные описания в названии апплета и полях настроек, чтобы не запутаться при тестах.
- При случайном поведении временно выводите в лог значения (если платформа поддерживает логирование) или используйте простые тестовые действия типа отправки письма на свой адрес.
- Тестируйте на реальном устройстве: некоторые триггеры (например, подключение к Wi‑Fi) зависят от работы аппаратного уровня и могут отличаться на симуляторе.
Критические проверки при тестировании:
- Апплет не должен запускать действие вне заданных условий.
- Параметры действия корректно подставляются для каждого пользователя.
- Апплет корректно обрабатывает ошибки сервиса (например, недоступность Sonos или Lifx).
Ограничения и требования
- Публикация: только владельцы платных аккаунтов IFTTT могут публиковать апплеты с фильтрами. Бесплатные пользователи могут создавать и запускать фильтры приватно.
- Навыки: для реализации сложной логики необходимы базовые знания JavaScript. Без знания языка можно реализовать простые фильтры по шаблону, но гибкость будет ограничена.
- Зависимости: фильтр работает только в рамках наличия у триггера и действий необходимых метаданных. Например, если триггер не передаёт текст сообщения, вы не сможете фильтровать по его содержимому.
Когда фильтры не подойдут и альтернативы
Контексты, в которых фильтры IFTTT могут быть не лучшим решением:
- Когда нужно сложное состояние и хранение данных между срабатываниями (например, длительный лонг‑раннинг процесс). IFTTT Filters не предназначены для сложного stateful‑программирования.
- Если требуется строгий контроль логики с версионированием и CI/CD. Тогда лучше использовать серверные решения или платформы типа Node-RED, Home Assistant, AWS Lambda и т.д.
Альтернативы:
- Node-RED: визуальная среда для интеграций и обработки событий.
- Home Assistant: мощная платформа для локального управления умным домом.
- Zapier / Make (ранее Integromat): другие облачные сервисы автоматизации с собственными возможностями условной логики.
Модель принятия решения (heuristic)
Используйте фильтры IFTTT, если:
- Нужна быстрая автоматизация без разворачивания собственного сервера.
- Логика — простые условные проверки и небольшой JavaScript-код.
- Не требуется хранение состояния между срабатываниями или сложная оркестрация.
Выбирайте серверное/локальное решение, если:
- Требуется надёжное хранение состояния и транзакционность.
- Есть жёсткие требования по безопасности и аудиту.
Мини-методология: как подойти к созданию фильтра (шаги)
- Сформулируйте требование в одном предложении (например: «Включать музыку при подключении к домашней Wi‑Fi сети с 08:00 по 22:00»).
- Определите триггер и действие в IFTTT.
- Составьте простой псевдокод условия.
- Напишите фильтр на JavaScript по шагам: проверка времени → проверка дополнительных условий → модификация полей действия.
- Протестируйте в приватном апплете на реальном устройстве.
- При успешных тестах заполните описание и публикуйте (требуется платная подписка).
Роль‑ориентированные чек-листы
Для разработчика/интегратора:
- Выбрал корректный триггер.
- Определил поля, которые передаёт триггер.
- Написал и протестировал фильтр в приватном режиме.
- Протестировал на устройстве/сервисе целевой интеграции.
Для конечного пользователя (при подключении апплета):
- Указал свой Wi‑Fi/учётные данные, если требуется.
- Проверил, что права доступа для устройства/сервиса предоставлены.
- Тестировал апплет и подтвердил ожидаемое поведение.
Критерии приёмки
Апплет с фильтрами считается принятым, если:
- Корректно срабатывает в целевом временном окне и не срабатывает вне него.
- Параметры действия подставляются верно для разных входных значений.
- В случае ошибки внешнего сервиса (Sonos/Lifx) происходит ожидаемая обработка (например, повтор или логирование).
- Поведение описано в документации апплета и понятно пользователям.
Тестовые случаи и приёмочные сценарии
- Подключение к сети дома в 09:00 — ожидаемый результат: музыка включается.
- Подключение к сети дома в 23:00 — ожидаемый результат: музыка не включается.
- Ошибка доступа к Sonos (без разрешений) — ожидаемый результат: апплет не падает, в настройках видно ошибку подключения.
- Случайный выбор цвета Lifx — повторный запуск даёт вариативность (проверить, что выбранный цвет входит в набор).
Безопасность и конфиденциальность
- Доступы: при добавлении сервисов (Sonos, Lifx, Android) вы выдаёте токены доступа. Храните контроль над учетной записью и регулярно проверяйте разрешения.
- Локальные данные: если вы используете геолокацию или данные о сети (Wi‑Fi SSID), учитывайте приватность домочадцев.
- GDPR и согласия: если апплет обрабатывает данные других людей (например, SMS от других абонентов), убедитесь в соответствующих юридических требованиях и получении согласий.
Заметки по безопасности:
- Не вставляйте секреты и пароли прямо в код фильтра.
- При использовании сторонних библиотек или интеграций читайте их политику безопасности.
Типичные проблемы и способы их устранения
Проблема: апплет с фильтром срабатывает не так, как ожидалось. Решение: упростите фильтр до базовой проверки «true/false», последовательно усложняйте логику и проверяйте поведение.
Проблема: фильтр срабатывает, но действие получает пустые поля. Решение: проверьте, какие поля передаёт триггер; убедитесь, что вы не перезаписываете их в фильтре ненароком.
Проблема: необходимо опубликовать апплет, но нет платного аккаунта. Решение: приобретите соответствующий план IFTTT или оставьте апплет приватным для личного использования.
Часто задаваемые вопросы
Какой уровень JavaScript нужен для работы с фильтрами?
Достаточно базовых знаний: условия (if), массивы, Math.random и умение читать документацию IFTTT Platform по доступным объектам и методам.
Нужен ли платный аккаунт, чтобы пользоваться фильтрами?
Для личного использования фильтры можно создавать бесплатно. Для публикации и шаринга апплетов с фильтрами требуется платный аккаунт IFTTT.
Можно ли хранить состояние между срабатываниями фильтра?
IFTTT Filters не предназначены для сложного stateful‑хранения. Если нужна долговременная память между событиями, рассмотрите внешнее хранилище или серверную логику.
Как отладить фильтр, если действие не выполняется?
Упрощайте фильтр, проверяйте значения времени и параметров триггера, тестируйте на реальном устройстве и используйте простые тестовые действия (например, отправка email).
Краткое резюме
- Filters в IFTTT Platform дают гибкость и позволяют добавлять условную логику в апплеты.
- Для написания фильтров нужен JavaScript и базовое понимание доступных полей триггера.
- Тестируйте в приватном режиме, следите за безопасностью токенов и ограничениями публикации.
Спасибо за внимание — используйте фильтры, чтобы сделать ваши автоматизации более умными и контекстно‑чувствительными.
Похожие материалы
Бесплатный Xbox Game Pass через Microsoft Rewards
Как написать эффективную страницу «О себе» для портфолио
Создать визитку в Canva: пошагово и профессионально
NPER в Excel — число периодов выплат
Конвертация WebP из DALL·E 3 в PNG или JPEG