mirror of
https://github.com/eddyem/small_tel.git
synced 2026-05-07 13:27:06 +03:00
118 lines
5.0 KiB
Plaintext
118 lines
5.0 KiB
Plaintext
(хорошо бы нигде не ориентироваться на DNS, везде писать IP)
|
||
|
||
### superweatherdaemon ###
|
||
|
||
Все "станции" (* - готово):
|
||
- старая метео *
|
||
- новая метео *
|
||
- датчик дождя *
|
||
- датчик грозы (молния <=5км -> FORCEOFF=1; молния >=10км - FORCEOFF=0)
|
||
поля: LIGTPWR, LIGTDIST, LIGTTIME
|
||
- ИБП в стойке (через минуту после выключения света FORCEOFF=1; через пять минут после включения - FORCEOFF=0)
|
||
поля: POWERED (0 - внешнее питание комплекса отключено, 1 - включено)
|
||
- ИК-allsky (как будет готов - получение "процента облачности" и "температуры неба")
|
||
поля: CLOUDS, SKYTEMP
|
||
|
||
В выдаваемую клиентам информацию добавить "стандартное" поле FORCEOFF (если ==1 - парковаться, закрываться и выключаться,
|
||
в т.ч. компьютер).
|
||
|
||
Только ИБП и датчик грозы влияют на поле FORCEOFF. FORCEOFF автоматом ставит WEATHER=3.
|
||
Флаг FORCEOFF - исключительная прерогатива "супердемона", как и поле WEATHER. Значение флага снимается лишь по устареванию,
|
||
как для прочих полей с проверкой на слишком старые данные. Лишь если снят FORCEOFF, поле WEATHER может начать понижать
|
||
уровень. Сразу со снятием флага FORCEOFF, снижаем уровень WEATHER до 2. Следовательно, запускать наблюдения можно будет
|
||
лишь через 2N секунд (кстати, добавить в конфиг время ожидания понижения уровня погоды) после подачи питания.
|
||
|
||
??? Добавить "стандартные" поля: LIGTPWR, LIGTDIST, LIGTTIME (например, если гроза еще дальше 5км, писать эти данные
|
||
в FITS-шапку).
|
||
|
||
Обязательно логгировать источники повышения и понижения уровня погоды, а также источник установки флага FORCEOFF.
|
||
|
||
В управляющий UNIX-сокет добавить комады:
|
||
- forceoff - чтобы можно было вручную ставить/снимать флаг
|
||
- weath - вручную сменять уровень погоды
|
||
- mute/unmute плагинов (по номеру из list); если плагин mute, то вся информация от него игнорируется
|
||
- ?
|
||
|
||
|
||
|
||
### Демон общего питания (robometeo) ###
|
||
|
||
Мониторит FORCEOFF. При ==1 выжидает OFF_T_WAIT секунд, затем начинает проверять все 5 "роботелов": если купол закрыт и не пингуется,
|
||
отключаем питание оборудования и питание купола (кроме первого). Через OFF_T_FORCE секунд после сигнала даже если комп пингуется,
|
||
но купол закрыт, питание отключаем. Интервалы времени - в конфигурационный файл.
|
||
|
||
Если все отключено, ждет, пока не наступит 0. Потом выжидает еще ON_WAIT секунд, после чего последовательно подает питание
|
||
на все купола, выжидает ON_FORCE секунд и поочередно включает нагрузку всех ИБП куполов. Проверяет пингуемость компов и
|
||
пишет в лог, во сколько какой запинговался.
|
||
|
||
Аналогично с приборами в стойке: после OFF_R_WAIT секунд пинговать roboserv, robonas и robostorage; как не пингуются все -
|
||
выключать питание стойки. Либо же принудительно отключать после OFF_R_FORCE секунд. При снятии флага выжидаем ON_WAIT секунд,
|
||
затем включаем напряжение стойки и пингуем ее компы, логгируем.
|
||
|
||
В конфиг-файл: IP-адреса и номера релюшек оборудования телескопов и стойки, например,
|
||
|
||
telescopes=Astro-M1, Astro-M2...
|
||
Astro-M1=192.168.70.33:1:-1 # Название из telescopes = IP:номер реле оборудования:номер реле питания или -1
|
||
Astro-M2=192.168.70.35:2:22
|
||
...
|
||
equipment=roboserv,robonas,robostorage
|
||
roboserv=192.168.70.6:11:-1 # аналогично должен вести себя 192.168.70.6:-1:11
|
||
...
|
||
|
||
(при разборе конфига группировать по номеру реле оборудования и номеру реле питания; не отключать реле питания, пока
|
||
не отключены все компы, кроме выхода таймаута)
|
||
|
||
|
||
|
||
### weather proxy ###
|
||
|
||
Добавить флаг forceoff.
|
||
|
||
|
||
|
||
### Clients ###
|
||
|
||
Все клиентские демоны используют weather_proxy и его библиотеку, чтобы получать из SHM погодные данные.
|
||
Демоны купола, телескопа и монтировки обязаны создавать в /tmp файлы с FITS-шапками (по ним "демон питания" узнает, что
|
||
можно выключать компьютер).
|
||
|
||
Клиенты реагируют на WEATHER:
|
||
0 - можно работать
|
||
1 - нельзя открываться, но можно продолжать работать
|
||
2 - форсированное закрывание купола, останов телескопа, остальное без изменений
|
||
3 - закрывание всего, парковка телескопа
|
||
|
||
|
||
## Демон купола ##
|
||
|
||
Форсированное закрывание при WEATHER>1 или FORCEOFF=1.
|
||
|
||
|
||
## Демон телескопа ##
|
||
|
||
Форсированное закрывание при WEATHER>2 или FORCEOFF=1.
|
||
|
||
|
||
## Демон монтировки ##
|
||
|
||
Останов при WEATHER=2 или FORCEOFF=1, парковка при WEATHER=3 (в случае FORCEOFF=1 ни в коем случае не парковать).
|
||
|
||
ДОБАВИТЬ ключ HDRTIME // UNIX-time of last activity -> в этом ключе содержится sl_dtime() обновления шапки (нужно для
|
||
демона питания, чтобы контролировать, когда отмерла монтировка).
|
||
|
||
|
||
## Демон питания оборудования и компьютера ##
|
||
|
||
Этот демон запускается из-под рута. Принимает от пользователя команды вклчения-выключения оборудования (сюда же можно
|
||
воткнуть управление плоским полем, пинание монтировки на включение, управление светом).
|
||
|
||
При получении FORCEOFF=1, сначала щелкается кнопка отключения монтировки. Далее
|
||
проверяются DOMFITSHDR (DOMESTAT= closed), TELFITSHDR (TELSTAT = closed) и MOUNTFITSHDR (HDRTIME должен быть минимум
|
||
на 30 секунд старше текущего времени).
|
||
Если все ОК, то выключается навесное оборудование и монтировка, а следом - и сам компьютер получает сигнал poweroff.
|
||
|
||
sync(); // Flush disk buffer to prevent data loss
|
||
reboot(RB_POWER_OFF);
|
||
или (правильней?): system("shutdown -P now")
|
||
|