I suppose if the archived packets are presented out of order there could be 
a negative interval...

I have not seen this but the wmr200 is full of wonderful surprises.

One potential drive-by fix is to drop all packets satisfying this failing 
condition...here is one untested fix:


$ git diff
diff --git a/bin/weewx/drivers/wmr200.py b/bin/weewx/drivers/wmr200.py
index eaab5a14..62b743e0 100644
--- a/bin/weewx/drivers/wmr200.py
+++ b/bin/weewx/drivers/wmr200.py
@@ -1943,7 +1943,13 @@ class WMR200(weewx.drivers.AbstractDevice):
                 timestamp_packet_interval = timestamp_packet_current \
                         - timestamp_packet_previous

-                if pkt.timestamp_record() > (timestamp_packet_previous
+                if timestamp_packet_interval < 0:
+                    loginf(('genStartup() Discarding received archive'
+                        ' record that presented out-of-order'
+                        ' current_threshold:%s previous_timestamp:%s')
+                        % 
(weeutil.weeutil.timestamp_to_string(pkt.timestamp_record())
+                           
 weeutil.weeutil.timestamp_to_string(timestamp_packet_previous)))
+                elif pkt.timestamp_record() > (timestamp_packet_previous
                                              + self._archive_threshold):
                     loginf(('genStartup() Discarding received archive'
                             ' record exceeding archive interval cnt:%d'

On Friday, September 14, 2018 at 6:07:48 AM UTC-7, Thomas Keffer wrote:
>
> Good.
>
> Looking through the WMR200 driver code (I didn't write it), it appears 
> that a positive value for 'interval' is not guaranteed. I'll ask the author 
> to take a look at it.
>
> -tk
>
> On Fri, Sep 14, 2018 at 5:44 AM Rahul Bedi <[email protected] <javascript:>> 
> wrote:
>
>> Yup found a record with -ve interval, changed that to 5 as thats what I 
>> am using. 
>>
>> And problem fixed !!
>>
>> Thanks a lot.
>>
>> Not sure how this bad data entered into the db.
>>
>> Will be great if there is utility that finds such errors in the db and 
>> flags them.
>>
>> - Rahul
>>
>> On Fri, Sep 14, 2018 at 5:48 PM Thomas Keffer <[email protected] 
>> <javascript:>> wrote:
>>
>>> I think the thing to do is to figure out how a negative value got in 
>>> there, fix that, then rebuild the daily summaries.
>>>
>>> One possibility is that a record in your database has a negative value 
>>> for 'interval' --- the time length of an archive record. Let's check that.
>>>
>>> *sqlite3 /var/lib/weewx/weewx.sdb*
>>> sqlite> *SELECT datetime(dateTime, 'unixepoch','localtime'), interval 
>>> FROM archive WHERE interval<0;*
>>>
>>> -tk
>>>
>>> On Fri, Sep 14, 2018 at 5:06 AM Rahul Bedi <[email protected] 
>>> <javascript:>> wrote:
>>>
>>>> Here is what I get:
>>>>
>>>> 2018-08-02 00:00:00|2851473.0|86400
>>>> 2018-08-03 00:00:00|2139447.0|86400
>>>> 2018-08-04 00:00:00|2867211.0|86400
>>>> 2018-08-05 00:00:00|3306195.0|86400
>>>> 2018-08-06 00:00:00|3167394.0|86400
>>>> 2018-08-07 00:00:00|2924283.0|86400
>>>> 2018-08-08 00:00:00|2255208.0|86400
>>>> 2018-08-09 00:00:00|2797065.0|86400
>>>> 2018-08-10 00:00:00|2693187.0|86400
>>>> 2018-08-11 00:00:00|2981601.0|86400
>>>> 2018-08-12 00:00:00|3869136.0|86400
>>>> 2018-08-13 00:00:00|3632787.0|86400
>>>> 2018-08-14 00:00:00|2651829.0|86400
>>>> 2018-08-15 00:00:00|2104410.0|86400
>>>> 2018-08-16 00:00:00|3682674.0|86400
>>>> 2018-08-17 00:00:00|3499992.0|86400
>>>> 2018-08-18 00:00:00|3855531.0|86400
>>>> 2018-08-19 00:00:00|3875121.0|86400
>>>> 2018-08-20 00:00:00|3915861.0|86400
>>>> 2018-08-21 00:00:00|3523719.0|86400
>>>> 2018-08-22 00:00:00|1637909.95179334|85620
>>>> 2018-08-23 00:00:00|506702.215048778|25380
>>>> 2018-08-24 00:00:00|523285.18735593|101340
>>>> 2018-08-25 00:00:00|2047231.90482286|92280
>>>> 2018-08-26 00:00:00|2207680.59885907|85800
>>>> 2018-08-27 00:00:00|2112653.43729687|78000
>>>> 2018-08-28 00:00:00|1927695.38113441|85200
>>>> 2018-08-29 00:00:00|1696867.80614767|76740
>>>> 2018-08-30 00:00:00|1892572.6564943|85500
>>>> 2018-08-31 00:00:00|1669207.56530998|86100
>>>> 2018-09-01 00:00:00|1882876.90336366|85080
>>>> 2018-09-02 00:00:00|1552040.97205686|86100
>>>> 2018-09-03 00:00:00|1550916.37957731|86100
>>>> 2018-09-04 00:00:00|1093704.34743737|85740
>>>> 2018-09-05 00:00:00|1688380.4274756|86100
>>>> 2018-09-06 00:00:00|2349485.94738889|86100
>>>> 2018-09-07 00:00:00|2676307.36370007|85560
>>>> 2018-09-08 00:00:00|2198034.86178985|86100
>>>> 2018-09-09 00:00:00|-7107216.29856356|-302280
>>>> 2018-09-10 00:00:00|288713.672694377|85560
>>>> 2018-09-11 00:00:00|351094.880509644|85860
>>>> 2018-09-12 00:00:00|441249.222795585|85500
>>>> 2018-09-13 00:00:00|60033.1634844758|85620
>>>> 2018-09-14 00:00:00|21222.2555021576|62820
>>>>
>>>> I am guessing that the negative values above may be the culprit. How 
>>>> are these populated in the archive_day_wind table or should I just edit 
>>>> these values out ?
>>>>
>>>> - Rahul
>>>>
>>>>
>>>> On Fri, Sep 14, 2018 at 5:19 PM Thomas Keffer <[email protected] 
>>>> <javascript:>> wrote:
>>>>
>>>>> You're on the right track: there must be an bad value in your 
>>>>> database. Did you, by any chance, use a visual sql editor? They often put 
>>>>> null strings in the database.
>>>>>
>>>>> In any case, the field 'wsquaresum' and 'sumtime' are used by rms. 
>>>>> So, try this:
>>>>>
>>>>> *sqlite3 /var/lib/weewx/weewx.sdb*
>>>>> sqlite> *SELECT datetime(dateTime, 'unixepoch','localtime'), 
>>>>> wsquaresum, sumtime FROM archive_day_wind WHERE dateTime > 1533081600;*
>>>>>
>>>>> This will show all values from (roughly) 1-August (about 45 values). 
>>>>> If the bad value is before that, we'll have to use a different strategy, 
>>>>> rather than go looking for a needle in a haystack.
>>>>>
>>>>> -tk
>>>>>
>>>>> On Thu, Sep 13, 2018 at 11:35 PM Rahul Bedi <[email protected] 
>>>>> <javascript:>> wrote:
>>>>>
>>>>>> I found rms used in the statictics.ico and hilo.ico files in the 
>>>>>> Seasons directory. removed those segments. Diff as follows:
>>>>>>
>>>>>> $ diff statistics.14092018.inc statistics.inc
>>>>>>
>>>>>> 134,140d133
>>>>>> <         <tr>
>>>>>> <           <td class="label">$obs.label.wind_rms</td>
>>>>>> <           <td class="units">$unit.label.wind</td>
>>>>>> <           #for $archive in $archive_data
>>>>>> <           <td class="data new_row">$archive.wind.rms.formatted</td>
>>>>>> <           #end for
>>>>>> <         </tr>
>>>>>>
>>>>>> $ diff hilo.inc hilo.14092018.inc
>>>>>>
>>>>>> 132a133,140
>>>>>> >       <tr>
>>>>>> >         <td class="label">$obs.label.wind_rms</td>
>>>>>> >         #for $archive in $archive_data
>>>>>> >         <td class="data new_row hilo_$archive[0]">
>>>>>> >           $archive[1].wind.rms.formatted</td>
>>>>>> >         #end for
>>>>>> >         <td class="units">$unit.label.wind</td>
>>>>>> >       </tr>
>>>>>>
>>>>>> Apart from this any file referring to rms were exactly the same as 
>>>>>> the original install. Attaching skin.conf with this message.
>>>>>>
>>>>>> As expected the problem is gone but rms is not getting reported. 
>>>>>> Which means the issue still stays.
>>>>>>
>>>>>> Could you help me with what fields in the archive are referred to by 
>>>>>> rms ? I can try to manually check for any value discrepancy.
>>>>>>
>>>>>> Thanks.
>>>>>>
>>>>>> - Rahul
>>>>>>
>>>>>>
>>>>>> On Fri, Sep 14, 2018 at 9:14 AM Rahul Bedi <[email protected] 
>>>>>> <javascript:>> wrote:
>>>>>>
>>>>>>> Thanks Gary.  
>>>>>>>
>>>>>>> Charges were done about a month ago but have seen no errors till 
>>>>>>> this episode.  I will do a diff with the original skin files and post 
>>>>>>> it 
>>>>>>> here.  
>>>>>>>
>>>>>>> Thanks. 
>>>>>>>
>>>>>>> - Rahul
>>>>>>>
>>>>>>> On Fri 14 Sep, 2018, 7:35 AM gjr80, <[email protected] 
>>>>>>> <javascript:>> wrote:
>>>>>>>
>>>>>>>> On Friday, 14 September 2018 11:30:42 UTC+10, Rahul Bedi wrote:
>>>>>>>>>
>>>>>>>>> As I have made no code or config changes since the day before, I 
>>>>>>>>> believe it doing this for the right data.
>>>>>>>>>
>>>>>>>>
>>>>>>>> This sounds to me like you have changed some of the seasons skin 
>>>>>>>> files. The error is coming form the use of a .rms tag in one of 
>>>>>>>> the seasons .tmpl or .inc files. The seasons skin only uses the 
>>>>>>>> .rms tag with the WeeWX wind field. As Tom indicated .rms only 
>>>>>>>> works against the wind field, if your changes have used the .rms 
>>>>>>>> tag against another field then this could be the cause. I suggest you 
>>>>>>>> go 
>>>>>>>> through all of your changes to the seasons skin files and see what 
>>>>>>>> fields 
>>>>>>>> are being used with the .rms tag. Until we know for sure, and 
>>>>>>>> given you seem to have made changes to the skin, we will likely be 
>>>>>>>> chasing 
>>>>>>>> our tails.
>>>>>>>>
>>>>>>>> Gary
>>>>>>>>
>>>>>>>> -- 
>>>>>>>> You received this message because you are subscribed to a topic in 
>>>>>>>> the Google Groups "weewx-user" group.
>>>>>>>> To unsubscribe from this topic, visit 
>>>>>>>> https://groups.google.com/d/topic/weewx-user/LWmSpcVfdmo/unsubscribe
>>>>>>>> .
>>>>>>>> To unsubscribe from this group and all its topics, send an email to 
>>>>>>>> [email protected] <javascript:>.
>>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>>
>>>>>>> -- 
>>>>>> 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 [email protected] <javascript:>.
>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>
>>>>> -- 
>>>>> You received this message because you are subscribed to a topic in the 
>>>>> Google Groups "weewx-user" group.
>>>>> To unsubscribe from this topic, visit 
>>>>> https://groups.google.com/d/topic/weewx-user/LWmSpcVfdmo/unsubscribe.
>>>>> To unsubscribe from this group and all its topics, send an email to 
>>>>> [email protected] <javascript:>.
>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>
>>>> -- 
>>>> 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 [email protected] <javascript:>.
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>> -- 
>>> You received this message because you are subscribed to a topic in the 
>>> Google Groups "weewx-user" group.
>>> To unsubscribe from this topic, visit 
>>> https://groups.google.com/d/topic/weewx-user/LWmSpcVfdmo/unsubscribe.
>>> To unsubscribe from this group and all its topics, send an email to 
>>> [email protected] <javascript:>.
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>> -- 
>> 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 [email protected] <javascript:>.
>> For more options, visit https://groups.google.com/d/optout.
>>
>

-- 
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 [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to