Kako shranjevati podatke za domačo uporabo?

Vse v zvezi s senzorji, takimi ali drugačnimi,... tudi sw

Kako shranjevati podatke za domačo uporabo?

OdgovorNapisal/-a hribo » 30 Jun 2017, 18:34

Pozdravljeni.

Po hiši nameravam razporediti 5 senzorjev, ki bodo pošiljali podatke na Raspberry Pi. Težava je v tem, da nisem našel načina kako bi lahko shranjeval podatke in jih potem prikazoval preko spletne strani ali kako drugače. Ali kdo pozna kakšen framework, ki bi mi lahko pomagal pri moji nalogi?

Lep pozdrav
Jernej
hribo
 
Prispevkov: 52
Pridružen: 22 Jan 2015, 23:16
Kraj: Domžale
Zahvalil se je: 18 krat
Prejel zahvalo: 6 krat
Uporabnika povabil: aly
Število neizkoriščenih povabil: 4

Re: Kako shranjevati podatke za domačo uporabo?

OdgovorNapisal/-a Highlag » 01 Jul 2017, 08:12

Moj projekt si lahko ogledaš tule: http://31.15.144.163/Raspberry_merilnik_temperature.htm, je pa objavljen tudi v reviji #29, ki jo lahko snameš s tega foruma: https://s5tech.net/viewtopic.php?f=61&t=7483

Končni rezultat zgleda pa takole: http://31.15.144.163/temperatura.htm

Ne vem če je to kar hočeš, vendar, če ti uspe v bazo shraniti podatke, jih lahko tudi prikažeš.
http://31.15.144.163/
Highlag
 
Prispevkov: 371
Pridružen: 19 Jan 2015, 18:22
Zahvalil se je: 1 krat
Prejel zahvalo: 69 krat
Uporabnika povabil: borisz
Število neizkoriščenih povabil: 9

Re: Kako shranjevati podatke za domačo uporabo?

OdgovorNapisal/-a peterp » 01 Jul 2017, 08:45

Še en projekt vremenske postaje (avtor je naše gore list): http://stankopetric.blogspot.si/2014/10 ... ation.html

Stvar poznam, ker sem pomagal sodelavcu pri postavitvi :)
peterp
 
Prispevkov: 340
Pridružen: 23 Feb 2015, 14:52
Kraj: Maribor
Zahvalil se je: 68 krat
Prejel zahvalo: 52 krat
Uporabnika povabil: gumby
Število neizkoriščenih povabil: 52

Re: Kako shranjevati podatke za domačo uporabo?

OdgovorNapisal/-a sundancer » 01 Jul 2017, 12:28

https://nodered.org/
https://github.com/mrizvic/iot-qddb-api
https://mosquitto.org/

Vse skupaj tece na RPIv3 kateremu sem dodal panstamp shield. Odcitavanje senzorjev delam s panstamp ter nodeMCU moduli, upravljanje z lucmi pa z moduli sonoff. Za komunikacijo uporabljam MQTT protokol. Za risanje grafov se podatki hranijo v MySQL bazi.
Priponke
nodered-webui.jpg
nodered-environment.jpg
nodered-poraba.jpg
nodered-razsvetljava.jpg
qddb.jpg
Uporabniški avatar
sundancer
 
Prispevkov: 345
Pridružen: 16 Jan 2015, 23:36
Kraj: Domžale
Zahvalil se je: 103 krat
Prejel zahvalo: 177 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 28

Re: Kako shranjevati podatke za domačo uporabo?

OdgovorNapisal/-a matejmm » 24 Jul 2017, 11:59

Pozdravljen,

s tem vprašanjem sem se tudi sam ukvarjal pred nekaj leti. Ker je bil pri hiši že prej NAS Strežnik Synology, sem za shranjevanje podatkov iz senzorjev uporabil kar to napravico.

Zadeva deluje tako, da na Synology-u teče ena Cron skripta (napisana v PHP), ki se izvaja vsaki 2 minuti. Ta po vrsti pokliče vse Arduinote (z Ethernet Shieldom) po IP-jih na katere so pripeti različni senzorji. Vsak Arduino mi vrne HTML/TXT string v katerem so zapisane številke senzorjev in prebrane vrednosti. Niz izgleda nekako takole:

9|26.8|&10|50.4|&11|27.6|&12|49.0|

Na ta Arduino npr. sta pripeta 2 DHT22 senzorja, prva številka 9 (temp #1), 10 (rH #1), 11 (temp #2), 12 (rH #2) je oznaka senzorja oz. merilnega mesta, drugo pa je vrednost prebrana na senzorju. Kaj kakšna številka senzorja pomeni je zapisano v bazi.

Cron skripta vsako vrednost zapiše v MySQL bazo na Synology-ju v formatu: ID, TIME, SENZOR_ID, VALUE_SRC, VALUE

ID = zaporedna številka meritve
TIME = timestamp zajema podatka
SENZOR_ID = številka merilnega mesta
VALUE_SRC = vrednost prebrana iz senzorja
VALUE = korigirana vrednost v primeru, da je definirana kalbiracijska krivulja za senzor

Podatki se tako zapisujejo v bazo.

Za prikaz sem si sprogramiral eno PHP skripto, ki uporablja Google Chart in izrisuje grafe za poljubno obdobje.

Privzeto prikaže graf za zadnjih 24ur, pri čemer samodejno povpreči (že querry iz baze) vrednosti zajete v 20 minutah. Na prikazu imam tudi nekaj gumbov s katerimi lahko pridem do najbolj pogosto uporabljenih pregledov (Teden, 3 dni, 1 dan, 8 ur, 3 ure), lahko pa interval in resolucijo tudi sam poljubno nastavim.

graf_monitoring.jpg
monitoring uporabniški vmesnik


Zadeva deluje BP že cca. 5 let.
Če koga zanima še kaj več o tem projektu lahko predstavim še bolj podrobno.

lp, Matej
matejmm
 
Prispevkov: 9
Pridružen: 16 Feb 2017, 10:19
Zahvalil se je: 6 krat
Prejel zahvalo: 4 krat
Uporabnika povabil: borisz
Število neizkoriščenih povabil: 0

Re: Kako shranjevati podatke za domačo uporabo?

OdgovorNapisal/-a zanka » 24 Jul 2017, 12:38

Se je kdo že ukvarjal z drugimi „bazami“? (torej ne samo Mysql)?
Uporabniški avatar
zanka
 
Prispevkov: 1142
Pridružen: 17 Mar 2016, 01:16
Kraj: Krško
Zahvalil se je: 67 krat
Prejel zahvalo: 106 krat
Uporabnika povabil: DusanK
Število neizkoriščenih povabil: 20

Re: Kako shranjevati podatke za domačo uporabo?

OdgovorNapisal/-a tilz0R » 24 Jul 2017, 12:55

zanka je napisal/-a:Se je kdo že ukvarjal z drugimi „bazami“? (torej ne samo Mysql)?

SQLite. Kaj te zanima?
"Words come easy, when they're true!"
Robbie Williams, Gary Barlow
Moj nickname je tilz[NULA]R.
Uporabniški avatar
tilz0R
 
Prispevkov: 1070
Pridružen: 18 Jan 2015, 00:12
Kraj: Črnomelj
Zahvalil se je: 155 krat
Prejel zahvalo: 257 krat
Uporabnika povabil: s56rga
Število neizkoriščenih povabil: 255

Re: Kako shranjevati podatke za domačo uporabo?

OdgovorNapisal/-a zanka » 24 Jul 2017, 13:07

Gre za to, da je teh podatkov precej, vendar ni nikakršne potrebe po „relacijah“. Iskanje pa postane oteženo.
Uporabniški avatar
zanka
 
Prispevkov: 1142
Pridružen: 17 Mar 2016, 01:16
Kraj: Krško
Zahvalil se je: 67 krat
Prejel zahvalo: 106 krat
Uporabnika povabil: DusanK
Število neizkoriščenih povabil: 20

Re: Kako shranjevati podatke za domačo uporabo?

OdgovorNapisal/-a s56rga » 24 Jul 2017, 13:14

zanka je napisal/-a:Se je kdo že ukvarjal z drugimi „bazami“? (torej ne samo Mysql)?

Oracle,MariaDB,...... mdb, txt, csv,....

Tega je ogromno vendar najlažje in največ primerov dobiš ravno za MySQL.
Uporabniški avatar
s56rga
 
Prispevkov: 428
Pridružen: 12 Jan 2015, 17:34
Kraj: Koper JN65UM
Zahvalil se je: 67 krat
Prejel zahvalo: 135 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 151

Re: Kako shranjevati podatke za domačo uporabo?

OdgovorNapisal/-a zanka » 24 Jul 2017, 13:37

Eh, to, kar se dobi in česa se ne dobi v obliki navodil ne igra vloge.

Za te namene se bere, da so primernejše noSQL podatkovne baze in še v te je potrebno pretkano shranjevati.
Uporabniški avatar
zanka
 
Prispevkov: 1142
Pridružen: 17 Mar 2016, 01:16
Kraj: Krško
Zahvalil se je: 67 krat
Prejel zahvalo: 106 krat
Uporabnika povabil: DusanK
Število neizkoriščenih povabil: 20

Re: Kako shranjevati podatke za domačo uporabo?

OdgovorNapisal/-a matejmm » 24 Jul 2017, 13:43

zanka je napisal/-a:Gre za to, da je teh podatkov precej, vendar ni nikakršne potrebe po „relacijah“. Iskanje pa postane oteženo.


Za občutek, trenutno imam v aktivni bazi shranjenih 22,6 MIO zapisov, kar skupaj znese 1,7GB v obdobju od oktobra 2014 do danes.
Vsaki 2 minuti dobim okoli 30 novih zapisov v bazi.
Prikaz za zadnjih 24ur na katerem je 5 grafov s skupaj 18 krivuljami (senzorji) mi izrisuje manj kot 3 sekunde, za en teden pa okoli 6 sekund.
Vse skupaj teče na strežniku Synology DS410, ki ni ravno najnovejši (letnik 2010).
Za tako delovanje je potrebno podatke pravilno indeksirati in optimizirati SQL poizvedbe.
Verjetno bi šlo tudi s kakšnim drugim tipom podatkovne baze, a kot je napisal s56rga je verjetno MySQL (MariaDB) najbolj razširjen-a in zato dobiš največ primerov.

lp, Matej
matejmm
 
Prispevkov: 9
Pridružen: 16 Feb 2017, 10:19
Zahvalil se je: 6 krat
Prejel zahvalo: 4 krat
Uporabnika povabil: borisz
Število neizkoriščenih povabil: 0


Vrni se na Senzorji

Kdo je na strani

Po forumu brska: 0 registriranih uporabnikov in 1 gost