Sunday, 12 December 2021

Install Weather34 with WeatherLink

Updated 2021-12-12 !! OK with Bullseye and PHP 8.x !

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

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

The template Weather34(W34) was built so it could get online data from 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.


Prerequisites
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
WU API key
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.


RPi OS
To start up fresh on the RPi You can follow the instructions here where You install Apache2 and PHP 7.4 with Raspberry Pi OS . You must have the "php7.4-curl" package installed. (There is also found a compact listing installing PHP 8.1)

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

Installation
Installation is referring to a RPi with hostname "pws01".
Logged on to RPi, via ssh/terminal, and user "pi", start with an OS update

sudo apt update && sudo apt full-upgrade -y && sudo apt clean

After that download the W34 source to "pi" home folder

wget https://github.com/ktrue/CU-HWS/archive/master.zip

(Another way, if Git is installed on the RPi, is
git clone https://github.com/ktrue/CU-HWS.git)

Unzip the file 

unzip master.zip

Check that a folder with name "CU-HWS-master" is created and it contains several folders and files with the extension ".php". Delete the zip file, "rm master.zip", and then create a new folder

mkdir CU-HWS-master/add_on

Download from Github the program that retrieves data from WL

wget https://github.com/MatsA/weatherlink-data-pull/archive/master.zip

and then unzip 

unzip master.zip  and then delete the zip file "rm master.zip".

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/

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 

http://pws01/pws/add_on/realtime.txt

or via ssh/terminal

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"

You can now check the application with URL

http://pws01/pws/

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 http://api.weatherlink.com/v1/NoaaExt.json?user=XXXX&pass=YYYY&apiToken=ZZZZ (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
  • If You want our code version please check this post
Remarks
2021-12-12
Updated WU URL for todays historical observations 

2021-12-04
Works with PHP V 8.x after an update by Ken


2021-11-27
Tested and works with Bullseye.
Doesn't work with PHP V 8.x !!

2019-01-07

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.

2018-12-15

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.

2018-12-02

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

2018-11-05

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

2018-10-18

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.

2018-06-19

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

2018-03-19

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

2017-08-04

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 

2017-07-08

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"

2017-07-07

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
2017-04-25 

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.

3 comments:

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

    ReplyDelete
  2. installed mbstrings - all fine tku!

    ReplyDelete