Saturday, 4 January 2020

Install Weather34 with WeatherLink

Updated 2020-01-04 !!

If You want Your Private Weather Station(PWS) Davis Vantage Pro2, or other Davis products that use WeatherLink, to provide data for the template we use at Domstens Båtklubb just follow the instructions below. 

This is made without additional software such as Cumulus, Weather display or the Meteobridge product.

Interface updated to WeatherLink 2.0(WL2.0) Migrate info in this post

If You want our code version please check this post

An example of a WeatherLink dashboard with Node-Red is found here.

The template Weather34(W34) is built so it can get online data from many different PWS solutions which should update their respective online files at the W34 web-server. In our case we pull JSON data direct from the WL site and update an online file, type "cumulus", on the W34 web-server

Install W34 according to the instructions, WEB hosted installation, on a Mac or Raspberry Pi(RPi) install below.


Before You start You must ensure that;
  • You have a registered account at Davis Weatherlinksite(WL)
  • You have a registered account at Weather Underground(WU) if You want their forecast 
    • PWS data is pushed to WU
    • Historic PWS data is retrieved from WU
  • You have a registered account at Dark Sky(DS)
    • Forecasts are retrieved from Dark Sky
and if You want Metar aviation weather data 
  • Register an account at Checkwx
    • Aviation weather data are retrieved from Checkwx
If You are supplying WU with Your PWS data You will get a API key for the new API without cost. You can then get a 5 days forecast and historical data, day/month, which is supported with the W34 version issued 2019-05-21.

To start up fresh on the RPi You can follow the instructions here where You install Apache2 and PHP 7.2 with Raspberry Pi OS .

The Cumulus version of W34 is supported by Ken True. There is a Forum, and a GitHub repository.

For this W34 version, running PHP 7.2, You must have the php7.2-curl and php7.2-mbstring  packages installed.


Installation is referring to a RPi with hostname "pws01".

Logged on to RPi, via ssh, and user "pi" download the W34 source to "pi" home folder


(Another way, if Git is installed on the RPi, is
git clone

Unzip the file 


Check that a folder with name "CU-HWS-master" is created and it contains several folders and files with the extension .php. Then create a new folder

mkdir CU-HWS-master/add_on

Download from Github the program that retrieves data from WL




Copy 2 files to the "add_on" folder(The online file "realtime.txt" will be created by the program)

cp ~/weatherlink-data-pull-master/{cumulusdata.php,realtime.templ} ~/CU-HWS-master/add_on/

Edit the PHP file, "cumulusdata.php", so that the 3 records in the beginning of the program

$wlink_user = "XXXX"; 
$wlink_pass = "YYYY";
$wlink_apiToken = "ZZZZ";

uses Your credentials to log on to WL. Please note that for the WL2.0 interface the $wlink_user  is changed to Device ID from former user.

The changed application is tested against both a WL account that is still on WL1.0 and a WL2.0

Move, and rename, the folder "CU-HWS-master" to the Apache document root with 

sudo mv CU-HWS-master /var/www/html/pws

The W34 application will change local files, updates from WU, DS and WL, and therefore we have to take care of authority. The Apache servers default user/group is www-dataso the following command will handle this

sudo chown -R www-data:www-data /var/www/html/pws/

You can now check the application with URL


Continue with the setup, URL

http://pws01/pws/easyweathersetup.php No Password

Set up the parameters for Your use case and in the section "Cumulus Software Path to Data file" choose 
  • "Data Type" => "cumulus" 
  • "Your Path to data file" => "add_on/realtime.txt" 
To check that the application is getting data from WL, execute with 

sudo php /var/www/html/pws/add_on/cumulusdata.php

and check in a WEB-browser 



cat /var/www/html/pws/add_on/realtime.txt

The date and time in the beginning of the file will tell if You succeed

Add a crontab record, as user "pi", using, crontab -e

*/5 * * * * sudo php /var/www/html/pws/add_on/cumulusdata.php

This job will get the data, every 5 minutes, from WL and create/update the online file "realtime.txt"

Check again with 


and confirm that everything is working OK

Avoiding cron job ? Check this

Please note;
  • Trend values, temperature and pressure, DarkSky forecast and Last Hour Rain can take up to 2 hours before they are OK.
  • Wind run, daily max wind and yesterday's rainfall will be correct after a day shift
Update W34

When You update/replace W34 to a new version, save
  • ”settings1.php” file so You don't have to register all settings with "easyweathersetup.php" again. Allways run the "easyweathersetup.php" so a conversion could be done and check if there are new settings.
  • "menu.php" file if You have added own Menu rows
Tips and tricks
  • If You have problem with the W34 application the built in diagnose feature could help. URL http://pws01/pws/diags.php?show=info
  • Show W34 settings with URL http://pws01/pws/diags.php?show=settings
  • A very easy way to check that everything is set up right at WL is to put the URL (WL2.0) in Your browser, changing XXXX, YYYY and ZZZZ to Your credentials, as You do in the program
  • If You don't like the translation You could edit the specific file in /var/www/html/pws/languages/
  • When registering at WL use lowercase for the "User name".
  • WL is updated once every minute so it's no use to run the Cron job more often
  • If You want to edit and change the W34 files, from Your Mac/PC, in the Apache server just add user www-data to Your Samba installation


New Cumulus version available, dated 2019-01-05. If upgrading and migrating Your old "settings1.php" You must run "Settings" and update the "Temperature module" part and "Sunposition Bearing" otherwise the application don't work.


New Cumulus version available, dated 2018-12-14. If upgrading and migrating Your old "settings1.php" You must run "Settings" and update the "Davis Hardware" part and "Sunposition Bearing" otherwise the application don't work.


"cumulusdata.php" is updated with calculation for field, rain last hour => $cumulus[47] and changed input for wind gust 10 minutes => $cumulus[40]  


"cumulusdata.php" is updated with field, yesterday's rainfall => $cumulus[21] 


Simplifying the installation and, inspired from Aaron, handling the authority in a better way.
"cumulusdata.php" is now updated for WL JSON data, PHP 7.2 and as said above You have to add "Curl" and "mbstring" support.


The new version, WL2.0, is migrated in this post.


The new version, WL2.0, is discussed in this post.


NOTE ! If You are updating to the new W34 version V3.4 X5(e) and migrating ”settings1.php” You have to use "easyweathersetup.php" and update new fields before You start the W34 application.
The file "homeindoor.php", showing just temperature, is updated at Github 


The program "cumulusdata.php" is updated for handling an extra temperature sensor, Davis 6372, which in our case is measuring the water temperature. To handle it, within the Cumulus file layout, the field for indoor temperature is used. "$water_temp = false;" which is default, means that the the indoor temp is used. If the field is set to "true" and there is a valid temperature in the XML answer from WL, 
field,  {'davis_current_observation'}->{'temp_extra_1'}  
the indoor temp is substituted with this value.
To display the info within W34 a changed "homeindoor.php" is available at Github which could be used in the "Top Row 4 Modules"


NOTE ! If You are updating to the new W34 version V3.4 X5 and migrating ”settings1.php” You have to use "easyweathersetup.php" and update new fields before You start the W34 application.
  • In the section "Set the Units ....." and the field "Distance unit measured miles or kilometres" choose the apropriate value (Used for windrun)
  • In the section "Some Extras....." and the part "These options are.... " choose the default "current34condtions.php"
  • In the part ”Options for Top Row 4 Modules” the value "Clock" is no longer valid for position 1

Due to changes in W34 the program "cumulusdata.php" now calculates trend values for temperature and pressure in a new way and therefore the file "realtime.templ" is extended. So if You are doing an update You must change to the new "realtime.templ" and "realtime.txt". The best way is to delete both files and download the extended "realtime.templ". Then when the program "cumulusdata.php" runs for the first time the "realtime.txt" will be recreated.


  1. everything works fine but index.php won't load. It appears common.php is killing it. Ideas?

  2. installed mbstrings - all fine tku!