Управление освещением
    Презентации
    Технические решения на LogicMachine
    Визуализация
      evika.ru    Технические решения на LogicMachine    Cбор данных с приборов учета потребления ресурсов в реальном времени

    Cбор данных с приборов учета потребления ресурсов в реальном времени

    Задача:

    Требуется организовать систему сбора данных со счетчиков холодной и горячей воды, потребления электричества, установленных в каждом доме коттеджного поселка или квартирах многоквартирных домов и в реальном времени и передавать данные через интернет в управляющую компанию (УК).

    Преимущества решения:

    • Получение данных из управляемых домов в реальном времени.
    • Масштабируемость системы как внутри здания, так и по количеству подключенных домов.
    • Использование шины KNX делает систему отказоустойчивой (нет единой точки отказа).
    • Легкая интеграция в бизнес приложения.

    Решение:

    Для решения задачи мы будем использовать обычные импульсные счетчики, которые передают информацию о потребление в виде импульсов. Для снятия сигналов с этих счетчиков, мы будем использовать устройство EVIKA Multiport, на которое можно подключить до 8 импульсных счетчиков. EVIKA Multiport преобразует эти сигналы в KNX-телеграммы.
    Используйте программу ETS для конфигурации EVIKA Multiport, где можно настроить перевод количества импульсов со счетчиков в измеряемые величины (m3, кВт) и режим отправки телеграмм – по истечению периода времени или изменению значения.

    • Input – Binary impulse counter (Вход – Счетчик импульсов).
    • Counter pulse edge [Rising edge / Falling edge / Both] (Импульса счетчик [Замыкание (Вкл.)/ Размыкание (Выкл.)/ Замыкание и размыкание (Вкл./Выкл.)] – какой сигнал импульса считать.
    • Counter direction [Up/Down] (Направление счетчика [Вверх/Вниз]) – направления счетчика.
    • Number of pulses per counter increment [1–100] (Количество импульсов на шаг счетчика [1–100] – количество импульсов для увеличения счетчика на 1 (например, 10 импульсов сообщают об 1 литре воды > увеличение счетчика на 1).
    • Counter step per each pulse [1–100] (Шаг счетчика на каждый импульс [1–100]) – шаг счетчика для каждого импульса (например, 1 импульс означает 10 литров воды >увеличение счетчика на 10).
    • Send telegram on counter update [Disabled/Enabled] (Отправка значения при изменении значения счетчика [Включено/Отключено])– отправить телеграмму на шину при каждом обновлении счетчика.
    • Periodical send interval [10 s – 10 min] (Отправка значения по таймеру [10 сек. – 10 мин.]) – временной промежуток, после которого число считанных импульсов отправляется на шину

    Полная документация по устройству EVIKA Multiport лежит на нашем сайте по адресу: http://evika.ru/katalog/evika-multiport-v3-universal-ny-j-kontroller-vvoda-vy-voda-8-mi-kanal-ny-j-uio8-knxv3/

    Для передачи данных со счетчиков мы выбрали KNX-сеть по следующим причинам:

    • Для ее прокладки требуется всего одна витая пара.
    • Для работы устройств EVIKA Multiport не требуется дополнительное питание.
    • KNX сеть является децентрализованной сетью, когда при выходе из строя одного устройства это никак не повлияет на работу остальных устройств.
    • Произвольная топология (кроме круга).

    Подключенное к KNX-сети здания устройство EVIKA LogicMachine будет получать телеграммы от устройств EVIKA Multiport, которые будут содержать значения счетчиков.

    Для обработки этих телеграмм в веб-интерфейсе EVIKA LogicMachine определяем объект соответствующий счетчику и тип данных 12. 4 байта, целое без знака (12. 4 byte unsigned integer).

    Создаем скрипт, который будет срабатывать при получении телеграммы на этот групповой адрес:

    -- получаем значение счетчика
    value = event.getvalue()
     -- получаем идентификатор счетчика, который записан как имя переменной
    id = grp.alias(event.dst)
     
     -- передаем значение на веб сервер УК (в данном примере http://192.168.1.15)
    http = require "socket.http"
    local cmd = string.format("http://192.168.1.15/insert.php?id=%s&value=%d", id, value)
    result, statuscode = http.request(cmd)
     
    -- сохраняем результат выполнения запроса. Если все выполнилось правильно,  
    -- то statuscode будет равен ОК (код 200), иначе сохраняем предупреждение, текст ошибки
     if (statuscode ~= 200) then
            alert('Error: '..statuscode..'. '..result..' query: '..cmd)
    end

    Скрипт, при получении телеграммы, устанавливает соединение с web-сервером в УК и передает ему HTTP-запрос, содержащий заводской идентификатор счетчика и его текущее значение. Если результат выполнения запроса показывает, что он был выполнен с ошибкой, то сохраняем во вкладке Уведомления (Alerts) текст ошибки и запрос.
    На стороне УК может работать на сервере любая связка веб-сервера и СУБД. Например, в данном примере использовали классическую тройку Apache + PHP + MySQL. На базе данных MySQL мы завели пользователя ‘lm_user’ с паролем ‘123456’. Создали интерфейсную таблицу counters.

    CREATETABLEIFNOTEXISTS `counters`(
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `dt` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
    `id_counter` int(11) NOT NULL,
    `value` float NOT NULL,
    PRIMARYKEY (`id`),
    UNIQUEKEY `id`(`id`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=cp1251 COLLATE=cp1251_general_cs AUTO_INCREMENT=1989 ;

    В этой таблице мы сохраняем данные от всех работающих EVIKA LogicMachine со всех зданий. (Считаем, что идентификатор счетчика уникальным). Далее данные из этой таблицы можно передать в любое бизнес приложение, но решение этой задачи здесь не описывается. Таблица содержит следующие поля:

    • id – уникальный идентификатор записи в таблице, устанавливается автоматически
    • dt – время вставки записи, устанавливается автоматически
    • id_counter – идентификатор счетчика
    • value – значение счетчика

     Для записи приходящих данных в эту таблицу будем использовать скрипт, написанный на языке PHP и вызываемый веб-сервером. Скрипт разбирает параметры HTTP-запроса, определяет идентификатор счетчика и его значение, устанавливает соединение с базой данных, формирует SQL-запрос для записи в таблицу и выполняет его.

    // разбираем http запрос пришедший из EVIKA LogicMachine
    $id_c = $_GET["id"];
    $value_c = $_GET["value"];
     
    if(!$id_c || !$value_c )
    {
    	// если данные не корректны, то возвращаем описание ошибки
    	echo "non correct data";
    	exit;
    }
     
    // соединяемся с СУБД
    $db = mysql_pconnect("localhost", "lm_user", "123456");
     
    if(!$db)
    {
    	// возвращаем ошибку если не удалось соединится с базой
    	echo "Error connect to database";
    	exit;
    }
     
    // выбираем базу данных
    mysql_select_db("data");
    // формируем sql запрос к базе данных
    $query = "INSERT INTO counters(`id_counter`, `value`)
    VALUES(".$id_c.",".$value_c.")";
     
    // выполняем запрос
    if(mysql_query($query))
    {
    	//если все выполнилось нормально
    	echo "OK";
    }
    else
    {
    	// если не смогли выполнить запрос возвращаем ошибку
    	echo "Error execute sql query: ".$query;
    };
    В результ

    В результате работы системы мы практически в реальном времени видим количество потребленных ресурсов (холодная, горячая вода, электричество) в управляемых зданиях.

    Требуемое оборудование в расчете на здание:

    1. EVIKA LogicMachine.
    2. EVIKA Multiport.
    3. Импульсные счетчики.
    4. EVIKA KNX Дроссель.
    5. Блок питания 25-30В.

    Требуемое оборудование на стороне офиса УК

    1. Сервер с установленной СУБД и Веб сервером. Мы советуем использовать Apache+PHP+MySQL.
    2. Постоянный ip-адрес, требуемая скорость доступа зависит от кол-ва счетчиков и частоты передачи данных (для коттеджей может быть достаточно GSM модема).



    Copyright © Evika.ru 2017
    All Rights Reserved