Vincent's Weblog

WS-5500 custom upload script

In deze post leg ik uit hoe je gebruik maakt van de custom upload functie van de WS-5500. Hiermee kan je de data meteen naar jouw eigen webserver sturen.

Het uploaden naar je eigen webserver is niet zo verschillend van de optie met Weather Underground, Je kan ze zelfs naast elkaar doen werken.

Het Uploadscript

Noot: Het uploadscript werkt enkel over HTTP verbindingen, en niet over HTTPS verbindingen. Het weerstation volgt geen redirects, een HTTP naar HTTPS redirect zal dus niet gevolgd worden.

Het uploadscript zorgt ervoor dat je de data van het weerstation kan uitlezen. Deze dien je op een webserver te uploaden en nadien in de app in te stellen. Om de data op te slaan heb je ook en MySQL databank nodig.

Je kan het uploadscript hier downloaden. Dit .tar.gz archief bevat 2 files: updateweatherstation.php (uploadscript) en hwa.php, het script waarmee je de data kan delen met andere weerstations.

Eens je het uploadscript hebt gedownload moet je de databank nog instellen. Het SQL script hieronder maakt de tabel aan om de data in op te slaan:

CREATE TABLE `data` (
    `Tijd` DATETIME NOT NULL,
    `Temperatuur` DECIMAL(4,1) NOT NULL,
    `Dauwpunt` DECIMAL(4,1) NOT NULL,
    `Windchill` DECIMAL(4,1) NOT NULL,
    `Vochtigheid` INT(16) NOT NULL,
    `Windsnelheid` DECIMAL(4,1) NOT NULL,
    `WindstootSnelheid` DECIMAL(4,1) NOT NULL,
    `Windrichting` DECIMAL(4,1) NOT NULL,
    `Barometer` DECIMAL(5,1) NOT NULL,
    `RegenVandaag` DECIMAL(4,1) NOT NULL,
    `RegenIntensiteit` DECIMAL(4,1) NOT NULL,
    `Zonnestraling` DECIMAL(5,1) NOT NULL,
    `UV` INT(16) NOT NULL,
    UNIQUE (`Tijd`)
);

Zodra je de Databank hebt aangemaakt en de datatabel hebt aangemaakt kan je de gegevens aanpassen in het uploadscript. Bovenaan het uploadscript vind je dit stukje:

// Instellingen
$db_host = "localhost"; // Meestal "localhost"
$db_name = "weerstation"; // De naam van de databank
$db_user = "weerstation"; // De databank gebruiker
$db_pass = "wachtwoord"; // Het wachtwoord van de databank gebruiker
$db_table = "data"; // De naam van de datatabel

$id = "weerstation"; // stationID
$key = "key"; // stationKey
// Einde instellingen

Hier moet je de inloggegevens voor de databank aanpassen, alsook de $id en $key, zodat enkel jouw station data kan uploaden.

Nu moet je de WSView app downloaden, als je deze nog niet hebt geïnstalleerd. Deze app is uitgegeven door Shenzen Fine Offset Electronics.

Android app: Download
IOS app: Download

Eens het uploadscript op de webserver staat moet je het nog instellen in de app. Hiervoor kan je op het laatste tabje bij "customized" het volgende ingeven.

Bij Server IP / Hostname geef je de domeinnaam in van jouw website. Bij mij is dat bijvoorbeeld www.vincentlammens.be

Bij path geef je aan waar dat uploadscript staat op jouw website, bijvoorbeeld /weerstation/updateweatherstation.php? Let op: dit dient te eindigen met een ?

Bij Station ID en Station Key geef je de waarden in die je in het uploadscript hebt ingesteld.

De Port is 80, in de meeste gevallen is dat correct.

Upload interval zet je op 16, of een andere waarde. 16 is bij dit weerstation de laagste waarde.

Nu klik je op "Save". Je weerstation zal nu beginnen met de data door te sturen naar jouw webserver.

De data verwerken

De data kan je nu verwerken op elke manier die je maar wilt door hem uit te lezen uit de databank.

Ik ga me in deze post beperken tot het genereren van een bestand waarmee je de data met weersites kunt delen, maar uiteraard kan je net zoals bij de Weather Underground optie grafiekjes maken.

Een veelgebruikt formaat waarmee weersites data van weerstations uitlezen is het "Openweerdata.txt" formaat, ook wel "hwa.txt" genoemd. Dit bestand zit bij de zipfile van het uploadscript.

In dit script dien je bovenaan het script de databank gegevens aan te passen. Hierna kan je het uploaden, en de URL naar dit script delen met andere weersites.

Extra: Het upload script hosten op een raspberrypi

Als je geen externe webserver tot je beschikking hebt kan je het script op de raspberrypi zelf hosten. Hiervoor kan je een LAMP-Server installeren volgens deze tutorial.. Eens je deze tutorial hebt doorlopen kan je de databank importeren.

maak een nieuw bestand aan en plaats er de volgende SQL code in:

create database weerstation;
use weerstation;
CREATE TABLE `data` (
    `Tijd` DATETIME NOT NULL,
    `Temperatuur` DECIMAL(4,1) NOT NULL,
    `Dauwpunt` DECIMAL(4,1) NOT NULL,
    `Windchill` DECIMAL(4,1) NOT NULL,
    `Vochtigheid` INT(16) NOT NULL,
    `Windsnelheid` DECIMAL(4,1) NOT NULL,
    `WindstootSnelheid` DECIMAL(4,1) NOT NULL,
    `Windrichting` DECIMAL(4,1) NOT NULL,
    `Barometer` DECIMAL(5,1) NOT NULL,
    `RegenVandaag` DECIMAL(4,1) NOT NULL,
    `RegenIntensiteit` DECIMAL(4,1) NOT NULL,
    `Zonnestraling` DECIMAL(5,1) NOT NULL,
    `UV` INT(16) NOT NULL,
    UNIQUE (`Tijd`)
);

Dit kan je nu importeren met (vervang weerstation.sql met de bestandsnaam die jij gebruikt hebt)

sudo mysql < weerstation.sql

het uploadscript kan je uploaden naar /var/www/html. Controleer of je er met je browser aan kan door naar het http://[raspberrypi-ip]/updateweatherstation.php te gaan. Je zult een melding zien dat je geen id/password hebt meegegeven maar dit is normaal. Als je een 404 melding krijgt heb je het bestand niet goed geüpload of geüpload onder een andere naam..

Nu kan je deze gegevens invullen in de app: - Server IP/ Hostname: het ip van je raspberrypi - Path: /updateweatherstation.php? - Station ID: je station id - Station key: je station key - port: 80 - upload interval: voor de WS 5500 is dit maximaal elke 16 seconden. Wil je je data maar per 5 minuten uitlezen dan kan je hier 300 invullen.

Nu zou je moeten zien dat de databank word opgevuld. Je kan de stappen van hierboven gebruiken om de data eventueel te verwerken.