Releasing V3.7.0

518 views
Skip to first unread message

Tom Keffer

unread,
Mar 11, 2017, 7:04:25 PM3/11/17
to weewx-user
Hot off the FTP upload! Version 3.7 is ready. Lots of new features and lots of little bug fixes!

Get it in the usual place.

Weewx has grown explosively over the last few years. We now average well over 3,000 downloads a month and dominate our niche: Unix weather software. With its open source license, support for a wide variety of weather hardware, and its ability to run on inexpensive platforms such as the Raspberry Pi, weewx is the most common choice for hobbyists world wide.

Many thanks to our growing and enthusiastic user base! Hope you enjoy this new release.

-Tom & Matthew & Gary


Change log

The tag $current now uses the record included in the event NEW_ARCHIVE_RECORD,
rather than retrieve the last record from the database. This means you can
use the tag $current for observation types that are in the record, but not
necessarily in the database. Fixes issue #13.

Most aggregation periods now allow you to go farther in the past. For
example, the tag $week($weeks_ago=1) would give you last week. You
can also now specify the start and end of an aggregation period, such
as $week.start and $week.end.

Can now do SummaryByDay (as well as SummaryByMonth and SummaryByYear).
NB: This can generate *lots* of files --- one for every day in your database!
Leaving this undocumented for now. Fixes issue #185.

When doing hardware record generation, the engine now augments the record with
any additional observation types it can extract out of the accumulators.
Fixes issue #15.

It's now possible to iterate over every record within a timespan.
Fixes issue #182.

Use schema_name = hardware_name pattern in sensor map for drivers that support
extensible sensor suites, including the drivers for cc3000, te923, wmr300,
wmr100, wmr200, wmr9x8

Simplified sensor mapping implementation for wmr100 and wmr200 drivers.  For
recent weewx releases, these are the default mappings for wmr200:
  3.6.0: in:0, out:1, e2:2, e3:3, ..., e8:8   hard-coded
  3.6.1: in:0, out:1, e1:2, e2:3, ..., e7:8   hard-coded
  3.7.0: in:0, out:1, e1:2, e2:3, ..., e7:8   sensor_map
and these are default mappings for wmr100:
  3.6.2: in:0, out:1, e1:2, e2:3, ..., e7:8   hard-coded
  3.7.0: in:0, out:1, e1:2, e2:3, ..., e7:8   sensor_map

Enabled battery status for every remote T/H and T sensor in wmr100 driver.

Enabled heatindex for each remote T/H sensor in wmr200 driver.

Fixed inverted battery status indicator in wmr200 driver.

Fixed 'Calculatios' typo in wmr100, wmr200, wmr9x8, and wmr300 drivers.

Fixed usb initialization issues in the wmr300 driver.

Added warning in wmr300 driver when rain counter reaches maximum value.

Decode heatindex and windchill from wmr300 sensor outputs.

Report the firmware version when initializing the cc3000 driver.

Fixed bug in vantage driver that would prevent console wake up during
retries when fetching EEPROM vales. Thanks to user Dan Begallie!

The vantage driver no longer emits values for non-existent sensors. 
As a result, LOOP and archive packets are now much smaller. If this works
out, other drivers will follow suit. Partial fix of issue #175.

The vantage driver now emits the barometer trend in LOOP packets as 
field 'trendIcon'.

The engine now logs locale. Additional information if a TERM signal is 
received.

Removed the site-specific "Pond" extensions from the Standard skin.

The Standard skin now includes plots of outside humidity. Fixes 
issue #181.

Fixed reference to index.html.tmpl in the xstats example.

Changed algorithm for calculating ET to something more appropriate for
hourly values (former algorithm assumed daily values). Fixes issue #160.

Fixed bug in Celsius to Fahrenheit conversion that affected pressure
conversions in uwxutils.py, none of which were actually used.

Fixed bug that was introduced in v3.6.0, which prevented wee_reports from
working for anything other than the current time.

Documented the experimental anti-alias feature, which has been in weewx
since v3.1.0. Fixes issue #6.

Fixed problem where multiple subsections under [SummaryBy...] stanzas could
cause multiple copies of their target date to be included in the Cheetah
variable $SummaryByYear and $SummaryByMonth. Fixes issue #187.

Moved examples out of bin directory.  Eliminated experimental directory.
Reinforce the use of user directory, eliminate use of examples directory.
Renamed xsearch.py to stats.py.

OS uptime now works for freeBSD. Thanks to user Bill Richter!
PR #188.

Broke out developer's notes into a separate document.

Added @media CSS for docs to improve printed/PDF formatting.  Thanks to user
Tiouck!

Added a 0.01 second delay after each read_byte in ws23xx driver to reduce
chance of data spikes caused by RS232 line contention.  Thanks lionel.sylvie!

The observation windGustDir has been removed from wmr100, wmr200, te923, and
fousb drivers.  These drivers were simply assigning windGustDir to windDir,
since none of the hardware reports an actual windGustDir.

Calculation of aggregates over a period of one day or longer can now
respect any change in archive interval. To take advantage of this
feature, you will have to apply an update to your daily
summaries. This can be done using the tool wee_database, option
--update. Refer to the ‘Changes to daily summaries’ section in the
Upgrade Guide to determine whether you should update or not. Fixes issue #61.

Max value of windSpeed for the day is now the max archive value of windSpeed.
Formerly, it was the max LOOP value. If you wish to patch your older
daily summaries to interpret max windSpeed this way, use the tool wee_database
with option --update. Fixes issue #195.

The types of accumulators, and the strategies to put and extract records 
out of them, can now be specified by config stanzas. This will be of
interest to extension writers. See issue #115.

Fixed battery status label in acurite driver: changed from txTempBatteryStatus
to outTempBatteryStatus.  Thanks to user manos!

Made the lowBattery example more robust - it now checks for any known low
battery status, not just txBatteryStatus.  Thanks to user manos!

Added info-level log message to calculate_rain so that any rain counter reset
will be logged.

Added better logging for cc3000 when the cc3000 loses contact with sensors
for extended periods of time.

How long to wait before retrying after a bad uploader login is now settable
with option retry_login. Fixes issue #212. 

The test suites now use dedicated users 'weewx1' and 'weewx2'. A shell script
has been included to setup these users.

A more formal exception hierarchy has been adopted for the internal
database library weedb. See weedb/NOTES.md.

The weedb Connection and Cursor objects can now be used in a "with" clause.

Slightly more robust mechanism for decoding last time a file was FTP'd.

pon...@gmail.com

unread,
Mar 11, 2017, 7:59:07 PM3/11/17
to weewx-user
Thank you! You guys rock. 

Darryn Capes-Davis

unread,
Mar 11, 2017, 9:37:01 PM3/11/17
to weewx-user
Great work to you, Matt and Gary & other contributors. Trying it out now.

Kenneth Baker

unread,
Mar 12, 2017, 12:37:47 PM3/12/17
to weewx...@googlegroups.com

Hi all,

I set post_interval in my configuration file for the WOW plugin. This worked prior
to v3.7.0. In 3.7.0 I get the following error:
Mar 11 18:25:03 host weewx[12696]: engine: Caught unrecoverable exception in engine:
Mar 11 18:25:03 host weewx[12696]: **** type object got multiple values for
keyword argument 'post_interval'
Mar 11 18:25:03 host weewx[12696]: **** Traceback (most recent call last):
Mar 11 18:25:03 host weewx[12696]: **** File
"/usr/share/weewx/weewx/engine.py", line 874, in main
Mar 11 18:25:03 host weewx[12696]: **** engine = engine_class(config_dict)
Mar 11 18:25:03 host weewx[12696]: **** File
"/usr/share/weewx/weewx/engine.py", line 77, in __init__
Mar 11 18:25:03 host weewx[12696]: **** self.loadServices(config_dict)
Mar 11 18:25:03 host weewx[12696]: **** File
"/usr/share/weewx/weewx/engine.py", line 141, in loadServices
Mar 11 18:25:03 host weewx[12696]: ****
self.service_obj.append(weeutil.weeutil._get_object(svc)(self, config_dict))
Mar 11 18:25:03 host weewx[12696]: **** File
"/usr/share/weewx/weewx/restx.py", line 756, in __init__
Mar 11 18:25:03 host weewx[12696]: **** **_ambient_dict)
Mar 11 18:25:03 host weewx[12696]: **** TypeError: type object got multiple
values for keyword argument 'post_interval'
Mar 11 18:25:03 host weewx[12696]: **** Exiting.

(The line numbers may be off given that I have some local changes elsewhere in the
file.)

However I think the problem is in this diff:
git show 7dec60374
commit 7dec6037447fa10d68d7e8910015d733ba109b51
Author: Alf Høgemark <a...@i100.no>
Date: Thu Dec 15 19:01:13 2016 +0100

Let weewx.restx.StdWOW use post_interval=900

The WOW API documentation says
"
Frequency of submitting observations

It is recommended that the interval between automatic observations from your AWS
is at least 15 minutes.
"
Respect this by using a post_interval of 900.
Without the post_interval, we get a HTTP status 429: Too frequent observations.
And the log gets the following entries
Dec 15 18:54:25 weather1 weewx[2400]: restx: WOW: Failed upload attempt 1: HTTP
Error 429: Too frequent observations.
Dec 15 18:54:30 weather1 weewx[2400]: restx: WOW: Failed upload attempt 2: HTTP
Error 429: Too frequent observations.
Dec 15 18:54:35 weather1 weewx[2400]: restx: WOW: Failed upload attempt 3: HTTP
Error 429: Too frequent observations.

diff --git a/bin/weewx/restx.py b/bin/weewx/restx.py
index 098d72e1..881e2e1f 100644
--- a/bin/weewx/restx.py
+++ b/bin/weewx/restx.py
@@ -683,7 +683,8 @@ class StdWOW(StdRESTful):
_ambient_dict.setdefault('server_url', StdWOW.archive_url)
self.archive_queue = Queue.Queue()
self.archive_thread = WOWThread(self.archive_queue, _manager_dict,
- protocol_name="WOW",
+ protocol_name="WOW",
+ post_interval=900,
**_ambient_dict)
self.archive_thread.start()
self.bind(weewx.NEW_ARCHIVE_RECORD, self.new_archive_record)

I think this should be altered as follows to have the desired change (to set the
default to 900, but allow the user to override it in the configuration file:

diff --git a/bin/weewx/restx.py b/bin/weewx/restx.py
index 00d6c63a..3de5e72f 100644
--- a/bin/weewx/restx.py
+++ b/bin/weewx/restx.py
@@ -749,10 +749,10 @@ class StdWOW(StdRESTful):
config_dict, 'wx_binding')

_ambient_dict.setdefault('server_url', StdWOW.archive_url)
+ _ambient_dict.setdefault('post_interval', 900)
self.archive_queue = Queue.Queue()
self.archive_thread = WOWThread(self.archive_queue, _manager_dict,
protocol_name="WOW",
- post_interval=900,
**_ambient_dict)
self.archive_thread.start()
self.bind(weewx.NEW_ARCHIVE_RECORD, self.new_archive_record)
-- Ken


mwall

unread,
Mar 12, 2017, 12:53:46 PM3/12/17
to weewx-user
On Sunday, March 12, 2017 at 12:37:47 PM UTC-4, Kenneth Baker wrote:
I set post_interval in my configuration file for the WOW plugin.  This worked prior
to v3.7.0.  In 3.7.0 I get the following error:
Mar 11 18:25:03 host weewx[12696]:     ****  TypeError: type object got multiple
values for keyword argument 'post_interval'
Mar 11 18:25:03 host weewx[12696]:     ****  Exiting.

fixed at commit ee1b35a
 
Message has been deleted

Tarmo

unread,
Mar 12, 2017, 2:03:02 PM3/12/17
to weewx-user
sudo apt-get update; sudo apt-get upgrade



On Sunday, March 12, 2017 at 7:51:37 PM UTC+2, Ruben Navarro Huedo wrote:
I use debian package.

what is correct upgrading method?

Thank's a lot.

mwall

unread,
Mar 12, 2017, 2:15:35 PM3/12/17
to weewx-user
On Sunday, March 12, 2017 at 2:03:02 PM UTC-4, Tarmo wrote:
sudo apt-get update; sudo apt-get upgrade


tarmo,

thank you for that reminder!  i had forgotten to update the weewx apt repository.

weewx 3.7.0 is now available via apt-get

m

Phil Green

unread,
Mar 12, 2017, 5:03:11 PM3/12/17
to weewx-user
I have just upgraded to 3.7.0 using the apt-get method for the first time. I just didi a sudo apt-get update and then sudo apt-get upgrade and it automatically updated  Weewx, I thought I would have to do a sudo apt-get install Weewx to do that. But alls fine. Great work Tom.
Thanks
Phil 

m

Thomas Keffer

unread,
Mar 12, 2017, 9:21:37 PM3/12/17
to weewx-user

I have just upgraded to 3.7.0 using the apt-get method for the first time. I just didi a sudo apt-get update and then sudo apt-get upgrade and it automatically updated  Weewx, I thought I would have to do a sudo apt-get install Weewx to do that. But alls fine. Great work Tom.


​Matthew deserves the credit for that. He's our apt-foo master.

-tk​

Robert Mantel

unread,
Mar 13, 2017, 10:19:27 PM3/13/17
to weewx-user
Doesn't seem to be working for me.  sudo apt-get upgrade says I'm on the latest and I have 3.6.2,  Maybe it hasn't propagated to all the mirrors?

mwall

unread,
Mar 13, 2017, 10:40:28 PM3/13/17
to weewx-user
On Monday, March 13, 2017 at 10:19:27 PM UTC-4, Robert Mantel wrote:
Doesn't seem to be working for me.  sudo apt-get upgrade says I'm on the latest and I have 3.6.2,  Maybe it hasn't propagated to all the mirrors?


what's in your /etc/apt/sources.list.d/weewx.list?

cat /etc/apt/sources.list.d/weewx.list

m

Robert Mantel

unread,
Mar 14, 2017, 1:22:33 PM3/14/17
to weewx-user
lol, I don't appear to have a weewx.list in there.  

Robert Mantel

unread,
Mar 14, 2017, 1:26:40 PM3/14/17
to weewx-user
added the key and repository, that fixed it.  so obviously I should keep my old weewx.conf.  Is there anything new I should be concerned about versus my existing 3.6.2 weewx.conf?


On Monday, 13 March 2017 22:40:28 UTC-4, mwall wrote:

Geoff Cusick

unread,
Mar 15, 2017, 12:19:23 PM3/15/17
to weewx-user
I think the problem may persist.  Just updated to 3.7.0.  My configuration file had the following in it:

[[WOW]]
        # This section is for configuring posts to WOW.
       
        # If you wish to do this, set the option 'enable' to true,
        # and specify a station and password.
        enable = true
        station = *****
        password = ****
        # Set post_interval to upload 1 record every 15 min. (WOW recommendation)
        post_interval = 900


Restarting weewx gave the 'multiple values for ... post_interval' error.  Commenting out the post_interval setting lets weewx start up correctly.

I updated from 3.6.2 to 3.7.0 today using the apt-get update; apt-get upgrade method on Rspbian Jessie

Thanks
Geoff

mwall

unread,
Mar 15, 2017, 12:30:12 PM3/15/17
to weewx-user
On Wednesday, March 15, 2017 at 12:19:23 PM UTC-4, Geoff Cusick wrote:
I think the problem may persist.  Just updated to 3.7.0.

geoff,

the fix for post_interval was added after 3.7.0 was released.  it will be included in 3.7.1.

if you want to test it on a 3.7.0 installation, replace your restx.py with this one:

https://raw.githubusercontent.com/weewx/weewx/master/bin/weewx/restx.py

m

Geoff Cusick

unread,
Mar 16, 2017, 9:25:38 AM3/16/17
to weewx-user
Great - thanks for that. The default post_interval is 900, so I'll leave things there. I'll update to 3.7.1 when it's released.

Thanks again
Geoff

Paul Grunwald

unread,
Mar 22, 2017, 1:03:38 PM3/22/17
to weewx-user
Just a quick thanks to Tom and the team for a great piece of software!  

I started on a Pi last month and then moved it to a full Debian server a couple of weeks ago.  I just did the 3.6.7 upgrade to 3.7.0 with "dpkg -i" and it worked seamlessly.

I appreciate your efforts!  Thanks again!


Reply all
Reply to author
Forward
0 new messages