KREMEN Реклама
KREMEN Реклама

Карточка 3DPrinter в Home Assistant через ESP3D

Kuskov
Идет загрузка
Загрузка
20.03.2024
1380
5
Вопросы и ответы

Наверно все слышали о проекте ESP3D который позволяет через WiFi управлять принтерами, сохранять и  передавать файлы на печать.

кроме того там есть функционал отправки уведомлений например в телеграмм или Home Assistant (серевер домашней автоматизации) 

Сейчас в Orca Slicer, ну и в Пруше наверно, появилось большое количество placeholders (не знаю как перевести) которые позволяют вставить в G-code различную информацию от номера текущего слоя до объема использованного материала. И теоретически используя стартовый, конечный и код смены слоя можно научить ESP3D передавать достаточно большое количество информации в HASS для создания полноценной карточки контроля процесса печати. В дальнейшем эту информацию можно обрабатывать, например суммировать общее количество истраченного материала, вести статистику по использованным пруткам или уведомлять за 10 минут до окончания печати или еще что нибудь.

Как я вижу данную карточку. Это некая карточка с прогресс баром и информацией об имени печатаемого файла (placeholder: input_filename_base) текущий слой (layer_num) и всего слоев (total_layer_count), объем или вес использованного прутка (extruded_volume[] или extruded_weight[]) Время печати (команды нет, надеюсь пока)

Теперь к уведомлениям.

Команда отправки уведомления в HASS выглядит следующим образом

[ESP600]/api/services/light/toggle#{"entity_id":"light.wintergarten_spots"}

или она же но вставленная в G-code

M118 P3 [ESP600]/api/services/light/toggle#{"entity_id":"light.wintergarten_spots"}

то есть M118 это отправка сообщения, а Р3 это отправка в порт куда подключен вайфай модуль, если использовать Р0 то команда отправится по всем портам и например высветится на экране.

как видим команда отправляется через REST API HASS и позволяет вызвать встроенную службу для изменения состояния любого объекта в HASS. Можно конечно через вспомогательные объекты или конфигурационный файл Home Assistant создать нужные объекты, но мне кажется это не удобное решение, так как для вспомогательных объектов они создадуться без привязки к какому-то устройству, а в случае конфигурации через yaml нужно будет при изменении каких-либо параметров перезапускать HASS.

ИМХО, удобнее всего интеграцию MQTT  и в частности возможности MQTT discovery, что позволит создать устройство 3DPrinter с различными сенсорами. Создавать топики MQTT можно как через  утилиту mosquitto_pub так и через терминал ESP3D, что позволит нам сразу проверять правильность команд. Отслеживать создание топиков лучше всего через дополнение MQTT Explorer

Ну а дальше я поплыл....

Не хватает знаний и понятий.

КМК, для начала нам надо создать топики устройства 3DPrinter с различными состояниями (Печатает/не печатает, текущий слой, всего слоев и etc) 

[ESP600]/api/services/mqtt/publish#{"topic":"3dprinter/status","payload":"Печатает","retain":true} [ESP600]/api/services/mqtt/publish#{"topic":"3dprinter/layer","payload":1,"retain":true}[ESP600]/api/services/mqtt/publish#{"topic":"3dprinter/layer_sum","payload":100,"retain":true}[ESP600]/api/services/mqtt/publish#{"topic":"3dprinter/time","payload":"12:00","retain":true}

Тут все нормально и топики создались.

затем конфигурируем сенсор с несколькими объектами

[ESP600]/api/services/mqtt/publish#{"topic":"homeassistant/sensor/3DPrinter/state/config","payload":"{\"name\": \"3D Printer\", \"state_topic\": \"3dprinter/status\"}","retain":false}

эта команда отказалась работать, пробовал разные варианты и с одинарными кавычками

[ESP600]/api/services/mqtt/publish#{"topic":"homeassistant/sensor/3DPrinter/state/config","payload":'{"name": "3D Printer", "state_topic": "3dprinter/status"}',"retain":false}

я так думаю, здесь ограничение самого ESP3D это и не страшно, можно другими способами создать конфигурацию

Команда в начальный G-code со статусом принтер печатает

M118 P3 [ESP600]/api/services/mqtt/publish#{"topic":"3dprinter/status","payload":"Печатает"}

Команда в конечный G-code со статусом принтер не печатает

M118 P3 [ESP600]/api/services/mqtt/publish#{"topic":"3dprinter/status","payload":"Не Печатает"}

Ну и так далее. 

Все это сложно мне дается из-за недостатка знаний и времени, может кто что подскажет и вместе сделаем удобную карточку.

Ответы на вопросы
Металлообработка 2025 Реклама
Металлообработка 2025 Реклама