weewx 4.1.1, Belchertown skin, and Weatherflow Tempest issues

358 views
Skip to first unread message

Chotechai Piyavongsiri

unread,
Jul 28, 2020, 11:53:05 PM7/28/20
to weewx-user
I've been running weewx 3.xx and the excellent Belchertown skin on my ubuntu 18.04 without any problem. My source sensors is Aercus Weathersleuth equivalent (Misol brand) sending data to Ecowitt GW1000.

I've set up another Ubuntu 20.04 server for some other testing and now I get the Weatherflow Tempest. I installed weewx latest 4.1.1, python3, Belchertown skin, and the latest Weewx UDP driver for Weatherflow. Weewx can generate standard reports without any issues; but the Belchertown skin generates a lot of errors. The weewx config on the Belchertown part is more or less the same (except the website root directory). Data in weewx.sdb seems populated fine.

This is the errors generated:

Jul 29 10:50:10 bthoven-3020M weewx[56935] INFO weewx.restx: MQTT: Published record 2020-07-29 10:50:07 +07 (1595994607)
Jul 29 10:50:16 bthoven-3020M weewx[56935] INFO weewx.restx: MQTT: Published record 2020-07-29 10:50:13 +07 (1595994613)
Jul 29 10:50:19 bthoven-3020M weewx[56935] INFO weewx.restx: MQTT: Published record 2020-07-29 10:50:16 +07 (1595994616)
Jul 29 10:50:19 bthoven-3020M weewx[56935] INFO weewx.manager: Added record 2020-07-29 10:50:00 +07 (1595994600) to database 'weewx.sdb'
Jul 29 10:50:19 bthoven-3020M weewx[56935] INFO weewx.manager: Added record 2020-07-29 10:50:00 +07 (1595994600) to daily summary in 'weewx.sdb'
Jul 29 10:50:19 bthoven-3020M weewx[56935] DEBUG weewx.reportengine: Running reports for latest time in the database.
Jul 29 10:50:19 bthoven-3020M weewx[56935] DEBUG weewx.reportengine: Running report 'SeasonsReport'
Jul 29 10:50:19 bthoven-3020M /weewxd: weatherflowudp: MainThread: Listening for UDP broadcasts to IP address <broadcast> on port 50222, with timeout 90 and share_socket True...
Jul 29 10:50:19 bthoven-3020M weewx[56935] DEBUG weewx.reportengine: Found configuration file /etc/weewx/skins/Seasons/skin.conf for report 'SeasonsReport'
Jul 29 10:50:19 bthoven-3020M weewx[56935] DEBUG weewx.cheetahgenerator: Using search list ['weewx.cheetahgenerator.Almanac', 'weewx.cheetahgenerator.Station', 'weewx.cheetahgenerator.Current', 'weewx.cheetahgenerator.Stats', 'weewx.cheetahgenerator.UnitInfo', 'weewx.cheetahgenerator.Extras']
Jul 29 10:50:19 bthoven-3020M weewx[56935] INFO weewx.restx: MQTT: Published record 2020-07-29 10:50:00 +07 (1595994600)
Jul 29 10:50:19 bthoven-3020M weewx[56935] DEBUG weewx.manager: Daily summary version is 2.0
Jul 29 10:50:19 bthoven-3020M weewx[56935] INFO weewx.cheetahgenerator: Generated 8 files for report SeasonsReport in 0.23 seconds
Jul 29 10:50:19 bthoven-3020M weewx[56935] DEBUG weewx.manager: Daily summary version is 2.0
Jul 29 10:50:19 bthoven-3020M weewx[56935] INFO weewx.imagegenerator: Generated 15 images for report SeasonsReport in 0.17 seconds
Jul 29 10:50:19 bthoven-3020M weewx[56935] INFO weewx.reportengine: Copied 0 files to /var/www/html/weewx
Jul 29 10:50:19 bthoven-3020M weewx[56935] DEBUG weewx.reportengine: Report 'SmartphoneReport' not enabled. Skipping.
Jul 29 10:50:19 bthoven-3020M weewx[56935] DEBUG weewx.reportengine: Report 'MobileReport' not enabled. Skipping.
Jul 29 10:50:19 bthoven-3020M weewx[56935] DEBUG weewx.reportengine: Report 'StandardReport' not enabled. Skipping.
Jul 29 10:50:19 bthoven-3020M weewx[56935] DEBUG weewx.reportengine: Running report 'Belchertown'
Jul 29 10:50:19 bthoven-3020M weewx[56935] DEBUG weewx.reportengine: Found configuration file /etc/weewx/skins/Belchertown/skin.conf for report 'Belchertown'
Jul 29 10:50:19 bthoven-3020M weewx[56935] DEBUG weewx.cheetahgenerator: Using search list ['weewx.cheetahgenerator.Almanac', 'weewx.cheetahgenerator.Station', 'weewx.cheetahgenerator.Current', 'weewx.cheetahgenerator.Stats', 'weewx.cheetahgenerator.UnitInfo', 'weewx.cheetahgenerator.Extras', 'user.belchertown.getData']
Jul 29 10:50:19 bthoven-3020M weewx[56935] DEBUG weewx.manager: Daily summary version is 2.0
Jul 29 10:50:19 bthoven-3020M weewx[56935] ERROR weewx.reportengine: Caught unrecoverable exception in generator 'weewx.cheetahgenerator.CheetahGenerator'
Jul 29 10:50:19 bthoven-3020M weewx[56935] ERROR weewx.reportengine:         ****  Parsing failed with several errors.#012First error at line 71.
Jul 29 10:50:19 bthoven-3020M weewx[56935] ERROR weewx.reportengine:         ****  Traceback (most recent call last):
Jul 29 10:50:19 bthoven-3020M weewx[56935] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/reportengine.py", line 197, in run
Jul 29 10:50:19 bthoven-3020M weewx[56935] ERROR weewx.reportengine:         ****      obj.start()
Jul 29 10:50:19 bthoven-3020M weewx[56935] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/reportengine.py", line 280, in start
Jul 29 10:50:19 bthoven-3020M weewx[56935] ERROR weewx.reportengine:         ****      self.run()
Jul 29 10:50:19 bthoven-3020M weewx[56935] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/cheetahgenerator.py", line 150, in run
Jul 29 10:50:19 bthoven-3020M weewx[56935] ERROR weewx.reportengine:         ****      ngen = self.generate(gen_dict[section_name], self.gen_ts)
Jul 29 10:50:19 bthoven-3020M weewx[56935] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/cheetahgenerator.py", line 220, in generate
Jul 29 10:50:19 bthoven-3020M weewx[56935] ERROR weewx.reportengine:         ****      ngen += self.generate(section[subsection], gen_ts)
Jul 29 10:50:19 bthoven-3020M weewx[56935] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/cheetahgenerator.py", line 220, in generate
Jul 29 10:50:19 bthoven-3020M weewx[56935] ERROR weewx.reportengine:         ****      ngen += self.generate(section[subsection], gen_ts)
Jul 29 10:50:19 bthoven-3020M weewx[56935] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/cheetahgenerator.py", line 308, in generate
Jul 29 10:50:19 bthoven-3020M weewx[56935] ERROR weewx.reportengine:         ****      searchList = self._getSearchList(encoding, timespan,
Jul 29 10:50:19 bthoven-3020M weewx[56935] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/cheetahgenerator.py", line 376, in _getSearchList
Jul 29 10:50:19 bthoven-3020M weewx[56935] ERROR weewx.reportengine:         ****      searchList += obj.get_extension_list(timespan, db_lookup)
Jul 29 10:50:19 bthoven-3020M weewx[56935] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/user/belchertown.py", line 208, in get_extension_list
Jul 29 10:50:19 bthoven-3020M weewx[56935] ERROR weewx.reportengine:         ****      chart_dict = configobj.ConfigObj(chart_config_path, file_error=True)
Jul 29 10:50:19 bthoven-3020M weewx[56935] ERROR weewx.reportengine:         ****    File "/usr/lib/python3/dist-packages/configobj.py", line 1229, in __init__
Jul 29 10:50:19 bthoven-3020M weewx[56935] ERROR weewx.reportengine:         ****      self._load(infile, configspec)
Jul 29 10:50:19 bthoven-3020M weewx[56935] ERROR weewx.reportengine:         ****    File "/usr/lib/python3/dist-packages/configobj.py", line 1318, in _load
Jul 29 10:50:19 bthoven-3020M weewx[56935] ERROR weewx.reportengine:         ****      raise error
Jul 29 10:50:19 bthoven-3020M weewx[56935] ERROR weewx.reportengine:         ****    File "<string>", line None
Jul 29 10:50:19 bthoven-3020M weewx[56935] ERROR weewx.reportengine:         ****  configobj.ConfigObjError: Parsing failed with several errors.
Jul 29 10:50:19 bthoven-3020M weewx[56935] ERROR weewx.reportengine:         ****  First error at line 71.
Jul 29 10:50:19 bthoven-3020M weewx[56935] ERROR weewx.reportengine:         ****  Generator terminated
Jul 29 10:50:19 bthoven-3020M weewx[56935] INFO weewx.reportengine: Copied 2 files to /var/www/html/weewx/belchertown
Jul 29 10:50:19 bthoven-3020M weewx[56935] ERROR weewx.reportengine: Caught unrecoverable exception in generator 'user.belchertown.HighchartsJsonGenerator'
Jul 29 10:50:19 bthoven-3020M weewx[56935] ERROR weewx.reportengine:         ****  Parsing failed with several errors.#012First error at line 71.
Jul 29 10:50:19 bthoven-3020M weewx[56935] ERROR weewx.reportengine:         ****  Traceback (most recent call last):
Jul 29 10:50:19 bthoven-3020M weewx[56935] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/reportengine.py", line 197, in run
Jul 29 10:50:19 bthoven-3020M weewx[56935] ERROR weewx.reportengine:         ****      obj.start()
Jul 29 10:50:19 bthoven-3020M weewx[56935] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/reportengine.py", line 280, in start
Jul 29 10:50:19 bthoven-3020M weewx[56935] ERROR weewx.reportengine:         ****      self.run()
Jul 29 10:50:19 bthoven-3020M weewx[56935] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/user/belchertown.py", line 1050, in run
Jul 29 10:50:19 bthoven-3020M weewx[56935] ERROR weewx.reportengine:         ****      self.chart_dict = configobj.ConfigObj(chart_config_path, file_error=True)
Jul 29 10:50:19 bthoven-3020M weewx[56935] ERROR weewx.reportengine:         ****    File "/usr/lib/python3/dist-packages/configobj.py", line 1229, in __init__
Jul 29 10:50:19 bthoven-3020M weewx[56935] ERROR weewx.reportengine:         ****      self._load(infile, configspec)
Jul 29 10:50:19 bthoven-3020M weewx[56935] ERROR weewx.reportengine:         ****    File "/usr/lib/python3/dist-packages/configobj.py", line 1318, in _load
Jul 29 10:50:19 bthoven-3020M weewx[56935] ERROR weewx.reportengine:         ****      raise error
Jul 29 10:50:19 bthoven-3020M weewx[56935] ERROR weewx.reportengine:         ****    File "<string>", line None
Jul 29 10:50:19 bthoven-3020M weewx[56935] ERROR weewx.reportengine:         ****  configobj.ConfigObjError: Parsing failed with several errors.
Jul 29 10:50:19 bthoven-3020M weewx[56935] ERROR weewx.reportengine:         ****  First error at line 71.
Jul 29 10:50:19 bthoven-3020M weewx[56935] ERROR weewx.reportengine:         ****  Generator terminated
Jul 29 10:50:19 bthoven-3020M weewx[56935] DEBUG weewx.reportengine: Report 'FTP' not enabled. Skipping.
Jul 29 10:50:19 bthoven-3020M weewx[56935] DEBUG weewx.reportengine: Report 'RSYNC' not enabled. Skipping.
Jul 29 10:50:22 bthoven-3020M weewx[56935] INFO weewx.restx: MQTT: Published record 2020-07-29 10:50:19 +07 (1595994619)
Jul 29 10:50:25 bthoven-3020M weewx[56935] INFO weewx.restx: MQTT: Published record 2020-07-29 10:50:22 +07 (1595994622)



gjr80

unread,
Jul 29, 2020, 12:15:41 AM7/29/20
to weewx-user
I would say that line 71 in the Belchertown skin.conf might be a good place to start.

Jul 29 10:50:19 bthoven-3020M weewx[56935] ERROR weewx.reportengine: **** Parsing failed with several errors.#012First error at line 71.

Gary

Chotechai Piyavongsiri

unread,
Aug 1, 2020, 3:52:39 AM8/1/20
to weewx-user
I really can't find what causes the error. To sum up my running platform:
Ubuntu 20.04, python3.8.2, Weewx 4.1.1 (using installation guide for debian), latest Weatherflow UDP driver, latest Weewx mqtt extension, Weatherflow Tempest.

Belows are the configuration parts relating to my the above, in weewx.conf. As mentioned earlier, the standard Season webpage was generated fine; but it dies during working on the Belchertown skin. Anyone who has very similar setup and found no problem, please let me know...thanks.
It generated only these files, see attached photo, in the Belchertown output folder:



    [[MQTT]]
        server_url = mqtt://bthoven:mosquitto1234@localhost:1883/
        #server_url = mqtt://bthoven:mosqui...@192.168.2.14:1883/
        topic = weewx
        unit_system = METRIC
        binding = archive, loop
        #binding = archive
        aggregation = aggregate



    [[Belchertown]]
        skin = Belchertown
        HTML_ROOT = /var/www/html/weewx/belchertown
        [[[Extras]]]
            #belchertown_root_url = https://bthofen.com/weewx
            belchertown_root_url = http://192.168.2.91/weewx/belchertown
            home_page_header = Europa Cafe Weather Conditions
            logo_image = https://bthofen.com/europacafe_logo.png
            site_title = Europa Cafe Observatory
            manifest_name = bthoven weather station
            footer_copyright_text = BelchertownWeather.com
            # station_observations = barometer, dewpoint, outHumidity, inTemp, inHumidity, radiation, UV, cloudbase, rainWithRainRate
            station_observations = barometer, dewpoint, outHumidity, radiation, UV, cloudbase, rainWithRainRate, windBatteryStatus
            forecast_enabled = 1
            darksky_secret_key = f6176977330eacf99c08705ec9c87e0c
            forecast_alert_enabled = 1
            earthquake_enabled = 1
            twitter_enabled = 1
            twitter_owner = chotechai
            facebook_enabled = 1
            mqtt_websockets_enabled = 1
            reload_hook_images = 1
            reload_images_hook_as = 300
            reload_images_hook_ac = 900
            theme = auto
            darksky_units = ca
            webpage_autorefresh = 0
            powered_by: "Observations are powered by a <a href = https://bthofen.com/aqi">Misol WS-1400-IP</a>
            mqtt_websockets_host = 192.168.2.91
            mqtt_websockets_port = 8083
            mqtt_websockets_ssl = 0
            mqtt_websockets_topic = weewx/loop
            disconnect_live_website_visitor = 0
            show_cloudbase = 1
            show_apptemp = 1
            belchertown_debug = 1
            
 [WeatherFlowUDP]
    driver = user.weatherflowudp
    log_raw_packets = False
    udp_address = <broadcast>
    # udp_address = 0.0.0.0
    # udp_address = 255.255.255.255
    udp_port = 50222
    udp_timeout = 90
    share_socket = True
    
    [[sensor_map]]
        outTemp = air_temperature.ST-00002496.obs_st
        outHumidity = relative_humidity.ST-00002496.obs_st
        pressure = station_pressure.ST-00002496.obs_st
        #lightning_strikes =  lightning_strike_count.ST-00002496.obs_st
        #avg_distance =  lightning_strike_avg_distance.ST-00002496.obs_st
        outTempBatteryStatus = battery.ST-00002496.obs_st
        windSpeed = wind_speed.ST-00002496.rapid_wind
        windDir = wind_direction.ST-00002496.rapid_wind
        #luxXXX = illuminance.ST-00002496.obs_st
        UV = uv.ST-00002496.obs_st
        rain = rain_accumulated.ST-00002496.obs_st
        windBatteryStatus = battery.ST-00002496.obs_st
        radiation = solar_radiation.ST-00002496.obs_st
        #lightningXXX = distance.ST-00002496.evt_strike
        #lightningYYY = energy.ST-00002496.evt_strike


belchertown folder.jpg

gjr80

unread,
Aug 1, 2020, 4:24:35 AM8/1/20
to weewx-user
The error in your original post relates to an error parsing a config file. There are only two config files involved; weewx.conf and the Belchertown skin.conf. As per my previous post I suggest you look in the Belchertown skin.conf file.

Gary

vince

unread,
Aug 1, 2020, 11:13:38 AM8/1/20
to weewx-user
On Saturday, August 1, 2020 at 1:24:35 AM UTC-7, gjr80 wrote:
The error in your original post relates to an error parsing a config file. There are only two config files involved; weewx.conf and the Belchertown skin.conf. As per my previous post I suggest you look in the Belchertown skin.conf file.



Look at the line saying:
            powered_by: "Observations are powered by a <a href = https://bthofen.com/aqi">Misol WS-1400-IP</a>

Your quotes are incorrect. 

Chotechai Piyavongsiri

unread,
Aug 1, 2020, 12:17:07 PM8/1/20
to weewx-user
Thanks Vince. I took that line out, it did not help.

vince

unread,
Aug 1, 2020, 2:51:19 PM8/1/20
to weewx-user
On Saturday, August 1, 2020 at 9:17:07 AM UTC-7, Chotechai Piyavongsiri wrote:
Thanks Vince. I took that line out, it did not help.



Well in the absence of any error logs after you made that change, there is little we can do to help.

Belchertown runs fine with just its default settings.  Comment out [[[Extras]]] and all lines in that section.  See if it magically works.

Chotechai Piyavongsiri

unread,
Aug 1, 2020, 10:05:32 PM8/1/20
to weewx-user
It still produces the same errors.

When I look at mqtt data, it gives two different data formats at different frequency. The shorter format is for wind data which refreshes more frequently; while the other format is a more complete data including temp, humidity, uv...which comes every minute. The weewx database contains same consistent data in data fields on all records. I'm not sure the errors are due to the two different formats mqtt spits out?

Chotechai Piyavongsiri

unread,
Aug 2, 2020, 3:30:45 AM8/2/20
to weewx-user
I found that I made some mistakes in the graphs.conf file. If I use its default graphs template. There is no more errors. What I customized to the default graphs config was to add windRose graph. Not sure why it causes errors.

Chotechai Piyavongsiri

unread,
Aug 2, 2020, 4:35:24 AM8/2/20
to weewx-user
Adding windrose is now working. I did something wrong in the graphs.conf. I've started over by adding windRose again to the original graphs template and saved as graphs.conf.

Thank you everyone for taking time to help.

Reply all
Reply to author
Forward
0 new messages