Pro upload naměřených dat ze stanic se využívá python program data-uploader. Program lze použít pro upload dat projektů Bolidozor a Ionozor.
Upload na centrální server probíhá přes SSH protokol. Zabezpečení přenosu je pomocí ssh-klíče.
Program při nahrávání dat na server kontroluje celistvost přesunutého souboru pomocí kontrolních součtů a zároveň předá informaci do indexační databáze RTbolidozoru o novém souboru na serveru.
Celkově řeší tyto úlohy:
Celý skript je připraven pro fungování s radio-observerem program se proto spouští s parametrem cesty ke konfiguračnímu souboru radio-observeru. například takto:
./repos/data-uploader/dataUpload.py ~/bolidozor/station/Bolidozor.json
Zdrojové soubory jsou umístěny na Githubu bolidozor/data-uploader.
Data-uploader vyžaduje tyto závislosti:
sudo apt install python-paramiko
Pomocné knihovny:
git clone https://github.com/MLAB-project/python-mlab-utils.git cd python-mlab-utils/ sudo python setup.py install develop
Skript stáhnete pomocí:
git clone https://github.com/bolidozor/data-uploader.git cd data-uploader
Pak je uz jenom potreba mit spravne klicove vyrazy v Bolidozor.json
Pro správné fungování data-uploaderu se musí do konfiguračního souboru radio-observeru přidat následující parametry:
"project": "bolidozor", "project_home_folder": "/home/odroid/bolidozor/station/", "storage_hostname": "space.astro.cz", "storage_username": "obsjaromer", "storage_stationpath": "/storage/bolidozor/", "storage_protocol": "ssh",
V některých případech, obvykle hvězdárnách s pomalým datovým připojením je vhodné omezit rychlost uploadu dat ze stanice, aby se dostalo i na ostatní uživatele sítě. Data uploaderu lze šířku přenosového pásma omezit programem trickle:
trickle -u 200 ./dataUpload.py ~/bolidozor/station/Bolidozor.json
Funkci můžeme ověřit například programy bmon nebo iftop
sudo apt-get install bmon
cd ~/repos/ mv RMDS-data-uploader data-uploader cd ~/repos/data-uploader/ git pull
cd ~/repos/station-supervisor/ git pull
sudo apt install python-paramiko
Do konfiguračního souboru přidat tyto parametry před „frontend“: „tcp_raw“,
:
"project": "bolidozor", "project_home_folder": "/home/odroid/bolidozor/station/", "storage_hostname": "space.astro.cz", "storage_username": "<< uzivatel >>", "storage_stationpath": "/storage/bolidozor/", "storage_protocol": "ssh", "HWversion": "RMDS02D", "observatory": [ { "name": "svakov", "owner.login": "kaklik", // GitHub login "lat": 49.260658, "lon": 14.691537, "alt": 445.0, "location": "Svakov", //City, local name } ],
rozřazování probíhá na základě názvu původního souboru. Výsledná struktura pak vypadá následovně:
/station/typ dat/rok/měsíc/den/[hodina]/soubor.záznamu
Tato struktura ctí standardy sítě Bolidozor.
Při rozřazování dat jsou meta-datové .csv záznamy z aktuální hodiny zachovány na původním místě a pouze překopírovány na úložiště kvůli možnosti dalšího zápisu do tohoto souboru.
Upload na centrální server je vyřešeno voláním scp a žádostí o kontrolní součet MD5 na straně datového serveru.
Skript každé 2 minuty zkontroluje připojeni k internetu (dostupnost space.astro.cz) a v případě autentizace se spustí synchronizace dat. Synchronizace probíhá postupně ve čtyřech krocích: