FinWX Foorumi
torstai, 24.05.2012, 11:05 *
Tervetuloa, Vieras. Ole hyvä ja kirjaudu tai rekisteröidy.
Jäikö aktivointi sähköposti saamatta?

Kirjaudu käyttäjätunnuksen, salasanan ja istunnonpituuden mukaan
Uutiset:
06.05.2012
Toivotamme tervetulleeksi FinWX:n 69. jäsen-sääaseman, FinWX Turku-54:n.
Sääasema on Länsi-Suomen läänin 25. FinWX-asema.

Lue lisää uudesta jäsenasemasta täältä.
 
   Etusivu   Ohjeet Haku Kalenteri Kirjaudu Rekisteröidy  
Sivuja: [1]
  Tulostusversio  
Kirjoittaja Aihe: Säädata-tietokanta ja muuta mukavaa  (Luettu 785 kertaa)
0 jäsentä ja 2 vierasta katselee tätä aihetta.
weatherc
Foorumin Yleismoderaattori
*****
Poissa Poissa

Viestejä: 4550


« : tiistai, 21.10.2008, 21:53 »

No niin, tulipa se rakennettua, MySQL-tietokanta johon tallennettu koko sääasemani historian (30.01.2006 alk.) säädatat yhden (1) minuutin välein Hymyilee
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)  Virnistää Virnistää

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 Iskee silmää


tallennettu

J.Laiho
Foorumin ylläpitäjä
Ylläpito
*****
Poissa Poissa

Viestejä: 3645



WWW
« Vastaus #1 : keskiviikko, 22.10.2008, 09:18 »

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. Virnistää)
tallennettu

Juha Laiho
Foorumin ja sivuston ylläpitäjä
Finland Weather Exchange (FinWX)

http://www.finwx.net/
------------------------------------------
Twitter, FinWX:n havainnot
------------------------------------------
Ukkoslaskuri 2012; Lohja, Gruotila
0 ukkospäivää.
------------------------------------------

------------------------------------------
weatherc
Foorumin Yleismoderaattori
*****
Poissa Poissa

Viestejä: 4550


« Vastaus #2 : keskiviikko, 22.10.2008, 18:28 »

Juuh, kehtaahan sitä  Virnistää

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 Iskee silmää
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:

Lainaus
$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:

Lainaus
$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:

Lainaus
$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%)";

 Virnist&#228;&#228;

Henkka

« Viimeksi muokattu: keskiviikko, 22.10.2008, 18:36 kirjoittanut weatherc » tallennettu

Sivuja: [1]
  Tulostusversio  
 
Siirry:  

MySQL pohjainen foorumi PHP pohjainen foorumi Powered by SMF 1.1.16 | SMF © 2011, Simple Machines Validi XHTML 1.0! Validi CSS!