No niin, tulipa se rakennettua, MySQL-tietokanta johon tallennettu koko sääasemani historian (30.01.2006 alk.) säädatat yhden (1) minuutin välein :)
Pienellä vippaskonstilla se päivityy puolen tunnin välein uudella datalla jolloin sinne ajetaan edellisen 30 minuutin datat.
En saanut WD:n omaa MySQL-palikkaa toimimaan (veikkaan että mun adsl-boxin palomuuri on liian kranttu) joten käytin WD:n custom-lokia (loki jonka sisällön ja pituuden voit päättää itse) jonka ajan serverille ja php-skriptillä ajan tiedot sitten tietokantaan.
Tulos on aika muikea:
Tällä hetkellä on 1340000 riviä dataa (119.4 MB) ;D ;D
On myös päivittäinen tietokanta jonne tallentuu pikkasen puolenyön jälkeen yksi rivi joka päivä sisältäen mm. keskiarvot ja max/min-lukemat.
Tarkoituksena olis tehdä käppyrät jotka päivittyvät suoraan tietokannasta ja siten päästä eroon mm erillisestä käyräohjelmasta joka puksee mun 24h-käyriä tällä hetkellä. Myös helposti selailtava ariksto olis mahdollista tehdä sieltä, kattoo nyt.
Oikeastaan tietokanta-idea lähti siitä kun tuossa pari päivää sitten uudistin muutamaa sensoria niin olis kiva saada tiedot talteen ja myös mahdollista tehdä vaikkapa vuokausikäppyrä siitä.
Sensoreita jota uudistin on maa-sensorit. Nytten mulla lämpötila-sesnsorit seuraavasti:
+ 2 metrissä - päälämpötila
+ 10 cm - maapinta
- 25 cm
- 50 cm
Intressanttia nähdä tuleeko routaa vai ei ;)
Kiinnostus samantyyppiseen ratkaisuun olisi täällä niinikään suuri, sillä toistaiseksi MySQL-kantani ei ole, kuin Foorumin ja yhden leikkimielisen, täysin sään ulkopuolisen testiprojektin käytössä.
Kehtaanko edes kysellä, suostuisitko heittelemään minulle speksejä tuon ratkaisun suhteen? (Hmm.. taisin jo kehdata. ;D)
Juuh, kehtaahan sitä ;D
Näin lyhyesti:
Minuutti-tietokanta:
WD:n customloki toimii siten että se tekee tageilla generoidun rivin dataa tiedostoon joka minuutti. Kyseinen loki on pätkäisty poikki vuorokauden kohdalla (nykyisistä käppyröistä johtuen) niin että siinä on aina viimeisen 24h:n tiedot eli kun uutta pukkaa niin tippuu vanhin pois. Tämän WD lataa nettiin. Tulos on tämän tyylinen:
21,10,2008,17,54,11.1,95,10.3,996.1,1.6,2.6,150,7.3,11.1,0,0,0,11.1,8.3,8.7,10.4
21,10,2008,17,55,11.1,95,10.3,996.0,1.6,2.6,152,5.5,11.1,0,0,0,11.1,8.4,8.8,10.4
21,10,2008,17,56,11.1,95,10.3,996.0,1.5,2.1,150,3.9,11.1,0,0,0,11.1,8.5,8.7,10.4
21,10,2008,17,57,11.1,95,10.3,996.1,1.3,2.6,150,3.2,11.1,0,0,0,10.9,8.4,8.7,10.4
21,10,2008,17,58,11.1,95,10.3,996.0,1.2,3.6,149,2.8,11.1,0,0,0,10.5,8.4,8.7,10.4
21,10,2008,17,59,11.1,95,10.3,996.0,1.3,3.6,152,2.5,11.1,0,0,0,9.6,8.5,8.8,10.4
Tuossa täytyy tietty muistaa kirajata ylös että mikä arvo on mitäkin ;)
Kumminkin, sitten ajan php-skriptin puolen tunnin välein joka parsii ulos 30 viimeisintä riviä ja tekee siitä insertin sql:ää varten, yksinkertaisuudeesa se ottaa rivin kerraallaan ja tekee sen insertin ja päivittää tietokannan.
Kyseinen koodin pätkä on lyhyt ja ytmiekäs:
Lainaa$rawdata = file($filetoprocess);
$howmany = count($rawdata);
$start = ($howmany - 30);
for ($i = $start; $i < $howmany; $i++) {
$stuff = explode(',', $rawdata[$i]);
$datetime = $stuff[2] . '-' . $stuff[1] . '-' . $stuff[0] . ' ' . $stuff[3] . ':' . $stuff[4] . ':00';
$sql = "insert into wx_data values ('$datetime','$stuff[5]','$stuff[6]','$stuff[7]','$stuff[8]','$stuff[9]','$stuff[10]','$stuff[11]','$stuff[12]','$stuff[13]','$stuff[14]','$stuff[15]','$stuff[16]','$stuff[17]',
'$stuff[18]','$stuff[19]','$stuff[20]')";
echo $sql;
mysql_query("" .$sql. "");
}
mysql_close();
Tietokannassa on aika-sarake joka asetettu unique-arvoon eli samaa arvoa ei voi olla kahdesti ja siten ei ole pelkoa että sama aika menisi kahdesti, testasin sen kun latasin noita vanhoja tietoja. Oikean muotoisen ajan rakennan tuossa $datetime-kohdassa jotta mysql osaa lukea sitä. Helppoa.
Päivittäinen tietokanta on samalla idealla tehty mutta hiukan eri tavalla. WD kun tekee custom-sivuja/tiedostoja noilla tageilla niin se voi olla myös valmis sivu johon se vaan parsii tagit joukkoon. Tämän olen tehnyt sillä, se on valmis php-sivu johon WD tuppaa haluamani arvot tuohon sql-inerttiin ja sen ajan kerran päivässä hiukka puolen yön jälkeen,
Osa viime yön tiedostosta näytti tältä kun WD oli tuupannut arvot siihen ja puskenut sen nettiin:
Lainaa$sql = "insert into wx_daily values (10.8,2.2,8.9, 10.6,11.9,9.4,89.8,998.2,164,183.30,6.3,10.6,80.2,566.0,11.3,0,78,'00:00',0.4,45,'0.0','7.3','10',2008,'2008-10-21 00:00:00',8.4,8.7)";
Tuossa on se miltä se näyttää templatena:
Lainaa$sql = "insert into wx_daily values (%last24houravtemp%,%avgspeedsincereset%,%maxgst%,%dayrn%,%maxtemp%,%mintemp%,%last24houravhum%,%last24houravbaro%,
%last24houravdir%,%windruntoday%,%minwindch%,%vpstormrain%,%monthrn%,%yearrn%,%maxrainratehr%,%snownowcm%,%lighteningcountmidnight%,'%sunshinehourstodateday%',%currentwdet%,%highsolar%,'%cddday%','%hddday%','%date-month%',%date-year%,'%date-year%-%date-month%-%date-day% 00:00:00',%dallashumtemp3%,%dallasextratemp1%)";
;D
Henkka