Instead of

outTemp < 10.0 or windGust > 100

try

(outTemp is not None and outTemp < 10.0) or( windGust is not None and
windGust > 100)

-tk

On Fri, Jul 17, 2020 at 5:59 AM Mike Thompson <
[email protected]> wrote:

> Hi,
>
> To trap bad data I have a derivative of alarm.py that has been sucessully
> running for years on Python 2.7 and weewx 3.x.  I upgraded to weewx 4 and
> Python 3 a month or so ago and it has been running quite happily until a
> few days ago.
> The bad data parameters have been triggered and badData.py has been
> called. The line that causes the issue is;
>  if eval(self.expression, None, record):
> and the error is;
>  TypeError: '<' not supported between instances of 'NoneType' and 'float'
>
> *FYI I'm a Python novice and copy from working code then tweek to what I
> need and iterate to a result!*
>
> I looked at Alarm.py in the examples directory and Customisation guide and
> the offending line is the same as in my badData.py. So I'm assuming that
> syntax is OK for Python3
>
> The error message is objecting to comparing a float to a None. I'm not
> sure why this is an issue now when it's run for several years.
>
> My bad data test is for a temp under 10 or wind gust over 100
> In weewx.conf:
> badData_test = outTemp < 10.0 or windGust > 100
> as it complaining about the < then it's the outTemp variable that's coming
> through as non numeric.
>
> Lokking in the archive table around the time of the crash I can see a null
> record for outTemp and windGust
> sqlite> select datetime, outtemp, windgust from archive where datetime >
> 1594530300 and datetime < 1594531800;
> 1594530600|43.34|0.0
> 1594530900||
> 1594531319|43.52|0.0
> 1594531619|43.52|0.0
> I have had null values whilst running python2
>
> I'm not sure where to go from here, help!
>
>
> *Configuration:*
> Maplin/Fine Offset weather station been running since 2013
> Raspberry PI 1B running Buster
> Python 3.7.3
>
>
> *1 . badData.py - attached*
>
> *2. extracts from Weewx.conf:*
>
>
> ##############################################################################
>
> #   This section configures the internal weewx engine.
>
> [Engine]
>
>     [[Services]]
>         # This section specifies the services that should be run. They are
>         # grouped by type, and the order of services within each group
>         # determines the order in which the services will be run.
>         prep_services = weewx.engine.StdTimeSynch,
>         data_services = ,
>         process_services = weewx.engine.StdConvert,
> weewx.engine.StdCalibrate, weewx.engine.StdQC,
> weewx.wxservices.StdWXCalculate
>         archive_services = weewx.engine.StdArchive,
> user.forecast.ZambrettiForecast, user.forecast.WUForecast,
> user.forecast.NWSFor$
>         restful_services = weewx.restx.StdWunderground,
> weewx.restx.StdWOW, weewx.restx.StdPWSweather, weewx.restx.StdCWOP, weewx.r$
>         report_services = weewx.engine.StdPrint, weewx.engine.StdReport,
> user.alarm.MyAlarm, *user.badData.MyBadData*
>
> [Alarm]
>     expression = " inHumidity > 90.0"
>     time_wait = 86400
>     smtp_host = xxxx
>     smtp_user = xxxx
>     smtp_password = xxxx
>     mailto = xxxx
>     from = xxxx
>     subject = Humidity over 90!
>    * badData_test = outTemp < 10.0 or windGust > 100*
>     badData_subject = Weather Station spike detected
>
>
>
> *3. extrract from syslog at time of the crash*
>
> Jul 12 06:10:29 weepi weewx[513] INFO weewx.restx: WOW: Published record
> 2020-07-12 06:10:00 BST (1594530600)
> Jul 12 06:10:29 weepi weewx[513] INFO weewx.restx: Wunderground-PWS:
> Published record 2020-07-12 06:10:00 BST (1594530600)
> Jul 12 06:10:45 weepi weewx[513] INFO weewx.cheetahgenerator: Generated 8
> files for report SeasonsReport in 14.87 seconds
> Jul 12 06:10:52 weepi weewx[513] INFO weewx.imagegenerator: Generated 15
> images for report SeasonsReport in 7.48 seconds
> Jul 12 06:10:52 weepi weewx[513] INFO weewx.reportengine: Copied 0 files
> to /home/weewx/public_html
> Jul 12 06:10:54 weepi weewx[513] INFO weewx.cheetahgenerator: Generated 6
> files for report SmartphoneReport in 0.84 seconds
> Jul 12 06:10:56 weepi weewx[513] INFO weewx.imagegenerator: Generated 6
> images for report SmartphoneReport in 2.36 seconds
> Jul 12 06:10:56 weepi weewx[513] INFO weewx.reportengine: Copied 0 files
> to /home/weewx/public_html/smartphone
> Jul 12 06:10:57 weepi weewx[513] INFO weewx.cheetahgenerator: Generated 1
> files for report MobileReport in 0.38 seconds
> Jul 12 06:10:59 weepi weewx[513] INFO weewx.imagegenerator: Generated 4
> images for report MobileReport in 1.66 seconds
> Jul 12 06:10:59 weepi weewx[513] INFO weewx.reportengine: Copied 0 files
> to /home/weewx/public_html/mobile
> Jul 12 06:11:03 weepi weewx[513] INFO weewx.cheetahgenerator: Generated 3
> files for report exfoliation in 3.55 seconds
> Jul 12 06:11:10 weepi weewx[513] INFO weewx.imagegenerator: Generated 15
> images for report exfoliation in 6.91 seconds
> Jul 12 06:11:10 weepi weewx[513] INFO weewx.reportengine: Copied 0 files
> to /home/weewx/public_html/exfoliation
> Jul 12 06:15:31 weepi weewx[513] INFO weewx.manager: Added record
> 2020-07-12 06:15:00 BST (1594530900) to database 'weewx.sdb'
> Jul 12 06:15:31 weepi weewx[513] INFO weewx.manager: Added record
> 2020-07-12 06:15:00 BST (1594530900) to daily summary in 'weewx.sdb'
> Jul 12 06:15:31 weepi /weewxd: forecast: MainThread: Zambretti: starting
> thread
> Jul 12 06:15:31 weepi /weewxd: forecast: MainThread: UKMO: starting thread
> Jul 12 06:15:31 weepi weewx[513] INFO weewx.engine: Main loop exiting.
> Shutting engine down.
> Jul 12 06:15:31 weepi weewx[513] INFO weewx.engine: Shutting down
> StdReport thread
> Jul 12 06:15:31 weepi weewx[513] INFO weewx.restx: WOW: Published record
> 2020-07-12 06:15:00 BST (1594530900)
> Jul 12 06:15:31 weepi weewx[513] INFO weewx.restx: Wunderground-PWS:
> Published record 2020-07-12 06:15:00 BST (1594530900)
> Jul 12 06:15:31 weepi weewx[513] CRITICAL __main__: Caught unrecoverable
> exception:
> Jul 12 06:15:31 weepi weewx[513] CRITICAL __main__:     ****  '<' not
> supported between instances of 'NoneType' and 'float'
> Jul 12 06:15:31 weepi weewx[513] CRITICAL __main__:     ****  Traceback
> (most recent call last):
> Jul 12 06:15:31 weepi weewx[513] CRITICAL __main__:     ****    File
> "/home/weewx/bin/weewx/engine.py", line 195, in run
> Jul 12 06:15:31 weepi weewx[513] CRITICAL __main__:     ****
> self.dispatchEvent(weewx.Event(weewx.CHECK_LOOP, packet=packet))
> Jul 12 06:15:31 weepi weewx[513] CRITICAL __main__:     ****    File
> "/home/weewx/bin/weewx/engine.py", line 224, in dispatchEvent
> Jul 12 06:15:31 weepi weewx[513] CRITICAL __main__:     ****
> callback(event)
> Jul 12 06:15:31 weepi weewx[513] CRITICAL __main__:     ****    File
> "/home/weewx/bin/weewx/engine.py", line 578, in check_loop
> Jul 12 06:15:31 weepi weewx[513] CRITICAL __main__:     ****      raise
> BreakLoop
> Jul 12 06:15:31 weepi weewx[513] CRITICAL __main__:     ****
> weewx.engine.BreakLoop
> Jul 12 06:15:31 weepi weewx[513] CRITICAL __main__:     ****
> Jul 12 06:15:31 weepi weewx[513] CRITICAL __main__:     ****  During
> handling of the above exception, another exception occurred:
> Jul 12 06:15:31 weepi weewx[513] CRITICAL __main__:     ****
> Jul 12 06:15:32 weepi weewx[513] CRITICAL __main__:     ****  Traceback
> (most recent call last):
> Jul 12 06:15:32 weepi weewx[513] CRITICAL __main__:     ****    File
> "/home/weewx/bin/weewxd", line 154, in main
> Jul 12 06:15:32 weepi weewx[513] CRITICAL __main__:     ****
> engine.run()
> Jul 12 06:15:32 weepi weewx[513] CRITICAL __main__:     ****    File
> "/home/weewx/bin/weewx/engine.py", line 202, in run
> Jul 12 06:15:32 weepi weewx[513] CRITICAL __main__:     ****
> self.dispatchEvent(weewx.Event(weewx.POST_LOOP))
> Jul 12 06:15:32 weepi weewx[513] CRITICAL __main__:     ****    File
> "/home/weewx/bin/weewx/engine.py", line 224, in dispatchEvent
> Jul 12 06:15:32 weepi weewx[513] CRITICAL __main__:     ****
> callback(event)
> Jul 12 06:15:32 weepi weewx[513] CRITICAL __main__:     ****    File
> "/home/weewx/bin/weewx/engine.py", line 588, in post_loop
> Jul 12 06:15:32 weepi weewx[513] CRITICAL __main__:     ****
> self._software_catchup()
> Jul 12 06:15:32 weepi weewx[513] CRITICAL __main__:     ****    File
> "/home/weewx/bin/weewx/engine.py", line 658, in _software_catchup
> Jul 12 06:15:32 weepi weewx[513] CRITICAL __main__:     ****
> origin='software'))
> Jul 12 06:15:32 weepi weewx[513] CRITICAL __main__:     ****    File
> "/home/weewx/bin/weewx/engine.py", line 224, in dispatchEvent
> Jul 12 06:15:32 weepi weewx[513] CRITICAL __main__:     ****
> callback(event)
> Jul 12 06:15:32 weepi weewx[513] CRITICAL __main__:     ****    File
> "/home/weewx/bin/user/badData.py", line 94, in newArchiveRecord
> Jul 12 06:15:32 weepi weewx[513] CRITICAL __main__:     ****      if
> eval(self.expression, None, record):                       # NOTE 2
> Jul 12 06:15:32 weepi weewx[513] CRITICAL __main__:     ****    File
> "<string>", line 1, in <module>
> Jul 12 06:15:32 weepi weewx[513] CRITICAL __main__:     ****  TypeError:
> '<' not supported between instances of 'NoneType' and 'float'
> Jul 12 06:15:32 weepi weewx[513] CRITICAL __main__:     ****  Exiting.
> Jul 12 06:17:01 weepi CRON[32233]: (root) CMD (   cd / && run-parts
> --report /etc/cron.hourly)
> Jul 12 06:17:33 weepi systemd[1]: Starting Daily apt upgrade and clean
> activities...
> Jul 12 06:17:40 weepi systemd[1]: apt-daily-upgrade.service: Succeeded.
>
> Thanks in Advance
>
> --
> 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].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/weewx-user/d77920b8-55ec-487b-9d21-579edf931e74o%40googlegroups.com
> <https://groups.google.com/d/msgid/weewx-user/d77920b8-55ec-487b-9d21-579edf931e74o%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
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].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/weewx-user/CAPq0zECC0Y6VbjybUFeSL36vNMJWAA8gkpz7f8hwLzWZYBGG1w%40mail.gmail.com.

Reply via email to