Интеграции с системой SAURES.
Что такое SAURES ?
SAURES - это система из многофункциональных контроллеров и облачного сервиса, автоматизирующая регулярные задачи потребителей коммунальных ресурсов: ежемесячная передача показаний счетчиков, контроль состояния датчиков, защита от протечек и оповещение об аварийных ситуациях.
Что понадобится нам? Это документация пользовательского API.pdf
Отправляем POST и GET запросы.
Для отправки POST и GET запросов будем использовать программу Postman.
В теле запроса пропишем емайл и пасворд, в теле ответа должны увидеть ** sid **.
Программа может сгенерировать код запроса для разных ЯП …NodeJS PHP bash и т.д.
Скрипт в IoBroker.
Ну и сам скрипт, который получает значения через API и сохраняет в обьектах IoBrоker.
let request = require('request');//подключаем библиотеку request запросов
createState('Saures.hot_water',0);//Создаем обьекты куда запишем значения из базы Saures
createState('Saures.cold_water',0);// с значениями = 0
createState('Saures.temp_water',0);
let apiUrlLogin= 'https://api.saures.ru/1.0/login';
let apiUrlMeter= 'https://api.saures.ru/1.0/object/meters',
sid;
let optionsPost = { //опции для Post запроса
url:apiUrlLogin,
headers: {"Content-Type": " application/x-www-form-urlencoded; charset=utf-8"},
formData: { email: 'demo@saures.ru', password: 'demo' }// логин с паролем
};
function getSid(error, response, body) {
if (!error && response.statusCode == 200) {
var info = JSON.parse(body);
sid = info.data.sid
console.log(" Sid is - "+sid );
let optionsGet = {
url: apiUrlMeter,
qs: { sid: sid, id: '358' }, //опции для Get запроса
}
setTimeout(() => {request.get(optionsGet, getMeter)}, 1000);//Get запрос данных
}
};
function getMeter(error, response, body) {
if (!error && response.statusCode == 200 ) {
var info = JSON.parse(body);
console.log(info.data.sensors[2].meters[6].vals[0]); //раскоментировать для получения JSON данных
console.log(" Статус - "+info.status );
let HotW = info.data.sensors[2].meters[0].vals[0] ;//записываем значения в переменные
let ColdW = info.data.sensors[2].meters[1].vals[0] ;
let tempW = info.data.sensors[2].meters[2].vals[0] ;
setState("javascript.0.Saures.hot_water", HotW, true);//записываем значения в созданные объекты
setState("javascript.0.Saures.cold_water", ColdW, true);
setState("javascript.0.Saures.temp_water", tempW, true);
}
};
// schedule("* */12 * * *", () => {
// request.post(optionsPost, getSid);
// }); // раскомментировать крон для отправки запросов каждые 12 часов
request.post(optionsPost, getSid);
Редактируем скрипт под свои задачи.
Для удобства распарсивания данных, которые приходят с сервера, воспользуемся JSONeditorOnline
в функции getMeter для получения данных раскомментируем строку
//console.log(body); //раскомментировать для получения JSON данных
Полученный код необходимо вставить в левую панель , а в правой смотрим путь для нужного значения данных.
let HotW = info.data.sensors[0].meters[0].value
Заменить flat_id: ‘385’ на свой, который можно получить Get запросом на https://lk.saures.ru/api/company/flats
Поменялось API https://api.saures.ru/doc/
qs: { sid: sid, flat_id: '385' }, //опции для Get запроса
Ну конечно же свой логин и пароль.
formData: { email: 'demo@saures.ru', password: 'demo' }// логин с паролем
Итог.
В итоге получаем значения в обьектах IoBroker, которые будут обновляться один раз в 12 часов.
Comments