Интеграции с системой 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 часов.