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

    Получение данных от погодных станций DAVIS в сеть KNX

    Погодные станции DAVIS

    Погодные станции DAVIS позволяют замерить множество погодных параметров в месте установки измерительного блока:

    • температуру
    • направление и скорость ветра
    • влажность
    • освещённость
    • и ещё более 30 параметров.

    Обычно погодная станция разделяется на 2 отдельные части:

    • измерительную (датчики)
    • регистрирующую (например, панель показанная справа внизу на фото)

    Есть модели с передачей данных между частями станции как проводным, так и беcпроводным способом.

    Регистрирующая часть станции может запоминать и отображать замеренные параметры.

    С помощью внешнего компьютера данные накопленные станцией могут передаваться для дальнейшей обработки другим машинам, например серверу визуализации.

    davis

    Подробнее с продукцией DAVIS Instruments Corp. можно ознакомиться по ссылке:
    http://www.davisnet.com/weather/products/professional-home-weather-stations.asp

    Одним из ресселеров продукции DAVIS в России является компания i‑Home.

    Получение информации от станции

    После подключения регистрирующей части станции к Internet, становится возможным периодическая отправка файла-отчёта станции на LogicMachine по FTP протоколу.

    LogicMachine извлекает данные последнего замера.

    Извлечённые данные могут быть использованы:

    • для визуализации LogicMachine
    • переданы как KNX сообщения
    • для дальнейшей обработки в приложениях

    Ниже описано решение задачи отправки температуры и направления ветра в сообщении KNX, например, для отображения на панелях-дисплеях системы KNX.

    Для организации приема информации от станции DAVIS Вам потребуются:

    • Станция DAVIS, поддерживающая TCP/IP передачу данных,
      например, станции серии Vantage Pro2 1)
    • Интерфейсный блок-адаптер TCP/IP,
      например, типа 6555 1)
    • Программное обеспечение WeatherLink 1)
    • Компьютер для установки программы WeatherLink,
    • Internet канал передачи данных,
    • LogicMachine.

    примечание
    1) Подробности комплектации и реализации уточняйте у производителя или ресселера DAVIS.

    Настройка FTP сервера LogicMachine

    Для приема и хранения файлов-отчётов от станции необходимо активировать FTP server LogicMachine в меню:

    System configuration -> Services -> FTP server.

    davis_1

    Server Status Enabled
    включить сервер
    Port 21
    Номер порта, не менять
    Username ftp
    Имя пользователя, фиксировано, не меняется
    Password строка
    задайте строку пароля при необходимости

    Остальные параметры обычно не используются (пустые), подробнее см. в «LogicMachine Руководство пользователя» раздел FlashSys\Services\FTP Server (Сервер FTP).

    Untitled-2 После изменения параметров FTP server необходима перезагрузка LogicMachine.

    Настройка станции

    Для настройки подключения станции, параметров сохранения и передачи отчётов используйте соответствующие инструкции провайдера связи, производителя или поставщика оборудования.

    Настройка KNX объектов

    Определяем KNX объекты, которые будут принимать сообщения с извлечёнными данными в меню LogicMachine –> Объекты (LogicMachine –> Objects).

    davis_4

    Определите объекты, которые будут принимать данные из файла отчёта в данном примере:

    Название объекта
    Групповой адрес
    Тип данных
    Комментарий
    temperature 09.001 температура (09.001 temperature) В примере используется для передачи температуры
    wind dir 16. 14 байт, ASCII-строка (16. 14 byte ASCII string) В примере используется для передачи направления ветра

    Параметры объектов:

    Название объекта Обязательный параметр.
    Групповой адрес Подставьте соответствующие адреса объектов устройств, которые будут отображать данные.
    Тип данных Тип данных сообщения KNX.

    Остальные параметры обычно не используются (пустые), подробнее см. в «LogicMachine Руководство пользователя»

    Создание программы LogicMachine

    Программа оформляется в виде отдельного модуля — скрипта, который может запускаться по расписанию.

    Для создания такого скрипта:

    • Перейдите к перечню скриптов по расписанию LogicMachine -> Скрипты -> По расаписанию (LogicMachine -> Scripting -> Scheduled).
    • На выпадающем диалоге выберете Добавить новый скрипт (Add new script).
      davis_5

    Параметры нового скрипта определяются в появившемся диалоге:

    davis_6

    Название Имя скрипта
    Обязательный параметр
    Минута Расписание по минутам «‘*/5″‘ — означает запуск скрипта каждые 5 минут.
    Активный Установленная галочка означает, что скрипту разрешено выполнение.
    • Установите остальные параметры как показано на иллюстрации.
    • Параметры Категория и Описание — необязательные.
    • Нажмите кнопку Сохранить.
      В перечне резидентных скриптов должен появится зарегистрированный Вами скрипт.

    Для вызова редактора программы скрипта, нужно нажать на соответствующую иконку davis_7 в столбце Редактор.

    Подробнее о скриптах см. в «LogicMachine Руководство пользователя«.

    Формат файла отчёта станции DAVIS

    Файл отчёт является обычным текстовым файлом с простой структурой:

    davis_8

    • Данные относящиеся к одному замеру расположены в 1 строке;
    • Количество строк — не фиксировано;
    • Строки имеют поля даты и времени замера с точностью до 1 секунды.
    • Строки отсортированы по времени замера: последние замеры в конце:
    • Поля данные расположены в фиксированных позициях;
    • Данные выровнены по правой границе и имеют фиксированный формат.
    • Данные полей гарантированно разделяются 1-м или большим количеством пробелов (левые позиции значения поля могут быть пробелами);
    • Первые 3 строки являются заголовком;
    • Перенос строки кодируется последовательностью 0D0A(hex);

    Перечень и позиции полей файла отчёта:

    Номер поля

    Заголовок

    Описание

    Первая позиция1)

    Последняя позиция

    Длина поля

    Формат текстовый

    Формат KNX2)

    03 Temp Out Температура воздуха 016 022 007 sDD.d 09.001
    09 Wind Dir Направление ветра 056 061 006 SSSS 16,14

    примечание
    1) Первая позиция включает разделительные пробелы.
    2) Подробнее о форматах см. в документации подключаемого KNX оборудования.

    Полностью таблицу можно скачать здесь
    Образец файла отчёта можно скачать здесь
    Файл макета формата полей можно скачать здесь

    Программирование функции

    Для поддержки функции извлечения данных используется встроенный язык программирования высокого уровня LUA. Подробнее Вы можете ознакомиться в документе «Краткое описание языка LUA«.

    Так как нас пока интересует только последний замер, нужно считать последнюю строку файла, и извлечь из неё данные между определёнными фиксированными позициями функцией string.sub.

    Код скрипта по расписанию Update DAVIS datas:

    -- задаём массив содержащий описание формата файла отчёта и отображения полей данных.
    fields = {
    {start = 16, finish = 22, var = 'temperature', comment = 'Температура воздуха'},
    {start = 56, finish = 61, var = 'wind dir' , comment = 'Wind Dir' }
    }
    -- где
    -- каждая строка {start ... }, содержит описание 1-го поля файла отчёта
    -- start - первая позиция данных поля в строке замера
    -- finish - последняя позиция данных поля в строке замера
    -- var - Имя поля, совпадающее с именем объекта LogicMachine или его групповым адресом
    -- см. перечень параметров в разделе "Настройка KNX объектов"
    -- comment - Дополнительное описание поля, необязательное.
    -- в структуру описания можно добавить и свои параметры
    -- открываем файл отчёта.
    file = io.open('/home/ftp/davis.txt')
    -- Корневая директория ftp: '/home/ftp/'
    -- путь загрузки файла в станции указывается относительно этой директории.
    -- Считываем последнюю строку (последний замер) файла,
    -- пользуясь неизменностью длины строки = 264
    file:seek ("end" , -264) -- текуща позиция чтения установлена на
    -- 264 символ от конца файла, те начало последней строки.
    data = file:read() -- Считываем строку целиком в переменную data:
    -- Перебираем все интересующие нас поля, записанные в массиве fields
    for index, field in ipairs(fields) do -- функция ipairs() размещает в
    -- переменной field последовательность
    -- всех параметров для текущего поля
    -- Копируем в value подстроку, содержащую значение поля:
    value = string.sub(data, field.start, field.finish)
    -- но подстрока может содержать слева разделительные пробелы, удаляем их:
    value = string.trim(value)
    -- полученное значение записываем в объект KNX.
    grp.write(field.var, value) -- в качестве адреса объекта функция grp.write()
    -- может принимать как имя объекта, так и его код.
    end -- конец цикла перебора всех полей в массиве fields.

    Untitled-2 Файл отчёта может содержать информацию о множестве последних замеров (за продолжительный период). При необходимости можно создать более функциональные процедуры, позволяющие извлекать определённые данные конкретного замера.

     




    Copyright
    © Embedded Systems Rus
    2017. All Rights Reserved