| Inleiding |
Meteostation
Haaksbergen is een automatisch weerstation. Het stelt weersgegevens, de tijd, en daarvan afgeleide waarden beschikbaar via internet.
Het weerstation Oregon Scientific WMR-928N meet de basisgegevens.
Het is aangesloten op de meteo tijd server, die met behulp van een 'gewone' webserver de gegevens in diverse vormen ter beschikking stelt.
 Meteo Station: Een overzicht
|
| Functionaliteit |
| Werking |
Het weerstation bevat sensoren voor weersgegevens en tijd, en stuurt ontvangen meetwaarden naar de Meteo Tijd Server (MTS). Deze server voegt hieraan afgeleide gegevens toe, en stelt ze via Internet beschikbaar.
Daarnaast worden er statistische gegevens verzameld en opgeslagen, onder andere van bezoekers die via internet binnenkomen. Op bepaalde tijden kunnen 'externe' commando's geinitieerd worden.
Zo kan de Meteo Tijd Server ook zelfstandig gegevens distribueren (dus zonder dat hier een Client via Internet om vraagt), zoals voor het versturen van de daggegevens naar de Webserver,
die er weergrafieken van kan maken.
|
| Gegevens Beheer |
De Meteo Tijd Server beheert niet alleen meteo en tijd gegevens, maar leidt daar ook andere informatie van af.
De Meteo en Tijd Server slaat gegevens op zoals die binnenkomen van de sensoren van het weerstation:
- wind
- regenval
- temperatuur, en relatieve vochtigheid van buitenshuis
- temperatuur, relatieve vochtigheid binnen en luchtdruk van binnenshuis
- tijd
Van de sensorgegevens wordt informatie afgeleid die betrekking heeft op:
- het weer, zoals:
- gevoelstemperatuur volgens diverse berekeningssystemen
- gemiddelden, minima, maxima
- windsnelheid in Beaufort
- trends in het weer, etc.
- de tijd, zoals:
- opkomst en ondergang van zon en maan
- begin van de seizoenen
- zomer- en wintertijd
- begin en einde van schemering
- zonnetijd, utc, etc.
- afstand tot zon en maan
- tijd in andere culturen
Informatie van vandaag en gisteren komt van:
- metingen: voor diverse sensor- en afgeleide gegevens wordt het verloop van de laatste 24 uur bijgehouden (standaard iedere 10 minuten), zoals bijvoorbeeld voor temperatuur, windsnelheid, windrichting etc.
- statistiek: voor temperatuur (minimum/maximum/gemiddelde), vochtigheid en zonneschijn wordt een gemiddelde voor de huidige dag berekend aan de hand van decade (10 daagse) gemiddelden die over een 30 jarige periode bepaald werden.
Adminstratieve gegevens, die worden opgeslagen hebben betrekking op:
- techniek, zoals:
- het aantal keren dat bepaalde sensorgegevens binnenkwamen, de verwerkingstijd ervan (gemiddelde, minima, maxima en gemiddelde afwijking)
- het aantal keren dat via internet een webaanvraag binnenkwam
- diverse interne tellers etc.
- client administratie:
van bezoekende web-clienten worden wat gegevens bijgehouden:
- ip adres en ip-host naam, het aantal keren dat de site bezocht is, en het eerste en laatste tijdstip
- het gebruikte bladerprogramma (webbrowser)
- de referrer (via welke webpagina men bij 'onze' server terecht kwam)
- de proxyserver (als men via een tussenliggende computer bij ons terecht kwam)
- het aantal keren dat een bepaalde pagina opgevraagd is
- instellingen:
- portnummers
- plaats en tijdzone informatie
- logging settings
|
| Clienten |
De gegevens die door de Meteo Tijd Server beheert worden, zijn beschikbaar om naar clienten gestuurd te worden.
Dit kan:
- direct (de datapakketjes die van het weerstation ontvangen zijn, worden direct doorgestuurd naar de client wanneer
die een verbinding met de betreffende port geopend heeft).
Dit kan in de volgende vormen:
- binair, zodat hiermee eventueel een tweede Meteo en Tijd Server van datapakketjes voorzien kan worden
- hexadecimaal,
om de binnenkomende pakketjes zo snel mogelijk te kunnen inspecteren
- textueel, om de betekenis van de binnenkomende data direct te controleren
- op verzoek van de client als:
- status rapport: een overzicht van de gegevens van het moment van aanvragen
- xml, zodat de gegevens door de ontvanger weer verder verwerkt kunnen worden
- textuele pagina's, op te vragen via http die met behulp van Dhp voorzien kunnen worden van actuele gegevens, en
in diverse vormen:
- html formaat (voor webpagina's)
- wml: voor het wap dat gebruikt wordt voor draagbare telefoons
- rss: een vorm om gegevens als nieuwsflits te ontvangen
- voor pda's, met goede weergave op kleine schermen
- platte text
- als grafiek, bijvoorbeeld de temperatuur en relatieve vochtigheid van de laatste 24 uur.
- als zelfstandige update: een extern commando (executeerbaar programma, bijvoorbeeld
een shell-script) wordt uitgevoerd op bepaalde tijdstippen. Er zijn 2 soorten updates:
- history update: wordt een aantal keren per uur uitgevoerd. Er wordt een bestand
met de daggegevens aangemaakt, en daarna wordt een extern commando uitgevoerd, dat
bijvoorbeeld deze daggegevens kan versturen. Met dit commando kunnen ook andere activiteiten
gestart worden.
- tijd update: wordt 1 keer per dag uitgevoerd, en kan gebruikt worden om een
externe klok op tijd te zetten. Ook kunnen hiermee andere activiteiten uitgevoerd worden.
Dhp biedt de mogelijkheid om de tekst-pagina's die via http door clienten aangevraagd worden, te genereren
afhankelijk van de waarden die op dat moment in de Meteo en Tijd Server opgeslagen zijn. De waarden kunnen
tussen de teksten weergegeven worden. Ook kan conditioneel bepaalde tekstgedeeltes vertoond of juist weggelaten
worden. Verder kunnen teksten vertaald worden in andere teksten.
|
| Nauwkeurigheid |
De nauwkeurigheid van de gegevens wordt in de eerste plaats bepaald door de opstelling en de precisie van
de sensoren van het weerstation. Deze sensoren zijn gecalibreerd om maximale nauwkeurigheid
te bereiken.
Direct nadat het weerstation de sensorgegevens naar de MTS verstuurd heeft, worden deze samen met de afgeleide waarden
beschikbaar gesteld.
De nauwkeurigheid van de brongegevens bepaalt ook de nauwkeurigheid van de afgeleide waarden.
Gegevens die van de tijd afgeleid zijn, worden ieder uur berekend. Van de tijd afgeleide gegevens, die
snel kunnen veranderen (zoals de positie van de zon) worden elke minuut berekend.
|
| Weersverwachting | Het weerbericht bevat een weersverwachting met een geldigheid van één dag, omdat
deze uitsluitend gebaseerd wordt op de gegevens die van het weerstation ontvangen zijn
(het gebruikt een 'enkel roosterpunt weersverwachtingsmodel', dit in tegenstelling tot bijv. het HIRLAM model).
Weersveranderingen die op grote afstand te detecteren zijn worden dus niet meegenomen.
Het weerstation levert de regenkans en het weertype voor de korte termijn: 'vandaag' en 'morgen'.
Deze zijn gebaseerd op de huidige barometrische luchtdruk, en de verwachte luchtdruk voor morgen.
Statistisch zijn aan de luchtdrukwaarden regenkansen en weertype beschrijvingen te koppelen.
Daarnaast worden er ook temperatuur verwachtingen berekend, en wel op twee manieren:
- via een model, dat zich baseert op de aanname dat het temperatuurverloop over
de dag een grote mate van gelijkvormigheid heeft met het verloop van de dag ervoor, zodat de temperatuurtrend (temperatuurverschil
tussen gisteren 'om deze tijd' en 'nu') te bepalen is, en dit gebruikt kan worden om de extremen te extrapoleren.
- via 'kunstmatig intelligentie': hierbij wordt aan een neuraal netwerk de volgende gegevens doorgegeven:
- tijdstip in het jaar,
- temperatuur van gisteren: gemiddelde, minimum en maximum,
- momentele temperatuur trend,
- luchtdruk van gisteren,
- momentele luchtdruk trend
en hieruit worden de minimum en maximum temperaturen voor vandaag en morgen bepaald.
Het netwerk is getraind met de daggegevens die het KNMI de afgelopen 35 jaar op vliegveld Twenthe
gemeten heeft. Maar training met andere gegevens is natuurlijk ook mogelijk.
|
|
| Ontwerpoverzicht |
In onderstaand figuur is een overzicht van Meteo Haaksbergen weergegeven als blokdiagram.
 Meteo Station Haaksbergen: Ontwerp Overzicht
De MTS (waar dit documentje in hoofdzaak over gaat) is via een seriele lijn verbonden met de wmr928n (het weerstation), verwerkt de ontvangen gegevens, maakt de 'afgeleide' gegevens, distribueert ze naar www.vanharten.info, en naar webclients die ze met een webbrowser kunnen opvragen. Omdat de MTS geen php ondersteunt, worden grafieken etc. door de 'www.vanharten.info' webserver aangemaakt.
De kracht van de MTS ligt in het flexibel weergeven van de tekstuele representatie van de meteo en tijd gegevens.
Naast de normale html pagina's worden ook gegevens in RSS, WAP, en XML formaat afgeleverd. Ook is het mogelijk om gegevens 'op verandering' aangeleverd te krijgen, dus op het moment dat ze via de seriele lijn ontvangen worden van het weerstation. Dit kan in binaire (handig om er een tweede MTS op aan te sluiten, bijvoorbeeld voor testdoeleinden), hexadecimale, textuele en xml vorm.
De distributie van de gegevens naar de bestandsopslag (file store) voor de kabelkrant van Sternet, de
lokale omroep van Haaksbergen, is weergegeven als een 'push' verbinding met de betreffende computer.
|
| Weerstation WMR-928n |
Het gaat wat te ver om een volledige beschrijving van het wmr-928n weerstation te geven, maar interessant zijn:
- de sensoren
- meteo: er zijn een aantal draadloze sensoren:
- windsensor (meet windrichting en -snelheid)
- regensensor (meet neerslag)
- buitensensor (meet buitentemperatuur en de relatieve vochtigheid buiten)
- binnensensor (meet de binnentemperatuur, de relatieve vochtigheid binnen, en de luchtdruk)
- tijd: DCF77 tijd ontvanger
- de seriele interface: via een rs-232 verbinding worden de sensor gegevens afgegeven (in 1 richting: van weerstation naar computer; de computer kan het weerstation niet besturen). Wanneer een sensor zijn gegevens naar het weerstation stuurt, stuurt het weerstation dit door naar de computer, soms aangevuld met wat afgeleide gegevens. De tijd wordt doorgestuurd op het moment dat een nieuwe minuut begint. De hele datum en het uur wordt doorgestuurd op het moment dat een nieuw uur begint (datum/uur wordt soms vaker gestuurd, het nut hiervan ontgaat me op dit moment).
- net en batterij voeding: het toestel wordt via een netvoeding van spanning voorzien, en voor het geval de stroom uitvalt is de batterij als backup aanwezig (sommige instellingen worden zodoende bewaard, zoals het verschil tussen de 'luchtdruk' en de 'luchtdruk op zeeniveau' en de 'neerslag tot en met nu')
- het lcd met touch screen: alle gegevens zijn op een lcd scherm te zien, dat met een higlow achtergrond verlichting ook in het donker goed af te lezen is. Verschillende modes en instellingen kunnen via het touch screen ingesteld worden.
 Basis Station en Sensoren van de wmr-928-n
|
| Meteo Tijd Server |
| Functionaliteit |
De Meteo Tijd Server is het hart van Meteo Haaksbergen.
De gegevens van het weerstation worden ingelezen, verwerkt, en beschikbaar gesteld. Deze weer en tijdgegevens kunnen
door clients opgevraagd worden (o.a. door web browsers), maar worden ook zelfstandig verstuurd naar clienten die de updates
nodig hebben. Teksten kunnen 'gemengd' worden met tijd en weersgegevens via de dhp processor.
Op grond van de meetgegevens en langjarige statistische gegevens wordt een weersverwachting samengesteld.
Een aardigheidje is het licentiemechanisme, dat selectief uitdelen van de functionaliteit mogelijk maakt.
 Raspberry Pi, de computer waarop MTS draait
|
| Ontwerp |
De interne structuur van de MTS kan op diverse manieren weergegeven worden. Om een goed beeld te krijgen van de afhandeling van de data van het weerstation, en van de verzoeken van de diverse clienten via het internet protocol, is er een dataflow beschrijving.
Om het ontwerp in de vorm van pakketten en modulen goed weer te geven is er een control flow beschrijving.
De gegevens die door de MTS lopen worden vanuit een aantal gebeurtenissen geinitieerd:
- het opstarten van de MTS (initialisatie gegevens worden uit een resource bestand gelezen)
- het aanleveren van gegevens door het weerstation
- verzoeken van de clienten
Een figuur met daarin de dataflow, de interne data opslag, en de functionele bewerkingen van deze gegevens als gevolg van het aanleveren van data, of verzoeken om data is weergegeven Data Flow Diagram MTS.
 Data flow diagram van de Meteo en Tijd Server
Een korte beschrijving:
- Bij opstarten van de MTS worden initialisatie gegevens gelezen uit een resource bestand. Hierin
staan de calibratie gegevens van de sensoren (om niet-lineariteiten op te heffen).
Verder kunnen de ingebouwde standaard waarden (defaults) van de MTS aangepast worden. Dit betreft dan vooral 'vaste'
informatie, zoals plaatsgegevens van het Meteo Station en bedrijfsinstellingen zoals portnummers.
De langjarige daggemiddelden worden ook vanuit dit resource bestand ingelezen.
- Als het weerstation gegevens van een van de sensoren binnenkrijgt, stuurt het die gegevens
door naar de computer. Deze worden gedecodeerd, eventueel volgens calibratie aangepast, en in de
dataopslag gezet. De gegevens worden in binaire, textuele en hexadecimale vorm naar clienten gestuurd als
die er om gevraagd hebben via de internet port.
Op grond van tijdgegevens, zoals die binnenkomen via de seriële lijn, worden diverse acties
uitgevoerd:
- wanneer een nieuwe dag begint worden de daggemiddelden voor deze dag berekend in dataopslag gezet
- eenmaal per dag (op het uur volgens de resource instelling) wordt een extern commando uitgevoerd,
waarmee een externe klok op tijd gezet kan worden (of andere 'eens per dag' acties uitgevoerd
kunnen worden)
- regelmatig (normaal om de 10 minuten) wordt een history bestand aangemaakt (een php-data
definitie, die samengesteld is uit data van de afgelopen 24 uur), en wordt een extern commando uitgevoerd,
dat deze data kan versturen, bijvoorbeeld voor grafiek generatie
- Verzoeken van de clienten
- binaire gegevens worden direct vanuit de input van de MTS doorgestuurd. Dit kan handig zijn
als er een tweede MTS dezelfde gegevens wil ontvangen (bijvoorbeeld voor testdoeleinden)
- hexadecimale gegevens kunnen gebruikt worden om te zien welke datapakketjes over de seriële
lijn gaan
- text gegevens worden gestuurd naar clienten die een minimale omzetting van de binnenkomende
gegevens willen
- status informatie komt op verzoek, eenmalig
- xml informatie wordt eenmalig op verzoek van de client verstuurd, en presenteert dan alle van belang zijnde informatie in een xml
vorm
- de http poort is de meest nuttige: hier worden textuele outputs volgens het
http protocol verstuurd. De inhoud kan html zijn, maar ook gewone text, rss, wml, xml, etcetera. Er zijn interne pagina's,
die direct door het programma gegenereerd worden, en ook externe pagina's waarvan de inhoud uit en bestand gehaald wordt
(met vaste teksten of op het moment van opvragen samengesteld door de dhp processor).
Het MTS programma bestaat uit een groot aantal programma regels, die ondergebracht zijn in modulen.
Voor de Control flow structuur, die in Control Flow Diagram weergegeven is, worden module-groepen als packages weergegeven.
Packages die belangrijke gegevens beheren zijn weergegeven met een dikkere rand, en eventueel wordt daarbij in schuinschrift de betreffende gegevens aangegeven.
 Control Flow diagram van de Meteo en Tijd Server
Via control wordt de Meteo en Tijd Server opgestart.
Resources leest het resource bestand, en distribueert diverse
settings, waaronder de systeem instellingen, die in data gezet worden.
Device opent de verbinding met het weerstation, en leest de
gegevens wanneer die binnenkomen. Deze sensorgegevens worden direct in data
gezet. Daarna wordt device proc aangestuurd om er gegevens
van af te leiden (met behulp van formules uit algorithm en presentatievormen uit presentation).
Die worden vervolgens ook in data
gezet.
Wanneer de tijd binnenkomt stuurt device tijdgerelateerde processing
aan, zoals het verwerken van de daggegevens via history. History verzamelt gegevens,
bewaart deze een dag, en maakt het history bestand, dat gebruikt kan worden om er weergrafieken van te laten maken.
Wanneer device gegevens binnenkrijgt waarop een client zich
geabonneerd heeft, wordt dit via client afgeleverd. Dit kan
in binaire, hexadecimale, en textuele vorm. Op verzoek kan client ook status informatie en xml afleveren.
Via HTTP kunnen verzoeken voor tekstuele (waaronder html, en eventueel van de gewenste
Dhp presentatie voorzien door presentation) en grafische bestanden gehonoreerd worden.
De client laat diverse aspecten van clientverzoeken administreren door web_log1.
Deze loggingen, de 'request' en 'error' loggingen vanuit web_log2, en
statistische gegevens die van verschillende kanten bij statistics binnenkomen, worden
via HTTP beschikbaar gesteld.
Package support biedt diverse kleinschalige ondersteunende
functionaliteit, waaronder logging. De logging van een webrequest, of van een error wordt doorgestuurd
naar web_log2.
Package Relaties
Zie bijlage.
Packages
Zie bijlage.
Modules
Zie bijlage.
|
| Uitvoer |
De MTS kan externe pagina's en interne pagina's aan clienten afleveren. Externe pagina's
bevinden zich als tekstbestanden op de computer, en worden zonodig van actuele gegevens voorzien door de
Dhp processor. Een aantal voorbeelden van deze pagina's zijn:
Daarnaast zijn er 'interne' pagina's die opgevraagd kunnen worden, en dan
gegenereerd kunnen worden zonder gebruik te maken van externe bestanden. Deze
zijn interessant voor testen en voor voorgedefinieerde overzichten. De interne pagina's zijn:
- LIST: een lijst met meteo en tijdgegevens, processors enzovoort
- TABLE: de tabel met meteo en tijd gegevens
- STATUS: de toestand van de Meteo en Tijd Server
- XML: de tabel met meteo en tijd gegevens in xml vorm
- LOG: een log van de laatste 100 HTTP verbindingen
- favicon.ico: icon voor gebruik in het url-veld van de browser
- en daarnaast nog enkele voor interne administratie
|
| DHP |
DHP (het recursieve acroniem voor DHP Hypertext Preprocessor) wordt door de MTS ondersteund om teksten te genereren afhankelijk van de waarde van de data op het moment van opvragen van die tekst. De teksten die gegenereerd worden kunnen html, rss enzovoort zijn, afhankelijk van het dhp-bestand dat als bron gebruikt wordt.
Een dhp-bestand bestaat uit de te genereren tekst, met daarin aanwijzingen hoe er (conditioneel) tekst gegenereerd moet worden afhankelijk van de waarde van de meteo-tijd-gegevens, zoals meteo, time, derived, status, settings en statistics (maar niet: calibration data, history, web_log data).
De aanwijzingen binnen een dhp-bestand bestaan uit:
- een dhp indicatie die aangeeft dat een tekstbestand een dhp-bestand is
- gegevens en bewerkingen ervan (zoals vertalingen en formattering kunnen in 'serie' gezet worden via een 'pipe' symbool)
- conditionele text besturing ('if', 'else', 'endif', waarin de waarde van data vergeleken kan worden met constanten, of andere data)
- een processing vorm ('processor') die vooraf gedefinieerd kan worden.
- een variabelen definitie ('variable'), die later gebruikt kan worden in conditionele tekst aanwijzingen of voor vertaling naar tekst in gewenste uitvoer.
- een 'include' mogelijkheid om vanuit een dhp-bestand andere bestanden 'aan te roepen', waardoor standaard teksten die vanuit meerdere dhp-bestanden gewenst zijn, slechts in 1 bestand gedefinieerd
hoeven te worden ('variable' en 'processor' waarden worden daarbij doorgegeven aan het aangeroepen bestand).
- voor de volledigheid is er ook een kommentaar mogelijkheid opgenomen, een assert functie, die een melding geeft als bepaalde variabelen niet gedefinieerd zijn, en een mogelijkheid om spaties te besturen
Een voorbeeld van een DHP, met daarbij de definitie van een vertaal 'processor', een formatteer 'processor', een 'variable' definitie, een conditionele 'if' 'else' 'endif' gebruik.
<?--dhp[]>
a<pre>Voorbeeld...
b[PROCESSOR PZ:0=zondag,6=zaterdag,*=werkdag]
c[PROCESSOR PY:<0=vriest %d graden,*=is %d graden]
d
e[VARIABLE VZ:outside_temp|%d|PY]
f [jd|(ymdhms)]
g [outside_temp]
h[IF day_of_week|PZ EQUAL werkdag]
i Geen weekend vandaag.
j Het [VZ].
k[ELSE]
l Het is weekend.
m[ENDIF]
n<pre>
geeft de volgende output:
Naast een formele syntax definitie, is er ook een beschrijving.
De MTS kan een overzicht genereren van alle interne meteo en tijd gegevens
(naam, momentele waarde en omschrijving), en van conversies (tekst, integer en floating point) die dhp ondersteunt.
Er is hiervan ook een compact overzicht dat door de MTS zelfstandig gegenereerd kan worden.
|
| Licentiemechanisme |
De MTS bevat functionele opties, die met een licentiemechanisme vrijgegeven worden.
Dit mechanisme werkt lokaal, waarbij een licentiesleutel de functies vrijgeeft als de MTS binnen de gelicenseerde
omgeving (qua machine identificatie en geldigheidsduur) werkt.
Het licentiemechanisme bestaat uit:
- een 'coder' die de 'aanvraaggegevens' (opties, geldigheidsduur en machine identificatie) omzet in een licentiesleutel,
- een 'decoder', die aangeeft of er een geldige combinatie van 'aanvraaggegevens' en licentiesleutel is, en
- een 'licentie activator' die binnen de MTS de gewenste functie vrijgeeft bij een geldige licentiesleutel.
De geldigheid van de licentie wordt elk uur opnieuw vastgesteld, en gebruikt daarvoor de tijd die van het weerstation komt.
Daarbij wordt gecontroleerd of er overeenstemming is tussen de 'aanvraaggegevens' en de omgeving waarbinnen de MTS draait
(huidige tijd, gebruikte machine en licentiesleutel).
Het mechanisme gebruikt het 'blowfish' encryptie algorithme, een efficiente en veilige vorm van versleuteling die in het publiek domein aanwezig is.
De ondersteunde opties zijn:
- d: dhp ondersteuning
- h: berekening van gegevens die van de tijd afgeleid worden
- i: index pagina (hoofdpagina van de MTS) weergave
- l: /LOG pagina
- s: zetten van meteo en tijd gegevens via http
- t: /TABLE weergave
- x: /XML weergave
Een voorbeeld van het gebruik van de coder en decoder:
linux> decoder localhost
hostid: 00000050-da3c0e63
linux> coder localhost 2005-01-01,2019-12-31 0-stxlidh
hostid: 00000050-da3c0e63
time: 2005-01-01,2019-12-31
options: 0-stxlidh
key: 5101a3f1-f7f2171f
linux> decoder 00000050-da3c0e63 2005-01-01,2019-12-31 0-stxlidh 5101a3f1-f7f2171f
result: OK
|
| Afmetingen |
Zie bijlage, en gerelateerd aan complexiteit en de dekking van de testen.
|
| Snelheid |
De snelheid van de Meteo en Tijd Server hangt af van diverse factoren, waaronder de snelheid van de
processor waar het op draait, en (bij client verzoeken) hoe snel de verbinding naar die client is.
De LOG pagina laat de snelheid van processing zien. De uitvoer ziet er bijvoorbeeld
als volgt uit:
Wed Sep 30 09:40:32 2009 7.6 (4.9) GET /LIST 192.168.1.37
Wed Sep 30 09:40:35 2009 41.7 (41.2) GET /design/pasen.html 192.168.1.37
Wed Sep 30 09:40:38 2009 29.3 (24.2) GET /TABLE 192.168.1.37
Wed Sep 30 09:40:41 2009 20.8 (16.2) GET /STATUS 192.168.1.37
Nadat er eerst een tijdstempel weergegeven wordt, komt daarna de tijdsduur in milli seconden
van het genereren en versturen van
een pagina naar de client (tussen haakjes de tijd voor het genereren). Dit wordt
gevolgd door de HTTP method
(zoals hier de GET) en de pagina die opgehaald is. Daarna komt het ip adres van de
aanvragende computer (met eventueel de naam van deze computer).
Hoewel bovenstaand overzicht al wel een aardige indruk geeft kun je dit overzicht ook zelf genereren, door
achtereenvolgens de volgende pagina's aan te vragen (en daarna met ⇦ weer terug te gaan naar deze pagina):
- LIST geeft een referentielijst
- pasen.html de data waarop Pasen gevierd wordt tussen 1900 en 2400
- TABLE met de meeste meteo en tijd informatie
- STATUS hierin kan de tijdsduur van client-data verwerking bekeken worden
- LOG: kijk nu onder in dit document voor de log van de laatste requests
|
| Implementatie Details |
De MTS is geschreven in de taal C, voor een Linux operating system (maar is eenvoudig geschikt te maken voor bijvoorbeeld Irix en Solaris).
Het distribueren van gegevens gebeurt buiten dit C-programma, via unix-scripts die door het programma aangeroepen worden.
Hierdoor bevat het MTS programma geen kennis van de netwerktopologie.
In plaats van de namen 'www.hetweer.nu' en 'www.vanharten.info' kunnen ook
andere server namen in de scripts opgenomen worden (of kan het netwerk aangepast worden).
De kwaliteit van het programma wordt gewaarborgd door het ontwerp met zowel off-line als run-time diagnostische controles en rapportages. Hiermee kunnen foutdetectie en foutanalyse snel worden uitgevoerd.
Belangrijke onderdelen hiervan zijn:
- gezonde software modulariteit:
- statische broncode analyse door:
- controles tijdens test runs:
- continue beschikbare logging:
- processing flow logging met verschillende nivo's
- uitgebreide statistieken met dynamisch geheugen logging (heap, allocatie en deallocatie tellers)
|
|
| Webserver |
| Functionaliteit |
De webserver is aanvullend aan de Meteo en Tijd Server, en zorgt voor een grafische weergave van de meteo en tijd
gegevens (bijvoorbeeld een grafiek van de temperatuur van de laatste 24 uur).
De webserver wordt gevoed met gegevens die door de Meteo en Tijd Server
opgestuurd worden.
De webserver wordt gehost door een professionele organisatie, en
de verwachting is dat deze daarom een hogere beschikbaarheid heeft.
|
| Ontwerp |
Ontwerp is een wat groot woord voor de gekozen webserver: het is een standaard Apache webserver,
voor de afhandeling van:
- 'normale' webrequests (zoals html, zip, en gif-bestanden), en
- specifieke webrequests waarbij de grafische capaciteiten
van deze server gebruikt worden. Dit loopt via:
- PHP met o.a. de GD library,
waardoor JpGraph, een PHP en GD gebaseerd grafisch pakket gebruikt kan worden, en
- Macromedia Flash animaties
|
| Invoer: Data Van MTS naar Webserver |
De meteo- en tijdgegevens waarmee de Webserver o.a. grafieken genereert, krijgt het van de Meteo en Tijd Server met grote regelmaat
(standaard elke 10 minuten). Dit bestand bevat variabelen en array's met waarden, en wordt als data via een 'include'
in het PHP scripts ingevoegd. Deze PHP scripts gebruiken de gegevens om de grafische uitvoer te maken.
Een voorbeeld van het data script:
<?php
$time_of_creation = "23:50 25-6-2005";
$updates_per_hour = "6";
$cur_time = "50";
$cur_outside_temp = "14.7";
$cur_outside_chill = "15";
en de array's:
$the_time = array("0", "", "", "", "", "", "1", "", "", "", "", "", "2", enzovoort
$the_outside_temp = array(18.8, 18.8, 18.7, 18.6, 18.7, 19.0, 19.1, 19.2, 19.2, enzovoort
$the_gust_speed_filt_1 = array( 1.650, 1.619, 1.465, 1.800, 2.477, 1.791, 1.691, enzovoort
?>
|
| Uitvoer: Pagina's Met Grafieken |
Zonder volledig te willen zijn, volgt hieronder een lijstje met php scripts:
en de Flash animaties:
- clock voor een klok met de juiste tijd
- baro voor een kwik-barometer met de luchtdruk
- thermo voor een thermometer met de temperatuur
Voor deze flash animatie is er ook beperkte documentatie.
|
|
| Referenties |
Bij het maken van de Meteo en Tijd Server heb nuttig gebruik kunnen maken van gegevens van:
- John Stanley die mij geinspireerd heeft tot het maken van dit weerstation met zijn light-weight
wmr918d. Dit is een programma dat onder unix draait,
en de gegevens van het weerstation beschikbaar maakt via internet (o.a. telnet)
- John Walker vanwege de source code van zijn moontool, een programma dat in 1987 voor SUN
computers ontwikkeld is ("the moon on the SUN"). Dit is gebruikt voor de maanfase berekeningen,
de lunation, en afstanden van de aarde tot de maan en de zon.
Verder heeft hij ook de oorspronkelijke versie van calender converter gemaakt, waar diverse algorithmes aan ontleend zijn
- Het KNMI dat begrippen in het weer beschreven heeft, de
langjarige decade (10 dagen) gemiddelden beschikbaar had, en
de daggegevens van het weer in Nederland
- De Gnu Calendar Gcal, waarin accurate
algorithmes te vinden zijn met betrekking tot maan en zon standen. De aanpassingen die
voor het meteo station gebruikt worden kun je downloaden
- Paul Schlyter vanwege formules en
voorbeelden voor het berekenen van planeet posities.
-
Oscar van Vlijmen's informatie voor het berekenen van gevoelstemperatuur
(windchill), warmte index (heat index), warmte verliezen (en de risico-klassificatie daarvan),
humidex en de net effective temperature
- Keith Burnett's formules en een implementatie van de
opkomst en ondergangstijden van de zon en maan, en van de schemeringstijden
- Jean Meeus astronoom en schrijver van Astronomical Algorithms (djvu,pdf), met daarin astronomische rekenvoorschriften die in deze server gebruikt worden
- P. Bretagnon en G. Francou, die in VSOP87 (Variations Sèculaires des Orbites Planètaires) de beweging van planeten, o.a. de aarde, ten opzichte van de zon hebben vastgelegd in tabellen met constanten zodat ze in eenvoudige formules gebruikt kunnen worden. Zie ook hun publicatie over dit onderwerp
- Wikipedia, met artikelen op het gebied van meteorologie, tijd, en astronomie
En verder van:
|