Быстрые ссылки на Aliexpress
Появилась идея поставить трекер в машину и с помощью сим карты POST запросом отправлять данные в Home Assistant. К примеру можно было бы использовать ардуино, подключить GPS и sim модули, подключить все это дело от 12в и радоваться жизни. Но с чего начать?
Разбираемся с API
В первую очередь, перед тем как начать что-нибудь паять, хотелось бы разобраться в програмной части и убедится, что Home Assistant это позволяет сделать.
Если зайти в документацию API в HA, то увидим примеры запросов:
curl \
-H "Authorization: Bearer TOKEN" \
-H "Content-Type: application/json" \
http://IP_ADDRESS:8123/ENDPOINT
Из данного примера, видно что для начало нужно создать токен, который мы будем использовать для наших API зпросов. Чтобы это сделать, нужно перейти в раздел своего профиля. Для этого прокрутите левое мени в самый низ, нажимаете на свой профиль, скролите вниз и смотрим на следующую секцию
Дальше нажимаем на кнопку создать токен, попросит ввести название, называем к примеру API и полученный токен сохраняем в безопасное место. Так как посмотреть в HA его еще раз не получится в целях безопасности. Если вы его потеряете, то придется этот удалить и создать новый.
Вебхук и автоматизация
В документации по API ничего не сказано про вебхуки, а для данного случая это прекрасный способ отправлять данные геолокации. Урл будет выглять следующим образом:
http://your-home-assistant:8123/api/webhook/some_hook_id
Перед тем как мы продолжим с API, нужно реализовать автоматизацию, которая будет получать и расставлять данные, которые мы будет отправлять через API. Для этого переходим в раздел Настройки -> Автоматизации
Создаем новую автоматизацию, в триггере выбираем вебхук, как только мы выберем, он сразу создаст уникальный ID, который нам понадобится. В действиях мы выбираем сервис device_tracker.see, который будет выглять следующим образом:
service: device_tracker.see
data:
gps:
- "{{ trigger.json.latitude }}" // Данные, которые будут в POST запросе
- "{{ trigger.json.longitude }}"
dev_id: car // Имя вашего устройства
gps_accuracy: 10
battery: 100
И этого пока что нам хватит, сохраняем автоматизацию.
Тестируем через Postman
Если нужно протестировать какой либо запрос, для этого я использую приложение postman. Отличное приложение, которое позволяет создавать запросы любой сложности и так же сохранять и делиться с колегами. В целом MUST HAVE для подобных вещей.
Все что нам понадобится, это ссылка, токен, вебхук_айди и данные, которые мы будем отсылать. Для этого в postman в раздел ссылки указываем http://your-home-assistant:8123/api/webhook/hook_id, где hook_id, это айди созданный в автоматизации.
Дальше прописываем headers как на скриншоте
И прописываем примеры наших данных.
Проверяем что получилось
После того как мы отправили POST запрос и получили 200 ответ. Можно идти раздел Панель разработчика, перейти во вкладку состояния и вбить где поиск объектов: device_tracker.car. Мы должны увидеть вот такое
Для наглядности, можно поменять данные в postman, отправить и посмотреть как в разделе панель разработчика в реальном времени данные меняются. На этом все, мы убедились что все работает и можно приступать к пайке устройства для получения данных геолокации и отправки. Но это уже другая история!