1

Téma: Ukládání csv na síťový disk s linuxem

Ahoj,
Jsem docela nepolíbený programátor (před lety http, základy javascript, microsoft basic) a chtěl bych trošku proniknout do SDS-C. Prosím, můžete mi poradit, jak začít, případně co dokoupit, abych rozchodil ukládání logu na disk v NASu od Synology? Mám micro a DS115J, chtěl bych ukládat na NAS jediné csv se zápisem hodnot a ty dále lokálně a přes VPN číst do grafů v prohlížeči, spolu s aktuálními daty z dynamických souborů na SDS. Zvažoval jsem tyto možnosti:
1 - Na NAS nahrát virtual windows, do něj SDS LOG (Bohužel moje základní verze nas to neumí a nevím, jestli by SDS LOG chodil dobře skrz adresářovou strukturu (nevím, jestli by uměl C:/ - tuto variantu jsem zavrhl)
2 - Zkusit napsat program SDS-C, aby odesílal data přímo do XXX.XXX.XXX.XXX/root/CSV/csv.csv , toto nevím, jak by bylo s právy zapisovat do NAS, takže asi taky špatně
3 - Zkusit princip SDS LOG a ve spolupráci s abclinuxu vytvořit utilitku do Synology, která by se ptala na xml a tyto data zapisovala přímo na svůj disk
4 - RPi s windows, rozchodit SDS LOG a zkusit ho buď ukládat na NAS, nebo na kartu a z karty na NAS nějak synchronizovat

Napadá vás ještě nějaká úplně nejjednodušší varianta? Případně, jakou cestou se vydat, aby to nebyla slepá ulička? Čekají mě teď 3 týdny v nemocnici, tak bych na to mohl mít čas.

Děkuji předem i za ten váš...

2

Re: Ukládání csv na síťový disk s linuxem

Pokud již SDS samo umí vrátit potřebná data, jako například teplotu na konkrétním čidle nebo seznam systémových proměnnych (viz http://wiki.merenienergie.cz/index.php/SDSC_variable_control) tak bych to asi řešil skriptem, který poběží na Synology, bude se tam spouštět třeba každou minutu nebo hodinu.
Skript načte ze SDS nějaká data, přeformátuje a uloží na lokální disk. Pro napsání by měl být dostačující jen Bash skript (nebo i Basic pokud na Synology exsituje a umí udělat HTTP request na SDS) a spouštět se dá z crontab.

K těm možnostem
1 - to nepůjde DS by nezvládlo virtuál s Windows. Nemá dostatek systémových prostředků
2 - SDS umí odeslat jen HTTP GET takže na Synology by běžel HTTP server, který by přijal request a uložil data, která dostane v parametrech. HTTP server by mohl být klidně v Pythonu nebo PHP.
3 - to je ten správný přístup
4 - to je už překombinované smile

3

Re: Ukládání csv na síťový disk s linuxem

Bezva, budu se tedy zabývat touto variantou, zaměřím se na Synology a zkusím, co půjde... Je to teda pro mě ta nejnáročnější varianta, ale to už tak v životě bývá :-(

4

Re: Ukládání csv na síťový disk s linuxem

S kódu uvedených zde v diskusích jsem sestavil řešení, kdy na Synology se cronem spouští script, který vyčítá pomocí PHP po dvou minutách cca 200 hodnot (debug vlastních výpočtů)  a ty ukládá do SQL databáze rovněž běžící na Synology. Další PHP scripty pak zobrazují grafy.
Na Synology jsem dále zprovoznil Domoticz, který dále používá některá s těchto dat a navíc zpětně předává některé parametry do SDS. Kdybych to dělal znovu možná bych ten SQL server vypustil a řešil to už jen pomocí Domoticzu.
Přes Domoticz pak integruji v podstatě autonomní řízení tepelného čerpadlo pro vytápění a ohřev TUV postaveném na SDS micro s dalšími čidly a technologiemi v domě.

5

Re: Ukládání csv na síťový disk s linuxem

Díky za reakci. SQL je pro mé potřeby zbytečné, jedná se mi především o logging ostrých dat v co nejkratším intervalu na NAS Synology. Uz s tím nějakou dobu bojuju a zatím se k výsledku nemám. Naštěstí má Synology výborný support, tak se třeba k nějakému výsledku dopracuju a postnu ho sem...

6

Re: Ukládání csv na síťový disk s linuxem

Nejjednodušší je bash skript. Ten půjde na Synology přidat do crontabu aby se spouštěl každou minutu nebo hodinu nebo den.

Pokud by ve skriptu bylo toto, pak se budou vytvářet na disku soubory s aktuálním datem a časem a v každém z nich bude aktuální  SDS log.

DATE=`date '+%Y%m%d-%H%M%S'`; wget -q  --output-document $DATE.log http://192.168.1.200/echo.html

Pokud je potřeba ukládat sofistikovanější výstup, pak je to potřeba řešit v tom skrptu