Набросок документации по системе архивации all-sky

Apr 20, 2017 17:23

Оставлю это здесь, в этом случае проще будет найти в случае необходимости.

Так как датчик облачности и all-sky камера являются независимыми устройствами, разработанное ПО состоит из четырех частей, входящих в совместную клиент-серверную архитектуру:
  • (сервер) подключение по последовательному соединению к камере и выдача клиенту полученных изображений;
  • (сервер) подключение по последовательному соединению к датчику облачности и выдача клиенту данных;
  • (клиент) подключение к серверу камеры для сохранения (и возможной архивации) изображений в различных форматах (raw + гистограмма, fits, tiff), а также дебайеризация полученных снимков и сохранение их в формате jpeg;
  • (клиент) подключение к серверу датчика облачности, отслеживание обновлений файлов, сохраненных предыдущим клиентом, добавление в FITS-шапку файлов последних данных с датчика облачности и архивация их.
1. Камера all-sky

Программное обеспечение для работы с камерой использует следующие библиотеки:
  • cfitsio - для сохранения изображений в FITS-формате;
  • libtiff - для сохранения изображений в формате TIFF;
  • libraw - для дебайеризации изображений;
  • libgd - для добавления к изображениям надписей (время и дата получения изображения, длительность экспозиции) и сохранения файлов в формате JPEG.
Возможна условная сборка ПО без поддержки данных библиотек (и соответствующих форматов). Доступны следующие ключи make:
  • NOLIBRAW=1 - без поддержки библиотек libraw и libgd (соответственно, без сохранения дебайеризованных изображений);
  • NOTIFF=1 - не использовать библиотеку libtiff;
  • NOCFITSIO=1 - не использовать библиотеку cfitsio.
Данные опции позволяют минимизировать зависимости для сборки серверного демона для запуска его на любом одноплатном компьютере.
У make есть три цели сборки:
  • sbig340_daemon - основной демон сервера, подключающийся к камере и отдающий полученные снимки клиенту;
  • sbig340_client - клиент, забирающий по сетевому соединению снимки с сервера и сохраняющий их в указанном формате;
  • sbig340_standalone - автономное приложение, позволяющее запускать экспозицию отдельных снимков на машине, непосредственно подключенной к камере.
Сервер и автономное приложение имеют параметры командной строки, позволяющие задавать имя устройства последовательного соединения, длительность экспозиции, скорость соединения с камерой, включать/выключать подогрев камеры, открывать/закрывать затвор и выбирать параметры элемента изображения и/или биннинга.
Помимо прочего, сервер предоставляет возможность автоматического сохранения «темновых» кадров, давая возможность задавать интервал между сохранением «темновых» и минимальную экспозицию, при которой будут получаться «темновые».
Сервер и клиент позволяют выбрать порт соединения (по умолчанию 4444). Клиент может работать как в режиме демона, так и запускаться однократно.
Клиент и автономное приложение позволяют выбрать формат, в котором будут сохраняться изображения (возможно задание нескольких форматов) и префикса имени выходного файла. Файлы могут сохраняться как с замещением предыдущих, так и с добавлением временнóй метки.
Серверный демон на основе гистограммы распределения яркости в полученном изображении вычисляет время экспозиции для следующего снимка. Существует возможность получения «сырых» данных с сервера при помощи браузера.
Сервер передает данные клиенту в виде «параметр=значение», содержащем такие поля:
  • binning - значение биннинга,
  • exptime - время экспозиции (в секундах),
  • imtype - тип изображения: 0 - с автоматическим извлечением «темновых» (отсутствует для полнокадрового изображения), 1 - обычный режим, 2 - темновой кадр.
  • imW - ширина изображения,
  • imH - высота изображения,
  • exsposetime - время (UNIX time), когда была начата экспозиция,
  • imdata - само изображение (16-битное, little-endian).
Сохраняемое клиентом дебайеризованное изображение используется для вывода в веб-интерфейсе, отображающем состояние метеопараметров на ВНП.
2. Датчик облачности

Серверный демон для работы с датчиком облачности имеет наименьшее количество аргументов: задание имени устройства последовательного соединения, номера порта (по умолчанию 55555) и возможность работы в режиме терминала.
Так как параметры окружающей среды, получаемые датчиком, могут обрабатываться на соответствие пороговым величинам в любом внешнем ПО, нет необходимости аппаратно задавать пороги. Серверный демон лишь принимает данные от устройства и передает их клиенту. Данные передаются клиенту сразу в момент поступления по последовательному соединению (один раз в 2-3 секунды). Формат данных имеет следующий вид:

humidstatTempCode=0
rainCond=1
skyMinusAmbientTemperature=-2.9
ambientTemperature=18.9
windSpeed=0.0
wetState=0
relHumid=28
dewPointTemperature=0.3
caseTemperature=32.9
rainHeaterState=0
powerVoltage=24.4
anemometerTemeratureDiff=24.9
wetnessDrop=2
wetnessAvg=179
wetnessDry=180
daylightADC=613
tmsrment=1492697510
Значения параметров и их величин можно прочитать в файле Protocol.md.
3. Клиент-архиватор

Архивирующий клиент отслеживает (при помощи inotify) изменение указанного fits-файла и производит его архивацию по заданному в параметре командной строки пути в формате YYYY/MM/DD/hh:mm:ss.fits.gz, где YYYY - год, MM - месяц, DD - день месяца, hh - часы, mm - минуты, ss - секунды начала экспозиции.
В FITS-шапку архивируемых файлов добавляется вся информация с датчика облачности на момент архивации файла. Для этого клиент подключается к серверу датчика облачности по заданному в параметрах командной строки адресу и порту. Также в командной строке можно задать минимальный интервал архивации - обновления изображений внутри этого интервала архивироваться не будут. «Темновые» кадры архивируются независимо от значения этого интервала.

Боюсь, это так и останется единственной документацией (кроме комментариев в коде) к этим демонам.

рукожопие, всячина, для себя, бта

Previous post Next post
Up