Bootstrap skin update preview

546 views
Skip to first unread message

michael.k...@gmx.at

unread,
Feb 3, 2021, 4:12:05 PM2/3/21
to weewx-user
A couple of weeks ago, I asked Nick, the author of the bootstrap skin, if he could help me taking his skin, that I am very fond of, to the next level. As a first step we developed an optional live view with browser rendered gauges and charts, using MQTT for the almost-real-time rendering. Everything is still under heavy development, but still, I think time has come to show a first preview. Whoever wants to check it out, this is the development branch:


Be careful, not production ready!

For those who want to see it in action:


The Weatherflow Tempest is really great for such fancy almost-realtime sites with it's 3 second wind/windDir update interval.

Tom Keffer

unread,
Feb 3, 2021, 5:57:25 PM2/3/21
to weewx-user
Hi, Michael.

I got several errors when I tried to see your live version:

Uncaught SyntaxError: Unexpected end of input
site.js:1 Uncaught ReferenceError: weewxData is not defined
    at site.js:1
gauges.js:3 Uncaught ReferenceError: weewxData is not defined
    at gauges.js:3
charts.js:2 Uncaught ReferenceError: weewxData is not defined
    at charts.js:2
/favicon.ico:1 Failed to load resource: the server responded with a status of 404 (Not Found)


--
You received this message because you are subscribed to the Google Groups "weewx-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to weewx-user+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/weewx-user/bd8b0eb8-f803-43e9-9f7b-077dc4b79f1dn%40googlegroups.com.

michael.k...@gmx.at

unread,
Feb 3, 2021, 11:48:07 PM2/3/21
to weewx-user
Hello Tom,

The error with the /favicon.ico is a simple one: there is no such file. The other errors I couldn't reproduce, even trying with different browser on different computers and phones. Isn't weewxData.js there, when you try to load it? It's referenced on line 144 of the HTML.
What browser on what system are you using?
I got it working with Windows: Firefox, Brave, Edge, Chrome, Raspbian with Chromium, Android 10 Chrome, Brave, Firefox. Android 7.0 Chrome. I've encountered some Problems with the connection to the MQTT broker while using the companies VPN and and some weird rendering of the gauges an images using the edge version 44, pre-chromium) browser that is installed at the companies computer and no displaying of the gauges and charts with the internet explorer (an there are no plans to get this working)

Tom Keffer

unread,
Feb 4, 2021, 7:33:20 AM2/4/21
to weewx-user
Don't know what happened, but now it works for me with no errors.

Looks great!

michael.k...@gmx.at

unread,
Feb 4, 2021, 10:24:30 AM2/4/21
to weewx-user
I didn't change anything in the meantime, so I don't know what caused the initial error. "Looks great" => thank you very much, hearing this from Mr. weewx himself, really is delightful :)

I forget to mention: The charts and gauges are Apache eCharts. Almost infinite possibilities!

Δημήτρης Βήχος

unread,
Feb 4, 2021, 1:08:12 PM2/4/21
to weewx-user
very good work! beautifull skin. looks geat on chromium 88 with arch linux

michael.k...@gmx.at

unread,
Feb 20, 2021, 5:35:45 PM2/20/21
to weewx-user
In the meantime I've made some enhancements, bugfixes and styling improvements.
There is still some testing and documentation to be done, but we're getting closer, finishing this :)
Try it:

moth...@gmail.com

unread,
Feb 21, 2021, 1:54:27 PM2/21/21
to weewx-user
Have also done an installation. Got these error messages. Use the latest version of Weewx and Pyhthon. The original script does not work.
Can't get it working on my system.
This is a copy of the system log.
pi@raspberrypi:~ $ sudo /etc/init.d/weewx stop
[ ok ] Stopping weewx (via systemctl): weewx.service.
pi@raspberrypi:~ $ sudo wee_extension --install=/home/pi/Downloads/fuzzy-archer-2.26.tar.gz                                              Request to install '/home/pi/Downloads/fuzzy-archer-2.26.tar.gz'
Extracting from tar archive /home/pi/Downloads/fuzzy-archer-2.26.tar.gz
Traceback (most recent call last):
  File "/usr/share/weewx/wee_extension", line 88, in <module>
    main()
  File "/usr/share/weewx/wee_extension", line 80, in main
    ext.install_extension(options.install)
  File "/usr/share/weewx/weecfg/extension.py", line 125, in install_extension
    self.install_from_dir(extension_dir)
  File "/usr/share/weewx/weecfg/extension.py", line 147, in install_from_dir
    extension_dir)
  File "/usr/share/weewx/weecfg/__init__.py", line 1866, in get_extension_installer
    __import__('install')
  File "/var/tmp/fuzzy-archer-2.26/install.py", line 84
    print ""
           ^
SyntaxError: Missing parentheses in call to 'print'. Did you mean print("")?
pi@raspberrypi:~ $ sudo wee_extension --install=/home/pi/Downloads/fuzzy-archer-liveCharts.zip
Request to install '/home/pi/Downloads/fuzzy-archer-liveCharts.zip'
Extracting from zip archive /home/pi/Downloads/fuzzy-archer-liveCharts.zip

The following alternative languages are available:
   catala
   dutch
   espanol
   finnish
   francais
   german
   italian
   korean
   norwegian

Language changes can be made in skins/Bootstrap/skin.conf

Default location for HTML and image files is public_html/Bootstrap
*** POINT YOUR BROWSER TO: public_html/Bootstrap/index.html ***

Saving installer file to /usr/share/weewx/user/installer/bootstrap
Saved configuration dictionary. Backup copy at /etc/weewx/weewx.conf.20210221194236
Finished installing extension '/home/pi/Downloads/fuzzy-archer-liveCharts.zip'
pi@raspberrypi:~ $ sudo /etc/init.d/weewx start
[ ok ] Starting weewx (via systemctl): weewx.service.
pi@raspberrypi:~ $ sudo tail -f /var/log/syslog
Feb 21 19:43:27 raspberrypi weewx[23186] DEBUG weewx.drivers.vantage: Gentle wake up of console successful
Feb 21 19:43:27 raspberrypi weewx[23186] DEBUG weewx.drivers.vantage: Retrieving 1 page(s); starting index= 3
Feb 21 19:43:27 raspberrypi weewx[23186] INFO weewx.manager: Added record 2021-02-21 19:40:00 CET (1613932800)                           to database 'weewx.sdb'
Feb 21 19:43:27 raspberrypi weewx[23186] INFO weewx.manager: Added record 2021-02-21 19:40:00 CET (1613932800)                           to daily summary in 'weewx.sdb'
Feb 21 19:43:28 raspberrypi weewx[23186] DEBUG weewx.drivers.vantage: DMPAFT complete: page timestamp 2021-02-1                          2 22:20:00 CET (1613164800) less than final timestamp 2021-02-21 19:40:00 CET (1613932800)
Feb 21 19:43:28 raspberrypi weewx[23186] DEBUG weewx.drivers.vantage: Catch up complete.
Feb 21 19:43:28 raspberrypi weewx[23186] INFO weewx.engine: Starting main packet loop.
Feb 21 19:43:28 raspberrypi weewx[23186] DEBUG weewx.drivers.vantage: Gentle wake up of console successful
Feb 21 19:43:28 raspberrypi weewx[23186] DEBUG weewx.drivers.vantage: Requesting 200 LOOP packets.
Feb 21 19:43:28 raspberrypi weewx[23186] DEBUG weewx.drivers.vantage: Gentle wake up of console successful
Feb 21 19:44:28 raspberrypi dhcpcd[425]: wlan0: part of Router Advertisement expired
Feb 21 19:44:46 raspberrypi dhcpcd[425]: wlan0: part of Router Advertisement expired
Feb 21 19:45:15 raspberrypi weewx[23186] DEBUG weewx.drivers.vantage: Getting archive packets since 2021-02-21 19:40:00 CET (1613932800)
Feb 21 19:45:15 raspberrypi weewx[23186] DEBUG weewx.drivers.vantage: Gentle wake up of console successful
Feb 21 19:45:15 raspberrypi weewx[23186] DEBUG weewx.drivers.vantage: Retrieving 1 page(s); starting index= 4
Feb 21 19:45:16 raspberrypi weewx[23186] INFO weewx.manager: Added record 2021-02-21 19:45:00 CET (1613933100) to database 'weewx.sdb'
Feb 21 19:45:16 raspberrypi weewx[23186] INFO weewx.manager: Added record 2021-02-21 19:45:00 CET (1613933100) to daily summary in 'weewx.sdb'
Feb 21 19:45:17 raspberrypi weewx[23186] DEBUG weewx.reportengine: Running reports for latest time in the database.
Feb 21 19:45:17 raspberrypi weewx[23186] DEBUG weewx.drivers.vantage: Requesting 200 LOOP packets.
Feb 21 19:45:17 raspberrypi weewx[23186] DEBUG weewx.reportengine: Running report 'SeasonsReport'
Feb 21 19:45:17 raspberrypi weewx[23186] DEBUG weewx.drivers.vantage: Gentle wake up of console successful
Feb 21 19:45:17 raspberrypi weewx[23186] DEBUG weewx.reportengine: Found configuration file /etc/weewx/skins/Seasons/skin.conf for report 'SeasonsReport'
Feb 21 19:45:18 raspberrypi weewx[23186] DEBUG weewx.cheetahgenerator: Using search list ['weewx.cheetahgenerator.Almanac', 'weewx.cheetahgenerator.Station', 'weewx.cheetahgenerator.Current', 'weewx.cheetahgenerator.Stats', 'weewx.cheetahgenerator.UnitInfo', 'weewx.cheetahgenerator.Extras']
Feb 21 19:45:18 raspberrypi weewx[23186] DEBUG weewx.manager: Daily summary version is 4.0
Feb 21 19:45:21 raspberrypi weewx[23186] INFO weewx.cheetahgenerator: Generated 8 files for report SeasonsReport in 3.51 seconds
Feb 21 19:45:21 raspberrypi weewx[23186] DEBUG weewx.manager: Daily summary version is 4.0
Feb 21 19:45:22 raspberrypi weewx[23186] INFO weewx.imagegenerator: Generated 15 images for report SeasonsReport in 1.10 seconds
Feb 21 19:45:22 raspberrypi weewx[23186] INFO weewx.reportengine: Copied 5 files to /var/www/html/weewx
Feb 21 19:45:22 raspberrypi weewx[23186] DEBUG weewx.reportengine: Report 'SmartphoneReport' not enabled. Skipping.
Feb 21 19:45:22 raspberrypi weewx[23186] DEBUG weewx.reportengine: Report 'MobileReport' not enabled. Skipping.
Feb 21 19:45:22 raspberrypi weewx[23186] DEBUG weewx.reportengine: Report 'StandardReport' not enabled. Skipping.
Feb 21 19:45:22 raspberrypi weewx[23186] DEBUG weewx.reportengine: Running report 'SmallImages'
Feb 21 19:45:22 raspberrypi weewx[23186] DEBUG weewx.reportengine: Found configuration file /etc/weewx/skins/Images/skin.conf for report 'SmallImages'
Feb 21 19:45:22 raspberrypi weewx[23186] ERROR weewx.reportengine: Unable to instantiate generator 'user.translategenerator.ImageGeneratorTranslated'
Feb 21 19:45:22 raspberrypi weewx[23186] ERROR weewx.reportengine:         ****  No module named 'user.jsonengine'
Feb 21 19:45:22 raspberrypi weewx[23186] ERROR weewx.reportengine:         ****  Traceback (most recent call last):
Feb 21 19:45:22 raspberrypi weewx[23186] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/reportengine.py", line 179, in run
Feb 21 19:45:22 raspberrypi weewx[23186] ERROR weewx.reportengine:         ****      obj = weeutil.weeutil.get_object(generator)(
Feb 21 19:45:22 raspberrypi weewx[23186] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weeutil/weeutil.py", line 1093, in get_object
Feb 21 19:45:22 raspberrypi weewx[23186] ERROR weewx.reportengine:         ****      mod = __import__(module)
Feb 21 19:45:22 raspberrypi weewx[23186] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/user/translategenerator.py", line 43, in <module>
Feb 21 19:45:22 raspberrypi weewx[23186] ERROR weewx.reportengine:         ****      from user.jsonengine import JSONGenerator
Feb 21 19:45:22 raspberrypi weewx[23186] ERROR weewx.reportengine:         ****  ModuleNotFoundError: No module named 'user.jsonengine'
Feb 21 19:45:22 raspberrypi weewx[23186] ERROR weewx.reportengine:         ****  Generator ignored
Feb 21 19:45:22 raspberrypi weewx[23186] DEBUG weewx.reportengine: Running report 'BigImages'
Feb 21 19:45:22 raspberrypi weewx[23186] DEBUG weewx.reportengine: Found configuration file /etc/weewx/skins/Images/skin.conf for report 'BigImages'
Feb 21 19:45:22 raspberrypi weewx[23186] ERROR weewx.reportengine: Unable to instantiate generator 'user.translategenerator.ImageGeneratorTranslated'
Feb 21 19:45:22 raspberrypi weewx[23186] ERROR weewx.reportengine:         ****  No module named 'user.jsonengine'
Feb 21 19:45:22 raspberrypi weewx[23186] ERROR weewx.reportengine:         ****  Traceback (most recent call last):
Feb 21 19:45:22 raspberrypi weewx[23186] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/reportengine.py", line 179, in run
Feb 21 19:45:22 raspberrypi weewx[23186] ERROR weewx.reportengine:         ****      obj = weeutil.weeutil.get_object(generator)(
Feb 21 19:45:22 raspberrypi weewx[23186] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weeutil/weeutil.py", line 1093, in get_object
Feb 21 19:45:22 raspberrypi weewx[23186] ERROR weewx.reportengine:         ****      mod = __import__(module)
Feb 21 19:45:22 raspberrypi weewx[23186] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/user/translategenerator.py", line 43, in <module>
Feb 21 19:45:22 raspberrypi weewx[23186] ERROR weewx.reportengine:         ****      from user.jsonengine import JSONGenerator
Feb 21 19:45:22 raspberrypi weewx[23186] ERROR weewx.reportengine:         ****  ModuleNotFoundError: No module named 'user.jsonengine'
Feb 21 19:45:22 raspberrypi weewx[23186] ERROR weewx.reportengine:         ****  Generator ignored
Feb 21 19:45:22 raspberrypi weewx[23186] DEBUG weewx.reportengine: Running report 'HTMLPages'
Feb 21 19:45:22 raspberrypi weewx[23186] DEBUG weewx.reportengine: Found configuration file /etc/weewx/skins/Bootstrap/skin.conf for report 'HTMLPages'
Feb 21 19:45:22 raspberrypi weewx[23186] ERROR weewx.reportengine: Unable to instantiate generator 'user.translategenerator.JSONGeneratorTranslated'
Feb 21 19:45:22 raspberrypi weewx[23186] ERROR weewx.reportengine:         ****  No module named 'user.jsonengine'
Feb 21 19:45:22 raspberrypi weewx[23186] ERROR weewx.reportengine:         ****  Traceback (most recent call last):
Feb 21 19:45:22 raspberrypi weewx[23186] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/reportengine.py", line 179, in run
Feb 21 19:45:22 raspberrypi weewx[23186] ERROR weewx.reportengine:         ****      obj = weeutil.weeutil.get_object(generator)(
Feb 21 19:45:22 raspberrypi weewx[23186] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weeutil/weeutil.py", line 1093, in get_object
Feb 21 19:45:22 raspberrypi weewx[23186] ERROR weewx.reportengine:         ****      mod = __import__(module)
Feb 21 19:45:22 raspberrypi weewx[23186] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/user/translategenerator.py", line 43, in <module>
Feb 21 19:45:22 raspberrypi weewx[23186] ERROR weewx.reportengine:         ****      from user.jsonengine import JSONGenerator
Feb 21 19:45:22 raspberrypi weewx[23186] ERROR weewx.reportengine:         ****  ModuleNotFoundError: No module named 'user.jsonengine'
Feb 21 19:45:22 raspberrypi weewx[23186] ERROR weewx.reportengine:         ****  Generator ignored
Feb 21 19:45:22 raspberrypi weewx[23186] DEBUG weewx.manager: Daily summary version is 4.0
Feb 21 19:45:22 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: outTemp reading = 8.166666666666668 degree_C
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: barometer reading = 1013.2412009994924 mbar
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: outHumidity reading = 87.0 percent
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: windSpeed reading = 0.0 km_per_hour
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: windGust reading = 0.0 km_per_hour
Feb 21 19:45:23 raspberrypi weewx[23186] INFO user.gaugeengine: GaugeGenerator: windDir has no reading (None)
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'
Feb 21 19:45:23 raspberrypi weewx[23186] INFO user.gaugeengine: GaugeGenerator: Generated 6 images for HTMLPages in 0.88 seconds
Feb 21 19:45:23 raspberrypi weewx[23186] ERROR weewx.reportengine: Unable to instantiate generator 'user.translategenerator.CheetahGeneratorTranslated'
Feb 21 19:45:23 raspberrypi weewx[23186] ERROR weewx.reportengine:         ****  No module named 'user.jsonengine'
Feb 21 19:45:23 raspberrypi weewx[23186] ERROR weewx.reportengine:         ****  Traceback (most recent call last):
Feb 21 19:45:23 raspberrypi weewx[23186] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/reportengine.py", line 179, in run
Feb 21 19:45:23 raspberrypi weewx[23186] ERROR weewx.reportengine:         ****      obj = weeutil.weeutil.get_object(generator)(
Feb 21 19:45:23 raspberrypi weewx[23186] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weeutil/weeutil.py", line 1093, in get_object
Feb 21 19:45:23 raspberrypi weewx[23186] ERROR weewx.reportengine:         ****      mod = __import__(module)
Feb 21 19:45:23 raspberrypi weewx[23186] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/user/translategenerator.py", line 43, in <module>
Feb 21 19:45:23 raspberrypi weewx[23186] ERROR weewx.reportengine:         ****      from user.jsonengine import JSONGenerator
Feb 21 19:45:23 raspberrypi weewx[23186] ERROR weewx.reportengine:         ****  ModuleNotFoundError: No module named 'user.jsonengine'
Feb 21 19:45:23 raspberrypi weewx[23186] ERROR weewx.reportengine:         ****  Generator ignored
Feb 21 19:45:23 raspberrypi weewx[23186] INFO weewx.reportengine: Copied 3 files to /var/www/html/weewx/Bootstrap
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG weewx.reportengine: Report 'FTP' not enabled. Skipping.
Feb 21 19:45:23 raspberrypi weewx[23186] DEBUG weewx.reportengine: Report 'RSYNC' not enabled. Skipping.
Feb 21 19:45:29 raspberrypi dhcpcd[425]: wlan0: part of Router Advertisement expired

Greeting, Ton Karsten


Op zaterdag 20 februari 2021 om 23:35:45 UTC+1 schreef michael.k...@gmx.at:

michael.k...@gmx.at

unread,
Feb 21, 2021, 2:58:56 PM2/21/21
to weewx-user

Hi,
did you download a "Release"? This seems to be broken. If you want to download the latest "liveCharts" version, please got to https://github.com/brewster76/fuzzy-archer/tree/liveCharts and choose "Download Zip" after clicking the green "Code" button ind install this version.

If you want wo download the latest non-live chart version, go to https://github.com/brewster76/fuzzy-archer and do the same. 

The latest release doesn't seem to work with python3.

gjr80

unread,
Feb 21, 2021, 4:26:20 PM2/21/21
to weewx-user
The following error strongly suggests a python 2 only extension being run under python 3:

File "/var/tmp/fuzzy-archer-2.26/install.py", line 84
    print ""
           ^
SyntaxError: Missing parentheses in call to 'print'. Did you mean print("")?

You have two options; install/run WeeWX under python 2 and install the extension or approach the author to upgrade the extension to python 3. There is a third option, don’t install the extension, but that does not really help.

Gary

moth...@gmail.com

unread,
Feb 22, 2021, 8:03:17 AM2/22/21
to weewx-user
Then I just wait until the latest version of python 3.7
Ton

Op zondag 21 februari 2021 om 22:26:20 UTC+1 schreef gjr80:

Michael

unread,
Feb 24, 2021, 2:27:25 AM2/24/21
to weewx-user
The installation of fuzzy-archer-liveCharts.zip works without error message.
But when generating the reports, the following appears:

Feb 24 08:22:21 weewx-test weewx[4262] DEBUG weewx.reportengine: Found configuration file /home/weewx/skins/Images/skin.conf for report 'SmallImages'
Feb 24 08:22:21 weewx-test weewx[4262] ERROR weewx.reportengine: Unable to instantiate generator 'user.translategenerator.ImageGeneratorTranslated'
Feb 24 08:22:21 weewx-test weewx[4262] ERROR weewx.reportengine:         ****  No module named 'user.jsonengine'
Feb 24 08:22:21 weewx-test weewx[4262] ERROR weewx.reportengine:         ****  Traceback (most recent call last):
Feb 24 08:22:21 weewx-test weewx[4262] ERROR weewx.reportengine:         ****    File "/home/weewx/bin/weewx/reportengine.py", line 179, in run
Feb 24 08:22:21 weewx-test weewx[4262] ERROR weewx.reportengine:         ****      obj = weeutil.weeutil.get_object(generator)(
Feb 24 08:22:21 weewx-test weewx[4262] ERROR weewx.reportengine:         ****    File "/home/weewx/bin/weeutil/weeutil.py", line 1093, in get_object
Feb 24 08:22:21 weewx-test weewx[4262] ERROR weewx.reportengine:         ****      mod = __import__(module)
Feb 24 08:22:21 weewx-test weewx[4262] ERROR weewx.reportengine:         ****    File "/home/weewx/bin/user/translategenerator.py", line 43, in <module>
Feb 24 08:22:21 weewx-test weewx[4262] ERROR weewx.reportengine:         ****      from user.jsonengine import JSONGenerator
Feb 24 08:22:21 weewx-test weewx[4262] ERROR weewx.reportengine:         ****  ModuleNotFoundError: No module named 'user.jsonengine'
Feb 24 08:22:21 weewx-test weewx[4262] ERROR weewx.reportengine:         ****  Generator ignored
Feb 24 08:22:21 weewx-test weewx[4262] DEBUG weewx.reportengine: Running report 'BigImages'
Feb 24 08:22:21 weewx-test weewx[4262] DEBUG weewx.reportengine: Found configuration file /home/weewx/skins/Images/skin.conf for report 'BigImages'
Feb 24 08:22:21 weewx-test weewx[4262] ERROR weewx.reportengine: Unable to instantiate generator 'user.translategenerator.ImageGeneratorTranslated'
Feb 24 08:22:21 weewx-test weewx[4262] ERROR weewx.reportengine:         ****  No module named 'user.jsonengine'
Feb 24 08:22:21 weewx-test weewx[4262] ERROR weewx.reportengine:         ****  Traceback (most recent call last):
Feb 24 08:22:21 weewx-test weewx[4262] ERROR weewx.reportengine:         ****    File "/home/weewx/bin/weewx/reportengine.py", line 179, in run
Feb 24 08:22:21 weewx-test weewx[4262] ERROR weewx.reportengine:         ****      obj = weeutil.weeutil.get_object(generator)(
Feb 24 08:22:21 weewx-test weewx[4262] ERROR weewx.reportengine:         ****    File "/home/weewx/bin/weeutil/weeutil.py", line 1093, in get_object
Feb 24 08:22:21 weewx-test weewx[4262] ERROR weewx.reportengine:         ****      mod = __import__(module)
Feb 24 08:22:21 weewx-test weewx[4262] ERROR weewx.reportengine:         ****    File "/home/weewx/bin/user/translategenerator.py", line 43, in <module>
Feb 24 08:22:21 weewx-test weewx[4262] ERROR weewx.reportengine:         ****      from user.jsonengine import JSONGenerator
Feb 24 08:22:21 weewx-test weewx[4262] ERROR weewx.reportengine:         ****  ModuleNotFoundError: No module named 'user.jsonengine'
Feb 24 08:22:21 weewx-test weewx[4262] ERROR weewx.reportengine:         ****  Generator ignored
Feb 24 08:22:21 weewx-test weewx[4262] DEBUG weewx.reportengine: Running report 'HTMLPages'
Feb 24 08:22:21 weewx-test weewx[4262] DEBUG weewx.reportengine: Found configuration file /home/weewx/skins/Bootstrap/skin.conf for report 'HTMLPages'
Feb 24 08:22:21 weewx-test weewx[4262] ERROR weewx.reportengine: Unable to instantiate generator 'user.translategenerator.JSONGeneratorTranslated'
Feb 24 08:22:21 weewx-test weewx[4262] ERROR weewx.reportengine:         ****  No module named 'user.jsonengine'
Feb 24 08:22:21 weewx-test weewx[4262] ERROR weewx.reportengine:         ****  Traceback (most recent call last):
Feb 24 08:22:21 weewx-test weewx[4262] ERROR weewx.reportengine:         ****    File "/home/weewx/bin/weewx/reportengine.py", line 179, in run
Feb 24 08:22:21 weewx-test weewx[4262] ERROR weewx.reportengine:         ****      obj = weeutil.weeutil.get_object(generator)(
Feb 24 08:22:21 weewx-test weewx[4262] ERROR weewx.reportengine:         ****    File "/home/weewx/bin/weeutil/weeutil.py", line 1093, in get_object
Feb 24 08:22:21 weewx-test weewx[4262] ERROR weewx.reportengine:         ****      mod = __import__(module)
Feb 24 08:22:21 weewx-test weewx[4262] ERROR weewx.reportengine:         ****    File "/home/weewx/bin/user/translategenerator.py", line 43, in <module>
Feb 24 08:22:21 weewx-test weewx[4262] ERROR weewx.reportengine:         ****      from user.jsonengine import JSONGenerator
Feb 24 08:22:21 weewx-test weewx[4262] ERROR weewx.reportengine:         ****  ModuleNotFoundError: No module named 'user.jsonengine'
Feb 24 08:22:21 weewx-test weewx[4262] ERROR weewx.reportengine:         ****  Generator ignored
Feb 24 08:22:21 weewx-test weewx[4262] DEBUG weewx.manager: Daily summary version is 3.0
Feb 24 08:22:21 weewx-test weewx[4262] DEBUG user.gaugeengine: GaugeGenerator: outTemp reading = 5.7 degree_C
Feb 24 08:22:21 weewx-test weewx[4262] DEBUG PIL.PngImagePlugin: STREAM b'IHDR' 16 13
Feb 24 08:22:21 weewx-test weewx[4262] DEBUG PIL.PngImagePlugin: STREAM b'IDAT' 41 1216
Feb 24 08:22:21 weewx-test weewx[4262] DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'outTemp'

Is this also due to the lack of Python 3 support for fuzzy-archer-liveCharts.zip?

michael.k...@gmx.at

unread,
Feb 24, 2021, 5:32:10 AM2/24/21
to weewx-user
No, this is an installer issue. I'll check and fix that.

michael.k...@gmx.at

unread,
Feb 24, 2021, 5:39:57 AM2/24/21
to weewx-user
Please try again, you need to download the latest package again.

Michael

unread,
Feb 24, 2021, 6:33:44 AM2/24/21
to weewx-user
thanks, but now I got this Error:

Traceback (most recent call last):
  File "/home/weewx/bin/wee_extension", line 88, in <module>
    main()
  File "/home/weewx/bin/wee_extension", line 80, in main
    ext.install_extension(options.install)
  File "/home/weewx/bin/weecfg/extension.py", line 125, in install_extension
    self.install_from_dir(extension_dir)
  File "/home/weewx/bin/weecfg/extension.py", line 183, in install_from_dir
    shutil.copy(source_path, destination_path)
  File "/usr/lib/python3.7/shutil.py", line 245, in copy
    copyfile(src, dst, follow_symlinks=follow_symlinks)
  File "/usr/lib/python3.7/shutil.py", line 120, in copyfile
    with open(src, 'rb') as fsrc:
FileNotFoundError: [Errno 2] No such file or directory: '/var/tmp/fuzzy-archer-liveCharts/skins/Bootstrap/js/gauges.js.map'

michael.k...@gmx.at

unread,
Feb 24, 2021, 6:54:45 AM2/24/21
to weewx-user
I've just fixed that.
I didn't test the installer yet. Sorry for the mess and thank you for participating :) 
We'll get this working, I hope there aren't too many flaws to go...

Michael

unread,
Feb 24, 2021, 6:59:58 AM2/24/21
to weewx-user
and here is the next one ;)

Traceback (most recent call last):
File "/home/weewx/bin/wee_extension", line 88, in <module>
main()
File "/home/weewx/bin/wee_extension", line 80, in main
ext.install_extension(options.install)
File "/home/weewx/bin/weecfg/extension.py", line 125, in install_extension
self.install_from_dir(extension_dir)
File "/home/weewx/bin/weecfg/extension.py", line 183, in install_from_dir
shutil.copy(source_path, destination_path)
File "/usr/lib/python3.7/shutil.py", line 245, in copy
copyfile(src, dst, follow_symlinks=follow_symlinks)
File "/usr/lib/python3.7/shutil.py", line 120, in copyfile
with open(src, 'rb') as fsrc:
FileNotFoundError: [Errno 2] No such file or directory: '/var/tmp/fuzzy-archer-liveCharts/skins/Bootstrap/js/moments-with-locales.js'


michael.k...@gmx.at

unread,
Feb 24, 2021, 7:05:14 AM2/24/21
to weewx-user
Fixed - next one :D

Michael

unread,
Feb 24, 2021, 7:19:57 AM2/24/21
to weewx-user
Great, now it works :)
Thanks for your fast help and the very nice skin. Now I can take a closer look at everything.

michael.k...@gmx.at

unread,
Feb 24, 2021, 7:24:39 AM2/24/21
to weewx-user
There is still some things to configure to get everything working and there is not too much documentation now. It would be very helpful if you could make notes for everything you had to do - it will help us to start a documentation.
Do you have MQTT already working? It is needed for live data. The skins will work without live data, but that's the main reason we made this new version. Don't hesitate to ask for help.

Michael

unread,
Feb 24, 2021, 11:46:00 AM2/24/21
to weewx-user
A working MQTT environment already exists.
The MQTT configuration was a bit bumpy because I wanted to use the following connection: broker_connection = mqtt://192.168.178.15:1883
Only the following setting brought success: broker_connection = ws://192.168.178.15:9001
Afterwards I adjusted the topic and for [LiveGauges] and [LiveCharts] changed the value for payload_key
And now the live display works :)
I find several lines within one second in the logfile of DEBUG user.gaugeengine very confusing:
DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir' or
DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'outTemp'.

Furthermore, I have the following error message in the log:

Feb 24 17:19:27 weewx-test weewx[8495] ERROR weewx.cheetahgenerator: Generate failed with exception '<class 'NameMapper.NotFound'>'
Feb 24 17:19:27 weewx-test weewx[8495] ERROR weewx.cheetahgenerator: **** Ignoring template /home/weewx/skins/Bootstrap/history.html.tmpl
Feb 24 17:19:27 weewx-test weewx[8495] ERROR weewx.cheetahgenerator: **** Reason: cannot find 'max_wind' while searching for 'BootstrapLabels.history_tables.max_wind'
Feb 24 17:19:27 weewx-test weewx[8495] ERROR weewx.cheetahgenerator: ****  Traceback (most recent call last):
Feb 24 17:19:27 weewx-test weewx[8495] ERROR weewx.cheetahgenerator: ****    File "/home/weewx/bin/weewx/cheetahgenerator.py", line 323, in generate
Feb 24 17:19:27 weewx-test weewx[8495] ERROR weewx.cheetahgenerator: ****      unicode_string = compiled_template.respond()
Feb 24 17:19:27 weewx-test weewx[8495] ERROR weewx.cheetahgenerator: ****    File "_home_weewx_skins_Bootstrap_history_html_tmpl.py", line 198, in respond
Feb 24 17:19:27 weewx-test weewx[8495] ERROR weewx.cheetahgenerator: ****  NameMapper.NotFound: cannot find 'max_wind' while searching for 'BootstrapLabels.history_tables.max_wind'
Feb 24 17:19:27 weewx-test weewx[8495] INFO weewx.cheetahgenerator: Generated 10 files for report HTMLPages in 1.03 seconds
Feb 24 17:19:27 weewx-test weewx[8495] INFO weewx.reportengine: Copied 0 files to /var/www/html/weewx/Bootstrap
Feb 24 17:19:27 weewx-test weewx[8495] DEBUG weewx.reportengine: Report 'FTP' not enabled. Skipping.
Feb 24 17:19:27 weewx-test weewx[8495] DEBUG weewx.reportengine: Report 'RSYNC' not enabled. Skipping.

michael.k...@gmx.at

unread,
Feb 24, 2021, 12:26:30 PM2/24/21
to weewx-user
Hi, the MQTT config for the skin is for the JavaScript MQTT client that is running in the browser window. This client needs a websocket connection, so it will only work with a websocket enabled MQTT server. This MQTT client configuration is totally independent from the one that is publishing your loop data. It may be the same server, but still: totally independent. But be aware that your config will only work within your private LAN. I suggest to get a free flespi account, depending on the traffic on your site, a free account should be sufficient for private use. Flespi lets you configure access tokens for your needs, like a "subscribe-only" token for the browser MQTT client.

This one:

DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'windDir'

Simply means the is nor reading for windDir, this usually the case when winds are calm.

But this one:

DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge 'outTemp'  

is a little bit confusing, because normally there should be an "outTemp" reading. So either there is really no reading because you Device didn't send such a value, or your outTemp is mapped to another database column.

The last one:
The key for 

[Bootstraplabels]
    [[history_tables]]
        max_wind = 

is missing. Indeed there is no such key in skin.conf. Simply add it in skin.conf, or in the configured[language].conf in skins/languages. I didn't recognize this so far, because I use skins/languages/german.conf and there is a key for "max_wind". 

you can set your language in skin.conf:

[Language]

    #
    # Set a language below and labels will be overridden with any that are specified in
    # skins/languages/[language].conf
    #
    # Choices are: catala, dutch, espanol, finnish, francais, italian, german, korean, norwegian

    language = german

Michael

unread,
Feb 24, 2021, 1:38:35 PM2/24/21
to weewx-user
Hi Michael,

thank you for the MQTT explanation. I saw when editing the skin.conf that ws and wss are preconfigured. But I didn't think anything of it and was under the misapprehension that mqtt would also work...
Since the weather page will only run locally for me, I'll stick with my config for now. But it's good to know what I can do if I want to go out into the big wide world.

Now to the topic: DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge
windDir' is understandable, there has been no wind here for a few hours, so that also fits. For 'windDir' there are really many lines.
But for 'outTemp', 'barometer', 'outHumidity', 'dewpoint'... there are also these messages. Since the live values are displayed, the mapping seems to be correct.  
They don't really bother me, but I wanted to mention it anyway. I am attaching the zipped syslog.

Last point:

Reason: cannot find 'max_wind' while searching for 'BootstrapLabels.history_tables.max_wind'

I haven't actually changed the language to German yet. That would have been one of my next steps. But the value is not available in skins/languages/german.conf. So I added it and now I get the following error:hank you for the MQTT explanation. I saw when editing the skin.conf that ws and wss are preconfigured. But I didn't think anything of it and was under the mistaken impression that mqtt would also work...

Since the weather page will only run locally for me, I'll stick with my config for now. But it's good to know what I can do if I want to go out into the big wide world.

Now to the topic: DEBUG user.gaugeengine: GaugeGenerator: Cannot decode reading of 'None' for gauge
windDir' is understandable, there has been no wind here for a few hours, so that also fits. For 'windDir' there are really many lines.
But for 'outTemp', 'barometer', 'outHumidity', 'dewpoint'... there are also these messages. They don't really bother me, but I wanted to mention it anyway. I am attaching the zipped syslog.

Last point:

Reason: cannot find 'max_wind' while searching for 'BootstrapLabels.history_tables.max_wind'

I haven't actually changed the language to German yet. That would have been one of my next steps. But the value is not available in skins/languages/german.conf. So I added it and now I get the following error:

Feb 24 19:07:24 weewx-test weewx[9347] DEBUG weewx.manager: Daily summary version is 3.0
Feb 24 19:07:24 weewx-test weewx[9347] INFO user.historygenerator: historygenerator.py: Generated 6 tables in 0.57 seconds
Feb 24 19:07:25 weewx-test weewx[9347] ERROR weewx.cheetahgenerator: Generate failed with exception '<class 'NameMapper.NotFound'>'
Feb 24 19:07:25 weewx-test weewx[9347] ERROR weewx.cheetahgenerator: **** Ignoring template /home/weewx/skins/Bootstrap/history.html.tmpl
Feb 24 19:07:25 weewx-test weewx[9347] ERROR weewx.cheetahgenerator: **** Reason: cannot find 'max_wind_table'
Feb 24 19:07:25 weewx-test weewx[9347] ERROR weewx.cheetahgenerator: ****  Traceback (most recent call last):
Feb 24 19:07:25 weewx-test weewx[9347] ERROR weewx.cheetahgenerator: ****    File "/home/weewx/bin/weewx/cheetahgenerator.py", line 323, in generate
Feb 24 19:07:25 weewx-test weewx[9347] ERROR weewx.cheetahgenerator: ****      unicode_string = compiled_template.respond()
Feb 24 19:07:25 weewx-test weewx[9347] ERROR weewx.cheetahgenerator: ****    File "_home_weewx_skins_Bootstrap_history_html_tmpl.py", line 202, in respond
Feb 24 19:07:25 weewx-test weewx[9347] ERROR weewx.cheetahgenerator: ****  NameMapper.NotFound: cannot find 'max_wind_table'
Feb 24 19:07:25 weewx-test weewx[9347] INFO weewx.cheetahgenerator: Generated 10 files for report HTMLPages in 1.22 seconds
Feb 24 19:07:25 weewx-test weewx[9347] INFO weewx.reportengine: Copied 13 files to /var/www/html/weewx/Bootstrap
Feb 24 19:07:25 weewx-test weewx[9347] DEBUG weewx.reportengine: Report 'FTP' not enabled. Skipping.


syslog.zip

michael.k...@gmx.at

unread,
Feb 24, 2021, 1:57:43 PM2/24/21
to weewx-user
Ok, what's happening here: in the templates there are references to history table that weren't part of the skins default configuration

You need either to delete the section in the template:

         <h3>$BootstrapLabels.history_tables.max_wind</h3>
$max_wind_table

or, and thats my sugesstion, add the configs in skin.conf, here is mine including my color scheme:
[HistoryReport]

    #
    # Settings for the HTML month/year colour coded summary table generator
    #

    # minvalues, maxvalues and colours and fontColours should contain the same number of elements.
    #
    # For example,  the [min_temp] example below, if the minimum temperature measured in
    # a month is between -50 and -10 (degC) then the cell will be shaded in html colour code #0029E5.
    #
    # colours = background colour
    # fontColours = foreground colour [optional, defaults to black if omitted]

    # Default is temperature scale
    minvalues = -50, -30, -28, -26, -24, -22, -20, -18, -16, -14, -12, -10, -8, -6, -4, -2, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 45
    maxvalues = -30, -28, -26, -24, -22, -20, -18, -16, -14, -12, -10, -8, -6, -4, -2, 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 45, 60
    colours = "#404240", "#646664", "#8C8A8C", "#B4B2B4", "#CCCECC", "#E4E6E4", "#743274", "#AC32AC", "#CC32CC", "#FC32FC", "#FC9AFC", "#143dde", "#3466FC", "#349AFC", "#34CEFC", "#34FEFC", "#047604", "#049A04", "#04BA04", "#04DE04", "#04FE04", "#FCFE34", "#FCEE34", "#FCDE34", "#FCCE34", "#FCBA34", "#FCAA04", "#FC9A04", "#FC7604", "#FC0204", "#EC0204", "#CC0204", "#BC0204", "#AC0204", "#9C0204", "#8C0204", "#740204", "#5C0204"
    fontColours = "#bbbbbb", "#bbbbbb", "#333333", "#333333", "#333333", "#333333", "#bbbbbb", "#bbbbbb", "#333333", "#333333", "#333333", "#bbbbbb", "#bbbbbb", "#333333", "#333333", "#333333", "#333333", "#333333", "#333333", "#333333", "#333333", "#333333", "#333333", "#333333", "#333333", "#333333", "#333333", "#333333", "#333333", "#333333", "#333333", "#333333", "#333333", "#333333", "#bbbbbb", "#bbbbbb", "#bbbbbb", "#bbbbbb"
    monthnames = "Jan", "Feb", "Mar", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"

    # Restrict the size of the table by ignoring everything before startdate
    # Specify in unix epoch time. e.g. 1325376000 is 1-Jan-2012
    #startdate = 1325376000
    # The Raspberry Pi typically takes 15+ seconds to calculate all the summaries with a few years of weather date.
    # refresh_interval is how often in minutes the tables are calculated.
    refresh_interval = 60

    [[min_temp]]
        obs_type = outTemp                 # obs_type can be any weewx reading
        aggregate_type = min               # Any of these: 'sum', 'count', 'avg', 'max', 'min'
        summary_column = true
        summary_heading = "Jahr"

    #
    # Can also use these aggregate_types:  'max_ge', 'max_le', 'min_le', 'sum_ge' to count days
    # where an observation is ge: greater of equalto, or le: lessthan or equal to a threshold value
    # To specify this threshold, use: aggregate_threshold = [value], [units]
    #
    # e.g Specify temperature threshold of 20C:  aggregate_threshold = 20, degree_C
    #

    [[max_temp]]
        obs_type = outTemp
        aggregate_type = max
        summary_column = true
        summary_heading = "Jahr"
        
    [[avg_temp]]
        obs_type = outTemp
        aggregate_type = avg
        summary_column = true
        summary_heading = "Jahr"
        
    [[rain]]
        obs_type = rain
        aggregate_type = sum
        summary_column = true
        summary_heading = "Jahr"
        
        #minvalues = 0, 25, 50, 75, 100, 150   # Override default temperature colour scheme with rain specific scale
        #maxvalues = 25, 50, 75, 100, 150, 1000
        #colours = "#E0F8E0", "#A9F5A9", "#58FA58", "#2EFE2E", "#01DF01", "#01DF01"
        
        minvalues = 0, 25, 50, 75, 100, 150, 200, 250, 300, 350, 390, 1000, 1100, 1200, 1300, 1400, 1500, 1600, 1700, 1800, 1900   # Override default temperature colour scheme with rain specific scale
        maxvalues = 25, 50, 75, 100, 150, 200, 250, 300, 350, 390, 1000, 1100, 1200, 1300, 1400, 1500, 1600, 1700, 1800, 1900, 5000
        colours = "#e6e5fc", "#cccafc", "#acaafc", "#8486fc", "#6c6efc", "#5c5afc", "#fc02fc", "#d402d4", "#9c029c", "#6d016d", "#ffffff", "#e6e5fc", "#cccafc", "#acaafc", "#8486fc", "#6c6efc", "#5c5afc", "#fc02fc", "#d402d4", "#9c029c", "#6d016d"
        fontColours = "#333333", "#333333", "#333333", "#333333", "#333333", "#333333", "#333333", "#333333", "#bbbbbb", "#bbbbbb", "#333333", "#333333", "#333333", "#333333", "#333333", "#333333", "#333333", "#333333", "#333333", "#bbbbbb", "#bbbbbb"
    
    [[rain_days]]
        obs_type = rain
        units = Days                        # Override default table units label
        aggregate_type = sum_ge
        aggregate_threshold = 1, mm
        summary_column = true
        summary_heading = "Jahr"
        
        minvalues = 0, 5, 10, 15, 20, 25, 31, 100, 120, 140, 160, 180, 200   # Override default temperature colour scheme with rain specific scale
        maxvalues = 5, 10, 15, 20, 25, 31, 100, 120, 140, 160, 180, 200, 365
        colours = "#e6e5fc", "#cccafc", "#acaafc", "#8486fc", "#6c6efc", "#5c5afc", "#ffffff", "#e6e5fc", "#cccafc", "#acaafc", "#8486fc", "#6c6efc", "#5c5afc"
        fontColours = "#333333", "#333333", "#333333", "#333333", "#333333", "#bbbbbb", "#333333", "#333333", "#333333", "#333333", "#333333", "#333333"
        
    [[max_wind]]
        obs_type = windGust
        aggregate_type = max
        summary_column = true
        summary_heading = "Jahr"
        
        minvalues = 0, 1, 5, 11, 19, 29, 39, 50, 61, 74, 88, 102, 118
        maxvalues = 1, 5, 11, 19, 29, 39, 49, 61, 74, 88, 102, 118, 200
        colours = "#ffffff", "#72d475", "#10cd24", "#00b900", "#f1eea5", "#f6ef27", "#fed6d3", "#ffb6b3", "#ff9e9a", "#ff8281", "#ff6160", "#ff453c", "#ff200e"
        fontColours = "#333333", "#333333", "#333333", "#333333", "#333333", "#333333", "#333333", "#333333", "#333333", "#333333", "#333333", "#333333", "#333333"

    [[desert_days]]
        obs_type = outTemp
        units = Days                        # Override default table units label
        aggregate_type = max_ge
        aggregate_threshold = 35, degree_C
        summary_column = true
        summary_heading = "Jahr"

        minvalues = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
        maxvalues = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 365
        colours = "#fceded", "#fcdbdb", "#fcc0c0", "#fcaaaa", "#fc9090", "#fc7a7a", "#fc6060", "#fc4c4c", "#fc3030", "#fc1b1b", "#fc1b1b", "#fc0000" 
        fontColours = "#333333", "#333333", "#333333", "#333333", "#333333", "#333333", "#bbbbbb", "#bbbbbb", "#bbbbbb", "#bbbbbb", "#bbbbbb", "#bbbbbb" 
    
  [[hot_days]]
        obs_type = outTemp
        units = Days                        # Override default table units label
        aggregate_type = max_ge
        aggregate_threshold = 30, degree_C
        summary_column = true
        summary_heading = "Jahr"

        minvalues = 0, 1, 2, 3, 5, 7, 9, 11, 13, 15, 18, 22
        maxvalues = 1, 2, 3, 5, 7, 9, 11, 13, 15, 18, 22, 365
        colours = "#fceded", "#fcdbdb", "#fcc0c0", "#fcaaaa", "#fc9090", "#fc7a7a", "#fc6060", "#fc4c4c", "#fc3030", "#fc1b1b", "#fc1b1b", "#fc0000" 
        fontColours = "#333333", "#333333", "#333333", "#333333", "#333333", "#333333", "#bbbbbb", "#bbbbbb", "#bbbbbb", "#bbbbbb", "#bbbbbb", "#bbbbbb" 

    [[summer_days]]
        obs_type = outTemp
        units = Days                        # Override default table units label
        aggregate_type = max_ge
        aggregate_threshold = 25, degree_C
        summary_column = true
        summary_heading = "Jahr"

        minvalues = 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22
        maxvalues = 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 365
        colours = "#fceded", "#fcdbdb", "#fcc0c0", "#fcaaaa", "#fc9090", "#fc7a7a", "#fc6060", "#fc4c4c", "#fc3030", "#fc1b1b", "#fc1b1b", "#fc0000" 
        fontColours = "#333333", "#333333", "#333333", "#333333", "#333333", "#333333", "#bbbbbb", "#bbbbbb", "#bbbbbb", "#bbbbbb", "#bbbbbb", "#bbbbbb" 

    [[vegetation_days]]
        obs_type = outTemp
        units = Days                        # Override default table units label
        aggregate_type = avg
        aggregate_threshold = 5, degree_C
        summary_column = true
        summary_heading = "Jahr"

        minvalues = 0, 180
        maxvalues = 180, 365
        colours = "#fcfcfc", "#fcfcfc" 
        fontColours = "#333333", "#333333" 

    [[frost_days]]
        obs_type = outTemp
        units = Days                        # Override default table units label
        aggregate_type = min_le
        aggregate_threshold = 0, degree_C
        summary_column = true
        summary_heading = "Jahr"

        minvalues = 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30
        maxvalues = 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 365
        colours = "#EDEDFC", "#E0E0FC", "#D0D0FC", "#C0C0FC", "#B0B0FC", "#A0A0FC", "#9090FC", "#8080FC", "#7070FC", "#6060FC", "#5050FC", "#4040FC", "#6020FC", "#9015FC", "#AF10FC", "#CC10FC"
        fontColours = "#333333", "#333333", "#333333", "#333333", "#333333", "#333333", "#333333", "#333333", "#bbbbbb", "#bbbbbb", "#bbbbbb", "#bbbbbbb", "#bbbbbb", "#333333", "#333333", "#333333"
  
    [[ice_days]]
        obs_type = outTemp
        units = Days                        # Override default table units label
        aggregate_type = max_le
        aggregate_threshold = 0, degree_C
        summary_column = true
        summary_heading = "Jahr"

        minvalues = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 18
        maxvalues = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 18, 365
        colours = "#EDEDFC", "#E0E0FC", "#D0D0FC", "#C0C0FC", "#B0B0FC", "#A0A0FC", "#9090FC", "#8080FC", "#7070FC", "#6060FC", "#5050FC", "#4040FC", "#6020FC", "#9015FC", "#AF10FC", "#CC10FC"
        fontColours = "#333333", "#333333", "#333333", "#333333", "#333333", "#333333", "#333333", "#333333", "#bbbbbb", "#bbbbbb", "#bbbbbb", "#bbbbbbb", "#bbbbbb", "#333333", "#333333", "#333333"
  
     
    [[NOAA]]
        #
        # Creates a table of links to NOAA reports with the tag $NOAA_table
        # Comment out [[NOAATable]] if you do not need this.
        #

        # Where to find the NOAA files and how they are named
        # Uses Python datetime convention (docs.python.org/2/library/datetime.html):
        # %Y = YYYY, %y = YY, %m = MM, etc.
        #
        year_filename = NOAA/NOAA-%Y.txt
        month_filename = NOAA/NOAA-%Y-%m.txt

Additionally, here are the keys for german.conf that are needed for these configs:
[BootstrapLabels]
    [[history_tables]]
        min_temp = Tiefsttemperatur
        max_temp = Höchsttemperatur
        max_wind = Windspitzen
        avg_temp = Durchschnittstemperatur
        rain     = Niederschlag
        rain_days  = Anzahl Tage mit Niederschlag > 1mm
        desert_days = Anzahl Wüstentage (Maximaltemperatur ≥ 35 °C)
        hot_days = Anzahl heißer Tage (Maximaltempertatur ≥ 30 °C)
        summer_days = Anzahl Sommertage (Maximaltempertatur ≥ 25 °C)
        heating_days = Heiztage (Durchschnittstemperatur ≥ 15 °C)
        vegetation_days = Vegetationstage (Durchschnittstemperatur ≥ 5 °C)
        frost_days = Anzahl Frosttage (Minimaltemperatur ≤ 0 °C)
        ice_days = Anzahl Eistage (Maximaltemperatur ≤ 0 °C)

The problem is, everything is not really release ready and I never made an "vanilla" installation. And since my installation has already been running for some years, I don't really remember what came with the original skin as default and what is customized. All the other guys that have installed the "liveCharts" branch so far have very simililar customizations, so a fresh install like yours reveals many issues I didn't check so far.

Michael

unread,
Feb 25, 2021, 6:49:21 AM2/25/21
to weewx-user
Thanks, now it works nice :)

michael.k...@gmx.at

unread,
Feb 26, 2021, 12:06:19 AM2/26/21
to weewx-user

I've removed some of the custom stuff in the latest version, hoping a "vanilla" installation now works. Thanks again for your inputs. I hope I can test the installer soon and to get red of most of the remaining flaws.

Auchtermuchty Weather

unread,
Feb 26, 2021, 7:17:28 AM2/26/21
to weewx-user
I see the colour on first cell only problem is fixed, I like the new images. I'll give it a go.

BTW I had problems installing an earlier version as:
  1. import Image cause an error, and the way to resolve it (apt-get) in the FAQ didn't work on a brand new Raspbian installation.  I suspect systems that have been upgraded already had the necessary library.  This URL seems to cover the necessary gound:  Why can't Python import Image from PIL? - Stack Overflow
  2. Again probably because I started with a new Raspbian image, I didn't have the necessary font loaded.  I put my solution to this in 'issues'.
I've got a spare SD card, I think I might start over to install this as I've messed around somewhat.  I copied the database over from my live system to get realistic data rather than turn on the simulator.


Auchtermuchty Weather

unread,
Feb 27, 2021, 8:08:53 AM2/27/21
to weewx-user
I found the answer when I looked at the code for WeeWx v4.4.0.  Old code simply has:

import Image

This needs amending to:

try:
    from PIL import Image, ImageDraw
except ImportError:
    import Image, ImageDraw

I had old code on a newly build SD card.


Michael

unread,
Mar 4, 2021, 2:25:37 AM3/4/21
to weewx-user
I have installed the version from 24.02.21 on my "regular" weewx system.
After starting weewx there are the following errors:
After copying the file livegauges.html.tmpl to /home/weewx/skins/Bootstrap everything works fine.
The line 'skins/Bootstrap/livegauges.html.tmpl' is probably still missing in the installer.


Mar  4 08:07:15 deb-weewx weewx[3074] INFO weewx.manager: Added record 2021-03-04 08:07:00 CET (1614841620) to database 'weewx'
Mar  4 08:07:15 deb-weewx weewx[3074] INFO weewx.manager: Added record 2021-03-04 08:07:00 CET (1614841620) to daily summary in 'weewx'
Mar  4 08:07:16 deb-weewx weewx[3074] INFO weewx.cheetahgenerator: Generated 8 files for report SeasonsReport in 1.10 seconds
Mar  4 08:07:23 deb-weewx weewx[3074] INFO weewx.imagegenerator: Generated 70 images for report SeasonsReport in 6.69 seconds
Mar  4 08:07:23 deb-weewx weewx[3074] INFO weewx.reportengine: Copied 5 files to /var/www/html/weewx
Mar  4 08:07:23 deb-weewx weewx[3074] INFO weewx.imagegenerator: Generated 6 images for report SmallImages in 0.24 seconds
Mar  4 08:07:24 deb-weewx weewx[3074] INFO weewx.imagegenerator: Generated 6 images for report BigImages in 0.52 seconds
Mar  4 08:07:25 deb-weewx weewx[3074] INFO user.jsonengine: JSONGenerator: Generated 8 data items for HTMLPages in 0.92 seconds
Mar  4 08:07:26 deb-weewx weewx[3074] INFO user.gaugeengine: GaugeGenerator: Generated 6 images for HTMLPages in 0.68 seconds
Mar  4 08:07:26 deb-weewx weewx[3074] INFO user.historygenerator: historygenerator.py: Generated 7 tables in 0.62 seconds
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: Generate failed with exception '<class 'FileNotFoundError'>'
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: **** Ignoring template /home/weewx/skins/Bootstrap/history.html.tmpl
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: **** Reason: [Errno 2] Datei oder Verzeichnis nicht gefunden: '/home/weewx/skins/Bootstrap/livegauges.html.tmpl'
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****  Traceback (most recent call last):
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****    File "/home/weewx/bin/weewx/cheetahgenerator.py", line 323, in generate
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****      unicode_string = compiled_template.respond()
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****    File "_home_weewx_skins_Bootstrap_history_html_tmpl.py", line 149, in respond
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****    File "/usr/lib/python3/dist-packages/Cheetah/Template.py", line 1685, in _handleCheetahInclude
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****      file=file)
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****    File "/usr/lib/python3/dist-packages/Cheetah/Template.py", line 738, in compile
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****      fileHash += str(os.path.getmtime(file))
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****    File "/usr/lib/python3.7/genericpath.py", line 55, in getmtime
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****      return os.stat(filename).st_mtime
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****  FileNotFoundError: [Errno 2] Datei oder Verzeichnis nicht gefunden: '/home/weewx/skins/Bootstrap/livegauges.html.tmpl'
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: Generate failed with exception '<class 'FileNotFoundError'>'
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: **** Ignoring template /home/weewx/skins/Bootstrap/about.html.tmpl
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: **** Reason: [Errno 2] Datei oder Verzeichnis nicht gefunden: '/home/weewx/skins/Bootstrap/livegauges.html.tmpl'
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****  Traceback (most recent call last):
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****    File "/home/weewx/bin/weewx/cheetahgenerator.py", line 323, in generate
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****      unicode_string = compiled_template.respond()
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****    File "_home_weewx_skins_Bootstrap_about_html_tmpl.py", line 149, in respond
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****    File "/usr/lib/python3/dist-packages/Cheetah/Template.py", line 1685, in _handleCheetahInclude
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****      file=file)
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****    File "/usr/lib/python3/dist-packages/Cheetah/Template.py", line 738, in compile
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****      fileHash += str(os.path.getmtime(file))
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****    File "/usr/lib/python3.7/genericpath.py", line 55, in getmtime
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****      return os.stat(filename).st_mtime
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****  FileNotFoundError: [Errno 2] Datei oder Verzeichnis nicht gefunden: '/home/weewx/skins/Bootstrap/livegauges.html.tmpl'
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: Generate failed with exception '<class 'FileNotFoundError'>'
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: **** Ignoring template /home/weewx/skins/Bootstrap/news.html.tmpl
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: **** Reason: [Errno 2] Datei oder Verzeichnis nicht gefunden: '/home/weewx/skins/Bootstrap/livegauges.html.tmpl'
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****  Traceback (most recent call last):
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****    File "/home/weewx/bin/weewx/cheetahgenerator.py", line 323, in generate
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****      unicode_string = compiled_template.respond()
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****    File "_home_weewx_skins_Bootstrap_news_html_tmpl.py", line 149, in respond
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****    File "/usr/lib/python3/dist-packages/Cheetah/Template.py", line 1685, in _handleCheetahInclude
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****      file=file)
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****    File "/usr/lib/python3/dist-packages/Cheetah/Template.py", line 738, in compile
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****      fileHash += str(os.path.getmtime(file))
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****    File "/usr/lib/python3.7/genericpath.py", line 55, in getmtime
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****      return os.stat(filename).st_mtime
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****  FileNotFoundError: [Errno 2] Datei oder Verzeichnis nicht gefunden: '/home/weewx/skins/Bootstrap/livegauges.html.tmpl'
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: Generate failed with exception '<class 'FileNotFoundError'>'
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: **** Ignoring template /home/weewx/skins/Bootstrap/stats.html.tmpl
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: **** Reason: [Errno 2] Datei oder Verzeichnis nicht gefunden: '/home/weewx/skins/Bootstrap/livegauges.html.tmpl'
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****  Traceback (most recent call last):
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****    File "/home/weewx/bin/weewx/cheetahgenerator.py", line 323, in generate
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****      unicode_string = compiled_template.respond()
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****    File "_home_weewx_skins_Bootstrap_stats_html_tmpl.py", line 149, in respond
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****    File "/usr/lib/python3/dist-packages/Cheetah/Template.py", line 1685, in _handleCheetahInclude
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****      file=file)
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****    File "/usr/lib/python3/dist-packages/Cheetah/Template.py", line 738, in compile
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****      fileHash += str(os.path.getmtime(file))
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****    File "/usr/lib/python3.7/genericpath.py", line 55, in getmtime
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****      return os.stat(filename).st_mtime
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****  FileNotFoundError: [Errno 2] Datei oder Verzeichnis nicht gefunden: '/home/weewx/skins/Bootstrap/livegauges.html.tmpl'
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: Generate failed with exception '<class 'FileNotFoundError'>'
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: **** Ignoring template /home/weewx/skins/Bootstrap/day.html.tmpl
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: **** Reason: [Errno 2] Datei oder Verzeichnis nicht gefunden: '/home/weewx/skins/Bootstrap/livegauges.html.tmpl'
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****  Traceback (most recent call last):
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****    File "/home/weewx/bin/weewx/cheetahgenerator.py", line 323, in generate
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****      unicode_string = compiled_template.respond()
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****    File "_home_weewx_skins_Bootstrap_day_html_tmpl.py", line 149, in respond
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****    File "/usr/lib/python3/dist-packages/Cheetah/Template.py", line 1685, in _handleCheetahInclude
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****      file=file)
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****    File "/usr/lib/python3/dist-packages/Cheetah/Template.py", line 738, in compile
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****      fileHash += str(os.path.getmtime(file))
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****    File "/usr/lib/python3.7/genericpath.py", line 55, in getmtime
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****      return os.stat(filename).st_mtime
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****  FileNotFoundError: [Errno 2] Datei oder Verzeichnis nicht gefunden: '/home/weewx/skins/Bootstrap/livegauges.html.tmpl'
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: Generate failed with exception '<class 'FileNotFoundError'>'
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: **** Ignoring template /home/weewx/skins/Bootstrap/week.html.tmpl
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: **** Reason: [Errno 2] Datei oder Verzeichnis nicht gefunden: '/home/weewx/skins/Bootstrap/livegauges.html.tmpl'
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****  Traceback (most recent call last):
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****    File "/home/weewx/bin/weewx/cheetahgenerator.py", line 323, in generate
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****      unicode_string = compiled_template.respond()
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****    File "_home_weewx_skins_Bootstrap_week_html_tmpl.py", line 149, in respond
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****    File "/usr/lib/python3/dist-packages/Cheetah/Template.py", line 1685, in _handleCheetahInclude
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****      file=file)
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****    File "/usr/lib/python3/dist-packages/Cheetah/Template.py", line 738, in compile
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****      fileHash += str(os.path.getmtime(file))
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****    File "/usr/lib/python3.7/genericpath.py", line 55, in getmtime
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****      return os.stat(filename).st_mtime
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****  FileNotFoundError: [Errno 2] Datei oder Verzeichnis nicht gefunden: '/home/weewx/skins/Bootstrap/livegauges.html.tmpl'
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: Generate failed with exception '<class 'FileNotFoundError'>'
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: **** Ignoring template /home/weewx/skins/Bootstrap/month.html.tmpl
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: **** Reason: [Errno 2] Datei oder Verzeichnis nicht gefunden: '/home/weewx/skins/Bootstrap/livegauges.html.tmpl'
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****  Traceback (most recent call last):
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****    File "/home/weewx/bin/weewx/cheetahgenerator.py", line 323, in generate
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****      unicode_string = compiled_template.respond()
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****    File "_home_weewx_skins_Bootstrap_month_html_tmpl.py", line 149, in respond
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****    File "/usr/lib/python3/dist-packages/Cheetah/Template.py", line 1685, in _handleCheetahInclude
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****      file=file)
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****    File "/usr/lib/python3/dist-packages/Cheetah/Template.py", line 738, in compile
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****      fileHash += str(os.path.getmtime(file))
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****    File "/usr/lib/python3.7/genericpath.py", line 55, in getmtime
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****      return os.stat(filename).st_mtime
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****  FileNotFoundError: [Errno 2] Datei oder Verzeichnis nicht gefunden: '/home/weewx/skins/Bootstrap/livegauges.html.tmpl'
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: Generate failed with exception '<class 'FileNotFoundError'>'
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: **** Ignoring template /home/weewx/skins/Bootstrap/year.html.tmpl
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: **** Reason: [Errno 2] Datei oder Verzeichnis nicht gefunden: '/home/weewx/skins/Bootstrap/livegauges.html.tmpl'
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****  Traceback (most recent call last):
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****    File "/home/weewx/bin/weewx/cheetahgenerator.py", line 323, in generate
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****      unicode_string = compiled_template.respond()
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****    File "_home_weewx_skins_Bootstrap_year_html_tmpl.py", line 149, in respond
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****    File "/usr/lib/python3/dist-packages/Cheetah/Template.py", line 1685, in _handleCheetahInclude
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****      file=file)
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****    File "/usr/lib/python3/dist-packages/Cheetah/Template.py", line 738, in compile
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****      fileHash += str(os.path.getmtime(file))
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****    File "/usr/lib/python3.7/genericpath.py", line 55, in getmtime
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****      return os.stat(filename).st_mtime
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****  FileNotFoundError: [Errno 2] Datei oder Verzeichnis nicht gefunden: '/home/weewx/skins/Bootstrap/livegauges.html.tmpl'
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: Generate failed with exception '<class 'FileNotFoundError'>'
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: **** Ignoring template /home/weewx/skins/Bootstrap/index.html.tmpl
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: **** Reason: [Errno 2] Datei oder Verzeichnis nicht gefunden: '/home/weewx/skins/Bootstrap/livegauges.html.tmpl'
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****  Traceback (most recent call last):
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****    File "/home/weewx/bin/weewx/cheetahgenerator.py", line 323, in generate
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****      unicode_string = compiled_template.respond()
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****    File "_home_weewx_skins_Bootstrap_index_html_tmpl.py", line 149, in respond
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****    File "/usr/lib/python3/dist-packages/Cheetah/Template.py", line 1685, in _handleCheetahInclude
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****      file=file)
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****    File "/usr/lib/python3/dist-packages/Cheetah/Template.py", line 738, in compile
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****      fileHash += str(os.path.getmtime(file))
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****    File "/usr/lib/python3.7/genericpath.py", line 55, in getmtime
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****      return os.stat(filename).st_mtime
Mar  4 08:07:27 deb-weewx weewx[3074] ERROR weewx.cheetahgenerator: ****  FileNotFoundError: [Errno 2] Datei oder Verzeichnis nicht gefunden: '/home/weewx/skins/Bootstrap/livegauges.html.tmpl'
Mar  4 08:07:27 deb-weewx weewx[3074] INFO weewx.cheetahgenerator: Generated 2 files for report HTMLPages in 1.17 seconds
Mar  4 08:07:27 deb-weewx weewx[3074] INFO weewx.reportengine: Copied 13 files to /var/www/html/weewx/Bootstrap

Michael

unread,
Mar 4, 2021, 3:20:25 AM3/4/21
to weewx-user
Is there a (hopefully simple) way to display the values of the gauge in tabular form (e.g. as they are displayed in the Seasons skin)?
For this display I have added the lines to the file livegauges.html.tmpl

                  <tr>
                    <td>$Labels.Generic.outTemp</td>
                    <td>23 °C / 57%</td>
                  </tr>

Example:
Screenshot.png

michael.k...@gmx.at

unread,
Mar 4, 2021, 4:59:08 AM3/4/21
to weewx-user
There is no out-of-the-box template for displaying these values. The way you did this, is one of several possible ways to go. Adapting the templates to your own, customized needs, is always possible.

For the missing template in the installer: thank you, I fixed it.

Auchtermuchty Weather

unread,
Mar 5, 2021, 6:39:24 AM3/5/21
to weewx-user
I reported an issue with the Days of rain table which turned out to be caused by the maximum value for colour coding being 50, and there almost always being more than 50 days of rain per year where I live.  I've put my fixed code in the 'issues':

Auchtermuchty Weather

unread,
Mar 5, 2021, 6:46:34 AM3/5/21
to weewx-user
And of course my initial fix isn't quite right...
Message has been deleted

michael.k...@gmx.at

unread,
Mar 5, 2021, 6:52:30 AM3/5/21
to weewx-user
I'll take a look at it. I can reproduce the double-double-quot issue. For the color and maximum days: that's related to your (or the default) configuration.

michael.k...@gmx.at

unread,
Mar 5, 2021, 7:00:18 AM3/5/21
to weewx-user
I think the problem is with the comparisons:

if (value >= (float(c[0])*mult)) and (value <= (float(c[1])*mult)): 

this should probably be:
if (value >= (float(c[0])*mult)) and (value < (float(c[1])*mult)):  
 
With the >= and <= certain values match two colors

Auchtermuchty Weather

unread,
Mar 5, 2021, 8:24:50 AM3/5/21
to weewx-user
Mult fixed my problem, though I hadn't implemented it correctly.  However I agree with your change to the test.
Reply all
Reply to author
Forward
0 new messages