При построении автоматических систем часто бывает необходимо подключить устройства, не имеющие интерфейса для интеграции но, практически все современные гаджеты имеют web-интерфейс с отображением состояния и возможностью изменения настроек. Для этих целей в intraHouse есть плагин "HTTP-клиент". С его помощью можно получить любую информацию с web-страницы.
Добавляем устройство:
Устанавливаем плагин и добавляем канал:
Указываем URL - адрес страницы устройства, при необходимости прописываем авторизацию и необходимые хедеры:
В плагине имеется возможность указать дополнительные хедеры для http-запросов. Это значительно упрощает задачу при сложных процессах авторизации на сайтах.
Теперь добавляем канал для устройства:
Обрабатывать значения можно с помощью таблиц JSON, TEXT GET и TEXT SEARCH. Нас интересует параметр температура, скорость вращения вентилятора, свободное пространство и состояние RAID-массива, разбираем страницы со свойствами устройства:
Получаем ссылку на текстовое состояние датчика:
Её и указываем на вкладке "Команды":
По аналогии поступаем с остальными значениями. Для парсинга полученных страниц используем конструктор регулярных выражений:
Полученное регулярное выражение прописываем в обработчике запроса:
Те же действия производим и для остальных, интересующих нас параметров. Моя СХД из примера использует сложный механизм авторизации, поэтому пришлось использовать отдельный канал под каждый датчик. В обычных условиях достаточно добавить один канал на ресурс и по одному субканалу на каждый датчик.
Значение свободного места отсутствует в явном виде на странице, мы имеем только общее количество байт и количество использованных байт. Поэтому необходимо написать простой скрипт по его расчету:
Таким образом остается только добавить устройство на мнемосхему и, при необходимости, построить график и настроить оповещения о превышении температуры, проблемах с массивом или отсутствии свободного места.
С помощью HTTP-клиента можно получать большое количество разнообразных данных практически с любых устройств, а также с любых сайтов. Это значительно расширяет область применения системы и позволяет анализировать данные с не поддерживающихся из коробки устройств. Кроме того, некоторыми из них можно управлять с помощью запросов GET, POST, PUT и тд.
Оригинал статьи размещен здесь: https://vk.com/my_smart_home