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.
