Погодные станции DAVIS
Погодные станции DAVIS позволяют замерить множество погодных параметров в месте установки измерительного блока:
- температуру
- направление и скорость ветра
- влажность
- освещённость
- и ещё более 30 параметров.
Обычно погодная станция разделяется на 2 отдельные части:
- измерительную (датчики)
- регистрирующую (например, панель показанная справа внизу на фото)
Есть модели с передачей данных между частями станции как проводным, так и беcпроводным способом.
Регистрирующая часть станции может запоминать и отображать замеренные параметры.
С помощью внешнего компьютера данные накопленные станцией могут передаваться для дальнейшей обработки другим машинам, например серверу визуализации.
Подробнее с продукцией 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.
Server Status | Enabled включить сервер |
Port | 21 Номер порта, не менять |
Username | ftp Имя пользователя, фиксировано, не меняется |
Password | строка задайте строку пароля при необходимости |
Остальные параметры обычно не используются (пустые), подробнее см. в «LogicMachine Руководство пользователя» раздел FlashSys\Services\FTP Server (Сервер FTP).
После изменения параметров FTP server необходима перезагрузка LogicMachine. |
Настройка станции
Для настройки подключения станции, параметров сохранения и передачи отчётов используйте соответствующие инструкции провайдера связи, производителя или поставщика оборудования.
Настройка KNX объектов
Определяем KNX объекты, которые будут принимать сообщения с извлечёнными данными в меню LogicMachine –> Объекты (LogicMachine –> Objects).
Определите объекты, которые будут принимать данные из файла отчёта в данном примере:
Название объекта |
Групповой адрес |
Тип данных |
Комментарий |
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).
Параметры нового скрипта определяются в появившемся диалоге:
Название | Имя скрипта Обязательный параметр |
Минута | Расписание по минутам «‘*/5″‘ — означает запуск скрипта каждые 5 минут. |
Активный | Установленная галочка означает, что скрипту разрешено выполнение. |
- Установите остальные параметры как показано на иллюстрации.
- Параметры Категория и Описание — необязательные.
- Нажмите кнопку Сохранить.
В перечне резидентных скриптов должен появится зарегистрированный Вами скрипт.
Для вызова редактора программы скрипта, нужно нажать на соответствующую иконку в столбце Редактор.
Подробнее о скриптах см. в «LogicMachine Руководство пользователя«.
Формат файла отчёта станции DAVIS
Файл отчёт является обычным текстовым файлом с простой структурой:
- Данные относящиеся к одному замеру расположены в 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.
Файл отчёта может содержать информацию о множестве последних замеров (за продолжительный период). При необходимости можно создать более функциональные процедуры, позволяющие извлекать определённые данные конкретного замера. |