Выражаю благодарность участникам чата ESPHome и Умный дом с диваном, а также огромное спасибо Brokly за неоценимый вклад в данный проект, который написал код для управления кофемашиной.
Важно! Собирать прошивку строго в ESPHome версии 2023.5.0 или 2023.6.0 и не позднее, а также в конфигурации указывать конкретную версию arduino 2.0.9. Если соберете прошивку в последней версии ESPHome и будете использовать arduino recommended, то кофемашина будет сбоить, будет работать некорректно. Нужно переписывать код. Если имеете желание переписать код под новую версию ESPHome и поделитесь, то буду вам благодарен за участие. Спасибо.
esp32:
board: esp32dev
framework:
type: arduino
version: 2.0.9
Как установить любую версию аддона ESPHome?
- Скачать нужную версию аддона ESPHome можно по этой ссылке
- Распаковать архив в любое место чтобы можно было скопировать в Home Assistant
- Копируем папку esphome из архива в сетевую папку addons. Если сетевые папки Home Assistant не работают, то установить аддон Samba share. Аддон Samba share по умолчанию доступен в магазине аддонов, но если аддона Samba share по каким-то причинам нет, то включите расширенный режим и тогда в магазине аддонов вы увидите аддон Samba share, а если этого аддона по прежнему нет, то можете установить аддон Samba share по этой ссылке
В архиве home-assistant-addon-xx.xx.xxxx нас интересует папка esphome
Модификация и удаленное управление кофемашиной Philips 5400. Управление реализовано средствами UART и ESPHome.
Важно! Все материалы этого проекта (прошивки, схемы, 3D модели и т.п.) предоставляются "КАК ЕСТЬ". Всё, что вы делаете с вашим оборудованием, вы делаете на свой страх и риск. Автор не несет ответственности за результат и ничего не гарантирует. Модификация кофемашины требует вмешательства, что лишит автоматически вас гарантии на новую кофемашину.
Рабочие варианты кода для управления кофемашиной можно взять здесь (читайте комментарии в коде)
Что умеет делать интеграция?
- Включать и выключать кофемашину
- Выбрать кофейный напиток
- Эспрессо
- Эспрессо лунго
- Кофе
- Американо
- Капучино
- Латте макиато
- Кофе с молоком
- Кофе латте
- Кафе крема
- Ристретто
- Кофе в дорогу
- Кофе с молоком в дорогу
- Молочная пена
- Горячая вода
- Выбрать крепость кофе
- Выбрать зерно или молотый
- Выбрать количество порции, в том числе и ExtraShot
- Выбрать объем кофе
- Выбрать объем молока
- Отправлять собственные рецепты кофейных напитков
- Автоматическая работа отвода воды от носика кофемашины
- Калибровка сервопривода для отвода воды
- Сенсоры
- Поддон
- Зерно
- Вода в контейнере
- Контейнер кофейной гущи
- Поддон и контейнер воды извлечены
- Статус питания кофемашины (включена/выключена)
- Статусы кофемашины (приготовление, наливаем кофе, наливаем молоко, перемалываем зерна и т.д)
- Сенсор ошибки
- Сенсор 90 для отображения пакета рецепта кофейных напитков, этот пакет можете использовать для создания своего любимого рецепта кофейного напитка
- Сенсор выбранного кофейного напитка, обема кофе и молока
Добавление компонета Philips 5400 в ESPHome
external_components:
- source:
type: git
url: https://github.com/DivanX10/ESP-Philips-5400-Coffee-Machine
При желании можно подключить компонент локально. Скачайте файлы в папку \esphome\components\
external_components:
- source:
type: local
path: components
components: [philips_series_5400]
Примеры отправки собственных кофейных напитков
Это чисто рекомендация и уведомление. Решение принимать вам. У данной модели любые изменения параметра напитка сохраняются в профиль, кроме гостевого профиля. Чтобы не перезаписывать профили, можете выбрать гостевой профиль и посылая рецепты на приготовление, изменения не будут перезаписаны. Когда отправляете любой напиток, на экране не будет отображаться выбранный вами напиток, а будет отображаться тот напиток, который вы выбирали последний раз на панели управления кофемашины. Если не трогали экран, то по умолчанию будет выбираться первый напиток, это эспрессо
Если включить сенсор Messge2 90, то в нем будет отображаться пакет кофейного напитка. Вы можете это использовать для своих рецептов. Просто скопируйте все байты, кроме первых трех (пример на скриншоте, выделено красным)
Вы можете создавать любые рецепты используя таблицу протокола кофейных напитков в Excel
button:
#Пример кода для отправки кофейного напитка Кофе Max 150ml. Пакет рецепта копируется с сенсора Messge2 90, отсеиваем только первые 3 байта
#Напиток: Кофе. Зерно: Максимум. Кофе: 150 мл.
- platform: template
name: "Кофе Max 150ml"
icon: mdi:coffee
on_press:
- lambda: |-
{
uint8_t data[]={0x00, 0x03, 0x00, 0x02, 0x02, 0x00, 0x96, 0x00, 0x00, 0x00};
id(philip)->prepare(data);
}
#Пример кода для отправки кофейного напитка Американо молотый 90ml. Пакет рецепта копируется с сенсора Messge2 90, отсеиваем только первые 3 байта
- platform: template
name: "Американо молотый 80ml"
icon: mdi:coffee
on_press:
- lambda: |-
{
uint8_t data[]={0x01, 0x00, 0x00, 0x02, 0x03, 0x00, 0x28, 0x00, 0x28, 0x00};
id(philip)->prepare(data);
}
#Пример кода для отправки кофейного напитка Кофе с молоком 150/120ml. Пакет рецепта копируется с сенсора Messge2 90, отсеиваем только первые 3 байта
- platform: template
name: "Кофе с молоком Max 150/120ml"
icon: mdi:coffee
on_press:
- lambda: |-
{
uint8_t data[]={0x02, 0x03, 0x00, 0x02, 0x01, 0x02, 0x96, 0x00, 0x78, 0x00};
id(philip)->prepare(data);
}
Встраиваем ESP
Снимаем панель управления. Снимается не сложно. Чуть тянем на себя, в эти точки вставляем пластиковую лопатку и вынимаем панель
Нам нужен доступ к 8-ми жильному проводу, который нужно подключить к ESP.
Подключаем по схеме на выбор, через реле или через оптопару. Сервопривод подключаем по желанию, он нужен для работы отвода воды от носика.
Разбираем панель управления
Почему именно я разобрал панель управления и подключил реле, и почему не оптопару? Были попытки найти решение включить кофемашину без разборки панели управления. Пробовал размыкать питание через транзистор, пробовал посылать посылать команды, но это было безуспешно.
Подключал резистор по такой схеме, но этот способ работает на кофемашине серии 2000/3000, но не подошел для серии 5400. Для справки, есть два проекта для кофемашин серии 2000, это ESPHome-Philips-Smart-Coffee и SmartPhilips2200
Снимаем наклейку с чипа и видим маркировку с названием чипа STM32L4R5VIT6
В документации чипа STMicroelectronics STM32L4R5VIT6 находим наш чип, это STM32L4R5VIT6 LQFP100 (25 ножек с каждой стороны)
В документации пишется, что управлять кофемашиной байтами можно после включения, поэтому у меня и не получилось включить ее удаленно. Возможно я ошибаюсь и если будет найдено такое решение, то обязательно внесу поправку
Для имитации работы сенсорной кнопки можно использовать модуль реле одноканальный 5В (KY-019) или оптопару PC817C, которые будут подавать GND на резистор R110, к которому идет дорожка от кнопки питания, тем самым включая и выключая кофемашину. Я не стал рисковать припаивать провод после резистора R110 (номинал резистора 4,7 кОм), так как после резистора идет прямая дорожка к ножке чипа, а лампе к конденсаторам и я не знаю как чип может на это отреагировать, но, если так сделать, то тогда у нас будет возможность включать кофемашину через сенсорную кнопку и удаленно. Это было проверенно на сенсорной лампе, где я припаял провода после резистора и я мог включать и выключать удаленно, а также включать и выключать лампу нажимая на сенсорную кнопку. На кофемашине я не решаюсь это повторить.
Панель управления в разборе
Дорожка от кнопки питания к резистору R110(номинал резистора 4,7 кОм), после резистора дорожка идет к диоду шоттки BAS70TW (K73)
Припаиваем провод к резистору R110(номинал резистора 4,7 кОм)
Делаем отверстие в крышке и выносим провод наружу, который подключим к реле или к оптопаре
Расшифровка протокола
Мне удалось расшифровать часть протоколов, если вы найдете что-то новое, сообщите мне об этом обновлю информацию. Создайте ишью и опишите подробно про протокол.
Краткое описание функции протоколов
- AA:AA:AA:90 - рецепты кофейных напитков
- AA:AA:AA:91 - счетчик приготовления кофейных напитков
- AA:AA:AA:93 - счетчик приготовления кофейных напитков
- AA:AA:AA:B0 - системные сенсоры
- AA:AA:AA:B5 - счетчик объема кофе и молока для приготовления кофейных напитков
- AA:AA:AA:BA - не смог расшифровать
- AA:AA:AA:BB - не смог расшифровать
- AA:AA:AA:FF - данные с ЖК экрана
- AA:AA:AA:FE - включение и выключение кофемашины
AA:AA:AA:FE - этот пакет AA:AA:AA:FE:00:00:C8:87:1B:40:55 встречается два раза, в самом начале, он идет первым, когда включаем кофемашину и при выключении
AA:AA:AA:90 - протокол кофейных напитков
AA:AA:AA:91 - протокол счетчика кофейных напитков. Это просто учет сделанных кофейных напитков и учет сбрасывается, когда кофемашина выключается. Сделали одну чашку кофе, сработал счетчик и выставил допустим 1, потом сделали еще чашку кофе, снова сработал счетчик и выставил 2. Чтобы удаленно запускать приготовление кофейных напимтков, нужно запускать на +1 к тому, что в счетчике. Без учета этого счетчика не будет срабатывать приготовление кофейных напитков удаленно
AA:AA:AA:B0 - протокол системных сенсоров: контейнер кофейной гущи, воды, поддона, анличие зерна, статусы приготовления кофе, статусы заварного блока
AA:AA:AA:B5 - протокол счетчика кофейных напитков. Считает в секундах объем налитого кофе и молока
Отвод воды носика кофемашины
Я разработал для кофемашины отвод воды от носика. Зачем это нужно? Когда включаем кофемашину, то при включении запускается прогрев и промывка. Во время промывки большая часть воды проходит внутри, а часть выливается через носик. Что делать, если мы хотим, чтобы утром кофемашина приготовила нам свежее кофе и чтобы в кофе не было воды после промывки? Отвод воды позволяет решить эту проблему. Когда кофемашина включается с помощью умного дома, то отовод воды все еще остается у носика вполть до того момента, когда кофемашина не передейдет в режим "Выбор напитка", только после этого отвод воды прячется во внутрь носика, открывая проход носику.
Готовую модель для распечатки на 3д принтере можете здесь или скачать с этого проекта. Файлы формата FCStd можете открыть в программе FreeCAD.
Используется сервопривод MG90S Micro Servo 180 градусов. Его вполне достаточно для отвода воды. Питаем от +3,3в от самого ESP, что является большим плюсом. Провод от сервопривода во внутрь протягивается просто, без сверления корпуса. Протискиваем провод во внутрь держателя носика и тянем к внутренней части корпуса к ESP
Панель управления в Home Assistant
Скопируйте код отсюда, а после создайте карточку
Код карточки
entity: sensor.coffee_machine_power_status
type: custom:multiple-entity-row
name: Статус
icon: mdi:coffee-maker
state_color: true
show_state: false
secondary_info:
attribute: Making coffee
entities:
- entity: group.kitchen_coffee_machine_info_and_menu
name: Меню
state_color: true
icon: mdi:information-outline
styles:
height: 60px
width: 50px
- entity: group.kitchen_coffee_machine_coffee_drinks
name: Напитки
state_color: true
icon: mdi:coffee
styles:
height: 60px
width: 50px
- entity: switch.coffee_philips_5400_valve_open_closed
name: Клапан
type: switch
tap_action:
action: toggle
icon: mdi:coffee-maker-outline
state_color: true
styles:
height: 60px
width: 50px
- entity: binary_sensor.coffee_philips_5400_power_status
name: Питание
icon: mdi:gesture-tap-button
state_color: true
tap_action:
action: call-service
service: script.kitchen_coffee_machine_power
styles:
height: 60px
width: 50px