I used the alarm.py version that you sent the link to.  I attached it along 
with the syslog.  I am not using an SSL connection.  Still nothing.  I  did 
notice an error when I quit weewx this time.

On Saturday, January 5, 2019 at 12:20:32 PM UTC-6, [email protected] wrote:
>
> I set up alarm.py per the instructions (I think).  I wanted to test an 
> alarm so I set it for expression= "outTemp > 40".  When I run weewx I get
>
> alarm: Alarm set for expression: 'outTemp > 40.0'
>
> alarm: Alarm expression "outTemp > 40.0" evaluated True at 2019-01-05 
> 11:15:00 CST (1546708500)
>
> This is what I would expect however nothing else happens.  I looked in the 
> syslog file and there is no mention of the mail being sent or an smtp 
> error.   Also there were no other entries stating the expression was true.
>
> I waited one hour and again got this but no other entries in syslog.
>
> Jan  5 12:16:16 raspberrypi weewx[5473]: alarm: Alarm expression "outTemp 
> > 40.0" evaluated True at 2019-01-05 12:16:00 CST (1546712160)
>
>
> I am using a Raspberry Pi.
>
> Thanks,
>
> Tom
>
>
>

-- 
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.
Jan  5 18:19:18 raspberrypi weewx[7759]: engine: Initializing weewx version 
3.8.2
Jan  5 18:19:18 raspberrypi weewx[7759]: engine: Using Python 2.7.13 (default, 
Sep 26 2018, 18:42:22) #012[GCC 6.3.0 20170516]
Jan  5 18:19:18 raspberrypi weewx[7759]: engine: Platform 
Linux-4.14.79-v7+-armv7l-with-debian-9.6
Jan  5 18:19:18 raspberrypi weewx[7759]: engine: Locale is 'en_US.UTF-8'
Jan  5 18:19:18 raspberrypi weewx[7759]: engine: pid file is /var/run/weewx.pid
Jan  5 18:19:18 raspberrypi weewx[7763]: engine: Using configuration file 
/home/weewx/weewx.conf
Jan  5 18:19:18 raspberrypi weewx[7763]: engine: Debug is 1
Jan  5 18:19:18 raspberrypi weewx[7763]: engine: Initializing engine
Jan  5 18:19:18 raspberrypi weewx[7763]: engine: Loading station type Vantage 
(weewx.drivers.vantage)
Jan  5 18:19:18 raspberrypi weewx[7748]: Starting weewx weather system: weewx.
Jan  5 18:19:18 raspberrypi systemd[1]: Started LSB: weewx weather system.
Jan  5 18:19:18 raspberrypi weewx[7763]: vantage: Driver version is 3.0.11
Jan  5 18:19:18 raspberrypi weewx[7763]: vantage: Opened up serial port 
/dev/ttyUSB0; baud 19200; timeout 4.00
Jan  5 18:19:18 raspberrypi weewx[7763]: vantage: Gentle wake up of console 
successful
Jan  5 18:19:18 raspberrypi weewx[7763]: vantage: Hardware type is 16
Jan  5 18:19:18 raspberrypi weewx[7763]: vantage: ISS ID is 1
Jan  5 18:19:18 raspberrypi weewx[7763]: vantage: Hardware name: Vantage Pro2
Jan  5 18:19:18 raspberrypi weewx[7763]: engine: Loading service 
weewx.engine.StdTimeSynch
Jan  5 18:19:18 raspberrypi weewx[7763]: engine: Finished loading service 
weewx.engine.StdTimeSynch
Jan  5 18:19:18 raspberrypi weewx[7763]: engine: Loading service 
weewx.engine.StdConvert
Jan  5 18:19:18 raspberrypi weewx[7763]: engine: StdConvert target unit is 0x1
Jan  5 18:19:18 raspberrypi weewx[7763]: engine: Finished loading service 
weewx.engine.StdConvert
Jan  5 18:19:18 raspberrypi weewx[7763]: engine: Loading service 
weewx.engine.StdCalibrate
Jan  5 18:19:18 raspberrypi weewx[7763]: engine: Finished loading service 
weewx.engine.StdCalibrate
Jan  5 18:19:18 raspberrypi weewx[7763]: engine: Loading service 
weewx.engine.StdQC
Jan  5 18:19:18 raspberrypi weewx[7763]: engine: Finished loading service 
weewx.engine.StdQC
Jan  5 18:19:18 raspberrypi weewx[7763]: engine: Loading service 
weewx.wxservices.StdWXCalculate
Jan  5 18:19:18 raspberrypi weewx[7763]: wxcalculate: The following values will 
be calculated: barometer=prefer_hardware, windchill=prefer_hardware, 
dewpoint=prefer_hardware, appTemp=prefer_hardware, rainRate=prefer_hardware, 
windrun=prefer_hardware, heatindex=prefer_hardware, 
maxSolarRad=prefer_hardware, humidex=prefer_hardware, pressure=prefer_hardware, 
inDewpoint=prefer_hardware, ET=prefer_hardware, altimeter=prefer_hardware, 
cloudbase=prefer_hardware
Jan  5 18:19:18 raspberrypi weewx[7763]: wxcalculate: The following algorithms 
will be used for calculations: altimeter=aaNOAA, maxSolarRad=RS
Jan  5 18:19:18 raspberrypi weewx[7763]: engine: Finished loading service 
weewx.wxservices.StdWXCalculate
Jan  5 18:19:18 raspberrypi weewx[7763]: engine: Loading service 
weewx.engine.StdArchive
Jan  5 18:19:18 raspberrypi weewx[7763]: engine: Archive will use data binding 
wx_binding
Jan  5 18:19:18 raspberrypi weewx[7763]: engine: Record generation will be 
attempted in 'hardware'
Jan  5 18:19:18 raspberrypi weewx[7763]: engine: Using archive interval of 60 
seconds (specified by hardware)
Jan  5 18:19:18 raspberrypi weewx[7763]: engine: Use LOOP data in hi/low 
calculations: 1
Jan  5 18:19:18 raspberrypi weewx[7763]: manager: Daily summary version is 2.0
Jan  5 18:19:18 raspberrypi weewx[7763]: engine: Using binding 'wx_binding' to 
database 'weewx.sdb'
Jan  5 18:19:18 raspberrypi weewx[7763]: manager: Starting backfill of daily 
summaries
Jan  5 18:19:18 raspberrypi weewx[7763]: engine: Finished loading service 
weewx.engine.StdArchive
Jan  5 18:19:18 raspberrypi weewx[7763]: engine: Loading service 
user.forecast.ZambrettiForecast
Jan  5 18:19:18 raspberrypi weewx[7763]: forecast: MainThread: Zambretti: 
forecast version 3.2.19
Jan  5 18:19:18 raspberrypi weewx[7763]: forecast: MainThread: Zambretti: last 
forecast issued 2019-01-05 18:05:00 CST (1546733100), requested 2019-01-05 
18:05:00 CST (1546733100)
Jan  5 18:19:18 raspberrypi weewx[7763]: forecast: MainThread: Zambretti: 
interval=600 max_age=604800 winddir_period=1800 pressure_period=10800 
hemisphere=NORTH lower_pressure=950.0 upper_pressure=1050.0
Jan  5 18:19:18 raspberrypi weewx[7763]: engine: Finished loading service 
user.forecast.ZambrettiForecast
Jan  5 18:19:18 raspberrypi weewx[7763]: engine: Loading service 
user.forecast.NWSForecast
Jan  5 18:19:18 raspberrypi weewx[7763]: forecast: MainThread: NWS: forecast 
version 3.2.19
Jan  5 18:19:18 raspberrypi weewx[7763]: forecast: MainThread: NWS: last 
forecast issued 2019-01-05 13:56:00 CST (1546718160), requested 2019-01-05 
17:07:17 CST (1546729637)
Jan  5 18:19:18 raspberrypi weewx[7763]: forecast: MainThread: NWS: 
interval=10800 max_age=604800 lid=ALZ008 foid=HUN
Jan  5 18:19:18 raspberrypi weewx[7763]: engine: Finished loading service 
user.forecast.NWSForecast
Jan  5 18:19:18 raspberrypi weewx[7763]: engine: Loading service 
user.forecast.WUForecast
Jan  5 18:19:18 raspberrypi weewx[7763]: forecast: MainThread: WU: forecast 
version 3.2.19
Jan  5 18:19:18 raspberrypi weewx[7763]: forecast: MainThread: WU: last 
forecast issued 2019-01-05 17:14:16 CST (1546730056), requested 2019-01-05 
17:14:16 CST (1546730056)
Jan  5 18:19:18 raspberrypi weewx[7763]: forecast: MainThread: WU: 
interval=10800 max_age=604800 api_key=XXXXXXXXXXXX66e7 location=34.244,-86.235 
fc=hourly10day
Jan  5 18:19:18 raspberrypi weewx[7763]: engine: Finished loading service 
user.forecast.WUForecast
Jan  5 18:19:18 raspberrypi weewx[7763]: engine: Loading service 
user.forecast.OWMForecast
Jan  5 18:19:18 raspberrypi weewx[7763]: forecast: MainThread: OWM: forecast 
version 3.2.19
Jan  5 18:19:18 raspberrypi weewx[7763]: forecast: MainThread: OWM: API key 
(api_key) is not specified
Jan  5 18:19:18 raspberrypi weewx[7763]: forecast: MainThread: OWM: forecast 
will not be run
Jan  5 18:19:18 raspberrypi weewx[7763]: engine: Finished loading service 
user.forecast.OWMForecast
Jan  5 18:19:18 raspberrypi weewx[7763]: engine: Loading service 
user.forecast.UKMOForecast
Jan  5 18:19:18 raspberrypi weewx[7763]: forecast: MainThread: UKMO: forecast 
version 3.2.19
Jan  5 18:19:18 raspberrypi weewx[7763]: forecast: MainThread: UKMO: API key 
(api_key) is not specified
Jan  5 18:19:18 raspberrypi weewx[7763]: forecast: MainThread: UKMO: forecast 
will not be run
Jan  5 18:19:18 raspberrypi weewx[7763]: engine: Finished loading service 
user.forecast.UKMOForecast
Jan  5 18:19:18 raspberrypi weewx[7763]: engine: Loading service 
user.forecast.AerisForecast
Jan  5 18:19:18 raspberrypi weewx[7763]: forecast: MainThread: Aeris: forecast 
version 3.2.19
Jan  5 18:19:18 raspberrypi weewx[7763]: forecast: MainThread: Aeris: client 
identifier (client_id) is not specified
Jan  5 18:19:18 raspberrypi weewx[7763]: forecast: MainThread: Aeris: client 
secret (client_secret) is not specified
Jan  5 18:19:18 raspberrypi weewx[7763]: forecast: MainThread: Aeris: forecast 
will not be run
Jan  5 18:19:18 raspberrypi weewx[7763]: engine: Finished loading service 
user.forecast.AerisForecast
Jan  5 18:19:18 raspberrypi weewx[7763]: engine: Loading service 
user.forecast.WWOForecast
Jan  5 18:19:18 raspberrypi weewx[7763]: forecast: MainThread: WWO: forecast 
version 3.2.19
Jan  5 18:19:18 raspberrypi weewx[7763]: forecast: MainThread: WWO: API key 
(api_key) is not specified
Jan  5 18:19:18 raspberrypi weewx[7763]: forecast: MainThread: WWO: forecast 
will not be run
Jan  5 18:19:18 raspberrypi weewx[7763]: engine: Finished loading service 
user.forecast.WWOForecast
Jan  5 18:19:18 raspberrypi weewx[7763]: engine: Loading service 
user.forecast.XTideForecast
Jan  5 18:19:18 raspberrypi weewx[7763]: forecast: MainThread: XTide: forecast 
version 3.2.19
Jan  5 18:19:18 raspberrypi weewx[7763]: forecast: MainThread: XTide: location 
(location) has not been specified
Jan  5 18:19:18 raspberrypi weewx[7763]: forecast: MainThread: XTide: forecast 
will not be run
Jan  5 18:19:18 raspberrypi weewx[7763]: engine: Finished loading service 
user.forecast.XTideForecast
Jan  5 18:19:18 raspberrypi weewx[7763]: engine: Loading service 
weewx.restx.StdStationRegistry
Jan  5 18:19:18 raspberrypi weewx[7763]: restx: StationRegistry: Station will 
be registered.
Jan  5 18:19:18 raspberrypi weewx[7763]: engine: Finished loading service 
weewx.restx.StdStationRegistry
Jan  5 18:19:19 raspberrypi weewx[7763]: engine: Loading service 
weewx.restx.StdWunderground
Jan  5 18:19:19 raspberrypi weewx[7763]: restx: Wunderground-RF: Data for 
station KALALBER13 will be posted
Jan  5 18:19:19 raspberrypi weewx[7763]: engine: Finished loading service 
weewx.restx.StdWunderground
Jan  5 18:19:19 raspberrypi weewx[7763]: engine: Loading service 
weewx.restx.StdPWSweather
Jan  5 18:19:19 raspberrypi weewx[7763]: restx: PWSweather: Posting not enabled.
Jan  5 18:19:19 raspberrypi weewx[7763]: engine: Finished loading service 
weewx.restx.StdPWSweather
Jan  5 18:19:19 raspberrypi weewx[7763]: engine: Loading service 
weewx.restx.StdCWOP
Jan  5 18:19:19 raspberrypi weewx[7763]: restx: CWOP: Data for station KQ5S-13 
will be posted
Jan  5 18:19:19 raspberrypi weewx[7763]: engine: Finished loading service 
weewx.restx.StdCWOP
Jan  5 18:19:19 raspberrypi weewx[7763]: engine: Loading service 
weewx.restx.StdWOW
Jan  5 18:19:19 raspberrypi weewx[7763]: restx: WOW: Posting not enabled.
Jan  5 18:19:19 raspberrypi weewx[7763]: engine: Finished loading service 
weewx.restx.StdWOW
Jan  5 18:19:19 raspberrypi weewx[7763]: engine: Loading service 
weewx.restx.StdAWEKAS
Jan  5 18:19:19 raspberrypi weewx[7763]: restx: AWEKAS: Posting not enabled.
Jan  5 18:19:19 raspberrypi weewx[7763]: engine: Finished loading service 
weewx.restx.StdAWEKAS
Jan  5 18:19:19 raspberrypi weewx[7763]: engine: Loading service 
user.meteotemplate.Meteotemplate
Jan  5 18:19:19 raspberrypi weewx[7763]: restx: Meteotemplate: service version 
is 0.9
Jan  5 18:19:19 raspberrypi weewx[7763]: restx: Meteotemplate: Data will be 
uploaded to http://www.kq5s.com/template/api.php
Jan  5 18:19:19 raspberrypi weewx[7763]: engine: Finished loading service 
user.meteotemplate.Meteotemplate
Jan  5 18:19:19 raspberrypi weewx[7763]: engine: Loading service 
weewx.engine.StdPrint
Jan  5 18:19:19 raspberrypi weewx[7763]: engine: Finished loading service 
weewx.engine.StdPrint
Jan  5 18:19:19 raspberrypi weewx[7763]: engine: Loading service 
weewx.engine.StdReport
Jan  5 18:19:19 raspberrypi weewx[7763]: engine: Finished loading service 
weewx.engine.StdReport
Jan  5 18:19:19 raspberrypi weewx[7763]: engine: Loading service 
user.lowBattery.BatteryAlarm
Jan  5 18:19:19 raspberrypi weewx[7763]: manager: Daily summary version is 2.0
Jan  5 18:19:19 raspberrypi weewx[7763]: manager: Daily summary version is 2.0
Jan  5 18:19:19 raspberrypi weewx[7763]: lowBattery: LowBattery alarm enabled. 
Count threshold is 10
Jan  5 18:19:19 raspberrypi weewx[7763]: engine: Finished loading service 
user.lowBattery.BatteryAlarm
Jan  5 18:19:19 raspberrypi weewx[7763]: engine: Loading service 
user.alarm.MyAlarm
Jan  5 18:19:19 raspberrypi weewx[7763]: alarm: Alarm set for expression: 
'outTemp > 40.0'
Jan  5 18:19:19 raspberrypi weewx[7763]: engine: Finished loading service 
user.alarm.MyAlarm
Jan  5 18:19:19 raspberrypi weewx[7763]: engine: Starting up weewx version 3.8.2
Jan  5 18:19:19 raspberrypi weewx[7763]: manager: Daily summary version is 2.0
Jan  5 18:19:19 raspberrypi weewx[7763]: vantage: Gentle wake up of console 
successful
Jan  5 18:19:19 raspberrypi weewx[7763]: engine: Clock error is -0.17 seconds 
(positive is fast)
Jan  5 18:19:19 raspberrypi weewx[7763]: vantage: Getting archive packets since 
2019-01-05 18:17:00 CST (1546733820)
Jan  5 18:19:19 raspberrypi weewx[7763]: vantage: Gentle wake up of console 
successful
Jan  5 18:19:19 raspberrypi weewx[7763]: vantage: Retrieving 1 page(s); 
starting index= 0
Jan  5 18:19:19 raspberrypi weewx[7763]: manager: Added record 2019-01-05 
18:18:00 CST (1546733880) to database 'weewx.sdb'
Jan  5 18:19:19 raspberrypi weewx[7763]: manager: Added record 2019-01-05 
18:18:00 CST (1546733880) to daily summary in 'weewx.sdb'
Jan  5 18:19:19 raspberrypi weewx[7763]: forecast: MainThread: Zambretti: 
starting thread
Jan  5 18:19:19 raspberrypi weewx[7763]: forecast: ZambrettiThread: Zambretti: 
generating forecast for 2019-01-05 09:00:00 CST (1546700400)
Jan  5 18:19:19 raspberrypi weewx[7763]: forecast: MainThread: NWS: not yet 
time to do the forecast
Jan  5 18:19:19 raspberrypi weewx[7763]: forecast: ZambrettiThread: Zambretti: 
using winddir from 2019-01-05 08:30:00 CST (1546698600) to 2019-01-05 09:00:00 
CST (1546700400)
Jan  5 18:19:19 raspberrypi weewx[7763]: forecast: MainThread: WU: not yet time 
to do the forecast
Jan  5 18:19:19 raspberrypi weewx[7763]: forecast: ZambrettiThread: Zambretti: 
using pressure from 2019-01-05 06:00:00 CST (1546689600) to 2019-01-05 09:00:00 
CST (1546700400)
Jan  5 18:19:19 raspberrypi weewx[7763]: alarm: Alarm expression "outTemp > 
40.0" evaluated True at 2019-01-05 18:18:00 CST (1546733880)
Jan  5 18:19:19 raspberrypi weewx[7763]: manager: Daily summary version is 2.0
Jan  5 18:19:19 raspberrypi weewx[7763]: forecast: ZambrettiThread: Zambretti: 
units=1 winddir=291.774193548 pressure=30.1179392265 first_p=30.072 
last_p=30.155
Jan  5 18:19:19 raspberrypi weewx[7763]: forecast: ZambrettiThread: Zambretti: 
pressure=1019.91032765 month=0 winddir=12 trend=0.936900723939 north=True
Jan  5 18:19:19 raspberrypi weewx[7763]: manager: Added record 2019-01-05 
18:19:00 CST (1546733940) to database 'weewx.sdb'
Jan  5 18:19:19 raspberrypi weewx[7763]: forecast: ZambrettiThread: Zambretti: 
code is C
Jan  5 18:19:19 raspberrypi weewx[7763]: forecast: ZambrettiThread: Zambretti: 
generated 1 forecast record
Jan  5 18:19:19 raspberrypi weewx[7763]: forecast: ZambrettiThread: Zambretti: 
saving 1 forecast records
Jan  5 18:19:19 raspberrypi weewx[7763]: manager: Added record 2019-01-05 
18:18:00 CST (1546733880) to database 'forecast.sdb'
Jan  5 18:19:19 raspberrypi weewx[7763]: manager: Added record 2019-01-05 
18:19:00 CST (1546733940) to daily summary in 'weewx.sdb'
Jan  5 18:19:19 raspberrypi weewx[7763]: restx: CWOP: Connected to server 
cwop.aprs.net:14580
Jan  5 18:19:19 raspberrypi weewx[7763]: forecast: ZambrettiThread: Zambretti: 
saved 1 forecast records
Jan  5 18:19:19 raspberrypi weewx[7763]: forecast: ZambrettiThread: Zambretti: 
deleting forecasts prior to 1546129159
Jan  5 18:19:19 raspberrypi weewx[7763]: forecast: ZambrettiThread: Zambretti: 
deleted forecasts prior to 1546129159
Jan  5 18:19:19 raspberrypi weewx[7763]: forecast: ZambrettiThread: Zambretti: 
terminating thread
Jan  5 18:19:19 raspberrypi weewx[7763]: forecast: MainThread: Zambretti: not 
yet time to do the forecast
Jan  5 18:19:19 raspberrypi weewx[7763]: forecast: MainThread: NWS: not yet 
time to do the forecast
Jan  5 18:19:19 raspberrypi weewx[7763]: forecast: MainThread: WU: not yet time 
to do the forecast
Jan  5 18:19:19 raspberrypi weewx[7763]: vantage: DMPAFT complete: page 
timestamp 2019-01-03 23:39:00 CST (1546580340) less than final timestamp 
2019-01-05 18:19:00 CST (1546733940)
Jan  5 18:19:19 raspberrypi weewx[7763]: vantage: Catch up complete.
Jan  5 18:19:19 raspberrypi weewx[7763]: engine: Starting main packet loop.
Jan  5 18:19:19 raspberrypi weewx[7763]: restx: CWOP: Published record 
2019-01-05 18:18:00 CST (1546733880)
Jan  5 18:19:19 raspberrypi weewx[7763]: restx: CWOP: wait interval (60 < 600) 
has not passed for record 2019-01-05 18:19:00 CST (1546733940)
Jan  5 18:19:19 raspberrypi weewx[7763]: vantage: Gentle wake up of console 
successful
Jan  5 18:19:19 raspberrypi weewx[7763]: vantage: Requesting 200 LOOP packets.
Jan  5 18:19:19 raspberrypi weewx[7763]: vantage: Gentle wake up of console 
successful
Jan  5 18:19:19 raspberrypi weewx[7763]: restx: StationRegistry: Published 
record 2019-01-05 18:18:00 CST (1546733880)
Jan  5 18:19:19 raspberrypi weewx[7763]: restx: StationRegistry: wait interval 
(60 < 604800) has not passed for record 2019-01-05 18:19:00 CST (1546733940)
Jan  5 18:19:19 raspberrypi weewx[7763]: restx: Meteotemplate: Published record 
2019-01-05 18:18:00 CST (1546733880)
Jan  5 18:19:20 raspberrypi weewx[7763]: restx: Meteotemplate: Published record 
2019-01-05 18:19:00 CST (1546733940)
Jan  5 18:20:14 raspberrypi weewx[7763]: vantage: Getting archive packets since 
2019-01-05 18:19:00 CST (1546733940)
Jan  5 18:20:14 raspberrypi weewx[7763]: vantage: Gentle wake up of console 
successful
Jan  5 18:20:14 raspberrypi weewx[7763]: vantage: Retrieving 1 page(s); 
starting index= 2
Jan  5 18:20:14 raspberrypi weewx[7763]: manager: Added record 2019-01-05 
18:20:00 CST (1546734000) to database 'weewx.sdb'
Jan  5 18:20:14 raspberrypi weewx[7763]: manager: Added record 2019-01-05 
18:20:00 CST (1546734000) to daily summary in 'weewx.sdb'
Jan  5 18:20:14 raspberrypi weewx[7763]: forecast: MainThread: Zambretti: not 
yet time to do the forecast
Jan  5 18:20:14 raspberrypi weewx[7763]: forecast: MainThread: NWS: not yet 
time to do the forecast
Jan  5 18:20:14 raspberrypi weewx[7763]: forecast: MainThread: WU: not yet time 
to do the forecast
Jan  5 18:20:14 raspberrypi weewx[7763]: restx: StationRegistry: wait interval 
(120 < 604800) has not passed for record 2019-01-05 18:20:00 CST (1546734000)
Jan  5 18:20:14 raspberrypi weewx[7763]: restx: CWOP: wait interval (120 < 600) 
has not passed for record 2019-01-05 18:20:00 CST (1546734000)
Jan  5 18:20:14 raspberrypi weewx[7763]: vantage: DMPAFT complete: page 
timestamp 2019-01-03 23:40:00 CST (1546580400) less than final timestamp 
2019-01-05 18:20:00 CST (1546734000)
Jan  5 18:20:14 raspberrypi weewx[7763]: vantage: Catch up complete.
Jan  5 18:20:14 raspberrypi weewx[7763]: reportengine: Running reports for 
latest time in the database.
Jan  5 18:20:14 raspberrypi weewx[7763]: vantage: Requesting 200 LOOP packets.
Jan  5 18:20:14 raspberrypi weewx[7763]: reportengine: Running report 
StandardReport
Jan  5 18:20:15 raspberrypi weewx[7763]: reportengine: Found configuration file 
/home/weewx/skins/Standard/skin.conf for report StandardReport
Jan  5 18:20:15 raspberrypi weewx[7763]: vantage: Gentle wake up of console 
successful
Jan  5 18:20:15 raspberrypi weewx[7763]: cheetahgenerator: using search list 
['weewx.cheetahgenerator.Almanac', 'weewx.cheetahgenerator.Station', 
'weewx.cheetahgenerator.Current', 'weewx.cheetahgenerator.Stats', 
'weewx.cheetahgenerator.UnitInfo', 'weewx.cheetahgenerator.Extras', 
'user.forecast.ForecastVariables', 'user.xstats.ExtendedStatistics']
Jan  5 18:20:15 raspberrypi weewx[7763]: manager: Daily summary version is 2.0
Jan  5 18:20:16 raspberrypi weewx[7763]: restx: Meteotemplate: Published record 
2019-01-05 18:20:00 CST (1546734000)
Jan  5 18:20:18 raspberrypi weewx[7763]: cheetahgenerator: Generated 14 files 
for report StandardReport in 3.54 seconds
Jan  5 18:20:18 raspberrypi weewx[7763]: manager: Daily summary version is 2.0
Jan  5 18:20:20 raspberrypi weewx[7763]: imagegenerator: Generated 11 images 
for StandardReport in 1.74 seconds
Jan  5 18:20:20 raspberrypi weewx[7763]: copygenerator: copied 96 files to 
/home/weewx/public_html
Jan  5 18:20:20 raspberrypi weewx[7763]: reportengine: Running report 
SteelSeries
Jan  5 18:20:20 raspberrypi weewx[7763]: reportengine: Found configuration file 
/home/weewx/skins/ss/skin.conf for report SteelSeries
Jan  5 18:20:20 raspberrypi weewx[7763]: copygenerator: copied 6 files to 
/home/weewx/public_html/ss
Jan  5 18:20:20 raspberrypi weewx[7763]: cheetahgenerator: using search list 
['weewx.cheetahgenerator.Almanac', 'weewx.cheetahgenerator.Station', 
'weewx.cheetahgenerator.Current', 'weewx.cheetahgenerator.Stats', 
'weewx.cheetahgenerator.UnitInfo', 'weewx.cheetahgenerator.Extras', 
'user.forecast.ForecastVariables']
Jan  5 18:20:20 raspberrypi weewx[7763]: manager: Daily summary version is 2.0
Jan  5 18:20:21 raspberrypi weewx[7763]: cheetahgenerator: Generated 2 files 
for report SteelSeries in 0.87 seconds
Jan  5 18:20:21 raspberrypi weewx[7763]: manager: Daily summary version is 2.0
Jan  5 18:20:22 raspberrypi weewx[7763]: imagegenerator: Generated 11 images 
for SteelSeries in 1.36 seconds
Jan  5 18:20:22 raspberrypi weewx[7763]: reportengine: Running report forecast
Jan  5 18:20:22 raspberrypi weewx[7763]: reportengine: Found configuration file 
/home/weewx/skins/forecast/skin.conf for report forecast
Jan  5 18:20:22 raspberrypi weewx[7763]: cheetahgenerator: using search list 
['weewx.cheetahgenerator.Almanac', 'weewx.cheetahgenerator.Station', 
'weewx.cheetahgenerator.Current', 'weewx.cheetahgenerator.Stats', 
'weewx.cheetahgenerator.UnitInfo', 'weewx.cheetahgenerator.Extras', 
'user.forecast.ForecastVariables']
Jan  5 18:20:22 raspberrypi weewx[7763]: manager: Daily summary version is 2.0
Jan  5 18:20:56 raspberrypi weewx[7763]: cheetahgenerator: Generated 12 files 
for report forecast in 33.67 seconds
Jan  5 18:20:56 raspberrypi weewx[7763]: copygenerator: copied 87 files to 
/home/weewx/public_html/forecast
Jan  5 18:20:56 raspberrypi weewx[7763]: reportengine: Running report xstats
Jan  5 18:20:56 raspberrypi weewx[7763]: reportengine: Found configuration file 
/home/weewx/skins/xstats/skin.conf for report xstats
Jan  5 18:20:56 raspberrypi weewx[7763]: cheetahgenerator: using search list 
['weewx.cheetahgenerator.Almanac', 'weewx.cheetahgenerator.Station', 
'weewx.cheetahgenerator.Current', 'weewx.cheetahgenerator.Stats', 
'weewx.cheetahgenerator.UnitInfo', 'weewx.cheetahgenerator.Extras', 
'user.xstats.ExtendedStatistics']
Jan  5 18:20:56 raspberrypi weewx[7763]: manager: Daily summary version is 2.0
Jan  5 18:20:56 raspberrypi weewx[7763]: cheetahgenerator: Generated 1 files 
for report xstats in 0.13 seconds
Jan  5 18:20:56 raspberrypi weewx[7763]: reportengine: Running report FTP
Jan  5 18:20:56 raspberrypi weewx[7763]: reportengine: Found configuration file 
/home/weewx/skins/Ftp/skin.conf for report FTP
Jan  5 18:20:56 raspberrypi weewx[7763]: ftpupload: Attempting connection to 
ftp.kq5s.com
Jan  5 18:20:56 raspberrypi weewx[7763]: ftpupload: Connected to ftp.kq5s.com
Jan  5 18:20:56 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/favicon.ico
Jan  5 18:20:57 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/index.html
Jan  5 18:20:57 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/mobile.css
Jan  5 18:20:57 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/dayrain.png
Jan  5 18:20:57 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/daywinddir.png
Jan  5 18:20:57 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/daywindvec.png
Jan  5 18:20:58 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/daywind.png
Jan  5 18:20:58 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/daytempdew.png
Jan  5 18:20:58 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/dayinside.png
Jan  5 18:20:58 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/mobile.html
Jan  5 18:20:59 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/week.html
Jan  5 18:20:59 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/daybarometer.png
Jan  5 18:20:59 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/daygarage.png
Jan  5 18:20:59 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/month.html
Jan  5 18:20:59 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/daytempchill.png
Jan  5 18:21:00 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/dayrx.png
Jan  5 18:21:00 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/dayhumidity.png
Jan  5 18:21:00 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/year.html
Jan  5 18:21:00 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/weewx.css
Jan  5 18:21:00 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/zambretti.html
Jan  5 18:21:01 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/compact.html
Jan  5 18:21:01 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/index.html
Jan  5 18:21:01 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/single-table.html
Jan  5 18:21:01 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/forecast_iconic.css
Jan  5 18:21:01 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/multiple-strips.html
Jan  5 18:21:02 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/tides.html
Jan  5 18:21:02 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/forecast_compact.css
Jan  5 18:21:02 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/forecast_strip.css
Jan  5 18:21:03 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/multiple-tables.html
Jan  5 18:21:03 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/single-strip-vertical.html
Jan  5 18:21:03 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/forecast_table.css
Jan  5 18:21:03 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/iconic.html
Jan  5 18:21:04 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/iconic-horizontal.html
Jan  5 18:21:04 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/forecast.css
Jan  5 18:21:04 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/forecast-periods.html
Jan  5 18:21:04 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/single-strip.html
Jan  5 18:21:04 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/NE.png
Jan  5 18:21:05 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/sprinkles.png
Jan  5 18:21:05 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/tESE.png
Jan  5 18:21:05 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/moon.png
Jan  5 18:21:05 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/sunset.png
Jan  5 18:21:05 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/K.png
Jan  5 18:21:06 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/BK.png
Jan  5 18:21:06 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/sleet.png
Jan  5 18:21:06 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/tENE.png
Jan  5 18:21:06 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/pop.png
Jan  5 18:21:06 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/snowflake.png
Jan  5 18:21:06 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/tE.png
Jan  5 18:21:07 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/thermometer-blue.png
Jan  5 18:21:07 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/tSSW.png
Jan  5 18:21:07 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/rain.png
Jan  5 18:21:07 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/F.png
Jan  5 18:21:07 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/tSSE.png
Jan  5 18:21:08 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/B2n.png
Jan  5 18:21:08 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/tWNW.png
Jan  5 18:21:08 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/BD.png
Jan  5 18:21:08 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/tW.png
Jan  5 18:21:08 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/sunriseset.png
Jan  5 18:21:08 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/snow.png
Jan  5 18:21:09 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/W.png
Jan  5 18:21:09 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/triangle-down.png
Jan  5 18:21:09 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/B1n.png
Jan  5 18:21:10 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/PF+.png
Jan  5 18:21:10 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/tS.png
Jan  5 18:21:11 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/rainshwrs.png
Jan  5 18:21:11 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/tNNW.png
Jan  5 18:21:11 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/flag.png
Jan  5 18:21:11 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/BS.png
Jan  5 18:21:11 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/tstms.png
Jan  5 18:21:12 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/thermometer.png
Jan  5 18:21:12 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/FWn.png
Jan  5 18:21:12 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/moonrise.png
Jan  5 18:21:12 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/tNW.png
Jan  5 18:21:12 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/sunrise.png
Jan  5 18:21:12 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/moonriseset.png
Jan  5 18:21:13 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/E.png
Jan  5 18:21:13 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/NW.png
Jan  5 18:21:13 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/tN.png
Jan  5 18:21:13 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/SW.png
Jan  5 18:21:13 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/H.png
Jan  5 18:21:14 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/flurries.png
Jan  5 18:21:14 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/raindrop.png
Jan  5 18:21:14 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/OV.png
Jan  5 18:21:14 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/thermometer-red.png
Jan  5 18:21:14 raspberrypi weewx[7763]: vantage: Getting archive packets since 
2019-01-05 18:20:00 CST (1546734000)
Jan  5 18:21:14 raspberrypi weewx[7763]: vantage: Gentle wake up of console 
successful
Jan  5 18:21:14 raspberrypi weewx[7763]: vantage: Retrieving 1 page(s); 
starting index= 3
Jan  5 18:21:14 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/N.png
Jan  5 18:21:14 raspberrypi weewx[7763]: manager: Added record 2019-01-05 
18:21:00 CST (1546734060) to database 'weewx.sdb'
Jan  5 18:21:14 raspberrypi weewx[7763]: manager: Added record 2019-01-05 
18:21:00 CST (1546734060) to daily summary in 'weewx.sdb'
Jan  5 18:21:14 raspberrypi weewx[7763]: forecast: MainThread: Zambretti: not 
yet time to do the forecast
Jan  5 18:21:14 raspberrypi weewx[7763]: forecast: MainThread: NWS: not yet 
time to do the forecast
Jan  5 18:21:14 raspberrypi weewx[7763]: forecast: MainThread: WU: not yet time 
to do the forecast
Jan  5 18:21:14 raspberrypi weewx[7763]: restx: CWOP: wait interval (180 < 600) 
has not passed for record 2019-01-05 18:21:00 CST (1546734060)
Jan  5 18:21:14 raspberrypi weewx[7763]: vantage: DMPAFT complete: page 
timestamp 2019-01-03 23:41:00 CST (1546580460) less than final timestamp 
2019-01-05 18:21:00 CST (1546734060)
Jan  5 18:21:14 raspberrypi weewx[7763]: restx: StationRegistry: wait interval 
(180 < 604800) has not passed for record 2019-01-05 18:21:00 CST (1546734060)
Jan  5 18:21:14 raspberrypi weewx[7763]: vantage: Catch up complete.
Jan  5 18:21:14 raspberrypi weewx[7763]: engine: Launch of report thread 
aborted: existing report thread still running
Jan  5 18:21:14 raspberrypi weewx[7763]: vantage: Requesting 200 LOOP packets.
Jan  5 18:21:14 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/sunmoon.png
Jan  5 18:21:14 raspberrypi weewx[7763]: vantage: Gentle wake up of console 
successful
Jan  5 18:21:15 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/water.png
Jan  5 18:21:15 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/SC.png
Jan  5 18:21:15 raspberrypi weewx[7763]: restx: Meteotemplate: Published record 
2019-01-05 18:21:00 CST (1546734060)
Jan  5 18:21:15 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/tNNE.png
Jan  5 18:21:15 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/thermometer-dewpoint.png
Jan  5 18:21:15 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/B2.png
Jan  5 18:21:16 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/CLn.png
Jan  5 18:21:16 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/moonphase.png
Jan  5 18:21:16 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/blizzard.png
Jan  5 18:21:16 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/PF.png
Jan  5 18:21:16 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/SE.png
Jan  5 18:21:17 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/tNE.png
Jan  5 18:21:17 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/AF.png
Jan  5 18:21:18 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/tSW.png
Jan  5 18:21:19 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/BKn.png
Jan  5 18:21:20 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/SCn.png
Jan  5 18:21:22 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/tWSW.png
Jan  5 18:21:23 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/drizzle.png
Jan  5 18:21:24 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/triangle-right.png
Jan  5 18:21:26 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/B1.png
Jan  5 18:21:27 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/snowshwrs.png
Jan  5 18:21:28 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/CL.png
Jan  5 18:21:29 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/F+.png
Jan  5 18:21:31 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/OVn.png
Jan  5 18:21:32 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/flag-yellow.png
Jan  5 18:21:33 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/S.png
Jan  5 18:21:34 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/frzngdrzl.png
Jan  5 18:21:35 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/moonset.png
Jan  5 18:21:37 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/tSE.png
Jan  5 18:21:38 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/raintorrent.png
Jan  5 18:21:39 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/FW.png
Jan  5 18:21:40 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/forecast/icons/sun.png
Jan  5 18:21:41 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/xstats/index.html
Jan  5 18:21:43 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/smartphone/wind.html
Jan  5 18:21:44 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/smartphone/index.html
Jan  5 18:21:45 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/smartphone/custom.js
Jan  5 18:21:47 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/smartphone/radar.html
Jan  5 18:21:48 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/smartphone/rain.html
Jan  5 18:21:49 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/smartphone/barometer.html
Jan  5 18:21:50 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/smartphone/temp_outside.html
Jan  5 18:21:51 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/smartphone/icons/icon_ipad_x2.png
Jan  5 18:21:53 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/smartphone/icons/icon_ipad_x1.png
Jan  5 18:21:54 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/smartphone/icons/icon_iphone_x2.png
Jan  5 18:21:55 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/smartphone/icons/icon_iphone_x1.png
Jan  5 18:21:57 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/NE.png
Jan  5 18:21:58 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/sprinkles.png
Jan  5 18:21:59 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/tESE.png
Jan  5 18:22:01 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/moon.png
Jan  5 18:22:02 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/sunset.png
Jan  5 18:22:03 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/K.png
Jan  5 18:22:04 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/BK.png
Jan  5 18:22:05 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/sleet.png
Jan  5 18:22:07 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/tENE.png
Jan  5 18:22:08 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/pop.png
Jan  5 18:22:10 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/snowflake.png
Jan  5 18:22:11 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/tE.png
Jan  5 18:22:12 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/thermometer-blue.png
Jan  5 18:22:13 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/tSSW.png
Jan  5 18:22:14 raspberrypi weewx[7763]: vantage: Getting archive packets since 
2019-01-05 18:21:00 CST (1546734060)
Jan  5 18:22:14 raspberrypi weewx[7763]: vantage: Gentle wake up of console 
successful
Jan  5 18:22:14 raspberrypi weewx[7763]: vantage: Retrieving 1 page(s); 
starting index= 4
Jan  5 18:22:14 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/rain.png
Jan  5 18:22:14 raspberrypi weewx[7763]: manager: Added record 2019-01-05 
18:22:00 CST (1546734120) to database 'weewx.sdb'
Jan  5 18:22:14 raspberrypi weewx[7763]: manager: Added record 2019-01-05 
18:22:00 CST (1546734120) to daily summary in 'weewx.sdb'
Jan  5 18:22:15 raspberrypi weewx[7763]: forecast: MainThread: Zambretti: not 
yet time to do the forecast
Jan  5 18:22:15 raspberrypi weewx[7763]: forecast: MainThread: NWS: not yet 
time to do the forecast
Jan  5 18:22:15 raspberrypi weewx[7763]: forecast: MainThread: WU: not yet time 
to do the forecast
Jan  5 18:22:15 raspberrypi weewx[7763]: restx: StationRegistry: wait interval 
(240 < 604800) has not passed for record 2019-01-05 18:22:00 CST (1546734120)
Jan  5 18:22:15 raspberrypi weewx[7763]: restx: CWOP: wait interval (240 < 600) 
has not passed for record 2019-01-05 18:22:00 CST (1546734120)
Jan  5 18:22:15 raspberrypi weewx[7763]: engine: Launch of report thread 
aborted: existing report thread still running
Jan  5 18:22:15 raspberrypi weewx[7763]: vantage: Requesting 200 LOOP packets.
Jan  5 18:22:15 raspberrypi weewx[7763]: vantage: Gentle wake up of console 
successful
Jan  5 18:22:16 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/F.png
Jan  5 18:22:16 raspberrypi weewx[7763]: restx: Meteotemplate: Published record 
2019-01-05 18:22:00 CST (1546734120)
Jan  5 18:22:17 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/tSSE.png
Jan  5 18:22:18 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/B2n.png
Jan  5 18:22:19 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/tWNW.png
Jan  5 18:22:21 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/BD.png
Jan  5 18:22:22 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/tW.png
Jan  5 18:22:23 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/sunriseset.png
Jan  5 18:22:24 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/snow.png
Jan  5 18:22:25 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/W.png
Jan  5 18:22:27 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/triangle-down.png
Jan  5 18:22:28 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/B1n.png
Jan  5 18:22:29 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/PF+.png
Jan  5 18:22:30 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/tS.png
Jan  5 18:22:31 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/rainshwrs.png
Jan  5 18:22:33 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/tNNW.png
Jan  5 18:22:34 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/flag.png
Jan  5 18:22:35 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/BS.png
Jan  5 18:22:36 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/tstms.png
Jan  5 18:22:37 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/thermometer.png
Jan  5 18:22:39 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/FWn.png
Jan  5 18:22:40 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/moonrise.png
Jan  5 18:22:41 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/tNW.png
Jan  5 18:22:42 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/sunrise.png
Jan  5 18:22:43 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/moonriseset.png
Jan  5 18:22:45 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/E.png
Jan  5 18:22:46 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/NW.png
Jan  5 18:22:47 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/tN.png
Jan  5 18:22:48 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/SW.png
Jan  5 18:22:49 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/H.png
Jan  5 18:22:51 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/flurries.png
Jan  5 18:22:52 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/raindrop.png
Jan  5 18:22:53 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/OV.png
Jan  5 18:22:54 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/thermometer-red.png
Jan  5 18:22:55 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/N.png
Jan  5 18:22:57 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/sunmoon.png
Jan  5 18:22:58 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/water.png
Jan  5 18:22:59 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/SC.png
Jan  5 18:23:01 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/tNNE.png
Jan  5 18:23:02 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/thermometer-dewpoint.png
Jan  5 18:23:03 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/B2.png
Jan  5 18:23:04 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/CLn.png
Jan  5 18:23:05 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/moonphase.png
Jan  5 18:23:07 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/blizzard.png
Jan  5 18:23:08 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/PF.png
Jan  5 18:23:09 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/SE.png
Jan  5 18:23:10 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/tNE.png
Jan  5 18:23:11 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/AF.png
Jan  5 18:23:13 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/tSW.png
Jan  5 18:23:14 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/BKn.png
Jan  5 18:23:14 raspberrypi weewx[7763]: vantage: Getting archive packets since 
2019-01-05 18:22:00 CST (1546734120)
Jan  5 18:23:14 raspberrypi weewx[7763]: vantage: Gentle wake up of console 
successful
Jan  5 18:23:14 raspberrypi weewx[7763]: vantage: Retrieving 1 page(s); 
starting index= 0
Jan  5 18:23:14 raspberrypi weewx[7763]: manager: Added record 2019-01-05 
18:23:00 CST (1546734180) to database 'weewx.sdb'
Jan  5 18:23:14 raspberrypi weewx[7763]: manager: Added record 2019-01-05 
18:23:00 CST (1546734180) to daily summary in 'weewx.sdb'
Jan  5 18:23:14 raspberrypi weewx[7763]: forecast: MainThread: Zambretti: not 
yet time to do the forecast
Jan  5 18:23:14 raspberrypi weewx[7763]: forecast: MainThread: NWS: not yet 
time to do the forecast
Jan  5 18:23:14 raspberrypi weewx[7763]: forecast: MainThread: WU: not yet time 
to do the forecast
Jan  5 18:23:14 raspberrypi weewx[7763]: restx: StationRegistry: wait interval 
(300 < 604800) has not passed for record 2019-01-05 18:23:00 CST (1546734180)
Jan  5 18:23:14 raspberrypi weewx[7763]: vantage: DMPAFT complete: page 
timestamp 2019-01-03 23:43:00 CST (1546580580) less than final timestamp 
2019-01-05 18:23:00 CST (1546734180)
Jan  5 18:23:14 raspberrypi weewx[7763]: vantage: Catch up complete.
Jan  5 18:23:14 raspberrypi weewx[7763]: engine: Launch of report thread 
aborted: existing report thread still running
Jan  5 18:23:14 raspberrypi weewx[7763]: vantage: Requesting 200 LOOP packets.
Jan  5 18:23:14 raspberrypi weewx[7763]: restx: CWOP: wait interval (300 < 600) 
has not passed for record 2019-01-05 18:23:00 CST (1546734180)
Jan  5 18:23:14 raspberrypi weewx[7763]: vantage: Gentle wake up of console 
successful
Jan  5 18:23:15 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/SCn.png
Jan  5 18:23:16 raspberrypi weewx[7763]: restx: Meteotemplate: Published record 
2019-01-05 18:23:00 CST (1546734180)
Jan  5 18:23:16 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/tWSW.png
Jan  5 18:23:17 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/drizzle.png
Jan  5 18:23:19 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/triangle-right.png
Jan  5 18:23:20 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/B1.png
Jan  5 18:23:21 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/snowshwrs.png
Jan  5 18:23:22 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/CL.png
Jan  5 18:23:24 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/F+.png
Jan  5 18:23:25 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/OVn.png
Jan  5 18:23:26 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/flag-yellow.png
Jan  5 18:23:27 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/S.png
Jan  5 18:23:29 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/frzngdrzl.png
Jan  5 18:23:30 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/moonset.png
Jan  5 18:23:31 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/tSE.png
Jan  5 18:23:32 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/raintorrent.png
Jan  5 18:23:33 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/FW.png
Jan  5 18:23:35 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/icons/sun.png
Jan  5 18:23:36 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/NOAA/NOAA-2019.txt
Jan  5 18:23:37 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/NOAA/NOAA-2019-01.txt
Jan  5 18:23:38 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/backgrounds/flower.jpg
Jan  5 18:23:40 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/backgrounds/butterfly.jpg
Jan  5 18:23:41 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/backgrounds/leaf.jpg
Jan  5 18:23:42 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/backgrounds/drops.gif
Jan  5 18:23:43 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/backgrounds/night.gif
Jan  5 18:23:44 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/backgrounds/band.gif
Jan  5 18:23:46 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/backgrounds/solidblack.gif
Jan  5 18:23:47 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/RSS/weewx_rss.xml
Jan  5 18:23:48 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/ss/dayradiation.png
Jan  5 18:23:49 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/ss/dayrainrate.png
Jan  5 18:23:51 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/ss/index.html
Jan  5 18:23:52 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/ss/dayrain.png
Jan  5 18:23:53 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/ss/gauge-data.txt
Jan  5 18:23:54 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/ss/dayinouthum.png
Jan  5 18:23:55 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/ss/daywinddir.png
Jan  5 18:23:57 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/ss/daywindvec.png
Jan  5 18:23:58 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/ss/daywind.png
Jan  5 18:23:59 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/ss/dayuv.png
Jan  5 18:24:00 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/ss/dayouttemphum.png
Jan  5 18:24:01 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/ss/daybarometer.png
Jan  5 18:24:03 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/ss/dayinouttemp.png
Jan  5 18:24:04 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/ss/scripts/RGraph.rose.min.js
Jan  5 18:24:05 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/ss/scripts/RGraph.common.core.min.js
Jan  5 18:24:07 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/ss/scripts/language.min.js
Jan  5 18:24:08 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/ss/scripts/steelseries_tween.min.js
Jan  5 18:24:10 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/ss/scripts/gauges.js
Jan  5 18:24:11 raspberrypi weewx[7763]: ftpupload: Uploaded file 
public_html/weewx/ss/css/gauges-ss.css
Jan  5 18:24:11 raspberrypi weewx[7763]: ftpgenerator: ftp'd 239 files in 
195.24 seconds
Jan  5 18:24:11 raspberrypi weewx[7763]: reportengine: Running report RSYNC
Jan  5 18:24:11 raspberrypi weewx[7763]: reportengine: Found configuration file 
/home/weewx/skins/Rsync/skin.conf for report RSYNC
Jan  5 18:24:11 raspberrypi weewx[7763]: rsyncgenerator: rsync upload not 
requested. Skipped.
Jan  5 18:24:14 raspberrypi systemd[1]: Stopping LSB: weewx weather system...
Jan  5 18:24:14 raspberrypi weewx[7763]: engine: Received signal TERM (15).
Jan  5 18:24:14 raspberrypi weewx[7763]: engine: Main loop exiting. Shutting 
engine down.
Jan  5 18:24:14 raspberrypi weewx[7763]: engine: Shutting down StdReport thread
Jan  5 18:24:14 raspberrypi weewx[7763]: engine: StdReport thread has been 
terminated
Jan  5 18:24:14 raspberrypi weewx[7763]: restx: Shut down CWOP thread.
Jan  5 18:24:14 raspberrypi weewx[7763]: restx: Shut down Wunderground-RF 
thread.
Jan  5 18:24:14 raspberrypi weewx[7763]: restx: Shut down StationRegistry 
thread.
Jan  5 18:24:14 raspberrypi weewx[7763]: engine: Terminating weewx version 3.8.2
Jan  5 18:24:14 raspberrypi weewx[7763]:     ****  Traceback (most recent call 
last):
Jan  5 18:24:14 raspberrypi weewx[7763]:     ****    File 
"/home/weewx/bin/weewx/engine.py", line 877, in main
Jan  5 18:24:14 raspberrypi weewx[7763]:     ****      engine.run()
Jan  5 18:24:14 raspberrypi weewx[7763]:     ****    File 
"/home/weewx/bin/weewx/engine.py", line 188, in run
Jan  5 18:24:14 raspberrypi weewx[7763]:     ****      for packet in 
self.console.genLoopPackets():
Jan  5 18:24:14 raspberrypi weewx[7763]:     ****    File 
"/home/weewx/bin/weewx/drivers/vantage.py", line 507, in genLoopPackets
Jan  5 18:24:14 raspberrypi weewx[7763]:     ****      for _loop_packet in 
self.genDavisLoopPackets(200):
Jan  5 18:24:14 raspberrypi weewx[7763]:     ****    File 
"/home/weewx/bin/weewx/drivers/vantage.py", line 534, in genDavisLoopPackets
Jan  5 18:24:14 raspberrypi weewx[7763]:     ****      _buffer = 
self.port.read(99)
Jan  5 18:24:14 raspberrypi weewx[7763]:     ****    File 
"/home/weewx/bin/weewx/drivers/vantage.py", line 255, in read
Jan  5 18:24:14 raspberrypi weewx[7763]:     ****      _buffer = 
self.serial_port.read(chars)
Jan  5 18:24:14 raspberrypi weewx[7763]:     ****    File 
"/usr/lib/python2.7/dist-packages/serial/serialposix.py", line 472, in read
Jan  5 18:24:14 raspberrypi weewx[7763]:     ****      ready, _, _ = 
select.select([self.fd, self.pipe_abort_read_r], [], [], timeout.time_left())
Jan  5 18:24:14 raspberrypi weewx[7763]:     ****    File 
"/home/weewx/bin/weewx/engine.py", line 795, in sigTERMhandler
Jan  5 18:24:14 raspberrypi weewx[7763]:     ****      raise Terminate
Jan  5 18:24:14 raspberrypi weewx[7763]:     ****  Terminate
Jan  5 18:24:19 raspberrypi weewx[7810]: Stopping weewx weather system: weewx..
Jan  5 18:24:19 raspberrypi systemd[1]: Stopped LSB: weewx weather system.
#    Copyright (c) 2009-2015 Tom Keffer <[email protected]>
#    See the file LICENSE.txt for your rights.

"""Example of how to implement an alarm in weewx. 

*******************************************************************************

To use this alarm, add the following to the weewx configuration file:

[Alarm]
    expression = "outTemp > 40.0"
    time_wait = 3600
    smtp_host = XXXXXXX 
    smtp_user = XXXXXXXx
    smtp_password = XXXXXXX
    from = XXXXXX
    mailto = XXXXXXX
    subject = "Alarm message from weewx!"
  
In this example, if the outside temperature falls below 40, it will send an
email to the users specified in the comma separated list specified in option
"mailto", in this case:

[email protected], [email protected]

The example assumes an SMTP email server at smtp.example.com that requires
login.  If the SMTP server does not require login, leave out the lines for
smtp_user and smtp_password.

Setting an email "from" is optional. If not supplied, one will be filled in,
but your SMTP server may or may not accept it.

Setting an email "subject" is optional. If not supplied, one will be filled in.

To avoid a flood of emails, one will only be sent every 3600 seconds (one
hour).

*******************************************************************************

To enable this service:

1) copy this file to the user directory

2) modify the weewx configuration file by adding this service to the option
"report_services", located in section [Engine][[Services]].

[Engine]
  [[Services]]
    ...
    report_services = weewx.engine.StdPrint, weewx.engine.StdReport, user.alarm.MyAlarm

*******************************************************************************

If you wish to use both this example and the lowBattery.py example, simply
merge the two configuration options together under [Alarm] and add both
services to report_services.

*******************************************************************************
"""

import time
import smtplib
from email.mime.text import MIMEText
import threading
import syslog

import weewx
from weewx.engine import StdService
from weeutil.weeutil import timestamp_to_string, option_as_list

# Inherit from the base class StdService:
class MyAlarm(StdService):
    """Service that sends email if an arbitrary expression evaluates true"""
    
    def __init__(self, engine, config_dict):
        # Pass the initialization information on to my superclass:
        super(MyAlarm, self).__init__(engine, config_dict)
        
        # This will hold the time when the last alarm message went out:
        self.last_msg_ts = 0
        
        try:
            # Dig the needed options out of the configuration dictionary.
            # If a critical option is missing, an exception will be raised and
            # the alarm will not be set.
            self.expression    = config_dict['Alarm']['expression']
            self.time_wait     = int(config_dict['Alarm'].get('time_wait', 3600))
            self.smtp_host     = config_dict['Alarm']['smtp_host']
            self.smtp_user     = config_dict['Alarm'].get('smtp_user')
            self.smtp_password = config_dict['Alarm'].get('smtp_password')
            self.SUBJECT       = config_dict['Alarm'].get('subject', "Alarm message from weewx")
            self.FROM          = config_dict['Alarm'].get('from', '[email protected]')
            self.TO            = option_as_list(config_dict['Alarm']['mailto'])
            syslog.syslog(syslog.LOG_INFO, "alarm: Alarm set for expression: '%s'" % self.expression)
            
            # If we got this far, it's ok to start intercepting events:
            self.bind(weewx.NEW_ARCHIVE_RECORD, self.newArchiveRecord)    # NOTE 1
        except KeyError as e:
            syslog.syslog(syslog.LOG_INFO, "alarm: No alarm set.  Missing parameter: %s" % e)
            
    def newArchiveRecord(self, event):
        """Gets called on a new archive record event."""
        
        # To avoid a flood of nearly identical emails, this will do
        # the check only if we have never sent an email, or if we haven't
        # sent one in the last self.time_wait seconds:
        if not self.last_msg_ts or abs(time.time() - self.last_msg_ts) >= self.time_wait :
            # Get the new archive record:
            record = event.record
            
            # Be prepared to catch an exception in the case that the expression contains 
            # a variable that is not in the record:
            try:                                                              # NOTE 2
                # Evaluate the expression in the context of the event archive record.
                # Sound the alarm if it evaluates true:
                if eval(self.expression, None, record):                       # NOTE 3
                    # Sound the alarm!
                    # Launch in a separate thread so it doesn't block the main LOOP thread:
                    t  = threading.Thread(target = MyAlarm.soundTheAlarm, args=(self, record))
                    t.start()
                    # Record when the message went out:
                    self.last_msg_ts = time.time()
            except NameError as e:
                # The record was missing a named variable. Write a debug message, then keep going
                syslog.syslog(syslog.LOG_DEBUG, "alarm: %s" % e)

    def soundTheAlarm(self, rec):
        """This function is called when the given expression evaluates True."""
        
        # Get the time and convert to a string:
        t_str = timestamp_to_string(rec['dateTime'])

        # Log it
        syslog.syslog(syslog.LOG_INFO, "alarm: Alarm expression \"%s\" evaluated True at %s" % (self.expression, t_str))

        # Form the message text:
        msg_text = "Alarm expression \"%s\" evaluated True at %s\nRecord:\n%s" % (self.expression, t_str, str(rec))
        # Convert to MIME:
        msg = MIMEText(msg_text)
        
        # Fill in MIME headers:
        msg['Subject'] = self.SUBJECT
        msg['From']    = self.FROM
        msg['To']      = ','.join(self.TO)
        
        try:
            # First try end-to-end encryption
            s=smtplib.SMTP_SSL(self.smtp_host)
            syslog.syslog(syslog.LOG_DEBUG, "alarm: using SMTP_SSL")
        except AttributeError:
            # If that doesn't work, try creating an insecure host, then upgrading
            s = smtplib.SMTP(self.smtp_host)
            try:
                # Be prepared to catch an exception if the server
                # does not support encrypted transport.
                s.ehlo()
                s.starttls()
                s.ehlo()
                syslog.syslog(syslog.LOG_DEBUG,
                              "alarm: using SMTP encrypted transport")
            except smtplib.SMTPException:
                syslog.syslog(syslog.LOG_DEBUG,
                              "alarm: using SMTP unencrypted transport")

        try:
            # If a username has been given, assume that login is required for this host:
            if self.smtp_user:
                s.login(self.smtp_user, self.smtp_password)
                syslog.syslog(syslog.LOG_DEBUG, "alarm: logged in with user name %s" % (self.smtp_user,))
            
            # Send the email:
            s.sendmail(msg['From'], self.TO,  msg.as_string())
            # Log out of the server:
            s.quit()
        except Exception as e:
            syslog.syslog(syslog.LOG_ERR, "alarm: SMTP mailer refused message with error %s" % (e,))
            raise
        
        # Log sending the email:
        syslog.syslog(syslog.LOG_INFO, "alarm: email sent to: %s" % self.TO)


if __name__ == '__main__':
    """This section is used for testing the code. """
    import sys
    import configobj
    from optparse import OptionParser

    usage_string ="""Usage: 
    
    alarm.py config_path 
    
    Arguments:
    
      config_path: Path to weewx.conf"""
    parser = OptionParser(usage=usage_string)
    (options, args) = parser.parse_args()
    
    if len(args) < 1:
        sys.stderr.write("Missing argument(s).\n")
        sys.stderr.write(parser.parse_args(["--help"]))
        exit()
        
    config_path = args[0]
    
    weewx.debug = 1
    
    try :
        config_dict = configobj.ConfigObj(config_path, file_error=True)
    except IOError:
        print "Unable to open configuration file ", config_path
        exit()
        
    if 'Alarm' not in config_dict:
        print >>sys.stderr, "No [Alarm] section in the configuration file %s" % config_path
        exit(1)
    
    engine = None
    alarm = MyAlarm(engine, config_dict)
    
    rec = {'extraTemp1': 1.0,
           'outTemp'   : 38.2,
           'dateTime'  : int(time.time())}

    event = weewx.Event(weewx.NEW_ARCHIVE_RECORD, record=rec)
    alarm.newArchiveRecord(event)

Reply via email to