Наступило лето, с ним — жара, а также время включать кондиционеры. А если вы увлекаетесь современными технологиями и умным домом, то управление кондиционерами хочется делать как-то по-умному (или хотя бы по-современному). Ниже — ряд заметок о моей попытке интегрировать погоду в доме с голосовым управлением и кросс-платформенным интерфейсом.

Задача


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

  • Из веб-интерфейса (у меня это Home Assistant, крутящийся на отдельном Raspberry Pi, но в идеале хочется простого подключения к любой системе);
  • Голосом (Google Assistant подойдёт, потом подумаем об Алисе);
  • Скриптами;
  • Дёшево...

Исследование рынка


«Родное» решение


Пожалуй, даже не буду рассказывать. Решение от производителя моих кондиционеров предполагало кучу проводов, минимум два дополнительных модуля на каждый блок, и цену порядка $200 на комнату. Плюс проприетарный протокол, древнее приложение, и всё такое. Вычёркиваем.

Sensibo Sky


Примерно $100 на комнату, нативно работает с Google Assistant и IFTTT, красиво выглядит, но всё равно дороговато.


tado° — аналогично (и ещё дороже).

Xiaomi Aqara / Mi Home, Broadlink RM Pro / Mini


Универсальные ИК-передатчики, некоторые теоретически поддерживают нужные кондиционеры «из коробки», с грехом пополам интегрируются с Home Assistant, но в целом — так себе решение, хоть и ценник уже гораздо ближе к доступному ($20-35 за комнату, в зависимости от возможностей). Да и приложения на китайском языке (в некоторых случаях) — это не то, к чему я стремился.


DIY


Самый дешёвый и гибкий способ, о котором я и расскажу подробнее.

Выбор компонентов


Тут есть над чем подумать, но в целом нам понадобится:

Железо


Контроллер


Тупо берём ESP8266, а для простоты прошивки и обеспечения питанием воспользуемся D1 mini. Управлять системой, очевидно, будем через WiFi.


ИК-передатчик


Для прототипа воспользуемся простым ИК-светодиодом, сопротивлением и транзистором, потом подумаем, как это можно улучшить.

Датчик температуры


С ним веселее, можно задавать целевую температуру, и делать автоматическое включение/выключение. Для начала тупо возьмём DHT22.


Экран


На него выведем текущее состояние системы (для отладки), а может быть и текущий ip-адрес (вдруг пригодится?).


Софт


IDE


Реализовывать всё будем в Arduino IDE (с которой я никогда до этого не работал), используя открытые библиотеки.
Сильно позже, когда проект уже работал, я перешёл на Visual Studio Code с плагином PlatformIO.

Протокол


Общаться с Home Assistant будем через MQTT (библиотека PubSubClient), т.к. это открытый протокол, и для него есть специальный компонент.

Конфигурация будет выглядеть, например, как-то так:

climate:
  - platform: mqtt
    name: Living Room HVAC
    modes:
      - "off"
      - "auto"
      - "heat"
      - "cool"
      - "dry"
      - "fan"
    swing_modes:
      - "auto"
      - "off"
    fan_modes:
      - "auto"
      - "low"
      - "medium"
      - "high"
    mode_command_topic: "livingroom/meteo/mode/set"
    mode_state_topic: "livingroom/meteo/mode"
    temperature_command_topic: "livingroom/meteo/target/set"
    temperature_state_topic: "livingroom/meteo/target"
    fan_mode_command_topic: "livingroom/meteo/fan/set"
    fan_mode_state_topic: "livingroom/meteo/fan"
    swing_mode_command_topic: "livingroom/meteo/swing/set"
    swing_mode_state_topic: "livingroom/meteo/swing"
    current_temperature_topic: "livingroom/meteo/temperature"

Управление


Библиотека HeatpumpIR поможет нам отправлять сигналы на кондиционер (модель кондиционера пока захардкодим).

Разное


Понадобятся ещё библиотеки для таймера, для работы с датчиком температуры и с экраном, но это уже мелочи. Привычным жестом добавим WiFiManager и ArduinoOTA, чтобы обновлять прошивку через веб-интерфейс, а не USB.

Прототип (00)


Покупаем на алиэкспрессе случайные компоненты, собираем вместе на бредборде, тестируем идею.


Понимаем, что:

  • Экран был заказан слишком большой, и у него слишком много ног.
  • Один светодиод бьёт не очень далеко, и не очень надёжно.

Но в целом идея работает! В интерфейсе Home Assistant появляется «родной» компонент HVAC, а значит, управление из любой точки мира у нас уже «в кармане». Родная интеграция Home Assistant с Google Assistant добавляет нам голосовые команды и обратную связь: можно у ассистента спросить про температуру в комнате, и он ответит как целевую, так и текущую температуру.


Изменение целевой температуры, скорости обдува и режима кондиционера в веб-интерфейсе тоже на месте (и, главное, работает!).


Тестовый образец (01)


Поменяем пару компонентов: закажем экранчик поменьше, и чтобы работал через I2C (и библиотеку применим другую).


Также заменим ИК-светодиод на готовый модуль.


Оказалось, что модули с одним светодиодом (на фото слева) на алиэкспрессе заказывать не стоит: они не содержат транзистора, и одна из ног (VCC) у них, по сути, бутафорская.

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

Также пришло время всё это собрать на своей печатной плате… Это был один из самых сложных моментов для человека, который никогда не проектировал печатные платы, и наверняка я всё сделал неправильно.


Для проектирования я использовал EasyEDA, готовую продукцию заказывал на OSHPark (опять же, наверняка можно было найти более дешёвый вариант), и в результате получил примерно такое:


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

Что ж, уже неплохо, осталось добавить корпус. Для этого запускаем Blender, делаем кучку параллелепипедов, применяем ряд булевских операций…


И отправляем на 3D-принтер.


Итого, получилось дёшево (меньше $10 за экземпляр), гибко (будет работать с почти любым кондиционером), легко интегрируется, управляется голосом и через веб, стабильно добивает с пяти метров. В общем, примерно то, чего я и хотел.

Как бы всё это сделать чуть лучше?..

Серийная модель (02)


Есть ряд направлений для улучшения получившегося продукта (точнее, возможностей улучшения, позволивших бы превратить эксперимент в продукт):

  1. Датчик температуры можно взять поменьше размером и более точный, например, BME280, HTU21D или Si7021, что позволит повесить его на те же ноги, что и экран (I2C), заметно уменьшить размер готового устройства и упростить разводку печатной платы. На практике оказалось, что на тот же BME280 начинает сильно влиять нагрев самой ESP8266, и выдаваемые показания нужно корректировать.

  2. (вытекает из первого пункта) Держать ESP8266 постоянно работающей — это не комильфо, нужно периодически уходить в Deep Sleep, лишь иногда просыпаясь для отправки показаний и приёма команд;
  3. (вытекает из второго пункта) Обычный MQTT уже не очень подходит, нужно использовать MQTT-SN, чтобы управляющие команды запоминались и доставлялись на контроллер в момент пробуждения;
  4. Реализация вышеперечисленных пунктов позволит сменить «проводное» питание на аккумулятор;
  5. Текущий способ крепления компонентов к печатной плате (обычная пайка) является сложным в реализации и недостаточно гибок: имеет смысл припаять хедеры, чтобы те же датчики температуры можно было менять, как перчатки;
  6. Наконец (в противоречие с предыдущим пунктом), всё-таки готовые модули — это хорошо и просто, но слегка громоздко, в идеале вместо D1 mini была бы голая ESP8266, а датчик температуры, кнопка и ИК-светодиоды были бы распаяны на одной плате (как это и делают в серийных продуктах), что позволило бы уменьшить размер устройства и его серийную цену;
  7. Да и вообще, было бы здорово предусмотреть в прошивке возможность лёгкого выбора своей модели кондиционера одним кликом...

Заключение


Это было славное приключение, и я многое понял. Например, я понял, почему серийные устройства стоят так дорого, и сколько сил нужно было бы приложить, чтобы выйти на один уровень с ними. С другой стороны, очень многое в этом проекте я делал впервые (работа в Arduino IDE, заказ печатных плат, создание модели для 3D-принтера), и получить этот опыт было бесценно. Исходники, впрочем, не покажу: мне за них достаточно стыдно :)

Но своей цели я всё-таки достиг, а дешёвое и гибкое управление кондиционерами оказалось вполне достижимо.

Комментарии (68)


  1. natan555
    13.08.2018 02:27

    Пару лет назад, также желая управлять кондиционером удаленно счел, что мне достаточно просто включать кондиционер в режим «холод +24 минимум» и выключать его. В результате к серийному порту ББ была прикручена плата с ИК диодом (схема взята с сайта winlirc) + WinLIRC + SSH + кнопка Tasker'а на экране телефона = могу из любого места включить кондиционер


    1. ginkage Автор
      13.08.2018 02:42

      «Ну, или так». ©
      Всё же, ваше решение, хотя оно и заметно проще, имеет другие исходные данные: нужен постоянно включенный ББ (у меня такого компьютера в квартире нет), не так просто масштабировать на несколько комнат (далеко тянуть провода), нетривиально подключить голосовое управление. А управление у меня доступно вообще без дополнительного софта, через веб.


      1. ksenobayt
        13.08.2018 14:19

        ББ можно заменить на Orange Pi Zero, которая стоит без корпуса порядка семисот рублей, работает от 5V (подойдёт двухамперная зарядка от телефона, к примеру), и имеет на борту какой-никакой вайфай.

        Выйдет, пожалуй, подороже, чем у вас — но, вероятно, более универсально.


  1. ginkage Автор
    13.08.2018 02:40

    delete


  1. igenkin
    13.08.2018 03:21

    Статья очень во-время. Я сам как раз раздумываю над решением проблемы кондиционирования и управления климатом. Для меня это гораздо важнее чем всякие лампочки. Пока все-таки склоняюсь к мысли использовать Sensibo или tado° в связке с HomeAssistant и датчиками открытых окон и дверей. Но да, ценник особенно у последнего кусается. С другой стороны в последнем стоит достаточно умный термостат. Не такой полноценный как Nest итп, и заточенный именно для кондиционера, но тем не менее. Использование arduino-heatpumpir пока останавливает только то, что не на 100% понятно на сколько эта библиотека совместима в конкретными моделями кондиционеров.


    1. ivan-nz
      13.08.2018 09:56

      Вот именно не совсеми, у меня Daikin, у них сигнал encrypted, узнал когда хотел сделать такой проект. Все, что нашел, это Ambi Climate и он очень дорогой, но вроде есть API и можно написать скрипты к HomeAssistant.


    1. renat85
      13.08.2018 09:57

      Автор немного лукавит про работу шлюза xiaomi ir с home assistant, ниже пример еще не доделанной интеграции (руки не доходят сесть и затратить пару часов на всю отладку правил). Все там нормально работает. Его видимо смутило что нужно вылавливать ключ из приложения и потом учить HA командам родного пульта. Задача шлюза птолько передача команд, остальное должен выполнять HA по правилам и событиям. В целом лучше xiaomi ir за 20$ чем устройство выше за 10$. Оно для саморазвития хорошо, не более. Однако минус любого IR шлюза, нет обратной связи от кондиционера.

      Скрин
      image


      1. ginkage Автор
        13.08.2018 09:59

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


        1. renat85
          13.08.2018 10:30

          Правила нужны не для тупого вкл/выкл, а для участия в сценариях. По этому их там столько. После наладки и отладки большая часть правил, скриптов и остальной технической части скроется от глаз конечного пользователя. Также, как писали в комментариях, чтобы сделать погодозависимую систему любом случае придется писать скипты и правила, и как то воздействовать на элемент «climate» по этим условиям.


  1. Dmitri-D
    13.08.2018 05:56

    Датчик температуры фуфловенький. Лучше DS18B20. Сам использую их совместно с 8266
    Они и стабильнее и компактнее.
    Кстати, не думали добавить больше интеллекта? Ну чтобы он ходил за погодой в и-нет, изнавал температуру снаружи и корректировал немножко — в солнечные жаркие дни — по-холоднее, а в облачные — по-стандарту?
    Можно еще обдув (fan) включать после того как внутренний coil получит холод (летом) или тепло (зимой).
    Можно влажность контролировать и если слишком влажно включать режим осушения.
    Можно сопрячь с приточной вентиляцией и контролировать еще и VOC


    1. vaim
      13.08.2018 08:39

      в солнечные жаркие дни — по-холоднее, а в облачные — по-стандарту?

      Наоборот же. Нельзя в жару вымораживать помещение, надо держать (улица — 5) примерно, тогда будет комфортно в помещение заходить с улицы. И выходить тоже терпимо.
      А в целом повторю то, что писал у другого оратора — сейчас много сплитов идет с возможностью подключения к wifi или уже с этим модулем на борту или с возможностью опционального подключения. И, подозреваю, даже те, где эта возможность официально не зявлена на борту имеют ровно ту же плату, но с нераспаянными элементами. Или даже с уже распаянными.


      1. ginkage Автор
        13.08.2018 10:00

        Увы, моя система ставилась пять лет назад, и тогда об управлении по WiFi ещё никто не думал.


        1. vaim
          13.08.2018 10:05

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


          1. ginkage Автор
            13.08.2018 10:08

            Да-да, я об этом и говорил в пункте про «родное» решение. Очень дорого, много дополнительных блоков, и очень много проводов.


            1. vaim
              13.08.2018 10:14

              вы какие-то ужасы рассказываете.
              обычный 485 там на физическом уровне. четыре провода — ноль, питание, прием и передача на допмодуль, AB c с модуля в линию и опционально питание, питание можно брать локально, если центральный пульт далеко. и блок внутрь кондея один, зачем там два то?


  1. nikola_sa
    13.08.2018 08:15

    А почему не использовать встроенное решение. Мой кондиционер умеет поддерживать заданную температуру и при достижении ее просто работает как вентилятор и скорость вентилятора уменьшает.


    1. vaim
      13.08.2018 08:41

      а еще и таймер в нем наверняка есть. И, если очень повезло, то таймер недельный.


    1. bormotov
      13.08.2018 09:36

      за ближайшие 10 лет ни разу не видел сплит-систем, которые бы не умели держать температуру.

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

      Но максимальное использование встроенных в кондиционер возможностей должно позволить меньшими затратами жить на батарейке


    1. ginkage Автор
      13.08.2018 10:02

      В сущности, это и делается: целевая температура как раз передаётся на сам кондиционер. Датчик реальной температуры здесь скорее для контроля.


    1. kAIST
      13.08.2018 17:26

      Это все кондиционеры умеют, а если инверторный, то вообще все замечательно.
      Но хочется более "умного" кондиционера. Например, за 10 минут до твоего приезда, чтоб он включил режим быстрого охлаждения, если нужно.


      1. ginkage Автор
        13.08.2018 17:29

        Как раз это можно заскриптовать через Home Assistant.


  1. vbifkol
    13.08.2018 08:32

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


    1. ginkage Автор
      13.08.2018 10:05

      Устройство стоит в пяти метрах от кондиционера, а экран, как я уже пояснил, для отладки и проверки текущего состояния. В сущности, можно было обойтись набором светодиодов, но с экраном интереснее.


      1. vbifkol
        13.08.2018 19:06

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


        1. ginkage Автор
          13.08.2018 19:09

          … стоящий (лежащий на тумбочке) в соседней комнате. :)
          В данном случае мне пинов не жалко. :)


          1. vbifkol
            14.08.2018 10:01

            Вероятность того, что у меня в кармане телефон значительно больше чем что у меня в руках/кармане/пределах взгляда эта коробочка. Просмотр текущего состояния — это что? Температура ощутима телом, понять какой именно скрипт и в чем он состоит при взгляде на этот девайс невозможно или очень сложно, понять что сейчас делает кондер можно по кондеру. На что смотреть-то? С отладкой вообще круть — какая отладка на устройстве с одной кнопкой?


        1. ginkage Автор
          13.08.2018 19:13

          Кстати, по вайфаю зайти гораздо проще, когда знаешь ip-адрес устройства (который как раз выводится на экране). Если одинаковых устройств несколько, то запоминать их серийные номера и искать их в интерфейсе роутера становится довольно скучным занятием.


          1. vbifkol
            14.08.2018 10:06

            wifi_station_set_hostname( «livingroom» ); и обращение как к livingroom. (точка значима) спасут отца русской демократии.


  1. Retifff
    13.08.2018 09:26

    >закажем экранчик поменьше, и чтобы работал через I2C
    Можете ссылку дать, где заказывали? А то заказал такой же, он пришел с браком, справа постоянно полоса в один пиксел светится.


    1. ginkage Автор
      13.08.2018 10:06

      Где-то здесь заказывал.
      Думаю, от брака всё равно ни один продавец не застрахован.


    1. Olim98
      13.08.2018 10:40

      Это не брак. Просто нужно подобрать подходящую библиотеку. На таких дисплеях бывают два контроллера: SSD1306 и SH1106, они почти во всем похожи, кроме этой особенности, когда выбран не тот контроллер появляется полоса в один-два пикселя с краю экрана. Попробуйте эту библиотеку, там есть оба этих контроллера


      1. Retifff
        13.08.2018 12:01

        Спасибо, попробую.


  1. ASDGW
    13.08.2018 09:54

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


  1. givattal
    13.08.2018 10:02

    Откуда это маниакальное желание — разговаривать с техникой?
    И очень хорошо, что «умный» — в кавычках.


    1. bugdesigner
      13.08.2018 10:22

      Достаточно удобно иметь возможность управлять климатом (кониционер, отопление) удалённо. Таймеры — это всё хорошо, но не всегда даёт желаемый результат. Вот, например, я в основном работаю дома, но иногда нужно съездить в офис, причем время и продолжительность непредсказуемы. Жена работает в поликлинике + вызовы, то же получается непредсказуемый график. Когда дома никого нет, кондиционер выключен, но хочется войти в охлаждённую комнату. Здесь и выручает удалённое управление. С телефона, за пол-часа до планируемого прибытия, включаем кондиционер и получаем то, "о чём мечтали большевики". Так что, ничего маниакального. Если есть возможность сделать себе удобно, почему не сделать?


      1. givattal
        13.08.2018 13:09

        Вы писали:
        "… ими нужно научиться управлять:

        Голосом (Google Assistant подойдёт, потом подумаем об Алисе)...."


        Ну и всё остальное — похвальное но спорно. (В доме центральный кондиционер на 6 выходов, управление каждым выходом — спульта. Тоже хочется "по умному").


        1. ginkage Автор
          13.08.2018 13:23

          Это не он писал, это я писал. ;)
          Разговаривать просто иногда удобнее, чем вставать в поисках пульта: например, когда уже лёг в кровать, и со временем стало жарко, тогда проще и быстрее крикнуть в Google Home, чтобы он включил кондиционер. Ничего маниакального тут нет.


  1. MigH
    13.08.2018 10:24

    Решал аналогичную задачу месяц назад — думал как бы внедрить управление кондиционерами с общего экрана управления квартирой (там всяческие подогревы, вентиляция, музыка и т.п.). Слепое управление без обратной связи иметь не хотелось, ведь управлять кондиционером можно и с штатного пульта (что тогда отображать в состоянии?). Вытащил плату управления из внутреннего блока (у меня toshiba инвертор), на ней оказался UART. Выяснилось, что многие производители делают такой разъём для подключения всяческих настенных панелей управления, либо для центрального мониторинга и управления кучей блоков (в отелях, например). Описания протокола найти не удалось, но все нужные параметры (режим работы, заданная t, скорость вентилятора, t воздуха и испарителя) в исходящих пакетах найти удалось. Примеров управляющих пакетов не было, поэтому рулить блоком пришлось по-простому — через ИК приемник. Конечно без светодиода, просто дергая ногу параллельно с штатным ИК приёмником. Сама esp8266 с небольшой обвязкой ложится прямо в клеммную коробку внутреннего блока, подключается к штатному разъему, где есть uart и 5В питание. И только одинокий нештатный проводок к ИК приемнику выдает самоделку :)


  1. 3cky
    13.08.2018 10:31

    Хозяйке на заметку: практически все кондиционеры Mitsubishi Electric имеют на плате управления разъем для подключения проводных пультов, через который можно управлять режимом работы, установками температуры и прочими параметрами. Причем там используется двунаправленный UART-протокол, то есть можно еще и отслеживать изменения настроек с ИК-пульта. В связке с MQTT это практически идеальное решение для встраивания кондиционера в систему домашней автоматизации. Информация о подключении и протоколе гуглится по фразе «mitsubishi cn105 arduino».


  1. aivs
    13.08.2018 11:57

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


    1. ginkage Автор
      13.08.2018 12:02

      Да, мне это вашу уже предложили примерно трижды. :)
      Мой способ менее инвазивен (не нужно вскрывать кондиционер, и что-либо в нём менять), проще подключается/отключается и легче адаптируется к другой модели кондиционера (по сути, изменением одной строчки в исходниках), да и легче отлаживается.
      В остальном – да, прямое подключение более надёжно.


      1. grims
        13.08.2018 15:42

        Любопытное решение, спасибо что поделились. А сколько у вас ушло времени на все про все? И второе, с высоты вашего опыта, есть ли аналог датчика типа «DHT22» в которых уже есть встроенный wi-fi чтобы только передавал температуру и влажность?


        1. ginkage Автор
          13.08.2018 16:24

          Несколько вечеров на сборку и отладку, и несколько недель на ожидание компонентов с алиэкспресса. :)
          Датчиков именно со встроенным WiFi я не знаю, но встречаются вот такие комплекты из голой ESP с приделанной к ней DHT11, как раз для таких целей.


  1. ELEKTRO_YAR
    13.08.2018 12:21
    -1

    Дёшево...

    Сам по себе «умный» дом штука не дешевая, это для тех, у кого или достаток нормальный, или если после работы кроме обустройства комнатушки в муравейнике больше заняться нечем, так как польза от умного дома сомнительная по сравнению с затратами на него. Тому же программисту микроконтроллеров в какой нибудь области России, который кодит на работе тот же ESP или stm32 для какого нибудь «умного» кондиционера, зарплаты не хватит на сам кондиционер и даже на новый ноутбук, чтобы читать статью на Хабре без тормозов браузера.


  1. Igrek_L
    13.08.2018 14:33

    Не понял зачем экранчик? Через Web все можно смотреть же!


    1. ginkage Автор
      13.08.2018 14:39

      Можно. Но с экранчиком удобнее: например, я сказал что-то в Google Home, и по загоревшемуся экранчику вижу, что команда была успешно отправлена, и правильно воспринята. А до компьютера ещё дойти надо…
      В общем, как я уже говорил, он скорее для удобства отладки, чем для необходимой функциональности.


      1. Igrek_L
        13.08.2018 15:22

        Для отладки лог писать удобно. А сигнализирует включившийся/включенный кондиционер. Он пикает получив команду по ИК.
        PS Не критикую и не настаиваю! Делюсь своим опытом.


        1. ginkage Автор
          13.08.2018 16:20

          Да, вы всё правильно говорите. Но лог ещё прочитать на чём-то нужно.
          Когда устройство уже лежит в соседней с каким-либо компьютером комнате, а голосовая команда не вызывает писка кондиционера, то проблема либо в доставке команды на контроллер (и вот тут экран поможет узнать, так ли это), либо в том, что ИК-светодиоды направлены немного не туда, ну или на пути есть препятствие.
          Как я уже отметил, вместо экрана можно обойтись одним-двумя светодиодами, но при его цене в $1 я решил, что могу себе позволить такое удобство. :)


  1. AntonKOshelev
    13.08.2018 14:36

    В 2015году подобную поделушку делал. ESP8266 + Блинк.
    (Жена сказала не гоже с дачи приезжать в баню, и детей потом на максимуме обдувать кондеями))))
    Действительно режимы не нужны. (достаточно 2-3 режима, охлаждения пока дома нет, ну или обогрева)
    ИК диод с отдельным питаем, управляем через транзистор… (тогда с 5метров легко пробивать будет)
    Правильно считываем команды с пульта кондея, шьем в ESP, а дальше базовый пример с морганием сетодиодом)))). Вот и вся затея.
    Но по факту 1 сезон проработало, и было забыто)))). Точнее отложено.
    (Что толку видеть температуру дома??? (если только цветы или животные) главное включить кондей, и понять что он включился… Хотя датчик какраз покажет снижается ли температура.)

    Когда систему отопления в квартире переделаю. Ее тоже в проект подключу(радиаторы с сервоприводами). И еще активную вентиляцию))).
    Вот и будет у меня Умный ДОМ… Если конечно желание не пропадет)))…


  1. UksusoFF
    13.08.2018 16:06

    Вот еще такое решение есть: http://www.srk-m2.ru/ Ценник конечно тоже раза в три выше. Но у них в документации можно найти полезную инфу по подключаемым адаптерам для кондиционеров:


    Модуль СРК-М2-СК позволяет управлять кондиционерами:
    • компании DAIKIN через адаптеры KRP413A1S, KRP413AB1S (российский аналог KRP-D/01, KRP-D/02), KRP4A51(KRP4AA51), KRP4A52(KRP4AA52), KRP4A53(KRP4AA53), KRP4A54 (KRP4AA54), AF-D/01, AF-D/02;
    • компании MITSUBISHI ELECTRIC через адаптеры МАС-397IF, МАС-399IF;
    • компании KENTATSU через адаптеры AF-KS, AF-KC, AF-KH;
    • компании MITSUBISHI HEAVY напрямую без адаптера;
    • компании MITSUBISHI ELECTRIC полупромышленной серии Мr.Slim кроме PE(H)-8/10/15/20MYC;


    1. ginkage Автор
      13.08.2018 16:26

      А как у этих коробов работает интеграция с Home Assistant и Google Assistant?


      1. UksusoFF
        13.08.2018 16:40

        Не могу сказать, не пробовал. Просто пока что это единственное что нагуглилось про Kentatsu который у меня. И оказалось что не только у Mitsubishi есть такие коробочки.


        1. vaim
          14.08.2018 11:07
          +1

          Kentatsu локальный бренд. Опять же, формально нужно вскрытие, но 99,9% это midea. Т.е. адаптер подойдет не только к кентатсу, но и general climate и, разумеется, к самой мидее и mdv и прочим, сделанным на их заводе.
          А TCL, например, в новой линейке обещает прямую поддержку Алексы из коробки. Надеюсь гугл и алису тоже смогут.


  1. springimport
    13.08.2018 17:35

    Если хочется готового решения то сегодня уже появляются модели с управлением по wifi. Так же месяц-два назад с поддержкой Apple Homekit/Android вышла первая модель оконного кондиционера.


    1. ginkage Автор
      13.08.2018 17:37
      +1

      Я не буду только из-за этого менять кондиционеры в квартире, слишком уж дорого обойдётся. :)


    1. areht
      13.08.2018 22:46

      Проблемы с готовым решением наступят через пару лет, когда Apple Homekit поменяют на iHome, приложение на android окажется несовместимым с android 10, захардкоженный брокер выключат и всё это превратиться в тыкву.

      А менять кондиционер каждые пару лет — такое себе.

      Так что в умном доме — только открытые расширяемые решения.


      1. ginkage Автор
        13.08.2018 22:49

        Вы в точности озвучили мои мысли, которыми я руководствовался при выборе компонентов и протоколов. :)


      1. springimport
        13.08.2018 23:02

        Да, это так, только лет 5-7.
        Еще в готовых решениях есть возможность предоставление общего доступа, да и разобраться с ними легче, потому что у всех одинаковое.

        Я за открытые решения, но пока нет бесплатных решений такого же качества что у готовых.


        1. areht
          14.08.2018 00:28

          > Да, это так, только лет 5-7.

          Ну, это если повезет. Но я всё равно хочу 15-20. То есть я их хочу в своей жизни купить в 3 раза меньше кондиционеров (потратив в 4 раза меньше денег).

          > разобраться с ними легче, потому что у всех одинаковое.

          1) Я под «открытыми» вовсе не DIY подразумевал.
          2) Как бы нет. Ну то есть да, на планете есть 1000 человек с точно таким же решением, но понимают в происходящем они не больше вас — они тоже готовое купили. И они не сидят в интернете. А до массового сегмента умные устройства не добрались.

          > пока нет бесплатных решений такого же качества

          Но только есть нюанс: за 5-7 лет готовые превратятся в тыкву, а у открытых вырастет качество.

          Более того, у готовых пока с интеграцией между собой очень плохо. От слова «никак». Каждый производитель чайника считает нужным вкрутить свой vendor-lock.

          Я сам пока открытыми решениями недоволен. Как, впрочем, и готовыми.
          Но опыт подсказывает, что открытые хоть и хуже, но в перспективе жизнеспособнее (в смысле, жизненный цикл дольше, даже если активное развитие прекращается).


  1. anonymous
    13.08.2018 19:04

    Рекомендую под ARDUINO ESP8266 заменить библиотеку WIRE.


    1. areht
      14.08.2018 02:39

      Есть принцип «не надо чинить работающие вещи». А «Fixed errors in the built-in I2C driver» совершенно не объясняет кому и зачем это.

      Не говоря о том, что подозрительные исходники из интернетов тягать — занятие такое себе.

      Вы бы лучше в core исправления отправили, тогда ими все пользоваться будут.


      1. anonymous
        14.08.2018 17:10

        объяснял на одном уютном форуме — «Пока на шине один slave, все еще как то работает, но стоит добавить еще устройств — ESP8266 начинает виснуть и перегружаться. Потому что, когда wire.h не корректно завершает чтение, slave вешает SDA на землю и ждет от мастера SCL чтоб передать оставшийся кусок байта. Либа wire.h об этом ничего не знает т.к. в ней нет нормальной проверки коллизий и пытается передать на этот или следующий slave новое сообщение. Но все устройства молчат тк ничего не получают из-за того, что наш slave притянул SDA к земле и ждет завершения своей команды. Либа ничего не получив начинает растягивать SCL. Когда растягивать уже некуда, главный цикл встает колом. Через ~3 секунды, после остановки loop, срабатывает WDT и модуль перегружается. А теперь представим, что наш slave — это часы реального времени с батарейкой. ESP8266 перегрузился, а часы нет и все еще ждут когда модуль закончит с ними чтение, удерживая SDA. Через ~3 секунды опять сработает WDT и модуль снова перезагрузится. Круг замкнулся. Не поможет даже передергивание питания, тк наши часики то с батарейкой.»


        1. areht
          14.08.2018 17:34

          Да, так понятно.

          Я бы не догадался искать описание на уютном форуме, а не в readme.md


  1. grims
    14.08.2018 14:18

    Есть неплохая статья по сравнению 7 датчиков температуры/влажности.

    • Aosong AM2302 (A.K.A. DHT22)
    • Aosong AM2320
    • Aosong AM2321
    • Sensirion SHT71
    • Measurement Specialties HTU21D
    • Silicon Labs Si7021
    • Bosch Sensortec BME280

    Победитель по версии исследователя
    BME280


    1. ginkage Автор
      14.08.2018 14:22

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


  1. anonymous
    14.08.2018 17:36

    Библиотека таймера лишняя. У Arduino ESP8266 есть встроенная либа Ticker.h. Пример моргания светодиода без delay тут.


  1. past
    15.08.2018 12:18
    +1

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

    Не обязательно, достаточно поставить retained флаг.


    1. ginkage Автор
      15.08.2018 12:46

      О, спасибо, пригодится. :)