Announcements & Updates

WeatherFlow PiConsole is a Python console that will display the data collected by a WeatherFlow Tempest or Smart Home Weather Station. The console uses the WeatherFlow REST API and websocket to stream data from your station in real time via the internet, including the 3-second rapid wind updates.

The console is fully supported for Raspberry Pi 3 Model B/B+ and Raspberry Pi 4 running the the 32 bit version of Raspberry Pi OS. It can be run on earlier models or the 64 bit version of Raspberry Pi OS, but no direct support is provided for these environments. It can also be run on a PC/laptop with Ubuntu 20.04 LTS or Raspberry Pi OS. It is not compatible with Raspberry Pi Zero, Zero W or Pico. For full compatibility details, see below.

Code and Instructions: The code and instructions about how to get the PiConsole up and running can be found on GitHub

Latest Version: v23.3.1 (3rd March 2023)

Features

  • Wind speed and direction including three second rapid wind updates
  • Outdoor air temperature/humidity/feels Like
  • Indoor air temperature (requires an indoor Air module)
  • Daily maximum and minimum outdoor/indoor temperature
  • Daily maximum wind gust and daily averaged wind speed
  • Atmospheric pressure, pressure trend, and expected conditions
  • Daily maximum and minimum pressure
  • Current rainfall rate along with today/yesterday/monthly/yearly totals
  • Time and distance to latest lightning strike
  • Lightning strike frequency
  • Last 3 hours/today/monthly/yearly lightning strike totals
  • Solar radiation and UV index
  • Sunrise/sunset information
  • Moonrise/moonset information
  • Location specific forecast from WeatherFlow
  • Location specific Sager Weathercaster Forecast
  • Settings screen to change display units and other options

The console layout is fully customisable, allowing you to personalise how you display the data from your WeatherFlow station.

Screenshot

Capture

Compatibility - Raspberry Pi

The console is fully supported for Raspberry Pi 3 Model B/B+ and Raspberry Pi 4 running the the 32 bit version of Raspberry Pi OS. It can be run on earlier models or the 64 bit version of Raspberry Pi OS, but no direct support is provided for these environments. It is not compatible with Raspberry Pi Zero, Zero W or Pico.

For Raspberry Pi 3, the ‘Legacy’ (Debian Buster) version of Raspberry Pi OS with desktop must be used. For Raspberry Pi 4, the most recent (Bullseye) version of Raspberry Pi OS must be used.

The console is compatible with the Raspberry Pi Official 7 inch Touchscreen or other HDMI equivalents. Note, screens that attach solely to the GPIO pins (SPI) are not compatible and the console will not start

Compatibility - PC / Laptop

The console is fully supported on laptops and PCs running Ubuntu 20.04 LTS or the desktop version of Raspberry Pi OS. It will run on other debian-based operating systems with Python version 3.7 or above, but no direct support is provided for these environments.

Recent Version History and Changelog

v23.3.1

  • Fixes bug API URL in lib/config.py
  • Updates copyright information

v22.12.3

  • Fixes bug in Tempest status when wind sampling is 20 seconds

v22.12.2

  • Added watchdog to Websocket to reconnect when messages stop arriving
  • Changed device offline timeout from 5 to 10 minutes
  • Added Tempest battery mode status information
  • Tweaked wording of station online/offline status
  • Fixed bug with update notification

Full change log is available on GitHub

Credits
Credit and thanks to @Weather34 and his Home Weather Station template.

PiConsole

41 Likes

@wpns, @vreihen, @patrick.mussner, @n349ca, @digiital, @andyhudsonsmith, @dave.larson1, @coley.curtin, @tcichowicz, I have just released a new version of the WeatherFlow PyConsole. Instructions on how to make the update can be found here: https://github.com/peted-davis/WeatherFlow_PyConsole.

Changes include:

  • Updated WeatherFlow API key
  • Changed METAR API provider
  • Added code to scale display correctly on non-Raspberry Pi hardware (thanks @coley.curtin)
  • Animated wind rose icon

As noted in the installation instructions, the update will overwrite your existing WeatherFlow_PyConsole.ini configuration file. This is expected behavior as I have updated the WeatherFlow API key to an application specific API key, and I have added a new field for the new METAR API provider: CheckWX. You will need to copy all your old API keys into the new .ini file (leave the WFlowKey untouched), and also register for a new CheckWX API key here: https://www.checkwx.com/register. Copy the new API key into the ‘CheckWXKey’ variable.

I am currently working on a version that displays Fahrenheit instead of Celsius, and will push another update as soon as it is ready. Let me know how you get on!

3 Likes

New release (v1.0) of the WeatherFlow PiConsole. Changes include:

  • Name change from WeatherFlow PyConsole to WeatherFlow PiConsole.
  • Observations from AIR module (temperature and pressure) will now be displayed in the users units of choice specified in the Smart Weather Station App. SKY module observations to follow soon.
  • New WeatherFlowPiConsole.service file to allow the console to auto-run at startup.
  • New ‘windy’ forecast icon for DarkSky forecast.
  • If rapid wind speed is zero, wind rose direction arrow will now remain fixed at the direction of last non-zero wind speed.
  • New timeout added to websocket to better handle dropped connections.

Because of the name change and the advice of @GaryFunk to move the console to a less generic directory, if you are updating from an existing version please make an initial backup of your API keys in the .ini file, and then delete the entire directory containing your old version:

rm -rf ~/WeatherFlow/

Then follow Step 8 in the installation instructions (https://github.com/peted-davis/WeatherFlow_PiConsole) to get back up and running.

@eric I have added an extra timeout to the websocket that hopefully will better handle your NAT box setup and IP address changes. Essentially if no data is received by the console for at least 5 minutes, it will drop the connection and attempt to reconnect. This means you should only see a 6 minute drop out when the IP address changes. Let me know if this works as without your setup it is hard to recreate.

5 Likes

New release (v1.2) of the WeatherFlow PiConsole. Changes include:

  • Observations from SKY module will now be displayed in the users units of choice specified in the Smart Weather Station App.
  • Fixed bug in maximum pressure calculation
  • Fixed bug in API calls to WeatherFlow that failed to start at local midnight

I have had to make a large number of changes to the code in order to integrate all the different unit choices, so please do let me know if you spot any bugs. At this moment, linear feet per minute is not a compatible unit and will default to mph.

I have also added an extra step to the update sequence that will completely remove the existing version before downloading the new one:

rm -rf ~/wfpiconsole/*

This is to make sure that if I delete unnecessary files in the source code, those files are also deleted on your machine. Make sure to backup any local changes before updating!

4 Likes

just took some time to upgrade but I got this after upgrading via the instructions of your GitHub page.
After a reboot nothing happened so I went in again and launched it manually via terminal and got this

pi@WF_console:~/wfpiconsole $ python3 main.py 
[INFO   ] [Logger      ] Record log in /home/pi/.kivy/logs/kivy_18-10-25_4.txt
[INFO   ] [Kivy        ] v1.11.0.dev0, git-038acbf, 20180915
[INFO   ] [Python      ] v3.5.3 (default, Sep 27 2018, 17:25:39) 
[GCC 6.3.0 20170516]
[INFO   ] [Factory     ] 195 symbols loaded
[INFO   ] [Image       ] Providers: img_tex, img_dds, img_sdl2, img_pil, img_gif (img_ffpyplayer ignored)
[INFO   ] [Window      ] Provider: egl_rpi
[INFO   ] [GL          ] Using the "OpenGL ES 2" graphics system
[INFO   ] [GL          ] Backend used <gl>
[INFO   ] [GL          ] OpenGL version <b'OpenGL ES 2.0'>
[INFO   ] [GL          ] OpenGL vendor <b'Broadcom'>
[INFO   ] [GL          ] OpenGL renderer <b'VideoCore IV HW'>
[INFO   ] [GL          ] OpenGL parsed version: 2, 0
[INFO   ] [GL          ] Shading version <b'OpenGL ES GLSL ES 1.00'>
[INFO   ] [GL          ] Texture max size <2048>
[INFO   ] [GL          ] Texture max units <8>
[INFO   ] [Window      ] virtual keyboard not allowed, single mode, not docked
[INFO   ] [Text        ] Provider: sdl2
2018-10-25 18:51:55+0200 [-] Log opened.
[INFO   ] [GL          ] NPOT texture support is available
Unable to connect to X server
[INFO   ] [ProbeSysfs  ] device match: /dev/input/event0
[INFO   ] [MTD         ] Read event from </dev/input/event0>
[INFO   ] [ProbeSysfs  ] device match: /dev/input/event0
[INFO   ] [HIDInput    ] Read event from </dev/input/event0>
[INFO   ] [Base        ] Start application main loop
[INFO   ] [MTD         ] </dev/input/event0> range position X is 0 - 800
[INFO   ] [Support     ] Starting twisted reactor
[INFO   ] [HIDMotionEvent] using <b'FT5406 memory based driver\x00                                                                                                                                                                                                                                     '>
[INFO   ] [MTD         ] </dev/input/event0> range position Y is 0 - 480
[INFO   ] [HIDMotionEvent] <b'FT5406 memory based driver\x00                                                                                                                                                                                                                                     '> range ABS X position is 0 - 800
[INFO   ] [MTD         ] </dev/input/event0> range touch major is 0 - 0
[INFO   ] [HIDMotionEvent] <b'FT5406 memory based driver\x00                                                                                                                                                                                                                                     '> range ABS Y position is 0 - 480
[INFO   ] [MTD         ] </dev/input/event0> range touch minor is 0 - 0
[INFO   ] [HIDMotionEvent] <b'FT5406 memory based driver\x00                                                                                                                                                                                                                                     '> range position X is 0 - 800
[INFO   ] [MTD         ] </dev/input/event0> range pressure is 0 - 255
[INFO   ] [HIDMotionEvent] <b'FT5406 memory based driver\x00                                                                                                                                                                                                                                     '> range position Y is 0 - 480
[INFO   ] [MTD         ] </dev/input/event0> axes invertion: X is 0, Y is 0
[INFO   ] [MTD         ] </dev/input/event0> rotation set to 0
[INFO   ] [Base        ] Leaving application in progress...
[INFO   ] [Support     ] Shutting down twisted reactor
2018-10-25 18:51:58+0200 [-] Traceback (most recent call last):
2018-10-25 18:51:58+0200 [-]   File "main.py", line 1998, in <module>
2018-10-25 18:51:58+0200 [-]     WeatherFlowPiConsole().run()
2018-10-25 18:51:58+0200 [-]   File "/usr/local/lib/python3.5/dist-packages/kivy/app.py", line 826, in run
2018-10-25 18:51:58+0200 [-]     runTouchApp()
2018-10-25 18:51:58+0200 [-]   File "/usr/local/lib/python3.5/dist-packages/kivy/base.py", line 502, in runTouchApp
2018-10-25 18:51:58+0200 [-]     EventLoop.window.mainloop()
2018-10-25 18:51:58+0200 [-]   File "/usr/local/lib/python3.5/dist-packages/kivy/core/window/window_egl_rpi.py", line 92, in mainloop
2018-10-25 18:51:58+0200 [-]     self._mainloop()
2018-10-25 18:51:58+0200 [-]   File "/usr/local/lib/python3.5/dist-packages/kivy/core/window/window_egl_rpi.py", line 87, in _mainloop
2018-10-25 18:51:58+0200 [-]     EventLoop.idle()
2018-10-25 18:51:58+0200 [-]   File "/usr/local/lib/python3.5/dist-packages/kivy/base.py", line 337, in idle
2018-10-25 18:51:58+0200 [-]     Clock.tick()
2018-10-25 18:51:58+0200 [-]   File "/usr/local/lib/python3.5/dist-packages/kivy/clock.py", line 581, in tick
2018-10-25 18:51:58+0200 [-]     self._process_events()
2018-10-25 18:51:58+0200 [-]   File "kivy/_clock.pyx", line 384, in kivy._clock.CyClockBase._process_events
2018-10-25 18:51:58+0200 [-]   File "kivy/_clock.pyx", line 414, in kivy._clock.CyClockBase._process_events
2018-10-25 18:51:58+0200 [-]   File "kivy/_clock.pyx", line 412, in kivy._clock.CyClockBase._process_events
2018-10-25 18:51:58+0200 [-]   File "kivy/_clock.pyx", line 167, in kivy._clock.ClockEvent.tick
2018-10-25 18:51:58+0200 [-]   File "main.py", line 275, in <lambda>
2018-10-25 18:51:58+0200 [-]     Clock.schedule_once(lambda dt: self.DownloadForecast())
2018-10-25 18:51:58+0200 [-]   File "main.py", line 1546, in DownloadForecast
2018-10-25 18:51:58+0200 [-]     self.ExtractDarkSkyForecast()			
2018-10-25 18:51:58+0200 [-]   File "main.py", line 1659, in ExtractDarkSkyForecast
2018-10-25 18:51:58+0200 [-]     self.MetData['WindDir'] = self.WindBearingToCompassDirec(WindDir,1)[0]
2018-10-25 18:51:58+0200 [-] AttributeError: 'WeatherFlowPiConsole' object has no attribute 'WindBearingToCompassDirec'

something I missed ?

1 Like

Gaaaah! No it’s not you, it’s me. I renamed that function and forgot to update the code. Note to self: test a non-UK station before releasing the code.

I’ll get an update pushed ASAP! (might be tomorrow though)

3 Likes

New release (v1.3) of the WeatherFlow PiConsole. Changes include:

  • Forecast windspeed now respects users choice of units
  • Fixed bug in max wind/max gust speed
  • Fixed bug in DarkSky forecast wind direction (@eric - should be good to go now!).
5 Likes

updated just now, rebooted normally and it launched, all is metric but will go over it in more details later. Thanks Peter

2 Likes

@peter

Your display has already the spot for the future Breathe temp etc … guess that won’t be available for some time

I use one of the Air modules internally (depreciated beta model :wink:

Would it be possible to add the config part so we could use a second air as indoor model and show the details next to the outdoor details ???

3 Likes

Hi @peter,
i just updated now to v1.3 but i miss the max wind speed…

IMG_20181027_170319

Opps - looks like the string is too long for the display box. I’ll get a fix sorted.

Definitely! I have been pondering this for a while - just need to come up with a way of making it universal, so the display will work with 2 Airs as well as 1 Air and 1 Breathe (eventually), or even 2 Breathes if someone wants it setup that way.

Cough, sensor_map, cough… :blush:

3 Likes

Seems like we spend most of our time fixing what we fixed. :wink:

5 Likes

Hi Peter -

Nicely done! I built your console this morning. Took about an hour. No problems.

Thanks for all of your hard work on this. It’s a great addition to my weather station.

Rick Comito

1 Like

@rcomito Thanks! Glad you like it :grin:

I’ve also just released a brand new version. See below!

New release (v1.4) of the WeatherFlow PiConsole. Changes include:

  • Max wind speed replaced with daily averaged wind speed
  • Bug fixes and performance improvements

Lots of little under the hood changes to cope with the unit conversion. I’ve probably missed a few things so let me know if you notice anything weird!

1 Like

installed :sleeping:

3 Likes

OK I managed to mess things up, and there are a couple of bugs that crash the code at midnight. Working on a fix at the moment!

2 Likes

New version released (v1.5) to fix these bugs :smiley:

3 Likes