Емельянов Эдуард Владимирович (eddy_em) wrote,
Емельянов Эдуард Владимирович
eddy_em

Логгер для all-sky и cloud sensor

"Скрестить ужа с ежом" оказалось непросто, учитывая все косяки cfitsio. Но, все-таки, получилось. Я решил этого демона не выносить в отдельную репу, а засунул в директорию внутри репы с болтвудом.
Очень много времени убил, не понимая, какого черта inotify, как только обновится файл, перестает отслеживать. А все оказалось просто: cfitsio вместо того, чтобы сделать truncate имеющегося файла (когда имени файла предваряет "!") делает unlink. Понятно, что тут inotify уже не поможет. Сделал обновление дескрипторов каждый раз, как обновится файл.
Другим косяком cfitsio было то, что целые "записи" она пишет в зипованый фитс (using fits_write_record), а вот fits_write_key не хочет — говорит, что в зипованные файлы не может.
Я все больше и больше склоняюсь к тому, что нужно свою библиотеку писать для работы с фитсами! Как лет 5 (если не больше) назад начал в ней проблемы находить, так все не покидает мысля... А еще добавить туда мой fits_filter… В общем, мечты-мечты! Если клонироваться в 10 раз (и послать половину клонов работать там, где деньги платят), то, возможно, это все и будет реализовано.

Я совсем забыл примеры привести.
Итак, если к демону болтвуда подключиться через браузер, увидим что-то вроде
humidstatTempCode=0
rainCond=1
skyMinusAmbientTemperature=-2.2
ambientTemperature=27.9
windSpeed=0.0
wetState=0
relHumid=26
dewPointTemperature=6.9
caseTemperature=42.0
rainHeaterState=0
powerVoltage=24.4
anemometerTemeratureDiff=24.9
wetnessDrop=2
wetnessAvg=157
wetnessDry=152
daylightADC=443
tmsrment=1489768832

В его документации названия полей объяснены, в последнем же поле я поместил время измерения (чтобы было понятно, насколько актуальны данные).
Ну, и очень длинная шапка FITS-файла, который получается при сохранении темой этой записи:
SIMPLE  =                    T / file does conform to FITS standard             
BITPIX  =                   16 / number of bits per data pixel                  
NAXIS   =                    2 / number of data axes                            
NAXIS1  =                  640 / length of data axis 1                          
NAXIS2  =                  480 / length of data axis 2                          
EXTEND  =                    T / FITS dataset may contain extensions            
COMMENT   FITS (Flexible Image Transport System) format is defined in 'Astronomy
COMMENT   and Astrophysics', volume 376, page 359; bibcode: 2001A&A...376..359H 
BZERO   =                32768 / offset data range to that of unsigned short    
BSCALE  =                    1 / default scaling factor                         
FILE    = 'output.fits.gz'     / Input file original name                       
ORIGIN  = 'SAO RAS '           / organization responsible for the data          
OBSERVAT= 'Special Astrophysical Observatory, Russia' / Observatory name        
DETECTOR= 'Kodak KAI-340'      / Detector model                                 
INSTRUME= 'SBIG All-sky 340C'  / Instrument                                     
PXSIZE  = '7.4 x 7.4'          / Pixel size in um                               
FIELD   = '180 degrees'        / Camera field of view                           
IMAGETYP= 'object  '           / Image type                                     
DATAMAX =                65535 / Max possible pixel value                       
DATAMIN =                    0 / Min possible pixel value                       
STATMAX =                63539 / Max pixel value                                
STATMIN =                 1585 / Min pixel value                                
STATAVR =                42204 / Average pixel value                            
STATSTD =                17002 / Standart deviation of pixel value              
EXPTIME =              0.13738 / actual exposition time (sec)                   
DATE    = '2017-03-17T16:33:03' / Creation date (YYYY-MM-DDThh:mm:ss, UTC)      
UNIXTIME=           1489768349 / exposition starts at 17/03/2017, 16:32:29 (UTC)
DATE-OBS= '2017/03/17'         / DATE OF OBS. (YYYY/MM/DD, local)               
START   = '19:32:29'           / Measurement start time (hh:mm:ss, local)       
OBJECT  = 'sky     '           / Object name                                    
HSCODE  =                    0 / hum. and ambient temp. sensor code (0 - OK)    
RAINCOND=                    1 / rain sensor conditions (1 - no, 2 - rain)      
TSKYAMB =                   -2 / Tsky-Tamb (degrC)                              
TAMB    =                 27.7 / ambient temperature (degrC)                    
WIND    =                    0 / wind speed (m/s)                               
WETSTATE=                    0 / wet sensor value (0 - dry, 1 - wet)            
HUMIDITY=                   27 / relative humidity in %                         
DEWPOINT=                  7.1 / dew point temperature (degrC)                  
TCASE   =                 42.9 / thermopile case temperature (degrC)            
RHTRSTAT=                    0 / state of rain sensor heater (1 - OK)           
PWRVOLT =                 24.4 / power voltage value (V)                        
ANEMTDIF=                 24.9 / anemometer tip temperature difference(degrC)   
WETDROP =                    2 / rain drops count for this cycle                
WETAWG  =                  157 / wetness osc. count diff. from base dry value   
WETDRY  =                  152 / wetness osc. dry count diff. from base value   
DAYADC  =                  445 / daylight photodiode raw A/D output  
TBOLTWD =           1489768366 / Boltwood's sensor measurement time (UNIX TIME)

Исследовать, как в наших местах из этой кучи данных можно определить процент облачности, я пока не собираюсь ­— других дел полно. Но, судя по публикациям, это очень неоднозначная зависимость. Обычно в лучшем случае из этих данных можно извлечь характеристики: "сильно облачно", "облачно", "малооблачно". 100% ясного неба гарантировать нельзя. Точно так же, как нельзя гарантировать, что "сильно облачно" означает 100% затянутое небо.
Tags: c, железяки
Subscribe

  • Мини-ремонт

    Празднички что-то подзатянулись. И решили мы купленные еще в январе обои наклеить на ободранную кошаками стенку. Еще одной проблемой было то, что…

  • Праздничные будни

    Праздник — праздником, но уж слишком жирно это — квасить по 4 дня две недели кряду. На первомайские съездили к кумовьям, а дальше занялись работой.…

  • Вестник ремонтного фронта

    Мало-помалу, я за пару недель сделал шкаф для своего инструмента. Вот такое получилось: Частично заполненный шкаф На двери, к сожалению,…

promo eddy_em august 17, 2019 12:33 3
Buy for 10 tokens
Юра намедни напечатал корпус для хронометра. Для первого блина получилось неплохо: И еще немного фотографий:
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic
  • 0 comments