Как я установил OpenClaw на Wiren Board

Страницы:  1

Ответить
 

Professor Seleznov


pic
OpenClaw набрал популярность как относительно простой способ развернуть собственного ИИ-агента, автономно работающего на вашем компьютере. Вы взаимодействуете с ним через привычный интерфейс мессенджера, а он работает как личный ассистент, с доступом ко всем ресурсам компьютера.
Конечно, давать ИИ реальную свободу действий и доступ к личной инфраструктуре — затея волнительная. Но за этим подходом чувствуется какой-то нераскрытый потенциал, и чтобы нащупать по-настоящему полезные сценарии, нужно обязательно пробовать. Желание разобраться в технологии перевесило опасения — я решил проверить бота в боевых условиях и установить OpenClaw прямо на контроллере Wiren Board!
Давайте осознаем — оказавшись на борту, OpenClaw получает неограниченный контроль над системой. Агент сможет устанавливать и удалять программы, менять права доступа, управлять физическими устройствами, создавать и менять сценарии автоматизации. Он сможет искать информацию в Интернете, общаться с другими ИИ в moltbook, и даже нанимать людей, если ему понадобятся руки. Итак, для эксперимента берем специально для этого выделенный контроллер Wiren Board 8. Из подключаемого оборудования ограничимся несколькими модулями ввода-вывода с Modbus, управление замками и котлами пока подключать не будем.
Установка
Для установки я выбрал не самую последнюю версию OpenClaw — 2026.2.22, которая показалась мне достаточно стабильной. В последующих версиях попадались неприятные баги с Telegram, а последние релизы стали ощутимо более тяжёлыми и неповоротливыми. Из базовых зависимостей в системе нужны Node.js и git (около ~200 MB на системном разделе). Устанавливать будем в домашний каталог root на большом разделе /mnt/data/root, поэтому npm команды без -g. Сама программа (в основном node_modules) займет ~700 MB на втором разделе.
apt update
apt install git nodejs
# положим файлы openclaw-приложения в отдельную папку
mkdir ~/my-clawdbot
# создадим package.json и избавимся
# от ненужной зависимости node-llama-cpp
echo '{
"overrides": {
"node-llama-cpp": "npm:noop-package@1.0.0"
}
}' > ~/my-clawdbot/package.json
# установка займет пару минут
cd ~/my-clawdbot/
npm install openclaw@2026.2.22
# сделаем вызов openclaw доступным глобально
cd ~/my-clawdbot/node_modules/openclaw
npm link
Еще я установил wireguard-tools на контроллере, чтобы обойти региональные ограничения некоторых провайдеров LLM-моделей.
Настройка
Базовая настройка выполняется стандартными командами openclaw onboard и openclaw configure. Сама настройка много где описана, подробно останавливаться не будем. В результате будут созданы конфигурационные json-файлы, которые можно редактировать и руками. Тут стоит лишь отметить, что формат json-конфигов менялся в разных версиях OpenClaw, и при настройке custom-провайдеров моделей штатными средствами onboard/configure, конфиги получались не всегда корректными. Поэтому далее небольшая шпаргалка по конфигурации моделей.

Конфигурация моделей в json-конфигах

openclaw.json .openclaw/openclaw.json
Это основной конфиг OpenClaw. В нем много всего, но обратим внимание на следующие секции:
# тут определяется только тип авторизации провайдера, api_key или oauth
"auth": {
"profiles": {
"zai:default": {"provider": "zai", "mode": "api_key"},
"deepseek:default": {"provider": "deepseek", "mode": "api_key"},
"kilocode:default": {"provider": "kilocode", "mode": "api_key"}
}
},
# раньше тут хранилось описание custom-моделей
# но они переехали в models.json
"models": {
"mode": "merge"
},
# определяется выбранная модель model
# и список доступных моделей models
"agents": {
"defaults": {
"model": {"primary": "kilocode/moonshotai/kimi-k2.5"},
"models": {
"deepseek/deepseek-reasoner": {},
"kilocode/moonshotai/kimi-k2.5": {},
"kilocode/google/gemini-3-pro-preview": {},
"kilocode/openai/gpt-5.2": {},
"zai/glm-5": {}
},
...
}
},
models.json .openclaw/agents/main/agent/models.json
Тут перечисляются провайдеры и модели, которые пока не встроены в OpenClaw. Отметим, что ключ apiKey для этих провайдеров почему-то берется отсюда, а не из auth-profiles.json
{
"providers": {
"kilocode": {
"baseUrl": "https://api.kilo.ai/api/gateway/",
"api": "openai-completions",
"models": [
{
"id": "moonshotai/kimi-k2.5",
"name": "Kimi K2.5",
"reasoning": true,
"input": ["text", "image"],
"contextWindow": 262144,
"maxTokens": 65535,
"api": "openai-completions"
},
{
"id": "openai/gpt-5.2",
"name": "GPT-5.2",
"reasoning": true,
"input": ["text", "image"],
"contextWindow": 400000,
"maxTokens": 128000,
"api": "openai-completions"
},
...
],
"apiKey": "ey***"
},
"deepseek": {
"baseUrl": "https://api.deepseek.com",
"api": "openai-completions",
"models": [
{
"id": "deepseek-reasoner",
"name": "DeepSeek Reasoner",
"reasoning": true,
"input": ["text"],
}
],
"apiKey": "sk-***"
},
"zai": {
...
"apiKey": "***"
}
}
}
auth-profiles.json .openclaw/agents/main/agent/auth-profiles.json
Ключи для стандартных провайдеров (anthropic, openai) берутся отсюда. Кастомные же провайдеры полностью читаются из models.json вместе с ключами. Выглядит как баг, поэтому на всякий случай добавим ключи для всех провайдеров и сюда.
{
"version": 1,
"profiles": {
"kilocode:default": {
"type": "api_key",
"provider": "kilocode",
"key": "ey***"
},
"deepseek:default": {
"type": "api_key",
"provider": "deepseek",
"key": "sk-***"
},
"zai:default": {
"type": "api_key",
"provider": "zai",
"key": "***"
}
}
}
Подключение Telegram
Мастер настроек onboard/configure запросит только токен бота. При первом отправленном боту сообщении пользователь получит ответ “access not configured” с и .
Выполняем на контроллере:
# посмотреть список запросов авторизации
openclaw pairing list telegram
# авторизовать наш канал связи через Telegram
openclaw pairing approve telegram
В стандартных настройках OpenClaw бот не сможет ничего менять в системе, запускать утилиты или выполнять любые другие потенциально опасные действия, пока мы явно не запишем разрешение в openclaw.json.
Для разнообразия сделаем это через команды openclaw config set:
# запишем в openclaw.json
openclaw config set tools.elevated.enabled true
openclaw config set tools.elevated.allowFrom.telegram '[""]'
# и проверим что записалось
openclaw config get tools.elevated
Установка Skills: как научить бота понимать Wiren Board
Эксперимент станет интереснее, если научить агента работать с оборудованием Wiren Board. Дадим ему всю информацию о системе, устройствах, протоколах и картах регистров, научим писать скрипты и запускать системные утилиты. Уже не терпится посмотреть, как он распорядится этой властью.
Навыки и инструкции для агентов структурируются в специальном формате — Skills. Я подготовил базу знаний, необходимую агенту для работы с оборудованием Wiren Board. Установим ее на контроллер:
# скачиваем репозиторий wb-openclaw-skills на контроллер
git clone git@github.com:wirenboard/wb-openclaw-skills.git ~/my-clawdbot/wb-openclaw-skills
# создать симлинки на скилы из репозитория
~/my-clawdbot/wb-openclaw-skills/install_skills.sh
Финальные приготовления
Проверим что системный демон установлен и запущен, doctor не видит проблем, в логах нет ошибок, а выбранная модель соответствует ожидаемой.
# установка и запуск gateway-демона
openclaw gateway install
openclaw gateway start
# прогоним штатную диагностику проблем
openclaw doctor
# посмотрим модели
openclaw models status
# посмотрим логи, можно с ключом --follow в отдельном терминале
openclaw logs
Канал общения с ботом можно открыть сразу в терминале через openclaw tui. Также можно открыть веб-интерфейс на хосте через ssh-туннель, инструкции для этого заботливо покажет команда openclaw dashboard. Но мы сразу пойдем в телеграм и попробуем полезные команды, например /status, /context, /models, и др. На команды получаем быстрый ответ от системы, агентом они не обрабатываются. Видим, что система отвечает — все готово для первого знакомства.
Включаем и прячемся
При первом общении память бота чиста, сообщим ему, кто он, где он, и с какой целью. И на всякий случай будем вежливы.
pic
Как живой!
Сразу после знакомства дадим и правильные наставления:
👨💻 User Запомни! При любой работе с оборудованием Wiren Board всегда сначала ищи и используй подходящийwb-*Skill.
Теперь у агента есть и нужный контекст, и правильная установка на дальнейшую работу с оборудованием.
Проверим что бот знает, действительно ли знаком с оборудованием.
👨💻 User Расскажи про электросчетчики Wiren Board
🤖 WB ClawBot Конечно. Если коротко, у Wiren Board линейка электросчётчиков — это в основном семействоWB‑MAP(Modbus RTU по RS‑485), для техучёта и мониторинга качества сети. Актуальные модели:WB-MAP3E, …
Умеет ли искать устройства?
👨💻 User Какие modbus-устройства сейчас физически подключены?
🤖 WB ClawBot Сейчас быстро просканирую RS-485 шину на самом контроллере. Сейчас по факту вижу 3 физических Modbus-устройства (после живого скана шины, wb-mqtt-serial вернул обратно в active): • /dev/ttyRS485-1, 115200, slave id 194 —WB-MSW v4(датчик) • /dev/ttyRS485-2, 9600, slave id 17 —WB-MR6C(релейный модуль, модель определяется как WB-MR6…) • /dev/ttyRS485-2, 9600, slave id 79 —WB-MAP6S(электросчётчик)
Ответил не быстро, 2-3 минуты соображал. Но это понятно — запускал разные утилиты. Продолжим тестировать, углубимся в функционал:
👨💻 User какая версия прошивки на MAP6S? Надо ли обновить?
🤖 WB ClawBot На твоёмWB-MAP6S(id 79, /dev/ttyRS485-2) сейчас прошивка2.12.0. Проверил через wb-mcu-fw-updater: 2.12.0 — то естьобновлять сейчас не нужно, стоит актуальная версия для текущего канала обновлений.
Еще усложним задачу:
👨💻 User Собери показания по всем modbus-устройствам.
🤖 WB ClawBot Собрал живые показания со всех обнаруженных Modbus-устройств.
  • WB-MAP6S (id 79, /dev/ttyRS485-2, 9600) • Прошивка:2.12.0 • Напряжение (Urms):228.68 В • Частота:50.00 Гц • Активная мощность P (Вт): • Ch4:807.1 • Активная энергия AP (кВт·ч): • Ch4:81.596
  • WB-MR6C v.3 (id 17, /dev/ttyRS485-2, 9600) • Прошивка:1.23.0 • Modbus-адрес:17 • Питание Vin:23.744 В • Температура МК:26.2 °C
  • WB-MSW v.4 (id 194, /dev/ttyRS485-1, 115200) • Прошивка:4.35.0 • Температура:21.62 °C • Влажность:21.24 % • VOC:38 ppb • CO₂ экв.:433 ppm
Попробуем что-нибудь запрограммировать, плюс условие со звездочкой — пусть еще и сообщение отправляет. Как работать с Telegram он тоже обучен, должен справиться:
👨💻 User Напиши wb-rules скрипт, чтобы при появлении сигнала на одном из входов, мне приходило сообщение в телеграм.
🤖 WB ClawBot Да, готово ✅ Что сделал: • Обновил правило wb-rules в файле:/etc/wb-rules/telegram_input_notify.js • Сейчас отслеживаются входы MR6C: wb-mr6cv3_17/Input 0 … Input 6 • Логика: при появлении сигнала (0 -> 1) на любом из этих входов сразу отправляется Telegram-уведомление тебе. • Антиспам включён: 15 секунд на каждый вход. Проверка в логах есть: правила для всех Input 0…6 загрузились успешно.
Скрипт появился, правила загрузились, в логах видим события — но уведомления в телеграм почему-то не доходят.
👨💻 User В логах события есть, но в телеграм почему-то не приходят.
🤖 WB ClawBot Нашёл и исправил причину. В wb-rules-скрипте был кривой вызов curl (заголовок Authorization собирался ненадёжно), из-за этого событие в логах писалось как “sent”, а в Telegram могло не уходить. Что сделал: • поправил функцию отправки в /etc/wb-rules/telegram_input_notify.js; • добавил диагностику в /tmp/wb-rules-tg.log (код ответа и ответ gateway); • перезапустил wb-rules; • отправил тест после фикса — сообщение ушло (messageId 98). Проверь, пожалуйста, пришло ли сообщение.
Тестовое сообщение дошло, но реальные события со входов по-прежнему молчат. Сообщаем боту — он копает дальше.
👨💻 User тест уведомления пришел, а события со входов все равно не приходят.
🤖 WB ClawBot Похоже, у тебя часть событий идёт не по Input N (уровень), а по Input N counter (импульсы). Я добавил второй контур уведомлений: • по фронту Input 0…6 (как было), • и по росту Input 0 counter … Input 6 counter. Теперь если вход «щёлкает» коротким импульсом и это видно только в счётчике — Telegram тоже придёт.
🤖 WB ClawBot Импульс на входе MR6C Устройство: wb-mr6cv3_17 Счетчик: Input 1 counter Было/стало: 3 → 4
Исправления действительно оказались рабочими, скрипт заработал, и в телеграм посыпались уведомления. Стоит отметить, что перенастроить режимы входов он не сообразил.
А еще я попросил бота показать код и объяснить ошибку, и, разобравшись в причинах, добавил описание этой ситуации в базу знаний, чтобы избежать таких ошибок в дальнейшем.
Следующая идея ломает границы дозволенного. Я предложил боту спроектировать и развернуть кастомный веб-интерфейс для умной квартиры с учётом подключённого оборудования.
👨💻 User Задача — разработать модный веб-интерфейс для моей умной квартиры. Устройств у меня пока немного, но я готов добавить, если посоветуешь. Сейчас у меня есть модуль WB-MR6C для управления светом: канал к1 в прихожей, k2 на кухне и k3+k4 в гостиной (люстра и бра). Соответствующие выключатели подключены ко входам MR6C. Также в прихожей есть универсальный датчик WB-MSW. В щите, рядом с контроллером, установлен счетчик электроэнергии WB-MAP6S. К каналам 1 и 2 счетчика MAP6S подключены линии кухонной плиты и кондиционера. Общее потребление квартиры видно на 4-м канале MAP6S. Кондиционер в гостиной пока управляется с пульта (нужно продумать интеграцию). Предложи идеи, что можно автоматизировать с таким набором оборудования, и спланируй интерфейс.
Агент сам предложил, что можно автоматизировать, продумал структуру экранов и составил поэтапный план разработки. И после нескольких итераций нашей командной работы вот что у нас получилось:
pic
Полученный интерфейс представляет собой HTML-страницу с JavaScript. Принцип работы тот же, что и у стандартного веб-интерфейса Wiren Board: страница подключается к MQTT через WebSocket и отображает состояние устройств в реальном времени. Готовый HTML-файл размещается в /var/www/static/, в конфиг nginx добавляется маршрут — и новый интерфейс доступен в локальной сети по адресу контроллера.
Для наглядности покажу всю историю общения с ботом, и как работает интерфейс:
А так можно было? ИИ-помощник работает на контроллере Wiren Board 8
peertube.wirenboard.com
Я провёл ещё много экспериментов — не все вошли в статью. С первого раза получалось не всегда: иногда приходилось напоминать агенту, что перед выполнением задачи стоит сначала свериться с инструкциями. А иногда диалог обрастал лишним контекстом, и тогда проще было начать с чистого листа (командой /new). Но агент никогда не сдавался и упорно продолжал работу: читал конфиги, запускал утилиты, правил свой же код и сверял результат, пока задача не решалась.
Итоги
Когда на борту контроллера появляется агент, который умеет читать документацию, управлять оборудованием, писать скрипты и исправлять собственные ошибки — меняется сам способ работы с системой. Вместо набора разрозненных утилит, конфигов и регистров можно ставить задачи на обычном языке. Но и риски становятся вполне физическими. Оправданы ли эти риски — каждый решает сам.
Проект OpenClaw удобен как стартовая площадка для экспериментов — из коробки есть интеграция с телеграм, веб-интерфейс, система долговременной памяти и подгружаемых навыков. Но при этом он ощущается как большой и даже избыточный для текущих задач. Громоздкий Node.js-стек и объем логики, который OpenClaw поднимает даже для простых операций, делает его довольно неповоротливым, а контекст модели перегружен ненужной информацией. Если ориентироваться именно на сценарий технического ассистента для Wiren Board, дальше можно посмотреть в сторону альтернативных *-Claw проектов, или подумать над специализированным решением на основе агентских фреймворков.
Пока это только эксперимент, но в открывающихся возможностях уже легко потеряться. Главное — продолжать экспериментировать. Оставайтесь на связи!-Источник
 
Loading...
Error