Сразу оговорюсь, что ни в коем случае не рекомендую данное устройство к покупке (ужасно шумное и качество изготовления ниже плинтуса), но, уж если у вас такой зверь есть — эта статья для вас, т.к. поможет вам хоть немного сэкономить ресурс барабанных перепонок и нервов.
Для чего все это нужно
Собственно, заниматься всем этим безобразием меня вынудил сам бризер, т.к. уровень шума, который он создает в «свободном плавании» (управление по уровню CO2 от Magic Air), просто невыносим для нас с супругой. Благодаря реверс-инжинирингу протокола обмена Magic Air с облаком мне удалось следующее:
- Получать показания всех датчиков бризера (скорость, температура входящеговыходящего воздуха, режим и т.д.) и Magic Air (уровень CO2, температура, влажность).
- Управлять бризером как в ручном режиме (скорость), так и в автоматическом (при помощи задачи минимальноймаксимальной скоростей).
На основании полученных данных я создал библиотеку на Python, которая спустя некоторое время вылилась в компонент для системы умного дома Home Assistant, которой я пользуюсь.
Как подключить Алису от Яндекса к умному дому Xiaomi
Что потребуется
Потребуются, в общем, сущие пустяки:
Установка компонента
- Качаем по ссылке выше zip архив с компонентом.
- Содержимое архива (а конкретнее, папки tion_home_assistant-master) кладем себе на сервер с Home Assistant в папку config/custom_components/tion.
- Добавляем в configuration.yaml этот фрагмент.
- Вставляем в secrets.yaml строчки с tion_email: и tion_password:
- Перезапускаем Home Assistant.
Использование
После перезагрузки, у вас должны появиться следующие устройства:

Бризер

Датчики MagicAir
Бризером можем управлять тремя способами:
Через информацию в разделе states (нельзя задавать диапазон скоростей для автоматического режима).
Через карточку Lovelace (вообще нельзя управлять скоростью).
Через службы (можно все).
С первыми двумя способами добавить нечего, а вот про третий опишу подробнее. Доступны к использованию следующие службы:
climate.set_fan_mode
Управляем скоростью бризера через значение параметра fan_mode:
- off, 0 — выключение;
- 1..6 — включить в ручном режиме на заданной скорости:
- auto — автоматическое управление по уровню CO2 в диапазоне скоростей;
- 0-6, 2-4, 1-3, 4-6. и т.д — автоматическое управление в заданном диапазоне скоростей.
climate.set_hvac_mode
Управляем обогревателем входящего воздуха бризера (если есть), используя параметр hvac_mode:
- heat — обогреватель включен;
- fan_only — обогреватель выключен.
climate.set_temperature
Задаем целевую температуру для нагревателя через параметр temperature.
Как подключить робот-пылесос Xiaomi к Яндекс.Алисе: пошаговая инструкция✅
Примеры автоматизаций
Собственно, каким образом это все можно использовать? Ниже я опишу сценарии, в которых я использую бризер:
- Если все ушли, а температура на улице ниже 10 — выключаю бризер, чтобы сохранить тепло. Летом включаю проветривание (шестая скорость) на 15 минут, а потом оставляю первую скорость до прихода людей.
- Минимальная скорость в автоматическом режиме зависит от числа людей дома: один человек — первая скорость, два — вторая, гости дома — четвертая.
- Если включен телевизор, работают стиральная машина, посудомойка или робот-пылесос , выставляю минимальную скорость на 1-2 больше, чем обычно, т.к. шум бризера перекроется шумом других девайсов.
- Ночью скорость бризера выставляется на диапазон 1-3 в автоматическом режиме, независимо от количества людей (если, конечно, кто-то есть дома).
- Если скорость больше четвертой, либо CO2 выше нормы — включаю вытяжку в ванной, чтобы «помочь» бризеру.
Если что-то не завелось — смотрите логи, а чтобы они написались «качественно», добавьте в configuration.yaml фрагмент.
Спасибо за компонент! Думаю многим будет полезен!
изменено 03-12-2019
изменено 03-12-2019
Если на рекомендуете Тион, то какой рекомендуете и почему? А то как раз планирую 2 штуки приобретать.
Xiaomi, судя по обзорам, в два раза дешевле, производительнее и тише. Только, на мой взгляд, нужно брать с подогревом обязательно, хотя, зависит от того, где живете, конечно. Себе в следующую квартиру буду просто нормальную промышленную приточку на балкон ставить и разводить по потолку
изменено 03-12-2019
изменено 03-12-2019
Пользуюсь Xiaomi без подогрева и в осеннее время когда еще не дали отопление, остужает квартиру весьма сильно, поэтому как было сказано ранее лучше приобретать конечно вариант с подогревом. В данный момент когда на улице -5; -10 и включенном отоплении разница между комнатами примерно в градус, при постоянно включенном приборе. Сам прибор работает необычайно тихо, прекрасно ориентируется по датчику СО2 и в зависимости от показателей автоматически выбирает скорость подаваемого воздуха
А интегригуется в HA?
То есть Тион в спальню не рассматривать совсем из-за шума?
Как ни парадоксально, но в спальню — можно. Нам с женой во сне хватает первой скорости, а её не слышно вообще. С тионом проблемы возникают больше днем, когда активности всякие и скорость 2+
Спасибо за ответ про спальню!
Еще подскажите, я правильно понимаю, что Тион надо ставить в каждую комнату в квартире?
Или есть варианты съэкономить?
Нет, так сэкономить вам не удастся,он даже одну комнату с двумя людьми тянет с трудом. Также, даже если бы мощности хватало, у вас не получится так организовать поток воздуха, чтобы он прошёл все комнаты и пришёл к вытяжке в ванной просто по законам физики
Возьмите 2 Xiaomi лучше, вместо одного тиона, не нужно себе наживать лишнюю головную боль)
Имеете в виду бризер от Xiaomi? A какую модель рекомендуете?
У меня не Xiaomi, поэтому советовать могу только НЕ брать Tion
Про «не брать Тион» давно понятно. Интересна лучшая альтернатива.
изменено 04-12-2019
изменено 04-12-2019
Промышленная приточка (нужно делать ремонт и потолки высокие), либо Xiaomi, больше вариантов особо не наблюдается
Вот и интересует конкретная модель от Xiaomi.
Нашел, похоже, лучший вариант это XIAOMI Mijia MJXFJ-150-A1
В умный дом без шлюза xiaomi можно добавить?
Сам бы хотел знать. Не думаю, что z2m уже его поддерживает.
Если зигби можно сдампить, и отдать ребятам. Напишут враппер
Девайс только-только на али появился, мало кто еще успел купить.
Пока нету обзоров и тестов, чтобы сравнить по-взрослому.
Вроде там толщина меньше, где-то видел 185мм, это жирный плюс, а то из штор выпирать будет.
А так надо ждать тестов режимов и шума, если она при 120-150м2 будет выдавать около 30dB, то надо брать, жаль эти пошли после НГ будут.
Сейчас озадачился данным вопросом. Есть ещё вентмашина сателлит 2, но стоит.
Исходя из собственного опыта, при нахождении двух человек в 2-х комнатной квартире с закрытыми окнами везде, одного Xiaomi хватает, датчик СО2 показывает в районе от 620-800, что в целом не превышает норму в 1000 и поэтому очиститель работает на минимальной скорости и даже когда спать ложусь в ночной режим не перевожу. Если в квартире человека 4, то тут с подачей свежого воздуха один очиститель не справляется и постоянно работает на повышенной (шумной) скорости дабы понизить показатель ниже 1000. Планирую весной переместить обычный очиститель в детскую, а в зал поставить с подогревом, у него как раз и производительность по площади повыше. Так что берите 2 очистителя и будет Вам счастье)
А у Xiaomi датчик тоже выносной? Откуда вы знаете, что, к примеру, ночью в спальне(бризер же у вас в гостиной?), где два человека и при закрытой двери, нормальный уровень CO2?
Из-за того, что в квартире комнат всего две, в ночное время гостиная превращается в спальню)) Уровень СО2 замеряется встроенным в бризер датчиком СО2. Выносного датчика во второй комнате (детской) нет, но по внутренним ощущениям качество воздуха сопоставимо с гостиной
А, ну тогда ничего там не нормально, 100%. Датчик встроенный в бризер совершенно не имеет смысла по той же причине, что и датчик влажности в увлажнителе. Поток воздуха движется строго от приточки к вытяжке, в комнату вашу детскую ему «заходить» незачем, поэтому крайне рекомендую открыть ребенку окно хотя бы на микропроветривание. Уровень CO2 человек не ощущает ровно до того момента, пока задыхаться не начинает, а этот уровень в сотни раз выше «плохого» (когда находиться в помещении вредно), поэтому «внутренним ощущениям» советую не доверять в этом вопросе.
P.S У Тиона датчик выносной, поэтому я знаю о чем говорю — проверено на себе
Воздух все таки движется не совсем по прямой, иначе бы в моей спальне уровень со2 не падал бы
Расскажите, не проще ли просто поставить привод на окно и открывать его по автоматизации с какого-нибудь датчика СО2? Я просто не в теме. Живу на севере, морозы на улице зимой бывают до 50-55 градусов, не хочется делать почти прямое отверстие на улицу.
Смысл бризера не просто в подаче свежего воздуха, а его очистка и подогрев,.
Спасибо за компонент, всё завелось с первого раза, это просто праздник какой-то!
Не планируете добавить поддержку HACS?
Не вижу смысла, данная статья третья в выдаче Яндекса. Кому будет нужно — найдёт и установит без проблем
Но под это дело придётся держать отдельный сервер, насколько я понимаю. С чем вы спаривали Тион и на чем код GO запускали?
да, у меня там рядом стоит raspberry, на которой заодно и датцик CO2
tion спаривается c raspberry — bluetoothctl pair
А какой именно датчик СО2 Вы используете?
Спарить rassbery с тион без пробоем получилось? Какая у вас версия платы и ОС на ней?
У меня пока не получилось спарить Raspberry 3b с Raspbian и Tion 3s. Тион с платой успешно соединяются, но в конце процедуры вываливается фейл по таймауту.
А можно вкратце описать как запускается? А то уже замучался пробовать разные варианты, все равно не могу запустить
Валерий, подскажите два вопроса. как вам удалось хотя бы в общем смысле отреверсить обмен с сервером если там скорее всего TLS поверх всего. Насколько я слежу за новостными рассылками от Тиона, они периодически обновляют ПО. Из-за этого не слетит ли ваш компонент в ближайшем будущем?
А в целом огромное вам спасибо, наконец то я решился купить magic air, а то уже столько лет шла болтовня об открытии api.
Там простой Rest Api, который я подслушал браузером и воспроизвёл. Не думаю, что производитель будет менять протокол, ведь у многих пользователей на телефонах стоит старая версия операционки, которая не позволит установить более новую версию приложения, да и MagicAir домохозяйки вряд-ли бросятся обновлять по первому зову. Если они на это пойдут, я лишний раз убежусь, что компания Tion — ***.
P.S купите лучше Xiaomi
т.е. исходя из формулировки, складывается мнение, что они делают обновление push, даже без согласия пользователя ну или хз.
Предлагаю решать проблемы по мере их появления.
Все настроил — все супер, спасибо огромное!
Валерий, а вы не поделитесь вашими автоматизациями. Не могу пока придумать, с чего начать :-|. Еще вам наверно уже сообщали, чт оесли выбирать ручной режим и скорость через карточку климат, то включается рециркуляция (у меня tion 3S )
- Вы внимательно статью читали? Там есть примеры автоматизаций. По рециркуляции исправлено в последних версиях библиотеки и компонента.
config/custom_components/tion и добавил конфигурацию в
при этом вызов службы climate.set_fan_mode с параметром
fan_mode: 2. переключает режим забора из «С улицы» на «Из комнаты». Как в изначальной проблеме.
или что еще я делаю не так?
В файле manifest.json компонента должна быть версия библиотеки 0.71 и выше. Вы можете также использовать скорость 2-2, что даст тот же результат но режим будет автоматический, а значит 100% не рециркуляция
изменено 03-01-2020
изменено 03-01-2020
библиотеки 0.71, все так. Как вариант — ,пока, буду использовать передачу значения 6-6 для проветривания (да так я остаюсь в авто режиме).
А можно такое же счастье, но под DOMOTICZ? 🙁
Чего-то поломалось, не открывается странички с кодом, что в файл конфига ha вставить надо. Скиньте уто-нить сюда, плиз.
Перейдите по ссылке на GitHub вначале статьи, там все есть
точно, супер, спасибо! Ступил. )
изменено 30-04-2020
изменено 30-04-2020
Делаю все, как описано в инструкции, в логи плюет следующее
Component error: tion — Integration ‘tion’ not found.
Хотя, как описано полохил папку tion в config/custom_components
Разобрался, но при установке плюется ошибкой
Logger: homeassistant.setup
Source: custom_components/tion/__init__.py:41
First occurred: 22:28:27 (1 occurrences)
Last logged: 22:28:27
Error during setup of component tion
Traceback (most recent call last):
File «/srv/homeassistant/lib/python3.7/site-packages/homeassistant/setup.py», line 175, in _async_setup_component
component.setup, hass, processed_config # type: ignore
File «/usr/local/lib/python3.7/concurrent/futures/thread.py», line 57, in run
result = self.fn(*self.args, **self.kwargs)
File «/home/hass/homeassistant/custom_components/tion/__init__.py», line 41, in setup
api = TionApi(config[DOMAIN][CONF_USERNAME], config[DOMAIN][CONF_PASSWORD], min_update_interval_sec=(config[DOMAIN][CONF_SCAN_INTERVAL]).seconds)
File «/srv/homeassistant/lib/python3.7/site-packages/tion/tion.py», line 418, in __init__
self._get_authorization()
File «/srv/homeassistant/lib/python3.7/site-packages/tion/tion.py», line 456, in _get_authorization
with open(TionApi.auth_fname, «w») as file:
PermissionError: [Errno 13] Permission denied: ‘tion_auth’
Источник: sprut.ai
Tion 4S: интеграция бризера в «умный дом»
Управление вентиляцией можно поручить системе «умного дома» — это экономит время и электроэнергию. Включение бризера Tion 4S в «умный дом» помогает управлять проветриванием из любой точки мира, а также связать бризер с другими бытовыми устройствами, датчиками и задавать для них совместные сценарии работы.
В этой статье мы рассказываем, в какие системы «умного дома» можно интегрировать бризер Tion 4S, как это сделать и какие это открывает возможности.
Зачем подключать бризер к «умному дому»?
Бризер — это компактный прибор приточной вентиляции. Устройство принудительно подаёт уличный воздух в помещение, очищая его от загрязнений и подогревая до комфортной температуры.
Бризер обеспечивает поступление свежего воздуха без открытия окон, поэтому в квартиру не проникает уличный шум, пыль и посторонние запахи, а также не возникает сквозняк.

Бризер — что это?
Что такое бризер, принцип работы, функции и характеристики
Бризером Tion 4S можно управлять пультом и с помощью мобильного приложения Tion Remote — через него можно включать и выключать устройство, менять скорость вентилятора и температуру подогрева приточного воздуха, а также устанавливать расписания работы.
Передача сигналов от смартфона к бризеру происходит по технологии bluetooth, которая имеет ограниченную дальность действия, поэтому управлять проветриванием через приложение можно, только находясь недалеко от бризера.
Если подключить бризер в систему умного дома, то им можно управлять из любой точки мира. Однако, это далеко не всё: подключив бризер к системе «умного дома», можно автоматизировать процесс проветривания и включить бризер в общие сценарии с другими устройствами или датчиками. Однажды запрограммировав все необходимые параметры, можно отказаться от ручного управления бризером и не тратить время на поиск пульта.
Как и в приложении Tion Remote, в приложениях «умного дома» можно создать расписание проветривания на неделю, чтобы в часы вашего присутствия в квартире было свежо, а когда дома никого нет — проводилось лёгкое проветривание на минимальной скорости, чтобы воздух не застаивался. А чтобы в квартире не было слишком жарко в летнее время, можно задать совместный сценарий работы бризера с кондиционером, и тогда воздух будет охлаждаться только тогда, когда вы дома. Включение бризера в общий сценарий с другим устройством возможно только в «умном доме», в приложении Tion Remote такой функции нет.
После подключения бризера в «умный дом» можно более детально настроить параметры проветривания. Например, можно связать бризер с датчиком углекислого газа или открытия входной двери, и тогда он будет включаться только тогда, когда это требуется. В таком случае электроэнергия будет расходоваться рациональнее, чем при ручном управлении.
Получите консультацию прямо сейчас!
Мы перезвоним, расскажем всё об интеграции бризера Tion 4S в системы «умного дома»
Удалённое управление бризером с помощью приложения «умного дома» удобно тогда, когда нужно внести изменения в настройки проветривания, не дожидаясь приезда домой.
Если вы спонтанно решили задержаться у друзей на выходные, а дома остался невынесенный мусор, можно через приложение усилить проветривание дома и тогда по возвращении вас не встретит неприятный запах
О том, как работают системы «умного дома», из каких компонентов они состоят и какие устройства в них можно интегрировать, читайте в нашей статье «Системы «умного дома» для квартиры: чем и как можно управлять?».

Хотите узнавать о новых статьях, акциях и закрытых распродажах первыми? Подписывайтесь на нашу рассылку или канал в Telegram ⚡
Интеграция бризера Tion 4S в систему «умного дома» открывает для пользователя новые возможности, которых нет в приложении Tion Remote: управление бризером на любых расстояниях и создание сценариев совместной работы бризера с другими приборами и датчиками.
В какие «умные дома» можно интегрировать Tion 4S?
Tion 4S можно включить в системы «умного дома» Rubetek и Z-Wave. Для этого на корпусе бризера под передней панелью есть специальный слот для флеш-карты, куда подключается модуль интеграции этих систем. Кроме того, бризер можно интегрировать в систему «умного» микроклимата компании Tion.

Подключение модуля интеграции системы «умного дома»
Интеграция Tion 4S в «умный дом» Rubetek
Чтобы интегрировать Tion 4S в «умный дом» от компании Rubetek, нужно подключить модуль управления Rubetek в USB разъём бризера.

Wi-Fi модуль управления Rubetek RM-3712
После добавления бризера в приложение Rubetek становятся доступными следующие функции:
включение или выключение проветривания удалённо, не находясь в квартире, где установлен бризер;
изменение скорости подачи воздуха и температуры его подогрева;
смена режимов работы бризера: с притока на рециркуляцию — очистку внутреннего воздуха, без подачи воздуха с улицы;
создание расписания проветривания;
назначение сценариев совместной работы приборов.

Управление бризером Tion 4S в приложении Rubetek
Функция управления бризером по расписанию позволяет забыть о ручном управлении устройством и помогает связать графики проветривания с личным распорядком дня.
Задача : семейная пара работает по графику 5/2, уходит из дома в 07:30, приходит после 19:00. Всё время присутствия дома им нужен свежий воздух.
Сценарий : в будние дни с 19:00 до 07:30 бризер работает на 3 скорости и подаёт 60 м³ воздуха в час — этого хватит на двух человек. С 07:30 до 19:00 бризер переходит на минимальную скорость.
В системе Rubetek можно устанавливать сценарии совместной работы устройств, например, бризера, кондиционера и конвекторного обогревателя.
Задача : оба супруга работают на «удалёнке», по утрам они хотят взбодриться и снизить температуру в комнате, днём квартира сильно нагревается на солнце, а ночью, наоборот, охлаждается. Отопительный сезон пока не начался.
Сценарий : бризер работает круглые сутки на 3 скорости, но утром подаёт прохладный воздух, а ночью — тёплый, днём включается кондиционер, а ночью — конвектор.
Помимо того, что бризер Tion 4S встраивается в готовую систему «умного дома» Rubetek, в которой уже есть хаб — связующее звено всей системы, он и сам может стать её центром. Дело в том, что модуль управления Rubetek, который подключают в бризер для интеграции в систему, оснащён функцией Smart Link, а значит, наделён возможностями хаба. Таким образом, к бризеру можно подключать другие устройства: кондиционер, телевизор, «умные» лампы и до 64 датчиков безопасности.
К Tion 4S подключаются датчики безопасности следующих типов: утечки газа, движения, дыма, открытия дверей или окон. Для каждого вида датчиков задаются готовые сценарии работы, основанные на показаниях этих устройств.

Датчик движения Rubetek
Примеры сценариев работы бризера в паре с датчиками безопасности:
При утечке газа бризер начнёт активно проветривать, получив сигнал от датчика утечки газа. Свежий воздух с улицы снизит концентрацию газа в квартире.
При задымлении, наоборот, — остановит проветривание, как только датчик дыма выявит признаки горения. Дополнительный кислород перестанет поступать в помещение и это помешает распространению огня.
При открытии двери бризер включится, при закрытии — отключится. Сигнал бризеру подаст датчик открытия.
При обнаружении активности бризер начнёт проветривание. В этом случае сигнал бризеру подаст датчик движения, который фиксирует тепловые волны от человека.
При открытии окна бризер отключится, за это отвечает датчик открытия.
В систему «умного дома» Rubetek можно подключить «умные» колонки сторонних производителей и управлять бризером голосом, отдавая команды голосовым помощникам «Алиса», «Маруся», Google Ассистент, Siri и Alexa.
Получите консультацию прямо сейчас!
Мы перезвоним, расскажем всё об интеграции бризера Tion 4S в системы «умного дома»
О том, какими ещё устройствами можно управлять в системе Rubetek, читайте в статье «Умный дом» Rubetek: подробный обзор».
Интеграция Tion 4S в «умный дом» на протоколе Z-Wave
Чтобы включить бризер Tion в «умный дом» на протоколе Z-Wave, в USB-разъём устройства нужно подключить Z-Wave модуль, который копирует все функции Bluetooth-пульта бризера.

Z-Wave модуль
После интеграции Tion 4S в систему Z-Wave становится возможно:
удалённо включать и выключать бризер;
менять скорость вентилятора и температуру нагрева воздуха;
менять режимы работы бризера: с притока на рециркуляцию и наоборот;
создавать расписание проветривания;
задавать общие сценарии работы с другими приборами;
настраивать автоматическую работу по геолокации хозяина дома;
запускать сценарий работы бризера с датчиком углекислого газа, утечки газа, дыма, движения и открытия окон или дверей;
включать проветривание квартиры голосом через «Алису», «Марусю», Siri и Google Ассистент.
Задача : человек работает в ненормированном графике и каждый день возвращается с работы в разное время. К моменту его прихода в квартире должно быть проветрено.
Сценарий : бризер включается, когда хозяин квартиры приближается к дому на расстояние, например, 500 метров, при этом данные о местонахождении берутся из геолокации его смартфона.
При работе бризера в паре с датчиком углекислого газа устройство сможет поддерживать заданный пользователем уровень CO₂ в помещении. Потребуется один раз настроить целевой уровень CO₂, и бризер будет включаться тогда, когда выставленный показатель превышен. О нормах содержания CO₂ в воздухе по ГОСТу мы писали в статье «Содержание углекислого газа в помещении: основные нормативы».
Установив датчик движения, можно создать другой сценарий работы бризера — по факту присутствия человека в комнате. А с помощью датчика открытия можно запрограммировать отключение бризера при открытии окна.
Задача : проветривание в квартире требуется только тогда, когда в ней есть люди.
Сценарий : бризер получает данные о присутствии людей с датчика движения и начинает проветривать только тогда, когда хозяева находятся в квартире. Как только датчик движения перестаёт фиксировать тепловые волны от человека, — бризер прекращает проветривать.
Интеграция в систему «умного микроклимата» Tion
Бризер Tion 4S можно интегрировать в систему MagicAir — собственную экосистему Tion, специализирующуюся именно на управлении микроклиматом в помещениях. MagicAir нельзя назвать системой «умного дома» в широком смысле — к ней нельзя подключить любые сторонние «умные» приборы и датчики, но можно интегрировать бризер Tion 4S, кондиционер, терморегулятор отопления и очиститель воздуха Tion.

Схема взаимодействия устройств в системе MagicAir
Для управления бризером в системе MagicAir потребуется базовая станция — это центр управления системы, в неё уже встроены датчики углекислого газа, температуры и влажности. А для комнат, где установлен бризер, но нет базовой станции, нужен дополнительный датчик CO₂. Подробнее о MagicAir, читайте в статье «Зачем нужна система MagicAir?».
Управлять параметрами проветривания можно через приложение MagicAir на смартфоне или через личный кабинет на сайте MagicAir. Вот что возможно там делать:
удалённо включать и выключать бризер;
менять скорость подачи и температуру нагрева воздуха;
переключать режим работы бризера с притока на рециркуляцию и наоборот;
создавать расписание проветривания;
задавать ограничения скорости работы, например, чтобы ночью бризер работал тише;
настраивать работу бризера на поддержание желаемого уровня CO₂.

Управление бризером Tion 4S в системе MagicAir
Получите консультацию прямо сейчас!
Мы перезвоним, расскажем всё о подключении бризера Tion 4S к системе MagicAir
После подключения к системе MagicAir бризер Tion 4S сможет работать, отталкиваясь от уровня CO₂ в помещении. В приложении можно выставить целевой показатель углекислого газа, например, на уровне 800 ppm, и бризеры будут сами включаться и работать со скоростью, которая требуется в каждой ситуации.
Кроме бризеров и дополнительного датчика CO₂, к MagicAir можно подключить кондиционер через ИК-модуль, умный терморегулятор для управления отоплением и очиститель воздуха Tion. Для всех этих устройств также можно задавать расписания работы и управлять ими удалённо.
Систему MagicAir нельзя интегрировать в другие «умные системы», но она может работать параллельно с ними. MagicAir специализируется именно на управлении микроклиматом и эффективно справляется с этой задачей.
Источник: xn--90aifdm6al.xn--p1ai
Управление Tion S3 и его подключение к умному дому
У TIONofficial есть замечательный продукт: бризер — система активной приточной вентиляции с фильтрами (и теперь с подогревом уличного воздуха). Такие относительно большие ящики, которые через дырку в стене засасывают уличный воздух, прогоняют через фильтры и тадам: в комнате чистый и свежий воздух.
Смотреть на них я начал несколько лет назад, тогда эти устройства управлялись обычным ИК пультом и интегрировать их в любой умный дом было относительно не сложно: умный ИК пульт + сграбить нужные команды управления. Новые же девайсы управляются модно, со смартфона, а пульт перестал быть оптическим. И вот тут с интеграцией возникла проблема: через телефон управлять можно, а вот к контроллеру умного дома уже не подключишь.
Есть еще базовая станция Magic air с выносным датчиком CO2, которая управляет бризером на основе показаний датчика, но возможность управления бризером контроллером умного дома через такую базовую станцию тоже под вопросом.
Что ж, настало время посмотреть как же эту задачу решает телефон и сделать свой сервис для управления бризером.
В спецификации на сайте сказано, что нужен телефон с Bluetooth 4.0 и выше. Приложений два: Magic air и Tion remote. Разбиралось второе, поскольку оно проще и в нем нет специфики работы с базовой станцией.
После декомпиляции быстро нашлись классы, отвечающие за взаимодействие (кстати, разные для версии S3 и S3 lite): приложение и бризер обмениваются пакетам по 20 байт, в начале и конце которого фиксированные символы (= и Z соответственно), второй байт в пакете — передаваемая команда (из enum).
Доступных действий три: pair, decode и encode. Ими и займемся.
pair
Бризер не транслирует ничего во внешний мир. В инструкции сказано что чтобы подружить его с телефоном или пультом нужно на 5 секунд зажать кнопку управления. В этот момент его можно обнаружить и передавать любые команды, на которые он будет отвечать.
Но даже если подать BT команду «pair», после выхода из этого режима, при попытке подключения, бризер будет тут же сбрасывать соединение.
Чтобы это не происходило нужно за время «дружелюбного» режима передать ему pair пакет, который отличается от обычного пакета еще и тем, что 3 байт выставляется в единицу. В результате получаем вот такой базовый сборщик команд:
command_PAIR = 5 command_REQUEST_PARAMS = 1 command_SET_PARAMS = 2 command_prefix = 61 command_suffix = 90 def create_command(self, command: int) -> bytearray: command_special = 1 if command == self.command_PAIR else 0 return bytearray([self.command_prefix, command, command_special, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, self.command_suffix])
и после передачи пакета с command_PAIR, к устройству можно подключаться в любой момент.
Большой проблемой для меня стало разобраться куда же этот пакет нужно передать: устройство танслирует несколько characteristic и из декомпилированного приложения я так и не понял что куда нужно писать. Но нашелся класс с описанием uuid и человеческими названиями этих uuid.
Как вскоре выяснилось, pair-пакет нужно писать в DeviceUUID. В итоге pair делается так:
uuid = «6e400001-b5a3-f393-e0a9-e50e24dcca9e» def _get_pair_command(self) -> bytearray: return self.create_command(self.command_PAIR) def pair(self, mac: str): self._btle.connect(mac, btle.ADDR_TYPE_RANDOM) characteristic = self._btle.getServiceByUUID(self.uuid).getCharacteristics()[0] characteristic.write(bytes(self._get_pair_command())) self._btle.disconnect()
Получение и декодирование данных
После того как стало возможно нормально общаться с бризером захотелось получать от него что-нибудь разумное, что отображается на экране приложения.
Исходные данные можно получить если прочитать из той же характеристики, что используется для pair.
response = self._btle.getServiceByUUID(self.uuid).getCharacteristics()[0].read()
А на параметры 20 байт ответа разбираются вот так:
statuses = [ ‘off’, ‘on’ ] modes = [ ‘recirculation’, ‘mixed’ ] def _process_mode(self, mode_code: int) -> str: try: result = self.modes[mode_code] except IndexError: result = ‘outside’ return result def _process_status(self, code: int) -> str: try: result = self.statuses[code] except IndexError: result = ‘unknown’ return result def _decode_response(self, response: bytearray) -> dict: return < «heater»: self._process_status(response[4] status»: self._process_status(response[4] >> 1 sound»: self._process_status(response[4] >> 3 mode»: self._process_mode(int(list(«».format(response[2]))[0])), «fan_speed»: int(list(«».format(response[2]))[1]), «heater_temp»: response[3], «in_temp»: response[8], «filter_remain»: response[10]*256 + response[9], «time»: «<>:<>».format(response[11],response[12]), «request_error_code»: response[13], «fw_version»: «».format(response[16],response[17]) >
Но тут выяснилось, что при последовательных чтениях данные не обновляются. Чтобы их обновить нужно прочитать данные из notify характеристики и послать команду command_REQUEST_PARAMS в write характеристику. После этого функция для получения актуальных данных с бризера начинает выглядеть примерно так:
uuid_write = «6e400002-b5a3-f393-e0a9-e50e24dcca9e» uuid_notify = «6e400003-b5a3-f393-e0a9-e50e24dcca9e» def _connect(self, mac: str, new_connection = True): if new_connection: self._btle.connect(mac, btle.ADDR_TYPE_RANDOM) for tc in self._btle.getCharacteristics(): if tc.uuid == self.uuid_notify: self.notify = tc if tc.uuid == self.uuid_write: self.write = tc . def get(self) -> dict: response = «» self.notify.read() self.write.write(self._get_status_command()) response = self._btle.getServiceByUUID(self.uuid).getCharacteristics()[0].read() return self._decode_response(response)
Теперь каждый вызов get выдает актуальные данные с бризера.
Читать хорошо, но хочется и управлять
Получение данных с бризера — хорошо, но цель в том, чтобы ночью уменьшать мощность вентилятора (сильно шумит, зараза), управлять оборотами на основании данных mhz19 итд.
За запись данных отвечает пакет с командой command_SET_PARAMS. В пакете всегда содержится полный набор устанавливаемых данных, поэтому если хочется поменять что-то одно, нужно прочитать текущее состояние, изменить то, что нужно, и после этого передать полный набор параметров обратно на бризер.
def _encode_mode(self, mode: str) -> int: return self.modes.index(mode) if mode in self.modes else 2 def _encode_status(self, status: str) -> int: return self.statuses.index(status) if status in self.statuses else 0 def _encode_request(self, request: dict) -> bytearray: settings = <**self.get(), **request>new_settings = self.create_command(self.command_SET_PARAMS) new_settings[2] = settings[«fan_speed»] new_settings[3] = settings[«heater_temp»] new_settings[4] = self._encode_mode(settings[«mode»]) new_settings[5] = self._encode_status(settings[«heater»]) | (self._encode_status(settings[«status»])<<1) | (self._encode_status(settings[«sound»])<<3) return new_settings
Пишем это все в характеристику uuid == uuid_write.
Неясной осталась судьба еще пары байт пакета, игнорирование которых видимого эффекта на работу не оказало.
Как этим всем пользоваться
Результаты изысканий выше собраны в модуль для python3.
На коленке написан простой API сервер, который транслирует json-запросы, через модуль управления, в бризер и выдает json ответы.
В Home assistant сказано, что есть: rest сенсор, rest команды управления и компонент fan, управление которым делается через rest команды.
И все это добро запущено на малине.
Дальше в планах — отдельный компонент для Home assistant, чтобы обойтись без промежуточного API сервера, который очень нужен поскольку обещаниями интеграции бризеров в умный дом Тион кормит публику с 2016 года (если я правильно помню историю общения с пользователями в официальной группе ВК(https://vk.com/tion_ru)), платформ управления великое множество, а с rest API могут взаимодействовать все.
Ну и хотелось бы, при помощи энтузиастов добавить поддержку lite версии, которую я могу изучать только теоретически.
И небольшая ложка дегтя: если использовать с HomeAssist, то сервер спустя некоторое время перестает успевать обрабатывать запросы. Видимо, HA делает одновременные запросы, которые не очень хорошо обрабатываются сервером.
P.S.: Issue, PR и вопросы в коментах приветствуются: если возникнут вопросы — постараюсь помочь с интеграцией, в меру своих знаний и возможностей.
Источник: habr.com
