Войти в IT
Не знаю кому и для чего это может понадобиться, но у всех свои затеи.
У умного дома Яндекс есть свои API, ими и воспользуемся для получения значений с датчиков подключенных к Яндекс Станции.
Предположим что сам датчик уже подключен к “Алисе”, далее заходим на https://oauth.yandex.ru/client/new/
Заполняем:
Название может быть любым понятным вам;
Платформу выберем Веб-сервис, а в качестве URL оставим ссылку по умолчанию;
В доступах добавим iot:view для просмотра всех имеющихся устройств, если планируете в дальнейшем по API управлять, то добавим iot:control.
Создаем приложение и получаем данные для авторизации, здесь нас интересует ClientID
Получим отладочный токен авторизации без кодов подтверждения, для этого в ссылку добавим полученный ClientID
https://oauth.yandex.ru/authorize?response_type=token&client_id=ВашClientID
Переходим по ссылке, и получаем токен, необходимый для запросов
На этом настройка в яндексе завершена, для теста можем в командную строку линукса вбить
curl -i -X GET ‘https://api.iot.yandex.net/v1.0/user/info’ -H ‘Authorization: Bearer ВАШ ТОКЕН’
В ответ получим портянку информации по всем вашим устройствам подключенных к Умному дому Яндекс
Для меня был нужен датчик температуры и влажности, поэтому нахожу его id (“id”:”d4991cc2-hhfj-dfgg-b40f-6cc3f11f6196″) и копирую его значение.
Далее подставив в ссылку id
curl -i -X GET ‘https://api.iot.yandex.net/v1.0/devices/d4991cc2-hhfj-dfgg-b40f-6cc3f11f6196’ -H ‘Authorization: Bearer ВАШ ТОКЕН’
Получим информацию по конкретному датчику
Из полученных данных для заббикса спарсим определенные значения, вариантов этого много, но я воспользуюсь python скриптом который будет лежать прям на zabbix-server
Логинимся по ssh, создаем папку и скрипт
mkdir /tmp/script
nano /tmp/script/sensor.py
Вставим скрипт и сохраним
#!/usr/bin/python3
import requests
from requests.structures import CaseInsensitiveDict
url = “https://api.iot.yandex.net/v1.0/devices/d4991cc2-hhfj-dfgg-b40f-6cc3f11f6196” #Заменить ID своего датчика
headers = CaseInsensitiveDict()
headers[“Authorization”] = “Bearer ВАШ ТОКЕН”
resp = requests.get(url, headers=headers)
resps = dict(resp.json())
for key, values in resps.items():
if key == ‘properties’:
for z in values:
z = dict(z)
for keyz, valuez in z.items():
if keyz == ‘state’:
nameelement = valuez.get(‘instance’)
print(valuez.get(‘value’))
text_file = open(nameelement, “w+”)
text_file.write(str(valuez.get(‘value’)))
text_file.close()
В результате скрипт в той же директории создает файлы с доступными данными, в случае с датчиком яндекса – уровень заряда батареи, влажность, давление и температура. Если файлы уже созданы (повторное выполнение скрипта), то данные в файлах будут заменяться
Добавим в расписание выполнение скрипта каждые 10 минут
crontab -e
*/10 * * * * /tmp/script/sensor.py
В заббиксе значения будем добавлять через заббикс агента установленного на заббикс-сервере, для этого добавим в фале конфига параметры
nano /etc/zabbix/zabbix_agentd.conf
в любое место вставим
UserParameter = temp, cat /tmp/script/temperature
UserParameter = pressure, cat /tmp/script/pressure
UserParameter = humidity, cat /tmp/script/humidity
UserParameter = battery, cat /script/battery_level
Где название конечного файла должен быть ваш
Сохраняем и рестартуем агента
service zabbix-agent restart
Остается только добавить элементы в zabbix, ключи в моем случае temp, pressure, humidity, battery, можете задать свои