Камера с OpenIPC
Если на камере стоит прошивка OpenIPC, агент ставится прямо на неё. Камера входит в вашу сеть сама и становится её полноценным участником: видео, ONVIF, настройки и SSH отвечают удалённо так же, как отвечали дома.
Настройки агента лежат в U-Boot-окружении, а не в файловой системе, – поэтому переживают
перепрошивку rootfs. Перед началом: на камере должны быть wg, ip и fw_setenv; в прошивках
OpenIPC они есть.
1. Одна строка на камере
Возьмите в панели, в разделе «Как подключить», токен подключения – он уже подставлен в готовую команду. Зайдите на камеру по SSH и выполните её:
curl -fsSL https://cloud.openipc.ru/install.sh | sh -s -- tok_...
Больше ничего выбирать не нужно. Установщик сам посмотрит, какой в камере процессор, заберёт сборку
под него, сверит контрольную сумму, положит агент в /usr/sbin/, стартовый скрипт в /etc/init.d/,
пропишет адрес и токен и запустит агента. Перезагрузка не нужна: служба поднимает туннель сама.
Через несколько секунд камера появится в панели – уже вашей: токен выписан вами, и устройство, вошедшее по нему, принадлежит вам с первой секунды. Привязывать его не нужно, а вот логин и пароль RTSP указать нужно – иначе видео будет пустым, см. шаг 4.
Если что-то пошло не так, установщик не объясняется на камере, а печатает двухзначный код –
например cerberus: E13, «сборки под этот процессор пока нет», – и останавливается, ничего не
тронув. Расшифровка всех кодов ниже, в разделе Коды установщика.
Исходники агента открыты: github.com/OpenIPC/cerberus. Там же лежат его сборки под каждую архитектуру – установщик берёт их оттуда.
2. Что при этом происходит
Знать это не обязательно, но если что-то пошло не так – вот те же шаги руками. Адрес и токен идут в U-Boot-окружение, а не в файловую систему, поэтому переживают перепрошивку rootfs:
fw_setenv cerberus_api https://cloud-api.openipc.ru/v1 fw_setenv cerberus_enrollment_token tok_... /etc/init.d/S99cerberus restart
Раньше эти ключи назывались streq_api и streq_enrollment_token. Старые имена по-прежнему
действуют, а камеры, подключённые с ними, переходить ни на что не должны: агент переносит своё
сам.
Больше на камере трогать нечего: rootfs остаётся нетронутым, всё состояние агента живёт в U-Boot-окружении.
3. Если токен выписывали не вы
Камера, вошедшая по чужому токену – токену партии или выписанному монтажником, – ничья, и поток с
неё не отдаётся никому. Тогда её привязывает claim-код: им вы доказываете, что железка у вас в
руках. Установщик печатает его сразу после установки строкой cerberus: claim K7M29XQFTB3P; если
строку потеряли, код и всё остальное состояние показывает cerberus status:
cerberus status
В панели нажмите «Добавить», введите claim-код – так, как он показан, с дефисами и в любом регистре, – и нажмите «Привязать».
4. Логин и пароль RTSP
Этот шаг нужен всегда, даже если камера уже появилась в панели. Облако забирает видео с камеры по RTSP, а он закрыт паролем: без логина и пароля облако получает от камеры пустой ответ, а не картинку, и плеер открывается чёрным.
В панели откройте «Устройства и сеть», нажмите в строке камеры кнопку RTSP и введите логин и
пароль камеры. Обычно это те же, что для её веб-интерфейса; на свежей OpenIPC – root / 12345.
Когда они сохранены, кнопка показывает RTSP ✓. Если камеру добавляли через «Добавить», панель
спросит их сама, как только камера подключится.
Сменили пароль на камере – поменяйте его и здесь. Хранятся они зашифрованными, обратно панель их не показывает – заменить можно, подсмотреть нельзя, – и нужны ровно для того, чтобы облако могло забрать поток, когда прямого пути до камеры нет.
Убрать облако с камеры
Если камера больше не должна быть в облаке, снимается всё одной строкой – так же, как ставилось:
curl -fsSL https://cloud.openipc.ru/uninstall.sh | sh
Скрипт останавливает службу, снимает туннельный интерфейс, стирает из U-Boot-окружения всё, что
записал агент (адрес, токен, ключ камеры, claim-код, join-материал), убирает автозапуск из
/etc/init.d/ и удаляет сам агент. Перезагрузка не нужна. Прошивку и настройки самой камеры он не
трогает: видео, RTSP и веб-интерфейс остаются как были.
Запись об устройстве в облаке при этом остаётся, и это сделано нарочно: у агента нет прав отозвать самого себя. Иначе камеру, до которой кто-то дотянулся по SSH, можно было бы выписать из чужого аккаунта, не спрашивая владельца. Уберите устройство в панели – «Устройства и сеть», «Отвязать».
Поставить обратно можно тем же способом, что и в первый раз, – камера получит новый claim-код: её ключ и номер стёрты вместе со всем остальным, и для облака это новая железка.
Коды установщика
Установщик молчалив нарочно: длинное объяснение на экране камеры читать неудобно, а код – коротко и его можно назвать в чате. Вместе с кодом он печатает адрес этой страницы, чтобы искать расшифровку не пришлось:
cerberus: E13 cerberus: https://cloud.openipc.ru/docs/openipc-camera/#codes
Код – это и код возврата команды. Пока он не напечатан, на камере ничего не изменено. Тот же адрес
печатает и сам агент после каждой своей ошибки (cerberus: error: …), только его ошибки – словами,
и разбирает их таблица «Если что-то не так» в конце страницы.
| Код | Что случилось | Что сделать |
|---|---|---|
E10 | команда запущена не от root | зайти на камеру под root и повторить |
E11 | на камере нет fw_printenv | это не прошивка OpenIPC – на неё агент не ставится |
E13 | сборки под этот процессор пока нет | назвать в чате беты модель и процессор – они напечатаны строкой выше, cerberus: chip …, cpu … |
E14 | не скачался агент или его стартовый скрипт | повторить команду: обычно это оборванная связь |
E15 | контрольная сумма не сошлась | повторить; если повторяется – написать в чат, файл приезжает битым |
E16 | не записать в /usr/sbin или /etc/init.d | на камере кончилось место или раздел смонтирован только для чтения |
E17 | fw_setenv не записал адрес и токен | проверить, что окружение вообще доступно: fw_printenv |
E20 | агент поставлен, токен не передан | выполнить две строки fw_setenv, которые установщик напечатал, и перезапустить службу |
E21 | агент поставлен и запущен, но за 40 секунд не подключился к облаку | камера не достучалась до облака: проверить адрес и связь, потом cerberus status |
E30 | снятие (uninstall.sh) не смогло что-то убрать | раздел смонтирован только для чтения или fw_setenv не работает |
E20 и E21 – не поломки. Первый отвечает команде, запущенной без токена: агент на месте, ему
только не сказали, куда подключаться. Второй значит, что агент запущен, но подключиться пока не
смог, – код появится сам, как только камера доберётся до облака.
Если что-то не так
| Симптом | Обычно | Что сделать |
|---|---|---|
| Камера не появилась в панели | токен потрачен или истёк | выпустить новый и повторить шаг 1 |
cerberus status пишет «not enrolled» | камера не достучалась до облака | проверить адрес в cerberus_api и что у камеры есть интернет |
| Камера есть, потока нет | камера вошла по чужому токену и не привязана | ввести claim-код, шаг 3 |
| Поток открывается пустым | не задан или неверен логин и пароль RTSP | задать их, шаг 4 |
| Камера пропала после перепрошивки | вместе с U-Boot-окружением стёрт ключ | подключить заново, шаг 1; старое устройство отвязать в панели |
Ключ камеры, её claim-код и её номер лежат в U-Boot-окружении вместе – и это сделано нарочно. Сохранить номер и потерять ключ значило бы получить камеру, которая не может ни доказать, что она прежняя, ни подключиться заново. Пока они живут вместе, стёртое окружение – это просто новая камера: подключается с нуля, а прежнюю запись достаточно отвязать в панели.