Архив рубрики ~Лента новостей~

Как я перестал бояться ESP-Claw и полюбил его

Как я перестал бояться ESP-Claw и полюбил его
Как я перестал бояться ESP-Claw и полюбил его

Как я встретил вашу маму ESP-Claw? Очень просто: не на Хабре, не в Google, а в одном дружном чатике, куда ссылку запостил коллега по несчастью. Здесь надо пояснить, что чат про одну специфическую IoT платформу для ESP и подобных контроллеров, а не про этот ваш ИИ, поэтому заметил я это дело одним краем глаза. Не могу сказать, что именно меня зацепило, но я решил — почему бы и нет. Если в двух словах, то оно того стоило: попутно я освоил подключение к LLM по API-ключу, разобрался с OpenRouter, позаботился об экзотической лягушке, убедил ИИ написать Arduino-скетч для управления Tuya-совместимыми выключателями и розетками и заодно взгромоздил на десктоп Open WebUI — чтобы у меня был собственный ИИ-чатбот, с блекджеком и без облака. Это — описание опыта, а не выверенное до последней запятой руководство.

TL:DR

Оглядываясь с высоты полученного опыта. ESP-Claw — ИИ-агент, работающий на ESP32-S3. Но одной платы мало. Нужен еще нормальный ИИ (LLM), который можно развернуть на своем железе (я не мог) или взять на стороне (я так и сделал).

После настройки ESP-Claw может общаться в своем личном чате, может через Telegram или китайские мессенджеры. Что умеет? Наверное много, я еще в процессе познания. Сразу скажу, что может у меня: пишет скрипты на Lua, умеет делать HTTP-запросы — смотрит данные с датчиков (может парсить страничку, может через JSON) и отправляет команды на Tuya-совместимые выключатели и розетки, умеет опрашивать датчики по расписанию.

187e9a7cb6a37a39c1e07290860c6a59

Удобно, что некоторые задачи может выполнять без обращения к LLM, просто локально. То есть, если пользоваться платными сервисами, то считай, экономит деньги. Так ESP-Claw у меня опрашивает датчики, управляет выключателями и шлет уведомления в Telegram.

В комплекте еще какое-то количество стандартных инструментов кроме Lua, планировщика и HTTP-запросов (не смотрел), есть опция добавлять свои собственные (не разбирался). Этот инструментарий мне пока напоминает систему навыков у Алисы Яндекса, тоже пока не разобрался.

Стоит ли оно того? Для меня — однозначно стоит. Очень прикольная игрушка.

Теория

Действие первое: главный герой терпит фиаско. Прочтя начало про ESP-Claw, я вспомнил, что у меня в запасах вроде были какие-то ESP32. Но по факту выяснилось, что у меня ESP32-S2, а для ESP-Claw нужна минимум ESP32-S3. Поэтому я немедленно заказал самую дешевую ESP32-S3 за 340 рублей на Aliexpress.

За кадром доставка 77 рублей
За кадром доставка 77 рублей

Повторюсь, на этот момент я не имел ни малейшего представления, зачем мне нужна ESP32-S3 и что такое ESP-Claw, но имел огромное желание просто позырить. Тем более, что кроме платы, как мне казалось, ничего и не нужно было — обвязка не требуется, прошивка — из браузера. Считай, нулевой входной порог.

Действие второе. Главный герой снова терпит фиаско. Итак, плата приехала. Дальше все виделось простым: взять кабель, подключить к компьютеру, открыть браузер и перейти на страничку прошивки, запустить процесс.

Но у меня, как обычно, возникла куча вопросов. Во-первых, какой тип платы выбрать. Я загуглил и выяснил, что сойдет esp32_s3_devkitC_1. На странице конфигурации помогает и тот факт, что в списке это первая по порядку плата, у которой доступен вывод через UART, а не JTAG, которого у меня нет.

Словами не передать, как бесит темная тема
Словами не передать, как бесит темная тема

Во-вторых, что делать, если плата берет и не шьется, как у меня. Снова выручил интернет, в котором написано: нажми и держи кнопку BOOT на плате, пока не начнется загрузка, а потом отпусти. Так и сделал — и прошился. Важно отметить, что шился через Chrome, потому что где-то краем глаза зацепился, что именно в нем все работает с меньшим количеством проблем.

Дальше по памяти все довольно прозрачно: нужно ввести параметры Wi-Fi и получить адрес странички ESP-Claw. Набрал, получил, зашел. Но пока не подключен ИИ, толку от этой штуки не будет.

А это я уже показываю с подключенным ИИ
А это я уже показываю с подключенным ИИ

Здесь же, если нужно, можно переключиться на другую сеть и, что гораздо важнее, настроить связку с ИИ (LLM) на вкладке LLM.

8d6f653bbb859e39daf4543957392d02

Как видите, есть кнопки для дефолтных настроек, где нужно разве что свой ключ API ввести. И точно так же есть универсальная вкладка OpenAI Compatible API, где кроме ключа API нужно добавить путь к входной точке API и желаемую модель LLM.

Где взять все это счастье? Там же, где берете LLM. Я использовал два варианта: DeepSeek и OpenRouter.

Для получения ключа API DeepSeek идем на https://platform.deepseek.com/, регистрируемся и в разделе API Keys получаем его. Точка входа, напоминаю, уже прописана в одноименном конфиге ESP-Claw, как и модель по умолчанию. DeepSeek через API, как я понял, только платный.

С OpenRouter немного сложнее. Здесь идем на https://openrouter.ai/, тоже регистрируемся. И, представьте себе, получаем ключ API тоже в разделе API Keys. OpenRouter предлагает платные модели и бесплатные.

Как оплачивать? Всяких сервисов куча, принимают через СБП, а потом уже как-то сами перечисляют, даже делиться логином-паролем не надо. С этим проблем нет.

Чтобы с умом распорядиться всем этим добром в ESP-Claw, переходим на страничку контроллера. В разделе LLM нажимаем OpenAI Compatible API и заполняем поля:

  1. API Key — ключ API от OpenRouter

  2. Base URL — openrouter.ai/api/v1

  3. Model — по вкусу, полный список https://openrouter.ai/models. Если хотите мое мнение, то для ESP-Claw мне понравились Owl Alpha (openrouter/owl-alpha, бесплатно) и DeepSeek V4 Flash (deepseek/deepseek-v4-flash, за деньги). Они как-то сразу понимают, с кем и чем имеют дело.

После не забываем нажать кнопочку Save Tab.

Теперь самое противное. Тут или я дурак, или сделано все по-дурацки. Попробую объяснить. Если после настроек перейти на другую вкладку и вернуться к «своим» настройкам, то там снова видны дефолтные. Как понять, какие настройки? По китайской логике очень просто: снова вбиваем настройки и если кнопка Save Tab не активна — это текущие настройки, если активна — значит, что-то поменялось.

Предположим, что модель настроили, задали вопрос и получили не ответ, а ошибку. Я встречал два варианта: или ошибка в настройках, или ошибка в РКН. В первом случае надо проверять настройки, во втором — включать или выключать РКН — как заработает. То есть, если грубо, то с прямым доступом у меня OpenRouter/DeepSeek работают по API, а с кривым почему-то нет. Не знаю, почему, может регион их не устраивает.

Предположим, что настройки верные, и в локальном чате даже удалось поздороваться с контроллером. Что дальше? Очевидно, надо подключить Telegram:

  1. Идем в BotFather -> /start -> /newbot

  2. Начинаем фантазировать с именем до полного удовлетворения

  3. Берем токен в ответе Крестного под строчкой Use this token to access the HTTP API:

  4. Вставляем токен на страничке ESP-Claw в разделе IM/Telegram/Telegram Bot Token

Как-то так
Как-то так

Теперь идем в своего бота в Telegram и пишем что-нибудь ESP-Claw. Если все правильно, отзовется.

Ура
Ура

Но может и не отозваться. В чем беда? В РКН. И тут случается натуральный цугцванг: Telegram не работает напрямую, а ИИ не работает вкривую. Тут я не могу давать какие-то советы. Каждый идет своим путем. Скажу, что я пошел кривым. То есть, настроил на маршрутизаторе доступ к Telegram вкривую, а доступ к ИИ — напрямую. Если ничего не настраивать и использовать прямой доступ, то общаться с ESP-Claw из мест не столь отдаленных от РКН получится только в локальном чате.

На этом настройка ESP-Claw, я считаю, закончена. Но что с этим добром теперь делать? А вот что.

Кейс первый. Не варим лягушку

Конечная цель была простой: получать уведомления, если температура выходит за пределы нормы, и при необходимости управлять подогревом.

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

Итак, диспозиция. Лягушка-рогатка, в руководстве по эксплуатации которой заявлен рабочий диапазон температур 26-29 градусов Цельсия. Чтобы соблюдать, купили греющий коврик с терморегулятором. Однако, как несложно догадаться, если плавает температура снаружи, то плавает и внутри. Само по себе плавание не страшно, но не хотелось бы выходить за эксплуатационные пределы.

Метеостанция и гипножаба на заднем плане
Метеостанция и гипножаба на заднем плане

Поэтому глянув на стоимость термостатов, я принял единственно верное решение: сказал заказчику лягушки, чтоб сам следил за температурой. А параллельно купил совместимую с Tuya Wi-Fi розетку и прикрутил ее к Умному дому Яндекса. Туда же я гораздо раньше прикрутил кастомную метеостанцию, которую по случаю лягушки доукомплектовал проводным датчиком DS18B20 (копия, конечно), заброшенным в террариум.

Дальше — дело техники. В Умном доме Яндекса настраивается термостат, который берет температуру с датчика и выдает команду на розетку. И все было прекрасно, пока не случилась неприятность: Умный дом Яндекса внезапно перестал автоматически получать данные с датчика. То есть: заходишь в приложение, смотришь температуру, тут же подтягиваются данные и включается или выключается розетка. А вот если не заходишь — ничего, хотя если посмотреть температуру у метеостанции, у нее все данные на месте. То есть проблема где-то на стыке моей IoT платформы и Яндекса. Почему так вышло — я не знаю. Знаю только, что в этом случае лягушка или замерзает, или перегревается.

Чтобы этого не произошло, я раздал ЦУ домашним и сам принялся следить за температурой. Читай: открывал приложение раз в полчаса. Через какое-то время обмен данными снова восстановился и я почти забыл про эту беду, пока она не случилась снова.

Тогда я задумался о железном термостате и даже купил такой на Озоне. И он даже несколько дней поработал, а потом внезапно принялся варить лягушку.

Примерно такой термостат
Примерно такой термостат

Разбираться, в чем там дело я, конечно, не стал. Просто вернул назад свою конструкцию из розетки, Яндекса и природной наблюдательности. Но параллельно думал, как бы решить эту проблему и уже склонялся к тому, чтобы оснастить метеостанцию еще и реле — чтоб уж все локально работало.

Еще надо понимать, что Умный дом Яндекса может присылать уведомления, если датчик долго недоступен или температура за пределами. Но проблема в том, что это только для владельца учетки. А у меня гостевой доступ — и я ничего не вижу.

И вот на этом самом месте в дело вступает ESP-Claw, которому я дал задачу предупреждать меня в Telegram, если у лягушки что-то не так с температурой. И вот натурально — ESP-Claw сходил по адресу метеостанции, глянул на страничку, распарсил.

Тут, кажется, мы оба накосячили
Тут, кажется, мы оба накосячили

Я ему рассказал, что из полученного — температура у лягушки. И…он начал предупреждать.

ac3e151db16f583efdc262cdbb97b551

Дальше была рутина: очень долго я уговаривал его, чтобы он выдавал предупреждение в нужном мне формате. Ключевое слово — «запомни», он по нему какой-то там навык активирует.

d0318b015ccd79e7bf37e8949e703480

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

c5209c6e7484de207ce6fe949990cd82

Примерно вот так настойчив. И в итоге я стал получать предупреждения, которые Умный дом Яндекса был не в силах мне предоставить.

7456f6073f0659b6e6da91a48663fd49

Однако захотелось большего: дублирующего управления подогревом террариума.

Кейс второй. Управление Tuya

Здесь я, конечно, покривил душой. Ни из коробки, ни увещеваниями в чате мне не удалось наставить ESP-Claw на путь управления техникой Tuya. Но к этому моменту у меня уже была куча помощников — от бесплатного ИИ-режима в поиске Google до OpenRouter с ИИ на любой вкус.

Про мои мучения можно очень долго рассказывать и много над ними смеяться. Например, про то, что:

  • Пока я тормозил, Tuya изменила протокол и все стало сложнее

  • Так просто адаптировать уже готовую библиотеку для Arduino не вышло

  • ИИ-режим поиска в Google вбил себе в голову, что у ESP8266 недостаточно ресурсов, чтобы быть контроллером для Tuya

Но самое главное, что я сразу определился с архитектурой. Раз ESP-Claw не смог написать для себя скрипт управления Tuya — и не надо. Я решил, что шлюзом-контроллером будет ESP8266. И после нескольких дней мучения с ИИ-режимом Google перешел к платному ИИ в OpenRouter.

d2db9056c135bbf6779654dd2e669ff6

Кстати, справедливости ради, я все-таки домучил ИИ-режим поиска Google до почти рабочей версии скетча, правда меня огорчала большая задержка. И как раз на этом месте Google пошел вразнос и упирал то на нехватку памяти, то на скудные криптографические возможности ESP8266.

Зато с OpenRouter я буквально за полчаса (и примерно 500 рублей, потому что сам дурак) получил нужный скетч — именно скетч, потому что ESP8266 использовал в среде Arduino — управляющий устройствами Tuya при помощи JSON-запросов к шлюзу. Штука получилась универсальная и все данные берет из запроса, то есть при добавлении выключателей или розеток не нужно заново перепрошивать шлюз. И розетку тоже специально прошивать не надо. И китайское облако нужно только на начальном этапе — получить реквизиты для локального управления (Device ID, Local Key).

То есть схема такая: ESP-Claw получает текстовую команду в чате, отправляет JSON-запрос на шлюз на ESP8266, а тот уже отправляет команду на выключатель. Команду на ESP-Claw можно отправить локально или через Telegram, а остальное крутится в локальной сети.

Когда сделал шлюз и проверил его, попросил ESP-Claw не только проверять температуру, но и управлять розеткой.

Финальные штрихи

После того как все заработало, я задумался о том, почему ESP-Claw показывает промежуточные шаги и заодно обращается к LLM. И нельзя ли, чтобы работало без обращения к LLM, то есть без лишних трат.

643dd460d2e3c829023cf10b57b1de2c

И тут выяснилось, что если подобрать слова, то можно и без LLM. Параллельно я попросил его контролировать температуру раз в 5 минут, потому что полчаса оказалось много, а раз в минуту — слишком часто, засыпал уведомлениями.

В итоге за температурой у лягушки теперь следят две системы: Умный дом Яндекса и ESP-Claw, обе управляющие одной розеткой. Кто первый встал — того и тапки. Но как я замечаю, ESP-Claw вмешивается гораздо чаще.

Иконки и предупреждение о потере связи - самодеятельность ESP-Claw, я ни при чем
Иконки и предупреждение о потере связи — самодеятельность ESP-Claw, я ни при чем

Хотя я же не вижу, что там Умный дом Яндекса творит, может тоже пытается что-то хорошее сделать.

Код шлюза (без гарантий, ладно?): https://github.com/spc-files/TuyaLocalGate/

Ну и, конечно, какой же автор Хабра без ссылки на Telegram-канал? Подписывайтесь.

Источник: habr.com

Оцените материал:

Поделиться
Понравилась статья? Расскажите другим
ВКонтакте
Читайте также
Архив рубрики ~Коротко из Telegram~ Фантомные домены Злоумышленники неожиданно для себя получили прямо в руки… Архив рубрики ~Коротко из Telegram~ Защитить родителей от мошенников можно УДАЛЕННО — Яндекс упростил настройку… Архив рубрики ~Коротко из Telegram~ Apple выпускает для разработчиков пятые бета-версии своих систем: • iOS… Новости робототехники Yaskawa America получила сертификат информационной безопасности Архив рубрики ~Коротко из Telegram~ GPT-5.6 отключила стартапу всех подписчиков за 7 секунд — проект… Архив рубрики ~Коротко из Telegram~ Не откроется больше Telegram с узбекской SIM-карты.. По данным ресурса… Архив рубрики ~Коротко из Telegram~ NVIDIA тихо, не спеша, представили метод, который помогает генерировать изображения… Новости робототехники Ondas обеспечивает DZYNE за 875,8 млн долларов, расширение своих оборонных возможностей Новости робототехники Рождённый действовать Современные системы управления роботами часто строят на основе… Архив рубрики ~Обо всем~ Оскорбительные высказывания Сэма Альтмана о космических центрах обработки данных подтверждают мнение большинства экспертов. Архив рубрики ~Коротко из Telegram~ Ассоциация «Руссофт» прогнозирует рост российского рынка разработки ПО на 17%… Архив рубрики ~Полезное~ Пошаговый гайд по установке Stable Diffusion WebUI Forge на Windows и Linux в 2026 году. Архив рубрики ~Полезное~ Как развернуть локальную LLM на сервере: подробный гайд по Ollama и Open WebUI Архив рубрики ~Полезное~ Как установить LM Studio на компьютер: очень подробный гайд простыми словами Архив рубрики ~Коротко из Telegram~ Фантомные домены Злоумышленники неожиданно для себя получили прямо в руки… Архив рубрики ~Коротко из Telegram~ Защитить родителей от мошенников можно УДАЛЕННО — Яндекс упростил настройку… Архив рубрики ~Коротко из Telegram~ Apple выпускает для разработчиков пятые бета-версии своих систем: • iOS… Новости робототехники Yaskawa America получила сертификат информационной безопасности Архив рубрики ~Коротко из Telegram~ GPT-5.6 отключила стартапу всех подписчиков за 7 секунд — проект… Архив рубрики ~Коротко из Telegram~ Не откроется больше Telegram с узбекской SIM-карты.. По данным ресурса… Архив рубрики ~Коротко из Telegram~ NVIDIA тихо, не спеша, представили метод, который помогает генерировать изображения… Новости робототехники Ondas обеспечивает DZYNE за 875,8 млн долларов, расширение своих оборонных возможностей Новости робототехники Рождённый действовать Современные системы управления роботами часто строят на основе… Архив рубрики ~Обо всем~ Оскорбительные высказывания Сэма Альтмана о космических центрах обработки данных подтверждают мнение большинства экспертов. Архив рубрики ~Коротко из Telegram~ Ассоциация «Руссофт» прогнозирует рост российского рынка разработки ПО на 17%… Архив рубрики ~Полезное~ Пошаговый гайд по установке Stable Diffusion WebUI Forge на Windows и Linux в 2026 году. Архив рубрики ~Полезное~ Как развернуть локальную LLM на сервере: подробный гайд по Ollama и Open WebUI Архив рубрики ~Полезное~ Как установить LM Studio на компьютер: очень подробный гайд простыми словами

Оставить комментарий