Статья

Ковыряем StarLine. Часть 1

Предисловия

Еще в 2018 году я увидел это видео от Sprut и у меня загорелось в одном месте)). На тот момент у меня как раз был установлен необходимый комплект автосигнализации ZONT. Я также сделал управление охранным комплексом через Быстрые Команды iOS, чем смог реализовать автозапуск голосовой командой как с телефона, так и с Apple Watch. Далее стало интересным построить автоматизацию открытия гаражных ворот по отслеживанию геолокации. Node-Red помог мне здесь. Получилось очень даже хорошо, но возникли трудности, когда автоматических ворот стало двое и как определить в скрипте куда я планирую заехать, уже стало невозможным (ну по крайней мере тогда). Потом я построил свой навык для Алисы, где уже выстроил диалог для автозапуска, который проводил ряд естественных ответов и уточняющих вопросов, перед тем как уходила команда на запуск. И кстати, мне понравился такой вариант голосового взаимодействия.

В 2024 году машину меняю и ставлю комплект от StarLine. У них есть свой официальный навык, но за пару недель пользования я отметил очень частые сбои, то навык не ответил, то заново просит пройти подключение устройств. В итоге, я решаюсь повторить пройденный с ZONT путь. Нашел  здесь документацию по StarLine API и приступил к реализации задуманного…

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

Авторизация

Первоначальной задачей стоит в прохождени процедуры авторизации. Не помню уже, как это выглядело в случае с ZONT, но тут нужно пройти 9 кругов ада. Возможно, это стандартная процедура для подобных ситуаций, но даже сами разработчики, понимая что нужно снизить порог входа, сделали скрипт авторизации на Python и разместили здесь

Процедура авторизация это процесс последовательных HTTP запросов с различными вложениями, заголовками и т.д. Результатом прохождения всех этапов становится наличие ID самого устройства и специального SlNet Token, который потом прописывается в заголовок Cookie при отправке команды на устройство. 

Для того, чтобы приступить, нам необходимо первым делом получить одобрение)). Для этого запросите в личном кабинете на my.starline.ru в разделе "Разработчикам" идентификатор приложения и пароль. Раздел доступен только, когда в качестве языка интерфейса выбран русский язык. После того, как вы получите на почту уведомление о том, что ваша заявка одобрена (у меня заняло около 12 часов), зайдите в личный кабинет на my.starline.ru в раздел "Разработчикам". В этом разделе будет доступна кнопка "Создать приложение", по клику на которую откроется форма, ее необходимо заполнить. После успешного заполнения формы на странице появится карточка, на которой будет указаны AppId и Secret.

Далее создаем новый ЛОГИЧЕСКИЙ сценарий у себя на хабе и вставляем код с файла StarLine_SH.json

В данный сценарий я включил все этапы авторизации, которые последовательно выполняются с оповещением статуса исполнения в логах (отладка).

Открываем сценарий и практически в самом верху есть блок Options, где нам необходимо прописать четыре значения (заменить имеющие в двойных кавычках):

  1. Логин от приложения или любой подтвержденный e-mail
  2. Пароль от приложения
  3. Полученный AppID
  4. Полученный Secret

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

  1. Четыре выключателя
  2. Один датчик шума
  3. Один датчик движения
  4. Семь параметров только с одной строкой

Ниже мой пример виртуального аксессуара. В нем есть пятый выключатель с именем Google, но он нам не нужен.

Важно сделать имена всех добавленных в аксессуар сервисов, в точности как указано ниже.

Выключатели:

  1. Автозапуск
  2. Охрана
  3. Статус
  4. Авторизация

Датчик шума с именем Двигатель

Датчик движения с именем Движение

Параметры:

  1. Token
  2. Device
  3. User
  4. Пробег
  5. Топливо
  6. Широта
  7. Долгота

Далее к каждому выключателю подключаем ранее нами созданную виртуальную логику. Учитывая, что мы в сам код сценария прописали Логин и ID, то они по умолчанию сразу пропишутся в параметрах логики на каждый выключатель.

Теперь наступает момент истины. В приложении StarLine отключаем двухфакторную авторизацию, если пользуетесь ей. Включаем показ логов (отладка) и пробуем включить выключатель "Авторизация". При удачном выполнении должно быть выполнено 6 этапов и последние записи в логах должны быть следующие

При удачной авторизации мы также получим заполненные параметры Token, Device, User. Все остальные параметры будут также заполнены, если ваш охранный комплекс позволяет их читать.

Управление

Если на этом этапе всё хорошо, то могу Вас поздравить. Всё получилось. Можете попробовать включить автозапуск и поиграть с постановкой и снятием с охраны. Выключатель Статус при нажатии обновит текущий статус автозапуск, охраны, датчика шума (он же статус работы двигателя), датчика движения, параметров Пробег, Топливо и текущую геолокацию в параметрах Широта и Долгота.

По уму, надо теперь создать блочный сценарий, с планировщиком, который будет включать выключатель "Статус" каждые ..... и вот здесь огорчение. ZONT позволял это делать раз в секунду, а StarLine установил ограничение в 1000 запросов в сутки для физических лиц. Я сделал себе раз в 2 минуты.

Итоги

И так, мы теперь умеем управлять своей сигнализацией и получать некоторые статусы, правде не так часто, как хотелось бы. Свою личную задачу прикрутить автозапуск к навыку Алисы я реализовал. Но всё это конечно костыли. Очень ждем появления возможности создавать под СХ плагины, контроллеры, автоматизации создания аксессуаров и т.д.

А пока, будем ковырять дальше)) Если будет интересно, то сделаю часть 2, в которой закрою выявленные мной и вами ошибки, что-нибудь придумаю, как использовать геолокацию, создам сценарий напоминания необходимости заменить масло.

0

Вернуться назад
Вернуться назад