Разработчикам

Разработка прямо на устройствах.

Команды, состояние и события устройств разных производителей доступны через один открытый API, без SDK и перепрошивки. Владелец устройства, обслуживающая нода и параметры лежат в TON. Там их нельзя подделать, и они не пропадут вместе с чьим-то сервером.

01 · Возможности

Что может разработчик.

02 · Порядок работы

Из чего складывается работа с устройством.

01Агент ставится на устройство пакетом, а привязка идёт по коду из терминала в веб-консоли. Установка и платформы описаны на страницах «Пакеты» и «Начать».
02Состояние, события и платежи читаются через HTTP API ноды обычным GET, без подписи. Там же видны адреса контрактов устройства в TON.
03Настройки меняются командой, подписанной ключом владельца: агент сверяет подпись и только тогда выполняет команду. Подписать её можно из консоли, скрипта или своего сервиса.
04Своё событие уходит с устройства одной командой. Подпись добавляет агент, автору события ключи не нужны. Механизмы и рецепты описаны в статье «События устройства».
05Правило, которое должно работать без сервера посередине, переносится в TON: контракт одного устройства шлёт сообщение контракту другого. Как это пишется, выкатывается и проверяется, разобрано на странице «Связь устройств через контракты».

Первые четыре шага делаются в день установки и не требуют правки контрактов. Пятый — это работа с кодом на Tact, языке смарт-контрактов TON, и обновление контракта устройства.

03 · Основы архитектуры

Быстрое идёт через ноду, проверяемое хранится в TON.

Архитектура Subrose: клиент разработчика, нода, агент устройства и контракты TON

Команды, состояние и события любого устройства идут через один API, кто бы ни сделал железо. Скрипт отправляет команду HTTP-запросом на ноду. Нода находит устройство даже за файрволом или серым NAT и передаёт команду по CoAP, лёгкому протоколу для устройств. Блокчейн в этом пути не участвует.

Агент subrose хранит ключи устройства, проверяет подпись владельца и только после этого выполняет команду. В TON живёт то, что должно быть проверяемым: владелец устройства, обслуживающая нода, параметры и значимые события вроде регистрации. Собственные события читаются в консоли или через API.

04 · Смарт-контракты

Контракт устройства — открытый код.

Контракт устройства — это запись в TON: владелец, права, оплата. Устроена она как программа на Tact с открытым исходником, и логику можно заменить. Обновление проходит на месте, адрес остаётся прежним, а провести его может только ключ устройства или владелец с полными правами.

Контракты в TON шлют сообщения друг другу. Контракт одного устройства можно научить отправлять сообщение контракту второго, и второе устройство отреагирует: например, сменит настройку. Такие цепочки работают прямо в TON, без сервера посередине.

Такую логику пишут сами, на Tact. Исходники всех контрактов открыты, поэтому начать можно с контракта нужного устройства. Весь путь от сообщения до реакции железа разобран на странице «Связь устройств через контракты».

05 · Что строить

С чего начать.

Панель для своего парка

Команда уходит curl-запросом, статус приходит одним GET. Примеры запросов и формат ответа есть на странице «События устройства». Из этого собирается панель или бот с правами по ролям.

Свои сценарии

Скрипт читает события одного устройства и отдаёт команду другому. Логика остаётся у разработчика, а интерфейс к железу один. То же правило можно перенести в TON: связь устройств через контракты.

Любое железо

Агент собирается для Linux (x86_64), macOS (universal, Intel и Apple Silicon), OpenWrt, Keenetic и Raspberry Pi. Windows на подходе.

06 · Своя языковая модель

ИИ-чат — обычный клиент поверх открытого API.

В веб-консоли Subrose работает ИИ-чат. Для системы это просто ещё один клиент. Устройства, события и платежи модель читает сразу, а любую запись чат оформляет как запрос на подпись владельца. Ключи устройств модели недоступны.

Тот же API открыт всем, и клиент можно собрать на любом стеке. Модель можно подключить локальную, тогда данные не уходят в чужой API.

07 · Готово и что дальше

Система сегодня.

В TON лежат владелец устройства, обслуживающая нода, параметры и значимые события. Свои события читаются через API, а для истории поглубже их складывают у себя.

Автоматический платёж с самого устройства на подходе. Доля ноды и производителя раскладывается сама в момент списания, о деньгах подробно написано на странице «Начать». Готовых блоков для реакции одного устройства на другое пока нет: цепочку контрактов пишут сами на Tact по разбору с примерами кода или держат эту логику в своём клиенте.

Роутер на OpenWrt, Raspberry Pi, Linux-сервер или Mac: всему этому железу Subrose даёт один открытый API.

08 · Операторам нод

Нода приносит долю.

Нода обслуживает устройства и с каждого списания получает долю. Как это устроено, написано на странице «Операторам нод».

Стать оператором ноды

09 · Вопросы

Вопросы, которые обычно задают разработчики.

Нужен ли SDK?Нет. Любой скрипт превращает факт в событие одной командой subrose emit, без SDK и перепрошивки. Команды, состояние и события устройств разных производителей доступны через один HTTP API.
Что можно сделать без подписи владельца, а что нельзя?Без подписи можно читать состояние, события и платежи: API открыт для чтения. Отправить своё событие тоже можно, его подписывает агент ключом устройства. Команду, которая меняет настройки или поведение устройства, агент примет только с подписью владельца.
Где читаются свои события?В веб-консоли Subrose или через HTTP API ноды. В TON они не попадают: там только значимые факты вроде регистрации и смены ноды.
Можно ли связать два устройства напрямую?Да, и двумя способами. Скрипт читает события первого устройства через API и отдаёт команду второму. А правило, которое должно срабатывать без своего сервера, переносится в контракты: контракт первого устройства шлёт сообщение контракту второго. Приёмник, проверка отправителя и выкатка разобраны на странице «Связь устройств через контракты».
Какие платформы поддержаны?Linux, macOS (Intel и Apple Silicon), роутеры на OpenWrt и Keenetic, Raspberry Pi. Windows на подходе.
Можно ли подключить свою языковую модель?Да. Тот же открытый API доступен любому клиенту, в том числе локальной модели, и тогда данные не уходят в чужой API. Ключи устройств модели недоступны в любом случае, а любая запись оформляется как запрос на подпись владельца.

Начать

Старт с реального устройства.

Установка агента subrose, привязка устройства в веб-консоли по коду из терминала и первое событие.

Открыть инструкцию