mirror of
https://github.com/eddyem/small_tel.git
synced 2026-05-07 13:27:06 +03:00
.
This commit is contained in:
117
Daemons/2DO.txt
Normal file
117
Daemons/2DO.txt
Normal file
@@ -0,0 +1,117 @@
|
||||
(хорошо бы нигде не ориентироваться на 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")
|
||||
|
||||
Reference in New Issue
Block a user