HR Vrijeme servis

Novosti

Verzija 0.4.2 (samo mini)

Već duže vrijeme sam svjestan da widget ne mijenja ikone u noćne varijante nakon zalaska Sunca i sada bi to napokon trebalo biti ispravljeno. Radi se o mini verziji koju samo trebate kopirati preko stare.

Kapsules HR Weather
16.10.2006.

HR Weather za Firefox i Flock

Napravio sam ekstenziju za Firefox. Radi u Firefox-u 1.5 i 2.0 (trenutno 2.0 Beta 1) i u Flock-u. Zasad pokazuje samo podatke o trenutnom vremenu — nema prikaza prognoze.

Firefox HR Weather
8.08.2006.
Feed ikonaNovosti Arhiva novosti

O servisu

Ukratko

Ovaj servis prikuplja informacije o trenutnom vremenu i prognozi za nekoliko desetaka lokacija u Hrvatskoj i čini ih dostupnima u obliku XML feed-a. Nije namijenjen za krajnje korisnike nego za programe koji preuzimaju te informacije i prikazuju ih na način prikladan za krajnjeg korisnika. Ovdje možete naći općenite informacije o servisu, popis lokacija i vrstu podataka dostupnih za svaku lokaciju. Svi podaci o vremenu i prognozi dolaze s web stranica Državnog hidrometeorološkog zavoda.

Zašto?

Vidio sam razne programe koji omogućuju prikaz trenutnog vremena ili prognoze na desktopu. To mi se svidjelo i htio sam i ja tako nešto imati na svojem desktopu. Ali svi oni (barem oni koje sam ja vidio), su informacije dobavljali uvijek iz istog (stranog) izvora koji ima informacije za samo 6 gradova u Hrvatskoj: Dubrovnik, Karlovac, Osijek, Rijeku, Split i Zagreb. S druge strane, znam da Državni hidrometeorološki zavod pruža javno dostupne informacije za puno više lokacija u Hrvatskoj, ali te informacije možete vidjeti samo u vašem browseru. U tome nema ništa loše, ali ako bi htjeli imati neki program koji prikazuje te informacije na desktopu npr., bilo bi dobro kada bi te podatke imali u nekom obliku prilagođenom računalima. Tome služi ovaj servis.

Kako?

Servis, na zahtjev, prikuplja podatke s web stranica DHMZ-a, sprema ih u bazu podataka, i šalje u XML formatu (ako ne znate što je XML, dovoljno je da znate da se podaci u XML formatu mogu razmjenjivati bez problema neovisno o računalnoj platformi, hardveru ili softveru koji koristite). Naravno, svo to prikupljanje i obrada podataka sa stranica DHMZ-a bi se moglo vršiti i u samom programu koji vam prikazuje te informacije, ali postoje 2 osnovne prednosti ovakvog pristupa.

Prvo i najvažnije je što se na stranicama DHMZ-a nalaze samo zadnji podaci o trenutnom vremenu. Ne zadnji podaci za svaku postaju, nego zadnji pristigli podaci s onih postaja za koje postoje nove informacije za taj sat. Za neke postaje se novi podaci prikazuju svaki sat, ali za dosta postaja su informacije dostupne u većim intervalima (npr. 3 sata). Na taj način ni ne znate koje sve postaje postoje. Nigdje ne možete vidjeti njihov popis.
Ovaj je servis u mogućnosti kontinuirano pratiti objavljene podatke i na taj način prikupi popis svih lokacija koje se pojavljuju i uvijek možete vidjeti zadnje podatke za svaku od tih lokacija, bez obzira kada su oni objavljeni. Tako npr. ako se na internet spajate samo povremeno (npr. nemate stalnu vezu, nego se spajate preko modema) i dalje možete vidjeti zadnje podatke za neku lokaciju, čak i ako su oni malo zastarjeli i ako ih više ni nema na web stranicama DHMZ-a.

Drugi razlog je što su podaci na web stranicama DHMZ-a prilagođeni za ljude. Da bi se ti podaci koristili u računalnim programima potrebno ih je najprije obraditi. To nije nešto posebno teško, ali svaki programčić koji bi htio prikazivati takve informacije bi to morao raditi zasebno. Ovako je to jednom napravljeno u ovom servisu i izrada takvih programčića je olakšana. Jednostavno sada više nije ništa teže napraviti programčić koje prikazuje informacije o vremenu koristeći DHMZ kao izvor podataka nego neki koji bi koristio neki popularni, strani izvor podataka.

Napomene

Na kraju, bitno je napomenuti da iza ovog servisa ne stoji nikakva službena ustanova, nitko ne garantira točnost podataka na ovom servisu. On je namijenjen isključivo za osobnu i nekomercijalnu upotrebu i ne postoji nikakva službena povezanost između ovog servisa i DHMZ-a, ako vam trebaju točni podaci ili jednostavno podaci za komercijalnu upotrebu, posjetite web stranice DHMZ-a.

Detalji

Ovdje se nalaze informacije za one koji bi htjeli iskoristiti podatke s ovog servisa u svojem programu ili ih jednostavno detaljnije zanima kako on radi. Ako samo želite vidjeti te podatke, pogledajte gotove programe ili direktno neku od lokacija na popisu.

Trenutno vrijeme

Podaci o trenutnom vremenu se prikupljaju s http://vrijeme.hr/croa_n.html. Taj postupak je automatiziran. Ako se u tablici pojavi neka lokacija koja još ne postoji u bazi, automatski će biti dodana i pojaviti će se na popisu. Događalo se da se tamo pojavi krivo napisano ime neke lokacije i servis bi to jednostavno shvatio kao novu lokaciju.

Svi podaci iz te tablice se prenose u identičnom obliku, ali im se dodaje i jedan novi podatak — vremenski kod. Programi koji bi trebali prikazati neku ikonu uz podatke o trenutnom vremenu, bi trebali imati neki način jednoznačnog određivanja te ikone. Kao što sam rekao ranije, podaci s web stranica DHMZ-a su prilagođeni ljudima i tekstualni opis vremena iz te tablice nije dovoljno jednoznačan za izbor ikone. Zato ovaj servis svakom tekstualnom opisu vremena dodijeli vremenski kod kao jedan od brojeva s ove stranice: http://www.worldweather.org/wx_icon.htm. Taj postupak je poluautomatski.

Svaki put kad se pojavi neki tekstualni opis vremena koji nije zabilježen u bazi, doda se na poseban popis i čeka da mu se ručno dodijeli vremenski kod. Nakon toga se dodaje u bazu zajedno s ostalim tekstualnim opisima koji već imaju dodjeljene kodove. U međuvremenu se vremenski kod jednostavno neće pojavljivati među podacima o trenutnom vremenu.

U praksi to sve funkcionira kao da je automatski. Ovaj servis je odmah na početku vrlo brzo prikupio velik broj tekstualnih opisa vremena koji se pojavljuju u toj tablici i rijetko se pojavljuje neki novi koji se još ne nalazi na popisu.

Izlasci i zalasci Sunca

Izlasci i zalasci Sunca se prikupljaju s http://vrijeme.hr/izl-zal.html. Tu se nalazi samo 6 lokacija. Zato se svakoj lokaciji za koju ovaj servis zna dodjeljuje jedna od tih 6 kao referentna lokacija za izlaske i zalaske Sunca. Taj postupak se obavlja poluautomatski na isti način kao i dodjeljivanje vremenskih kodova tekstualnim opisima vremena. Zbog toga ti podaci nisu dovoljno precizni sami po sebi za svaku lokaciju. Možete ih iskoristiti npr. za zamjenu ikona noćnim varijantama nakon zalaska Sunca.

Prognoze

Prognoze se prikupljaju s http://prognoza.hr/hrvatska.html. Zbog načina na koji je napravljen popis lokacija i prikaz podataka na toj stranici, u servisu se lokacije za koje će se prikupljati podaci o prognozi dodaju ručno. To znači da, ako se na toj stranici pojavi nova lokacija za koju su dostupni podaci o prognozi, ona se neće pojaviti na ovom servisu dok ne bude ručno dodana. Nakon što je lokacija dodana, samo prikupljane podataka o prognozi se obavlja automatski.

Kao što možete vidjeti, na tim stranicama nema nikakvih opisa vremena. Postoje samo slike. Te slike su iskorištene za određivanje vremenskih kodova.

Temperature mora

Podaci o temperaturama mora se prikupljaju s: http://vrijeme.hr/more_n.html. Postupak se obavlja automatski.

Visine snijega

Podaci o visinama snijega se prikupljaju s: http://vrijeme.hr/snijeg.html. Postupak se obavlja automatski.

XML feed

URL za XML feed s podacima o trenutnom vremenu je: “http://vrijeme.tikipaniki.net/index.php?request=feed&lokacija=BROJ” gdje je BROJ broj lokacije s popisa. Za prognozu je potrebno dodati “&prognoza” tako da ispada: “http://vrijeme.tikipaniki.net/index.php?request=feed&lokacija=BROJ&prognoza”.

Nemojte biti čvrsto vezani za brojeve lokacija. Moguće je da će se ponekad promijeniti brojevi (automatski) dodijeljeni lokacijama.

Mislim da će vam većina tag–ova u feed–u biti jasna (za primjer pogledajte feed–ove za lokacije s različitim vrstama dostupnih podataka). Ako je neki podatak nedostupan tag će jednostavno biti izostavljen. Posebno ću spomenuti samo neke tag–ove.

Tag–ovi kao <objavljenoVrijeme>, <sunceIzlazak>, <dan> i slični su Unix timestamp-ovi — broj sekundi od 1.1.1970.

Kod feed–a za prognozu, tag <vjetarSmjer> predstavlja englesku kraticu za smjer vjetra (N — sjever, S — jug, SE — jugoistok, …, C — znači da nema vjetra), a tag <vjetarSnaga> je oznaka relativne snage vjetra i predstavlja broj strelica na sličici za smjer vjetra. Npr. ako je smjer vjetra “S”, a snaga vjetra “3”, to znači da se na stranici s koje je servis izvukao podatke o prognozi za tu lokaciju i taj dan nalazila sličica s 3 strelice odozdola prema gore (južni vjetar).

Ako je došlo do nekakve greške, postojati će samo jedan tag — <greska>.

Statusna stranica

Postoji i statusna stranica na kojoj možete naći XML predloške kojima se tekstualnim opisima vremena dodjeljuju vremenski kodovi i kojima se lokacijama dodjeljuju referentne lokacije za izlaske i zalaske Sunca. Ako mislite da je nešto krivo dodjeljeno, možete mi javiti kako bih to ispravio.

Komentari u vezi korištenja servisa

Ovaj servis će kompresirati feed ako mu pošaljete odgovarajući Accept-Encoding header. Bilo bi dobro da to iskoristite ako ste u mogućnosti.

Novi podaci se objavljuju najranije svaki sat (malo iza punog sata), zato nema potrebe za prečestim spajanjem na ovaj servis. Npr. ako imate neki widget koji ima timer koji se aktivira svakih 10 minuta i u njemu provjeravate ima li novih podataka o vremenu — nemojte provjeravati doslovno svakih 10 minuta. Ili, još gore, ako imate web stranicu, nemojte na svaki zahtjev prema svojoj web stranici ponovo skidati podatke s ovog servisa. Zamolio bih sve koji koriste ovaj servis da zapamte vrijeme objavljivanja zadnjih podataka koje su skinuli i ne spajaju se višestruko unutar istog sata, ako su podaci za taj sat objavljeni.

Npr. ako imate widget s timer–om postavljenim na 10 minuta i recimo da u 10:16 h skinete podatke za trenutno vrijeme koji su objavljeni za 10 h. Nema smisla da se sada ponovo spajate u 10:26 h, 10:36 h, 10:46 h, 10:56 h jer će se novi podaci ionako pojaviti najranije iza 11 h. Jednostavna stvar koju možete napraviti je da zapamtite vrijeme objavljivanja zadnjih podataka koje ste skinuli (u ovom slučaju 10 h) i svaki put kad se aktivira timer provjerite je li prošlo više od jednog sata od vremena kad su objavljeni ti podaci. Ako je, onda se spojite i zabilježite vrijeme objavljivanja podataka koje ste skinuli, ako nije onda se ne spajate.

Ako to radite na web stranici onda nemate timer i morate pamtiti jedan podatak više. Svaki put kad se želite spojiti možete napraviti recimo ovakvu provjeru: interval = 10 minuta // negdje ranije definirate interval ako ((trenutno_vrijeme - zadnji_podaci > 1 sat) i (trenutno_vrijeme - vrijeme_spajanja > interval)) { skiniNovePodatke() zadnji_podaci = skinuti_podaci.objavljeno_vrijeme vrijeme_spajanja = trenutno_vrijeme // sad zadnji_podaci i vrijeme_spajanja spremite negdje, npr. u bazu // podataka, ali ne u korisnički session jer to mora vrijediti za sve // korisnike jednako } Na taj način ćete se spajati ponovo tek slijedeći sat, a opet na češće od svakih 10 minuta ako novi podaci još nisu objavljeni. To dodatno ograničenje intervalom (u ovom primjeru — 10 minuta) je potrebno zato što se novi podaci objavljuju malo nakon punog sata, pa da se ne bi u prvim minutama novog sata spajali svaki čas.

Prognozu ne morate provjeravati češće od svakih nekoliko sati.

Na sličan način i ovaj servis ograničava svoj broj spajanja na web stranice DHMZ-a.

Programi

Kako me možete kontaktirati

E-pošta: tikipaniki (@) tikipaniki (točka) net

tikipaniki.net