AllSkyRadar, na razie połowa, tylko obsługa kamery raspberry bez nakładki z matplotlib,
tak mniej więcej jak to mam teraz u siebie.
Później dorzucę część od kamery asi z nakładką matplotlib.
W kilku miejscach mogą być na sztywno ścieżki wpisane, więc założenie jest takie żeby katalog AllSkyRadar znalazł się w folderze /home/pi/
Całość uruchamiam skryptem
bash ./start_tmux.sh
Odpala się taki układ:
0 -
/home/pi/AllSkyRadar/copy_loop_wsc.sh
1 -
/home/pi/AllSkyRadar/rPiCamera.sh
2 -
/home/pi/AllSkyRadar/vrs.sh
3 - pusty terminal
4 -
/home/pi/AllSkyRadar/flight_warning.sh
5 -
htop
copy_loop_wsc.sh
W pliku ASR_Conf.py jest część konfiguracji, skrypty kopiują dane scp-em na storage ip i ścieżka:
Kod: Zaznacz cały
STORAGE_IP="192.168.3.112"
STORAGE_FLDR="/home/pi/work/arch/AS/_ASI"
Jeśli ktoś zechce to uruchomić u siebie, to musi to przerobić na własne potrzeby, zamiast scp można podmontować windowsowy zasób SMB i kopiować w ten sposób. Ja nie używam mountów, bo robi się kaszana jeśli padnie połączenie sieciowe, próbowałem rsync, ale scp jakoś tak najlepiej działa.
rPiCamera.sh
Tworzy się ścieżka /tmp/AllSkyRadar/ gdzie lądują tymczasowo .jpg i kilka plików conf z wartościami ekspozycji, iso, wb, etc, żebym mógł bez restartowania kamery zmieniać te wartości z zewnątrz, są jakoś opisane w
rPiCamera.py.
PiCamera.sh uruchamia też
rPiCamera.py i pilnuje żeby uruchomić ponownie jeśli zajdzie potrzeba.
vrs.sh
Uruchamia Virtual Server Radar bez gui.
flight_warning.sh
Tu urruchamia mały łańcuch skryptów (run_screen.sh > .flight_warning > flight_warning.sh > flight_warning_MLAT.py), które wewnątrz tmuxa odpalają screen a w nim flight_warning, wygodne gdy chce sobie podejrzeć samą tabelkę na telefonie bez ładowania tmuxa. Ten screen może działać niezależnie od tmuxa, a któryś ze skryptów po drodze sprawdza czy jest uruchomiony, itp. Tylko nie przełącza jeszcze źródla na dump1090 gdy VRS nie działa.
WWW:
W podkatalogu
www zestaw html-i, które używam, allsky i widesky są samoodświeżające, vrs nie musi, te 3 są jako iframe-y połączone w index.html, więc odświeża się tylko to co musi. Trzeba zmienić adresy ip w tych htmlach i powinny się znaleźć w /var/www/html/
misc/symlink_www.sh polecenie żeby zrobić symlink, do aktualnego jpg, w /var/www/html/
Ręcznie uruchamiane:
start_wsc_mp4_fg.sh odpala w terminalu skrypt który kompresuje jpg do h264
start_wsc_mp4_bg.sh odpala w tle skrypt który kompresuje jpg do h264
restart_wsc_mp4.sh wyłącza skrypt który kompresuje jpg do h264, niezależnie czy był w fg czy bg i uruchamia ponownie w bg (w tle).
stop_wsc_mp4.sh wyłącza skrypt który kompresuje jpg do h264, niezależnie czy był w fg czy bg.
Przy nie uruchomionej kompresji folder /tmp/AllSkyRadar/WSC.tmp może zacząć puchnąć, bo nic go nie opróżnia.
restart_wsc_cam.sh ręczny restart
rPiCamera.py
stop_wsc_cam.sh ręczne zatrzymanie
rPiCamera.py oraz
rPiCamera.sh (!)
start_wsc_cam.sh ręczne uruchomienie
rPiCamera.sh
reread_wsc_cam.sh ręczne wymuszenie zaczytania wartości ekspozycji, soft restart.
Przy ręcznym restarcie będzie delay, przy reread/soft restarcie nie ma żadnych opóźnień.
reset_vrs_receiver_range.sh
Robi kopię receiver range i usuwa aktualny, trzeba wcześniej wyłączyć VRS (klawiszem Q w okienku konsoli gdzie jest otwarty, a potem skrypcie uruchomić ponownie)
To chyba wszystko co tam jest na razie.
W
rPiCamera.py koło linii 349:
Kod: Zaznacz cały
q0Ax = 0 ; q0Ay = 0
im = image[q0Ax:q0Ax+1746, q0Ay:q0Ay+3104]
Przycinam obraz z 3104x2308 do 3104x1746 do 16:9. Zmiana tutaj wnosi konieczność dalszych zmian m.in. draw* od linii 370-382
oraz w 388 gdzie jest resize dla h264.
Skrypt mierzy światło sam bez korzystania z automatyki kamery, zmieniam tylko zakresy min/max zależnie od pory dnia.
Potem dorzucę na githuba schedule.sh, który się o północy z crona uruchamia, ale muszę to przetestować, bo zmodyfikowałem sunwait żeby nie wait tylko zwracał godziny wschodów/zachodów etc., a muszę źródła znaleźć w archeo.
Kod: Zaznacz cały
# Zakresy min/max dla naświetlenia:
echo 'echo "5" > /tmp/AllSkyRadar/tmpconf3A' | at $(date --date="+`/usr/local/bin/sunwait -v naut up` min" +%H:%M)
echo 'echo "70" > /tmp/AllSkyRadar/tmpconf2A' | at $(date --date="+`/usr/local/bin/sunwait -v naut up` min" +%H:%M)
echo 'echo "90" > /tmp/AllSkyRadar/tmpconf3A' | at $(date --date="+`/usr/local/bin/sunwait -v sun up +20` min" +%H:%M)
echo 'echo "130" > /tmp/AllSkyRadar/tmpconf2A' | at $(date --date="+`/usr/local/bin/sunwait -v sun up +20` min" +%H:%M)
echo 'echo "75" > /tmp/AllSkyRadar/tmpconf3A' | at $(date --date="+`/usr/local/bin/sunwait -v sun down -20` min" +%H:%M)
echo 'echo "105" > /tmp/AllSkyRadar/tmpconf2A' | at $(date --date="+`/usr/local/bin/sunwait -v sun down -20` min" +%H:%M)
echo 'echo "65" > /tmp/AllSkyRadar/tmpconf3A' | at $(date --date="+`/usr/local/bin/sunwait -v civ down` min" +%H:%M)
echo 'echo "180" > /tmp/AllSkyRadar/tmpconf2A' | at $(date --date="+`/usr/local/bin/sunwait -v civ down` min" +%H:%M)
echo 'echo "85" > /tmp/AllSkyRadar/tmpconf3A' | at $(date --date="+`/usr/local/bin/sunwait -v naut down -20` min" +%H:%M)
echo 'echo "125" > /tmp/AllSkyRadar/tmpconf2A' | at $(date --date="+`/usr/local/bin/sunwait -v naut down -20` min" +%H:%M)
# Zmiana WB dzień/noc i BW/Kolor dla noc/dzień
echo 'echo "1" > /tmp/AllSkyRadar/tmpconfA2' | at $(date --date="+`/usr/local/bin/sunwait -v naut up` min" +%H:%M)
echo 'echo "0" > /tmp/AllSkyRadar/tmpconfA3' | at $(date --date="+`/usr/local/bin/sunwait -v naut up` min" +%H:%M)
echo 'echo "1" > /tmp/AllSkyRadar/tmpconf9' | at $(date --date="+`/usr/local/bin/sunwait -v naut up +1` min" +%H:%M)
echo 'echo "0" > /tmp/AllSkyRadar/tmpconfA2' | at $(date --date="+`/usr/local/bin/sunwait -v naut down +10` min" +%H:%M)
echo 'echo "1" > /tmp/AllSkyRadar/tmpconfA3' | at $(date --date="+`/usr/local/bin/sunwait -v naut down +10` min" +%H:%M)
echo 'echo "1" > /tmp/AllSkyRadar/tmpconf9' | at $(date --date="+`/usr/local/bin/sunwait -v naut down +11` min" +%H:%M)
# restart kompresji h264 (i przesłanie mp4 na storage)
echo 'touch /tmp/AllSkyRadar/WSC.tmp/restart' | at $(date --date="+`/usr/local/bin/sunwait -v naut up` min" +%H:%M)
echo 'touch /tmp/AllSkyRadar/WSC.tmp/restart'| at $(date --date="+`/usr/local/bin/sunwait -v sun up +60` min" +%H:%M)
echo 'touch /tmp/AllSkyRadar/WSC.tmp/restart' | at 12:00
echo 'touch /tmp/AllSkyRadar/WSC.tmp/restart'| at $(date --date="+`/usr/local/bin/sunwait -v sun down -65` min" +%H:%M)
echo 'touch /tmp/AllSkyRadar/WSC.tmp/restart'| at $(date --date="+`/usr/local/bin/sunwait -v naut down -5` min" +%H:%M)
# Restart copy_loop_wsc.sh i stworzenie katalogu(ów) z nową datą na storage:
touch /tmp/AllSkyRadar/restart3
# Aktualizacja orbity iss dla matplotlib
wget -qr https://www.celestrak.com/NORAD/elements/stations.txt -O /tmp/stations.txt
grep "ISS (ZARYA)" /tmp/stations.txt -A 2 > /tmp/iss.tle
Wymagania:
Sprzęt:
Może zadziałać na rPi0 przy zdjęciach co 10s, na rPi3/rPi4 mam co 5s.
Kamera raspberry v2 , ja używam dodatkowo chyba taki
obiektyw
System:
rPi4 Raspbian Buster Linux rPi4 4.19.97-v7l+ #1294 (2020-02-13)
Software:
Poniżej część już na wyrost pod ASI i nakładkę z matplotlib:
https://github.com/spink-al/picamera
Tutaj pocięta biblioteka picamera, standardowo powinna być na raspbianie w /usr/lib/python3/dist-packages/picamera
trzeba tam skopiować i nadpisać wszystko, plikami z katalogu
https://github.com/spink-al/picamera/tr ... r/picamera
https://github.com/filiparag/zwo-skycam
sudo pip3 install opencv-python==3.4.6.27
sudo pip3 install opencv-contrib-python==3.4.6.27
sudo apt install libhdf5-dev libhdf5-serial-dev libatlas-base-dev libjasper-dev libqtgui4 libqt4-test
sudo pip3 install matplotlib
sudo pip3 install Pillow
sudo pip3 install ephem (albo sudo apt install python-ephem)
sudo pip3 install zwoasi
sudo pip3 install scipy
sudo apt install tmux
sudo apt install screen
sudo apt install at
Zalecane:
Dodanie linijki do /etc/fstab
Pewnie z konfiguracją można pomieszać i przy jednej kamerze podnieść rozdzielczość mp4 do fullsize, można zrezygnować z zapisu jpg na zewnętrzny storage i zostać tylko przy podglądzie www i kompresji. Jak się ogarnę to dorzucę do tego samego repozytorium rozwiązanie z allsky na asi i z nakładką z pozycjami samolotów, na razie tyle.
