"Image" and "Cheetah" modules not found - even though I've reinstalled Cheetah, and Pil numerous times

171 views
Skip to first unread message

Kevin Key

unread,
Jan 8, 2023, 3:39:09 PM1/8/23
to weewx-user
I'm getting the below errors even though I have done a forced reinstall of Cheetah and Pil numerous times. Any idea as to what else I can try?

weewx[325313] DEBUG weewx.reportengine: Running report 'SeasonsReport'
weewx[325313] INFO weewx.restx: MQTT: Published record 2023-01-08 12:36:00 PST (1673210160)
weewx[325313] DEBUG weewx.reportengine: Found configuration file /etc/weewx/skins/Seasons/skin.conf for report 'SeasonsReport'
weewx[325313] ERROR weewx.reportengine: Unable to instantiate generator 'weewx.cheetahgenerator.CheetahGenerator'
weewx[325313] ERROR weewx.reportengine:         ****  No module named 'Cheetah'
weewx[325313] ERROR weewx.reportengine:         ****  Traceback (most recent call last):

weewx[325313] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/reportengine.py", line 180, in run

weewx[325313] ERROR weewx.reportengine:         ****      obj = weeutil.weeutil.get_object(generator)(

weewx[325313] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weeutil/weeutil.py", line 1335, in get_object

weewx[325313] ERROR weewx.reportengine:         ****      mod = __import__(module)

weewx[325313] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/cheetahgenerator.py", line 69, in <module>

weewx[325313] ERROR weewx.reportengine:         ****      import Cheetah.Filters

weewx[325313] ERROR weewx.reportengine:         ****  ModuleNotFoundError: No module named 'Cheetah'

weewx[325313] ERROR weewx.reportengine:         ****  Generator ignored
weewx[325313] ERROR weewx.reportengine: Unable to instantiate generator 'weewx.imagegenerator.ImageGenerator'
weewx[325313] ERROR weewx.reportengine:         ****  No module named 'Image'
weewx[325313] ERROR weewx.reportengine:         ****  Traceback (most recent call last):

weewx[325313] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weeplot/genplot.py", line 15, in <module>

weewx[325313] ERROR weewx.reportengine:         ****      from PIL import Image, ImageDraw

weewx[325313] ERROR weewx.reportengine:         ****  ModuleNotFoundError: No module named 'PIL'

weewx[325313] ERROR weewx.reportengine:         ****

weewx[325313] ERROR weewx.reportengine:         ****  During handling of the above exception, another exception occurred:

weewx[325313] ERROR weewx.reportengine:         ****

weewx[325313] ERROR weewx.reportengine:         ****  Traceback (most recent call last):

weewx[325313] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/reportengine.py", line 180, in run

weewx[325313] ERROR weewx.reportengine:         ****      obj = weeutil.weeutil.get_object(generator)(

weewx[325313] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weeutil/weeutil.py", line 1335, in get_object

weewx[325313] ERROR weewx.reportengine:         ****      mod = __import__(module)

weewx[325313] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/imagegenerator.py", line 19, in <module>

weewx[325313] ERROR weewx.reportengine:         ****      import weeplot.genplot

weewx[325313] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weeplot/genplot.py", line 17, in <module>

weewx[325313] ERROR weewx.reportengine:         ****      import Image, ImageDraw

weewx[325313] ERROR weewx.reportengine:         ****  ModuleNotFoundError: No module named 'Image'

Tom Keffer

unread,
Jan 8, 2023, 4:52:08 PM1/8/23
to weewx...@googlegroups.com
I suspect this is a path problem.

Set debug=1, then restart weewx. Let it run through a reporting cycle. Post the log from startup through the first reporting cycle.

--
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 weewx-user+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/weewx-user/ee34027d-599f-41d8-9df5-0e3a33f66f73n%40googlegroups.com.

vince

unread,
Jan 8, 2023, 5:10:29 PM1/8/23
to weewx-user
You didn't say which os/version you are on, but it might be a "pip" (v2) versus "pip3" (v3) issue.

Do 'pip list' and 'pip3 list' and compare the two.  I suspect only one has the modules you're looking for.
 

Tom Keffer

unread,
Jan 8, 2023, 5:12:58 PM1/8/23
to weewx...@googlegroups.com
Could be, but he did a package install.

On Sun, Jan 8, 2023 at 2:10 PM vince <vince...@gmail.com> wrote:
You didn't say which os/version you are on, but it might be a "pip" (v2) versus "pip3" (v3) issue.

Do 'pip list' and 'pip3 list' and compare the two.  I suspect only one has the modules you're looking for.
 

--
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 weewx-user+...@googlegroups.com.

Kevin Key

unread,
Jan 9, 2023, 12:24:38 AM1/9/23
to weewx-user
I'm currently running Cheetah3 version 3.2.6.

Raspberry Pi 4

weewx version 4.9.1

vince

unread,
Jan 9, 2023, 1:17:04 PM1/9/23
to weewx-user
Please do what Tom asked you to do and post the results.

Kevin Key

unread,
Jan 9, 2023, 1:47:04 PM1/9/23
to weewx...@googlegroups.com
Hi Vince,

When I do pip list and later pip3 list, I see Cheetah3 3.2.6 and Pillow 9.4.0 listed both times.

OS is Debian 11.

pi@ubuntu:~ $ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
NAME="Debian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

Thanks,

Kevin



On Sun, Jan 8, 2023 at 2:10 PM vince <vince...@gmail.com> wrote:
You didn't say which os/version you are on, but it might be a "pip" (v2) versus "pip3" (v3) issue.

Do 'pip list' and 'pip3 list' and compare the two.  I suspect only one has the modules you're looking for.
 

--
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/uIMSw10r9JI/unsubscribe.
To unsubscribe from this group and all its topics, send an email to weewx-user+...@googlegroups.com.

Kevin Key

unread,
Jan 12, 2023, 3:48:31 AM1/12/23
to weewx-user
Here's my log. I've lost track of how many times I've reinstalled Cheetah. Any idea as to what is going wrong?

pi@ubuntu:/var/log $ cat weewx.log
weewx[36134] INFO __main__: Initializing weewx version 4.9.1
weewx[36134] INFO __main__: Using Python 3.9.2 (default, Jan  4 2023, 21:11:01)
[GCC 10.2.1 20210110]
weewx[36134] INFO __main__: Located at /bin/python3
weewx[36134] INFO __main__: Platform Linux-5.15.84-v8+-aarch64-with-glibc2.31
weewx[36134] INFO __main__: Locale is 'en_GB.UTF-8'
weewx[36134] INFO __main__: Using configuration file /etc/weewx/weewx.conf
weewx[36134] INFO __main__: Debug is 1
weewx[36134] INFO __main__: PID file is /var/run/weewx.pid
weewx[36137] DEBUG __main__: Initializing engine
weewx[36137] INFO weewx.engine: Loading station type SDR (user.sdr)
weewx[36137] INFO user.sdr: driver version is 0.87
weewx[36137] INFO user.sdr: model is SDR
weewx[36137] INFO user.sdr: sensor map is {'outTemp': 'temperature.02BC.AcuriteAtlasPacket', 'outHumidity': 'humidity.02BC.AcuriteAtlasPacket', 'windSpeed': 'wind_speed.02BC.AcuriteAtlasPacket', 'windDir': 'wind_dir.02BC.AcuriteAtlasPacket', 'UV': 'uv.02BC.AcuriteAtlasPacket', 'radiation': 'lux.02BC.AcuriteAtlasPacket', 'lux': 'lux.02BC.AcuriteAtlasPacket', 'Atlas_rain_total': 'rain_total.02BC.AcuriteAtlasPacket', 'strikes_total': 'strike_count.02BC.AcuriteAtlasPacket', 'lightning_distance': 'strike_distance.02BC.AcuriteAtlasPacket', 'windBatteryStatus': 'battery.02BC.AcuriteAtlasPacket', 'extraTemp1': 'temperature.161C.AcuriteTowerPacketV2', 'extraTemp2': 'temperature.2D1D.AcuriteTowerPacketV2'}
weewx[36137] INFO user.sdr: deltas is {'rain': 'Atlas_rain_total', 'lightning_strike_count': 'strikes_total'}
weewx[36137] INFO user.sdr: startup process 'sudo /usr/bin/rtl_433 -M utc -F json -Y autolevel'
weewx[36137] DEBUG user.sdr: start async reader for stdout-thread
weewx[36137] DEBUG user.sdr: start async reader for stderr-thread
weewx[36137] DEBUG weewx.engine: Loading service weewx.engine.StdTimeSynch
weewx[36137] DEBUG weewx.engine: Finished loading service weewx.engine.StdTimeSynch
weewx[36137] DEBUG weewx.engine: Loading service user.MQTTSubscribe.MQTTSubscribeService
weewx[36137] DEBUG user.MQTTSubscribe: (Service) Using weewx version 4.9.1
weewx[36137] DEBUG user.MQTTSubscribe: (Service) Using Python 3.9.2 (default, Jan  4 2023, 21:11:01)
[GCC 10.2.1 20210110]
weewx[36137] DEBUG user.MQTTSubscribe: (Service) Platform Linux-5.15.84-v8+-aarch64-with-glibc2.31
weewx[36137] DEBUG user.MQTTSubscribe: (Service) Locale is 'en_GB.UTF-8'
weewx[36137] INFO user.MQTTSubscribe: (Service) Version is 2.2.2
weewx[36137] INFO user.MQTTSubscribe: (Service) Log level: 0
weewx[36137] INFO user.MQTTSubscribe: (Service) Log debug setting: 1
weewx[36137] INFO user.MQTTSubscribe: (Service) Log console: False
weewx[36137] INFO user.MQTTSubscribe: (Service) Log file: None
weewx[36137] DEBUG user.MQTTSubscribe: (Service) sanitized configuration removed ['password']
weewx[36137] DEBUG user.MQTTSubscribe: (Service) MQTTSUBscriber sanitized_service_dict is {'topics': {'unit_system': 'METRIC', 'indoor/BME280_pressure': {'name': 'pressure', 'ignore': 'false'}}, 'archive_interval': '180', 'port': '1883', 'ignore_end_time': 'true', 'message_callback': {'type': 'individual'}, 'enable': 'true', 'host': 'localhost', 'binding': 'loop', 'username': 'None', 'keepalive': '10'}
weewx[36137] DEBUG user.MQTTSubscribe: (Service) TopicManager self.collect_wind_across_loops is True
weewx[36137] DEBUG user.MQTTSubscribe: (Service) TopicManager self.collect_observations is False
weewx[36137] DEBUG user.MQTTSubscribe: (Service) TopicManager single_queue is False
weewx[36137] DEBUG user.MQTTSubscribe: (Service) TopicManager single_queue is False
weewx[36137] DEBUG user.MQTTSubscribe: (Service) TopicManager self.subscribed_topics is {"indoor/BME280_pressure": {"ignore": false, "subscribe": true, "conversion_func": {"source": "lambda x: to_float(x)", "compiled": "<function <lambda> at 0x7fafe9f040>"}, "unit_system": 16, "msg_id_field": null, "qos": 0, "topic_tail_is_fieldname": false, "use_server_datetime": false, "datetime_format": null, "offset_format": null, "ignore_msg_id_field": [], "fields": {"indoor/BME280_pressure": {"name": "pressure", "ignore": false, "contains_total": false, "total_wrap_around": false, "conversion_func": {"source": "lambda x: to_float(x)", "compiled": "<function <lambda> at 0x7fafe770d0>"}, "conversion_type": "float", "conversion_error_to_none": false}}, "queue": {"name": "indoor/BME280_pressure", "type": "normal", "ignore_start_time": false, "ignore_end_time": false, "adjust_start_time": 0.0, "adjust_end_time": 0.0, "max_size": 9223372036854775807, "data": "deque([])"}, "filters": {}, "message-1673512917.989539": {}}, "1673512917.993647-windGust-windGustDir-windDir-windSpeed": {"subscribe": false, "message-1673512917.989539": {}, "unit_system": 16, "qos": 0, "topic_tail_is_fieldname": false, "use_server_datetime": false, "datetime_format": null, "offset_format": null, "queue": {"name": "1673512917.993647-windGust-windGustDir-windDir-windSpeed", "type": "collector", "ignore_start_time": false, "ignore_end_time": false, "adjust_start_time": 0.0, "adjust_end_time": 0.0, "max_size": 9223372036854775807, "data": "deque([])"}}}
weewx[36137] DEBUG user.MQTTSubscribe: (Service) TopicManager self.cached_fields is {}
weewx[36137] INFO user.MQTTSubscribe: (Service) message_callback_provider_name is user.MQTTSubscribe.MessageCallbackProvider
weewx[36137] INFO user.MQTTSubscribe: (Service) clientid is MQTTSubscribe-5234
weewx[36137] INFO user.MQTTSubscribe: (Service) client_session is True
weewx[36137] INFO user.MQTTSubscribe: (Service) host is localhost
weewx[36137] INFO user.MQTTSubscribe: (Service) port is 1883
weewx[36137] INFO user.MQTTSubscribe: (Service) keepalive is 10
weewx[36137] INFO user.MQTTSubscribe: (Service) username is None
weewx[36137] INFO user.MQTTSubscribe: (Service) min_delay is 1
weewx[36137] INFO user.MQTTSubscribe: (Service) max_delay is 120
weewx[36137] INFO user.MQTTSubscribe: (Service) password is set
weewx[36137] INFO user.MQTTSubscribe: (Service) Archive topic is None
weewx[36137] INFO user.MQTTSubscribe: (Service) binding is loop
weewx[36137] DEBUG user.MQTTSubscribe: (Service) Starting loop
weewx[36137] INFO user.MQTTSubscribe: (Service) Waiting for MQTT connection.
weewx[36137] INFO user.MQTTSubscribe: (Service) Connected with result code 0
weewx[36137] INFO user.MQTTSubscribe: (Service) Connected flags {'session present': 0}
weewx[36137] INFO user.MQTTSubscribe: (Service) Subscribing to indoor/BME280_pressure has a mid 1 and rc 0
weewx[36137] INFO user.MQTTSubscribe: (Service) Subscribed to mid: 1 is size 1 has a QOS of 0
weewx[36137] INFO user.MQTTSubscribe: (Service) MQTT initialization complete.
weewx[36137] DEBUG weewx.engine: Finished loading service user.MQTTSubscribe.MQTTSubscribeService
weewx[36137] DEBUG weewx.engine: Loading service weewx.engine.StdConvert
weewx[36137] INFO weewx.engine: StdConvert target unit is 0x1
weewx[36137] DEBUG weewx.engine: Finished loading service weewx.engine.StdConvert
weewx[36137] DEBUG weewx.engine: Loading service weewx.engine.StdCalibrate
weewx[36137] DEBUG weewx.engine: Finished loading service weewx.engine.StdCalibrate
weewx[36137] DEBUG weewx.engine: Loading service weewx.engine.StdQC
weewx[36137] DEBUG weewx.engine: Finished loading service weewx.engine.StdQC
weewx[36137] DEBUG weewx.engine: Loading service weewx.wxservices.StdWXCalculate
weewx[36137] INFO weewx.wxservices: StdWXCalculate will use data binding wx_binding
weewx[36137] DEBUG weewx.manager: Daily summary version is 4.0
weewx[36137] DEBUG weewx.engine: Finished loading service weewx.wxservices.StdWXCalculate
weewx[36137] DEBUG weewx.engine: Loading service weewx.wxxtypes.StdWXXTypes
weewx[36137] DEBUG weewx.engine: Finished loading service weewx.wxxtypes.StdWXXTypes
weewx[36137] DEBUG weewx.engine: Loading service weewx.wxxtypes.StdPressureCooker
weewx[36137] DEBUG weewx.engine: Finished loading service weewx.wxxtypes.StdPressureCooker
weewx[36137] DEBUG weewx.engine: Loading service weewx.wxxtypes.StdRainRater
weewx[36137] DEBUG weewx.engine: Finished loading service weewx.wxxtypes.StdRainRater
weewx[36137] DEBUG weewx.engine: Loading service weewx.wxxtypes.StdDelta
weewx[36137] DEBUG weewx.engine: Finished loading service weewx.wxxtypes.StdDelta
weewx[36137] DEBUG weewx.engine: Loading service weewx.engine.StdArchive
weewx[36137] INFO weewx.engine: Archive will use data binding wx_binding
weewx[36137] INFO weewx.engine: Record generation will be attempted in 'hardware'
weewx[36137] INFO weewx.engine: Using archive interval of 60 seconds (specified in weewx configuration)
weewx[36137] DEBUG weewx.engine: Use LOOP data in hi/low calculations: 1
weewx[36137] DEBUG weewx.engine: Finished loading service weewx.engine.StdArchive
weewx[36137] DEBUG weewx.engine: Loading service weewx.restx.StdStationRegistry
weewx[36137] INFO weewx.restx: StationRegistry: Station will be registered.
weewx[36137] DEBUG weewx.engine: Finished loading service weewx.restx.StdStationRegistry
weewx[36137] DEBUG weewx.engine: Loading service weewx.restx.StdWunderground
weewx[36137] DEBUG weewx.restx: WU essentials: {}
weewx[36137] INFO weewx.restx: Wunderground-PWS: Data for station KCARAMON46 will be posted
weewx[36137] DEBUG weewx.engine: Finished loading service weewx.restx.StdWunderground
weewx[36137] DEBUG weewx.engine: Loading service weewx.restx.StdPWSweather
weewx[36137] INFO weewx.restx: PWSWeather: Data for station RAMONAWEST will be posted
weewx[36137] DEBUG weewx.engine: Finished loading service weewx.restx.StdPWSweather
weewx[36137] DEBUG weewx.engine: Loading service weewx.restx.StdCWOP
weewx[36137] INFO weewx.restx: CWOP: Data for station EW5918 will be posted
weewx[36137] DEBUG weewx.engine: Finished loading service weewx.restx.StdCWOP
weewx[36137] DEBUG weewx.engine: Loading service weewx.restx.StdWOW
weewx[36137] INFO weewx.restx: WOW: Data for station 815878d0-9d1d-e811-90ce-0003ff597a79 will be posted
weewx[36137] DEBUG weewx.engine: Finished loading service weewx.restx.StdWOW
weewx[36137] DEBUG weewx.engine: Loading service weewx.restx.StdAWEKAS
weewx[36137] INFO weewx.restx: AWEKAS: Data will be uploaded for user kevink619e
weewx[36137] DEBUG weewx.engine: Finished loading service weewx.restx.StdAWEKAS
weewx[36137] DEBUG weewx.engine: Loading service user.owm.OpenWeatherMap
weewx[36137] INFO user.owm: service version is 0.9
weewx[36137] INFO user.owm: Data will be uploaded for 6178965b09e7430001ba0b74
weewx[36137] DEBUG weewx.engine: Finished loading service user.owm.OpenWeatherMap
weewx[36137] DEBUG weewx.engine: Loading service user.mqtt.MQTT
weewx[36137] INFO user.mqtt: service version is 0.24
weewx[36137] INFO user.mqtt: binding to archive
weewx[36137] INFO user.mqtt: data_binding is wx_binding
weewx[36137] INFO user.mqtt: topic is weather
weewx[36137] INFO user.mqtt: data will be uploaded to mqtt://localhost:1883
weewx[36137] DEBUG weewx.engine: Finished loading service user.mqtt.MQTT
weewx[36137] DEBUG weewx.engine: Loading service weewx.engine.StdPrint
weewx[36137] DEBUG weewx.engine: Finished loading service weewx.engine.StdPrint
weewx[36137] DEBUG weewx.engine: Loading service weewx.engine.StdReport
weewx[36137] INFO weewx.engine: 'pyephem' not detected, extended almanac data is not available
weewx[36137] DEBUG weewx.manager: Daily summary version is 4.0
weewx[36137] DEBUG weewx.engine: Finished loading service weewx.engine.StdReport
weewx[36137] INFO __main__: Starting up weewx version 4.9.1
weewx[36137] DEBUG weewx.engine: Station does not support reading the time
weewx[36137] INFO weewx.engine: Using binding 'wx_binding' to database 'weewx.sdb'
weewx[36137] INFO weewx.manager: Starting backfill of daily summaries
weewx[36137] DEBUG weewx.manager: Daily summary version is 4.0
weewx[36137] INFO weewx.manager: Daily summaries up to date
weewx[36137] DEBUG weewx.manager: Daily summary version is 4.0
weewx[36137] INFO weewx.engine: Starting main packet loop.
weewx[36137] DEBUG weewx.manager: Daily summary version is 4.0
weewx[36137] DEBUG weewx.manager: Daily summary version is 4.0
weewx[36137] DEBUG weewx.manager: Daily summary version is 4.0
weewx[36137] DEBUG weewx.manager: Daily summary version is 4.0
weewx[36137] DEBUG user.MQTTSubscribe: (Service) MessageCallbackProvider data-> incoming topic: indoor/BME280_pressure, QOS: 0, retain: 0, payload: b'971.56'
weewx[36137] DEBUG user.MQTTSubscribe: (Service) TopicManager data-> incoming indoor/BME280_pressure: 'pressure': '971.56'
weewx[36137] DEBUG user.sdr: packet={'extraTemp2': 35.24, 'dateTime': 1673512933, 'usUnits': 1}
weewx[36137] DEBUG user.MQTTSubscribe: (Service) TopicManager data-> outgoing indoor/BME280_pressure: 'dateTime': '1673512920.368209', 'pressure': '971.56', 'usUnits': '16'
weewx[36137] DEBUG user.MQTTSubscribe: (Service) TopicManager data-> outgoing accumulated indoor/BME280_pressure: 'dateTime': '1673512933.0', 'pressure': '28.6901546555', 'usUnits': '1'
weewx[36137] DEBUG user.MQTTSubscribe: (Service) data-> final packet is 2023-01-12 00:42:13 PST (1673512933): 'dateTime': '1673512933.0', 'extraTemp2': '35.24', 'pressure': '28.6901546555', 'usUnits': '1'
weewx[36137] DEBUG user.sdr: packet={'extraTemp2': 35.24, 'dateTime': 1673512933, 'usUnits': 1}
weewx[36137] DEBUG user.MQTTSubscribe: (Service) data-> final packet is 2023-01-12 00:42:13 PST (1673512933): 'dateTime': '1673512933', 'extraTemp2': '35.24', 'usUnits': '1'
weewx[36137] DEBUG user.sdr: packet={'windSpeed': 0.0, 'windDir': 269.0, 'Atlas_rain_total': 2.44, 'strikes_total': 2, 'lightning_distance': 0, 'windBatteryStatus': 0, 'dateTime': 1673512937, 'usUnits': 1}
weewx[36137] DEBUG user.MQTTSubscribe: (Service) data-> final packet is 2023-01-12 00:42:17 PST (1673512937): 'Atlas_rain_total': '2.44', 'dateTime': '1673512937', 'lightning_distance': '0', 'lightning_strike_count': 'None', 'rain': 'None', 'strikes_total': '2', 'usUnits': '1', 'windBatteryStatus': '0', 'windDir': '269.0', 'windSpeed': '0.0'
weewx[36137] DEBUG weewx.reportengine: Running reports for latest time in the database.
weewx[36137] DEBUG weewx.reportengine: Running report 'SeasonsReport'
weewx[36137] DEBUG weewx.reportengine: Found configuration file /etc/weewx/skins/Seasons/skin.conf for report 'SeasonsReport'
weewx[36137] ERROR weewx.reportengine: Unable to instantiate generator 'weewx.cheetahgenerator.CheetahGenerator'
weewx[36137] ERROR weewx.reportengine:         ****  No module named 'Cheetah'
weewx[36137] ERROR weewx.reportengine:         ****  Traceback (most recent call last):

weewx[36137] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/reportengine.py", line 180, in run

weewx[36137] ERROR weewx.reportengine:         ****      obj = weeutil.weeutil.get_object(generator)(

weewx[36137] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weeutil/weeutil.py", line 1335, in get_object

weewx[36137] ERROR weewx.reportengine:         ****      mod = __import__(module)

weewx[36137] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/cheetahgenerator.py", line 69, in <module>

weewx[36137] ERROR weewx.reportengine:         ****      import Cheetah.Filters

weewx[36137] ERROR weewx.reportengine:         ****  ModuleNotFoundError: No module named 'Cheetah'

weewx[36137] ERROR weewx.reportengine:         ****  Generator ignored
weewx[36137] ERROR weewx.reportengine: Unable to instantiate generator 'weewx.imagegenerator.ImageGenerator'
weewx[36137] ERROR weewx.reportengine:         ****  No module named 'Image'
weewx[36137] ERROR weewx.reportengine:         ****  Traceback (most recent call last):

weewx[36137] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weeplot/genplot.py", line 15, in <module>

weewx[36137] ERROR weewx.reportengine:         ****      from PIL import Image, ImageDraw

weewx[36137] ERROR weewx.reportengine:         ****  ModuleNotFoundError: No module named 'PIL'

weewx[36137] ERROR weewx.reportengine:         ****

weewx[36137] ERROR weewx.reportengine:         ****  During handling of the above exception, another exception occurred:

weewx[36137] ERROR weewx.reportengine:         ****

weewx[36137] ERROR weewx.reportengine:         ****  Traceback (most recent call last):

weewx[36137] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/reportengine.py", line 180, in run

weewx[36137] ERROR weewx.reportengine:         ****      obj = weeutil.weeutil.get_object(generator)(

weewx[36137] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weeutil/weeutil.py", line 1335, in get_object

weewx[36137] ERROR weewx.reportengine:         ****      mod = __import__(module)

weewx[36137] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/imagegenerator.py", line 19, in <module>

weewx[36137] ERROR weewx.reportengine:         ****      import weeplot.genplot

weewx[36137] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weeplot/genplot.py", line 17, in <module>

weewx[36137] ERROR weewx.reportengine:         ****      import Image, ImageDraw

weewx[36137] ERROR weewx.reportengine:         ****  ModuleNotFoundError: No module named 'Image'

weewx[36137] ERROR weewx.reportengine:         ****  Generator ignored
weewx[36137] INFO weewx.reportengine: Copied 5 files to /var/www/html/weewx
weewx[36137] DEBUG weewx.reportengine: Running report 'SmartphoneReport'
weewx[36137] DEBUG weewx.reportengine: Found configuration file /etc/weewx/skins/Smartphone/skin.conf for report 'SmartphoneReport'
weewx[36137] ERROR weewx.reportengine: Unable to instantiate generator 'weewx.cheetahgenerator.CheetahGenerator'
weewx[36137] ERROR weewx.reportengine:         ****  No module named 'Cheetah'
weewx[36137] ERROR weewx.reportengine:         ****  Traceback (most recent call last):

weewx[36137] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/reportengine.py", line 180, in run

weewx[36137] ERROR weewx.reportengine:         ****      obj = weeutil.weeutil.get_object(generator)(

weewx[36137] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weeutil/weeutil.py", line 1335, in get_object

weewx[36137] ERROR weewx.reportengine:         ****      mod = __import__(module)

weewx[36137] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/cheetahgenerator.py", line 69, in <module>

weewx[36137] ERROR weewx.reportengine:         ****      import Cheetah.Filters

weewx[36137] ERROR weewx.reportengine:         ****  ModuleNotFoundError: No module named 'Cheetah'

weewx[36137] ERROR weewx.reportengine:         ****  Generator ignored
weewx[36137] ERROR weewx.reportengine: Unable to instantiate generator 'weewx.imagegenerator.ImageGenerator'
weewx[36137] ERROR weewx.reportengine:         ****  No module named 'Image'
weewx[36137] ERROR weewx.reportengine:         ****  Traceback (most recent call last):

weewx[36137] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weeplot/genplot.py", line 15, in <module>

weewx[36137] ERROR weewx.reportengine:         ****      from PIL import Image, ImageDraw

weewx[36137] ERROR weewx.reportengine:         ****  ModuleNotFoundError: No module named 'PIL'

weewx[36137] ERROR weewx.reportengine:         ****

weewx[36137] ERROR weewx.reportengine:         ****  During handling of the above exception, another exception occurred:

weewx[36137] ERROR weewx.reportengine:         ****

weewx[36137] ERROR weewx.reportengine:         ****  Traceback (most recent call last):

weewx[36137] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/reportengine.py", line 180, in run

weewx[36137] ERROR weewx.reportengine:         ****      obj = weeutil.weeutil.get_object(generator)(

weewx[36137] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weeutil/weeutil.py", line 1335, in get_object

weewx[36137] ERROR weewx.reportengine:         ****      mod = __import__(module)

weewx[36137] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/imagegenerator.py", line 19, in <module>

weewx[36137] ERROR weewx.reportengine:         ****      import weeplot.genplot

weewx[36137] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weeplot/genplot.py", line 17, in <module>

weewx[36137] ERROR weewx.reportengine:         ****      import Image, ImageDraw

weewx[36137] ERROR weewx.reportengine:         ****  ModuleNotFoundError: No module named 'Image'

weewx[36137] ERROR weewx.reportengine:         ****  Generator ignored
weewx[36137] INFO weewx.reportengine: Copied 6 files to /var/www/html/weewx/smartphone
weewx[36137] DEBUG weewx.reportengine: Running report 'MobileReport'
weewx[36137] DEBUG weewx.reportengine: Found configuration file /etc/weewx/skins/Mobile/skin.conf for report 'MobileReport'
weewx[36137] ERROR weewx.reportengine: Unable to instantiate generator 'weewx.cheetahgenerator.CheetahGenerator'
weewx[36137] ERROR weewx.reportengine:         ****  No module named 'Cheetah'
weewx[36137] ERROR weewx.reportengine:         ****  Traceback (most recent call last):

weewx[36137] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/reportengine.py", line 180, in run

weewx[36137] ERROR weewx.reportengine:         ****      obj = weeutil.weeutil.get_object(generator)(

weewx[36137] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weeutil/weeutil.py", line 1335, in get_object

weewx[36137] ERROR weewx.reportengine:         ****      mod = __import__(module)

weewx[36137] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/cheetahgenerator.py", line 69, in <module>

weewx[36137] ERROR weewx.reportengine:         ****      import Cheetah.Filters

weewx[36137] ERROR weewx.reportengine:         ****  ModuleNotFoundError: No module named 'Cheetah'

weewx[36137] ERROR weewx.reportengine:         ****  Generator ignored
weewx[36137] ERROR weewx.reportengine: Unable to instantiate generator 'weewx.imagegenerator.ImageGenerator'
weewx[36137] ERROR weewx.reportengine:         ****  No module named 'Image'
weewx[36137] ERROR weewx.reportengine:         ****  Traceback (most recent call last):

weewx[36137] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weeplot/genplot.py", line 15, in <module>

weewx[36137] ERROR weewx.reportengine:         ****      from PIL import Image, ImageDraw

weewx[36137] ERROR weewx.reportengine:         ****  ModuleNotFoundError: No module named 'PIL'

weewx[36137] ERROR weewx.reportengine:         ****

weewx[36137] ERROR weewx.reportengine:         ****  During handling of the above exception, another exception occurred:

weewx[36137] ERROR weewx.reportengine:         ****

weewx[36137] ERROR weewx.reportengine:         ****  Traceback (most recent call last):

weewx[36137] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/reportengine.py", line 180, in run

weewx[36137] ERROR weewx.reportengine:         ****      obj = weeutil.weeutil.get_object(generator)(

weewx[36137] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weeutil/weeutil.py", line 1335, in get_object

weewx[36137] ERROR weewx.reportengine:         ****      mod = __import__(module)

weewx[36137] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/imagegenerator.py", line 19, in <module>

weewx[36137] ERROR weewx.reportengine:         ****      import weeplot.genplot

weewx[36137] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weeplot/genplot.py", line 17, in <module>

weewx[36137] ERROR weewx.reportengine:         ****      import Image, ImageDraw

weewx[36137] ERROR weewx.reportengine:         ****  ModuleNotFoundError: No module named 'Image'

weewx[36137] ERROR weewx.reportengine:         ****  Generator ignored
weewx[36137] INFO weewx.reportengine: Copied 2 files to /var/www/html/weewx/mobile
weewx[36137] DEBUG weewx.reportengine: Running report 'StandardReport'
weewx[36137] DEBUG weewx.reportengine: Found configuration file /etc/weewx/skins/Standard/skin.conf for report 'StandardReport'
weewx[36137] ERROR weewx.reportengine: Unable to instantiate generator 'weewx.cheetahgenerator.CheetahGenerator'
weewx[36137] ERROR weewx.reportengine:         ****  No module named 'Cheetah'
weewx[36137] ERROR weewx.reportengine:         ****  Traceback (most recent call last):

weewx[36137] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/reportengine.py", line 180, in run

weewx[36137] ERROR weewx.reportengine:         ****      obj = weeutil.weeutil.get_object(generator)(

weewx[36137] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weeutil/weeutil.py", line 1335, in get_object

weewx[36137] ERROR weewx.reportengine:         ****      mod = __import__(module)

weewx[36137] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/cheetahgenerator.py", line 69, in <module>

weewx[36137] ERROR weewx.reportengine:         ****      import Cheetah.Filters

weewx[36137] ERROR weewx.reportengine:         ****  ModuleNotFoundError: No module named 'Cheetah'

weewx[36137] ERROR weewx.reportengine:         ****  Generator ignored
weewx[36137] ERROR weewx.reportengine: Unable to instantiate generator 'weewx.imagegenerator.ImageGenerator'
weewx[36137] ERROR weewx.reportengine:         ****  No module named 'Image'
weewx[36137] ERROR weewx.reportengine:         ****  Traceback (most recent call last):

weewx[36137] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weeplot/genplot.py", line 15, in <module>

weewx[36137] ERROR weewx.reportengine:         ****      from PIL import Image, ImageDraw

weewx[36137] ERROR weewx.reportengine:         ****  ModuleNotFoundError: No module named 'PIL'

weewx[36137] ERROR weewx.reportengine:         ****

weewx[36137] ERROR weewx.reportengine:         ****  During handling of the above exception, another exception occurred:

weewx[36137] ERROR weewx.reportengine:         ****

weewx[36137] ERROR weewx.reportengine:         ****  Traceback (most recent call last):

weewx[36137] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/reportengine.py", line 180, in run

weewx[36137] ERROR weewx.reportengine:         ****      obj = weeutil.weeutil.get_object(generator)(

weewx[36137] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weeutil/weeutil.py", line 1335, in get_object

weewx[36137] ERROR weewx.reportengine:         ****      mod = __import__(module)

weewx[36137] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/imagegenerator.py", line 19, in <module>

weewx[36137] ERROR weewx.reportengine:         ****      import weeplot.genplot

weewx[36137] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weeplot/genplot.py", line 17, in <module>

weewx[36137] ERROR weewx.reportengine:         ****      import Image, ImageDraw

weewx[36137] ERROR weewx.reportengine:         ****  ModuleNotFoundError: No module named 'Image'

weewx[36137] ERROR weewx.reportengine:         ****  Generator ignored
weewx[36137] INFO weewx.reportengine: Copied 14 files to /var/www/html/weewx
weewx[36137] DEBUG weewx.reportengine: Report 'FTP' not enabled. Skipping.
weewx[36137] DEBUG weewx.reportengine: Report 'RSYNC' not enabled. Skipping.
weewx[36137] DEBUG user.sdr: packet={'windSpeed': 0.0, 'UV': 0, 'radiation': 0, 'lux': 0, 'strikes_total': 2, 'lightning_distance': 0, 'windBatteryStatus': 0, 'dateTime': 1673512947, 'usUnits': 1}
weewx[36137] DEBUG user.MQTTSubscribe: (Service) data-> final packet is 2023-01-12 00:42:27 PST (1673512947): 'dateTime': '1673512947', 'lightning_distance': '0', 'lightning_strike_count': '0', 'lux': '0', 'radiation': '0', 'strikes_total': '2', 'usUnits': '1', 'UV': '0', 'windBatteryStatus': '0', 'windSpeed': '0.0'
weewx[36137] DEBUG user.sdr: packet={'windSpeed': 0.0, 'UV': 0, 'radiation': 0, 'lux': 0, 'strikes_total': 2, 'lightning_distance': 0, 'windBatteryStatus': 0, 'dateTime': 1673512947, 'usUnits': 1}
weewx[36137] DEBUG user.MQTTSubscribe: (Service) data-> final packet is 2023-01-12 00:42:27 PST (1673512947): 'dateTime': '1673512947', 'lightning_distance': '0', 'lightning_strike_count': '0', 'lux': '0', 'radiation': '0', 'strikes_total': '2', 'usUnits': '1', 'UV': '0', 'windBatteryStatus': '0', 'windSpeed': '0.0'
weewx[36137] DEBUG user.sdr: packet={'windSpeed': 0.0, 'UV': 0, 'radiation': 0, 'lux': 0, 'strikes_total': 2, 'lightning_distance': 0, 'windBatteryStatus': 0, 'dateTime': 1673512947, 'usUnits': 1}
weewx[36137] DEBUG user.MQTTSubscribe: (Service) data-> final packet is 2023-01-12 00:42:27 PST (1673512947): 'dateTime': '1673512947', 'lightning_distance': '0', 'lightning_strike_count': '0', 'lux': '0', 'radiation': '0', 'strikes_total': '2', 'usUnits': '1', 'UV': '0', 'windBatteryStatus': '0', 'windSpeed': '0.0'
weewx[36137] DEBUG user.sdr: packet={'extraTemp2': 35.24, 'dateTime': 1673512949, 'usUnits': 1}
weewx[36137] DEBUG user.MQTTSubscribe: (Service) data-> final packet is 2023-01-12 00:42:29 PST (1673512949): 'dateTime': '1673512949', 'extraTemp2': '35.24', 'usUnits': '1'
weewx[36137] DEBUG user.sdr: packet={'extraTemp2': 35.24, 'dateTime': 1673512949, 'usUnits': 1}
weewx[36137] DEBUG user.MQTTSubscribe: (Service) data-> final packet is 2023-01-12 00:42:29 PST (1673512949): 'dateTime': '1673512949', 'extraTemp2': '35.24', 'usUnits': '1'
weewx[36137] DEBUG user.sdr: packet={'extraTemp2': 35.24, 'dateTime': 1673512949, 'usUnits': 1}
weewx[36137] DEBUG user.MQTTSubscribe: (Service) data-> final packet is 2023-01-12 00:42:29 PST (1673512949): 'dateTime': '1673512949', 'extraTemp2': '35.24', 'usUnits': '1'
weewx[36137] DEBUG user.sdr: packet={'extraTemp1': 3.5599999999999987, 'dateTime': 1673512954, 'usUnits': 1}
weewx[36137] DEBUG user.MQTTSubscribe: (Service) data-> final packet is 2023-01-12 00:42:34 PST (1673512954): 'dateTime': '1673512954', 'extraTemp1': '3.5599999999999987', 'usUnits': '1'
weewx[36137] DEBUG user.sdr: packet={'extraTemp1': 3.5599999999999987, 'dateTime': 1673512954, 'usUnits': 1}
weewx[36137] DEBUG user.MQTTSubscribe: (Service) data-> final packet is 2023-01-12 00:42:34 PST (1673512954): 'dateTime': '1673512954', 'extraTemp1': '3.5599999999999987', 'usUnits': '1'
weewx[36137] DEBUG user.sdr: packet={'extraTemp1': 3.5599999999999987, 'dateTime': 1673512954, 'usUnits': 1}
weewx[36137] DEBUG user.MQTTSubscribe: (Service) data-> final packet is 2023-01-12 00:42:34 PST (1673512954): 'dateTime': '1673512954', 'extraTemp1': '3.5599999999999987', 'usUnits': '1'
weewx[36137] DEBUG user.sdr: packet={'outTemp': 40.8, 'outHumidity': 99.0, 'windSpeed': 0.0, 'strikes_total': 2, 'lightning_distance': 0, 'windBatteryStatus': 0, 'dateTime': 1673512958, 'usUnits': 1}
weewx[36137] DEBUG user.MQTTSubscribe: (Service) data-> final packet is 2023-01-12 00:42:38 PST (1673512958): 'dateTime': '1673512958', 'lightning_distance': '0', 'lightning_strike_count': '0', 'outHumidity': '99.0', 'outTemp': '40.8', 'strikes_total': '2', 'usUnits': '1', 'windBatteryStatus': '0', 'windSpeed': '0.0'
weewx[36137] DEBUG user.sdr: packet={'outTemp': 40.8, 'outHumidity': 99.0, 'windSpeed': 0.0, 'strikes_total': 2, 'lightning_distance': 0, 'windBatteryStatus': 0, 'dateTime': 1673512958, 'usUnits': 1}
weewx[36137] DEBUG user.MQTTSubscribe: (Service) data-> final packet is 2023-01-12 00:42:38 PST (1673512958): 'dateTime': '1673512958', 'lightning_distance': '0', 'lightning_strike_count': '0', 'outHumidity': '99.0', 'outTemp': '40.8', 'strikes_total': '2', 'usUnits': '1', 'windBatteryStatus': '0', 'windSpeed': '0.0'
weewx[36137] DEBUG user.sdr: packet={'outTemp': 40.8, 'outHumidity': 99.0, 'windSpeed': 0.0, 'strikes_total': 2, 'lightning_distance': 0, 'windBatteryStatus': 0, 'dateTime': 1673512958, 'usUnits': 1}
weewx[36137] DEBUG user.MQTTSubscribe: (Service) data-> final packet is 2023-01-12 00:42:38 PST (1673512958): 'dateTime': '1673512958', 'lightning_distance': '0', 'lightning_strike_count': '0', 'outHumidity': '99.0', 'outTemp': '40.8', 'strikes_total': '2', 'usUnits': '1', 'windBatteryStatus': '0', 'windSpeed': '0.0'
weewx[36137] DEBUG user.sdr: packet={'windSpeed': 0.0, 'windDir': 269.0, 'Atlas_rain_total': 2.44, 'strikes_total': 2, 'lightning_distance': 0, 'windBatteryStatus': 0, 'dateTime': 1673512968, 'usUnits': 1}
weewx[36137] DEBUG user.MQTTSubscribe: (Service) data-> final packet is 2023-01-12 00:42:48 PST (1673512968): 'Atlas_rain_total': '2.44', 'dateTime': '1673512968', 'lightning_distance': '0', 'lightning_strike_count': '0', 'rain': '0.0', 'strikes_total': '2', 'usUnits': '1', 'windBatteryStatus': '0', 'windDir': '269.0', 'windSpeed': '0.0'
weewx[36137] DEBUG user.sdr: packet={'windSpeed': 0.0, 'windDir': 269.0, 'Atlas_rain_total': 2.44, 'strikes_total': 2, 'lightning_distance': 0, 'windBatteryStatus': 0, 'dateTime': 1673512968, 'usUnits': 1}
weewx[36137] DEBUG user.MQTTSubscribe: (Service) data-> final packet is 2023-01-12 00:42:48 PST (1673512968): 'Atlas_rain_total': '2.44', 'dateTime': '1673512968', 'lightning_distance': '0', 'lightning_strike_count': '0', 'rain': '0.0', 'strikes_total': '2', 'usUnits': '1', 'windBatteryStatus': '0', 'windDir': '269.0', 'windSpeed': '0.0'
weewx[36137] DEBUG user.sdr: packet={'windSpeed': 0.0, 'windDir': 269.0, 'Atlas_rain_total': 2.44, 'strikes_total': 2, 'lightning_distance': 0, 'windBatteryStatus': 0, 'dateTime': 1673512968, 'usUnits': 1}
weewx[36137] DEBUG user.MQTTSubscribe: (Service) data-> final packet is 2023-01-12 00:42:48 PST (1673512968): 'Atlas_rain_total': '2.44', 'dateTime': '1673512968', 'lightning_distance': '0', 'lightning_strike_count': '0', 'rain': '0.0', 'strikes_total': '2', 'usUnits': '1', 'windBatteryStatus': '0', 'windDir': '269.0', 'windSpeed': '0.0'
weewx[36137] DEBUG user.sdr: packet={'extraTemp1': 3.5599999999999987, 'dateTime': 1673512970, 'usUnits': 1}
weewx[36137] DEBUG user.MQTTSubscribe: (Service) data-> final packet is 2023-01-12 00:42:50 PST (1673512970): 'dateTime': '1673512970', 'extraTemp1': '3.5599999999999987', 'usUnits': '1'
weewx[36137] DEBUG user.sdr: packet={'extraTemp1': 3.5599999999999987, 'dateTime': 1673512970, 'usUnits': 1}
weewx[36137] DEBUG user.MQTTSubscribe: (Service) data-> final packet is 2023-01-12 00:42:50 PST (1673512970): 'dateTime': '1673512970', 'extraTemp1': '3.5599999999999987', 'usUnits': '1'
weewx[36137] DEBUG user.sdr: packet={'extraTemp1': 3.5599999999999987, 'dateTime': 1673512970, 'usUnits': 1}
weewx[36137] DEBUG user.MQTTSubscribe: (Service) data-> final packet is 2023-01-12 00:42:50 PST (1673512970): 'dateTime': '1673512970', 'extraTemp1': '3.5599999999999987', 'usUnits': '1'
weewx[36137] DEBUG user.MQTTSubscribe: (Service) MessageCallbackProvider data-> incoming topic: indoor/BME280_pressure, QOS: 0, retain: 0, payload: b'971.53'
weewx[36137] DEBUG user.MQTTSubscribe: (Service) TopicManager data-> incoming indoor/BME280_pressure: 'pressure': '971.53'
weewx[36137] DEBUG user.sdr: packet={'windSpeed': 0.0, 'UV': 0, 'radiation': 0, 'lux': 0, 'strikes_total': 2, 'lightning_distance': 0, 'windBatteryStatus': 0, 'dateTime': 1673512979, 'usUnits': 1}
weewx[36137] DEBUG user.MQTTSubscribe: (Service) TopicManager data-> outgoing accumulated indoor/BME280_pressure:
weewx[36137] DEBUG user.MQTTSubscribe: (Service) data-> final packet is 2023-01-12 00:42:59 PST (1673512979): 'dateTime': '1673512979', 'lightning_distance': '0', 'lightning_strike_count': '0', 'lux': '0', 'radiation': '0', 'strikes_total': '2', 'usUnits': '1', 'UV': '0', 'windBatteryStatus': '0', 'windSpeed': '0.0'
weewx[36137] DEBUG user.sdr: packet={'windSpeed': 0.0, 'UV': 0, 'radiation': 0, 'lux': 0, 'strikes_total': 2, 'lightning_distance': 0, 'windBatteryStatus': 0, 'dateTime': 1673512979, 'usUnits': 1}
weewx[36137] DEBUG user.MQTTSubscribe: (Service) TopicManager data-> outgoing accumulated indoor/BME280_pressure:
weewx[36137] DEBUG user.MQTTSubscribe: (Service) data-> final packet is 2023-01-12 00:42:59 PST (1673512979): 'dateTime': '1673512979', 'lightning_distance': '0', 'lightning_strike_count': '0', 'lux': '0', 'radiation': '0', 'strikes_total': '2', 'usUnits': '1', 'UV': '0', 'windBatteryStatus': '0', 'windSpeed': '0.0'
weewx[36137] DEBUG user.sdr: packet={'windSpeed': 0.0, 'UV': 0, 'radiation': 0, 'lux': 0, 'strikes_total': 2, 'lightning_distance': 0, 'windBatteryStatus': 0, 'dateTime': 1673512979, 'usUnits': 1}
weewx[36137] DEBUG user.MQTTSubscribe: (Service) TopicManager data-> outgoing accumulated indoor/BME280_pressure:
weewx[36137] DEBUG user.MQTTSubscribe: (Service) data-> final packet is 2023-01-12 00:42:59 PST (1673512979): 'dateTime': '1673512979', 'lightning_distance': '0', 'lightning_strike_count': '0', 'lux': '0', 'radiation': '0', 'strikes_total': '2', 'usUnits': '1', 'UV': '0', 'windBatteryStatus': '0', 'windSpeed': '0.0'
weewx[36137] DEBUG user.sdr: packet={'extraTemp2': 35.24, 'dateTime': 1673512981, 'usUnits': 1}
weewx[36137] DEBUG user.MQTTSubscribe: (Service) TopicManager data-> outgoing indoor/BME280_pressure: 'dateTime': '1673512979.6808412', 'pressure': '971.53', 'usUnits': '16'
weewx[36137] DEBUG user.MQTTSubscribe: (Service) TopicManager data-> outgoing accumulated indoor/BME280_pressure: 'dateTime': '1673512981.0', 'pressure': '28.689268755875', 'usUnits': '1'
weewx[36137] DEBUG user.MQTTSubscribe: (Service) data-> final packet is 2023-01-12 00:43:01 PST (1673512981): 'dateTime': '1673512981.0', 'extraTemp2': '35.24', 'pressure': '28.689268755875', 'usUnits': '1'
weewx[36137] DEBUG user.sdr: packet={'extraTemp2': 35.24, 'dateTime': 1673512981, 'usUnits': 1}
weewx[36137] DEBUG user.MQTTSubscribe: (Service) data-> final packet is 2023-01-12 00:43:01 PST (1673512981): 'dateTime': '1673512981', 'extraTemp2': '35.24', 'usUnits': '1'
weewx[36137] DEBUG user.sdr: packet={'extraTemp2': 35.24, 'dateTime': 1673512981, 'usUnits': 1}
weewx[36137] DEBUG user.MQTTSubscribe: (Service) data-> final packet is 2023-01-12 00:43:01 PST (1673512981): 'dateTime': '1673512981', 'extraTemp2': '35.24', 'usUnits': '1'
weewx[36137] DEBUG user.sdr: packet={'extraTemp1': 3.5599999999999987, 'dateTime': 1673512986, 'usUnits': 1}
weewx[36137] DEBUG user.MQTTSubscribe: (Service) data-> final packet is 2023-01-12 00:43:06 PST (1673512986): 'dateTime': '1673512986', 'extraTemp1': '3.5599999999999987', 'usUnits': '1'
weewx[36137] DEBUG user.sdr: packet={'extraTemp1': 3.5599999999999987, 'dateTime': 1673512986, 'usUnits': 1}
weewx[36137] DEBUG user.MQTTSubscribe: (Service) data-> final packet is 2023-01-12 00:43:06 PST (1673512986): 'dateTime': '1673512986', 'extraTemp1': '3.5599999999999987', 'usUnits': '1'
weewx[36137] DEBUG user.sdr: packet={'extraTemp1': 3.5599999999999987, 'dateTime': 1673512986, 'usUnits': 1}
weewx[36137] DEBUG user.MQTTSubscribe: (Service) data-> final packet is 2023-01-12 00:43:06 PST (1673512986): 'dateTime': '1673512986', 'extraTemp1': '3.5599999999999987', 'usUnits': '1'
weewx[36137] DEBUG user.sdr: packet={'outTemp': 40.8, 'outHumidity': 99.0, 'windSpeed': 0.0, 'strikes_total': 2, 'lightning_distance': 0, 'windBatteryStatus': 0, 'dateTime': 1673512989, 'usUnits': 1}
weewx[36137] DEBUG user.MQTTSubscribe: (Service) data-> final packet is 2023-01-12 00:43:09 PST (1673512989): 'dateTime': '1673512989', 'lightning_distance': '0', 'lightning_strike_count': '0', 'outHumidity': '99.0', 'outTemp': '40.8', 'strikes_total': '2', 'usUnits': '1', 'windBatteryStatus': '0', 'windSpeed': '0.0'
weewx[36137] DEBUG user.sdr: packet={'outTemp': 40.8, 'outHumidity': 99.0, 'windSpeed': 0.0, 'strikes_total': 2, 'lightning_distance': 0, 'windBatteryStatus': 0, 'dateTime': 1673512989, 'usUnits': 1}
weewx[36137] DEBUG user.MQTTSubscribe: (Service) data-> final packet is 2023-01-12 00:43:09 PST (1673512989): 'dateTime': '1673512989', 'lightning_distance': '0', 'lightning_strike_count': '0', 'outHumidity': '99.0', 'outTemp': '40.8', 'strikes_total': '2', 'usUnits': '1', 'windBatteryStatus': '0', 'windSpeed': '0.0'
weewx[36137] DEBUG user.sdr: packet={'outTemp': 40.8, 'outHumidity': 99.0, 'windSpeed': 0.0, 'strikes_total': 2, 'lightning_distance': 0, 'windBatteryStatus': 0, 'dateTime': 1673512989, 'usUnits': 1}
weewx[36137] DEBUG user.MQTTSubscribe: (Service) data-> final packet is 2023-01-12 00:43:09 PST (1673512989): 'dateTime': '1673512989', 'lightning_distance': '0', 'lightning_strike_count': '0', 'outHumidity': '99.0', 'outTemp': '40.8', 'strikes_total': '2', 'usUnits': '1', 'windBatteryStatus': '0', 'windSpeed': '0.0'
weewx[36137] INFO __main__: Received signal TERM (15).
weewx[36137] INFO weewx.engine: Main loop exiting. Shutting engine down.
weewx[36137] INFO weewx.engine: Shutting down StdReport thread
weewx[36137] DEBUG weewx.engine: StdReport thread has been terminated
weewx[36137] DEBUG weewx.restx: Shut down MQTT thread.
weewx[36137] DEBUG weewx.restx: Shut down OWM thread.
weewx[36137] DEBUG weewx.restx: Shut down AWEKAS thread.
weewx[36137] DEBUG weewx.restx: Shut down WOW thread.
weewx[36137] DEBUG weewx.restx: Shut down CWOP thread.
weewx[36137] DEBUG weewx.restx: Shut down PWSWeather thread.
weewx[36137] DEBUG weewx.restx: Shut down Wunderground-PWS thread.
weewx[36137] DEBUG weewx.restx: Shut down StationRegistry thread.
weewx[36137] INFO user.MQTTSubscribe: (Service) Disconnected with result code 0
weewx[36137] INFO user.sdr: shutdown process sudo /usr/bin/rtl_433 -M utc -F json -Y autolevel
weewx[36137] DEBUG user.sdr: close stdout
weewx[36137] DEBUG user.sdr: close stderr
weewx[36137] DEBUG user.sdr: shutdown stdout-thread
weewx[36137] DEBUG user.sdr: shutdown stderr-thread
weewx[36137] INFO user.sdr: shutdown complete
weewx[36137] INFO __main__: Terminating weewx version 4.9.1
weewx[36137] DEBUG __main__:     ****  Traceback (most recent call last):

weewx[36137] DEBUG __main__:     ****    File "/usr/share/weewx/weewxd", line 154, in main

weewx[36137] DEBUG __main__:     ****      engine.run()

weewx[36137] DEBUG __main__:     ****    File "/usr/share/weewx/weewx/engine.py", line 208, in run

weewx[36137] DEBUG __main__:     ****      for packet in self.console.genLoopPackets():

weewx[36137] DEBUG __main__:     ****    File "/usr/share/weewx/user/sdr.py", line 3296, in genLoopPackets

weewx[36137] DEBUG __main__:     ****      for lines in self._mgr.get_stdout():

weewx[36137] DEBUG __main__:     ****    File "/usr/share/weewx/user/sdr.py", line 282, in get_stdout

weewx[36137] DEBUG __main__:     ****      line = self.stdout_queue.get(True, 3).decode()

weewx[36137] DEBUG __main__:     ****    File "/usr/lib/python3.9/queue.py", line 180, in get

weewx[36137] DEBUG __main__:     ****      self.not_empty.wait(remaining)

weewx[36137] DEBUG __main__:     ****    File "/usr/lib/python3.9/threading.py", line 316, in wait

weewx[36137] DEBUG __main__:     ****      gotit = waiter.acquire(True, timeout)

weewx[36137] DEBUG __main__:     ****    File "/usr/share/weewx/weewxd", line 245, in sigTERMhandler

weewx[36137] DEBUG __main__:     ****      raise Terminate

weewx[36137] DEBUG __main__:     ****  Terminate

pi@ubuntu:/var/log $



On Sunday, January 8, 2023 at 2:12:58 PM UTC-8 tke...@gmail.com wrote:

Tom Keffer

unread,
Jan 12, 2023, 7:18:14 AM1/12/23
to weewx...@googlegroups.com
What this tells us is which Python executable you are using: /bin/python3. This is unusual. Usually it's /usr/bin/python3.

See which versions of Python are available:

which python3.

Try them all. For example,

/bin/python3 -c "import Cheetah"

/usr/bin/python3 -c "import Cheetah"

I suspect the problem is that you're installing into one version of python3, but executing weewxd using a different version.

-tk

Kevin Key

unread,
Jan 12, 2023, 1:24:04 PM1/12/23
to weewx-user
Thanks TK. So this is interesting:

pi@ubuntu:~ $ which python3
/usr/bin/python3
pi@ubuntu:~ $ /bin/python3 -c "import Cheetah"
pi@ubuntu:~ $ /usr/bin/python3 -c "import Cheetah"
pi@ubuntu:~ $ /usr/bin/python3 -c "import Cheetah"
pi@ubuntu:~ $ /bin/python3 -c "import Cheetah"
pi@ubuntu:~ $

pi@ubuntu:~ $ python3 -c "import sys; print('\n'.join(sys.path))"

/usr/lib/python39.zip
/usr/lib/python3.9
/usr/lib/python3.9/lib-dynload
/home/pi/.local/lib/python3.9/site-packages
/usr/lib/python3.9/site-packages

pi@ubuntu:~ $ python -c "import sys; print(sys.path)"
['', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-aarch64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages']
pi@ubuntu:~ $

pi@ubuntu:~ $ python3 -c "import sys; print(sys.path)"
['', '/usr/lib/python39.zip', '/usr/lib/python3.9', '/usr/lib/python3.9/lib-dynload', '/home/pi/.local/lib/python3.9/site-packages', '/usr/lib/python3.9/site-packages']

No errors regardless of which python3 I call. Perhaps Cheetah3 is only installed to one of them however?  Any idea as to how to clean up this dual installation mess? 

Kevin

vince

unread,
Jan 12, 2023, 1:45:38 PM1/12/23
to weewx-user
Perhaps scan your filesystem at see where it is installed today.

Here's mine from a pi4 running RaspiOS.  I know from the logs you're running ubuntu 64 bit but it should be similar...

pi@pi4:~ $ sudo find / -name Cheetah\* -print
/usr/lib/python3/dist-packages/Cheetah3-3.2.6.egg-info
/usr/lib/python3/dist-packages/Cheetah
/usr/lib/python3/dist-packages/Cheetah/__pycache__/CheetahWrapper.cpython-39.pyc
/usr/lib/python3/dist-packages/Cheetah/Tests/__pycache__/CheetahWrapper.cpython-39.pyc
/usr/lib/python3/dist-packages/Cheetah/Tests/CheetahWrapper.py
/usr/lib/python3/dist-packages/Cheetah/CheetahWrapper.py

pi@pi4:~ $ dpkg -l | grep -i cheetah
ii  python3-cheetah                      3.2.6-1+b1                       armhf        text-based template engine and Python code generator (Python 3)


Kevin Key

unread,
Jan 12, 2023, 2:46:49 PM1/12/23
to weewx...@googlegroups.com
Here's mine:

pi@ubuntu:~ $ sudo find / -name Cheetah\* -print
find: ‘/run/user/1000/gvfs’: Permission denied
/root/.cache/pip/wheels/18/b6/c2/ebcb81dbc68a104b18b8b22e5e05a76836366779c816a32476/Cheetah3-3.2.6.post1-cp39-cp39-linux_aarch64.whl
/usr/local/lib/python3.9/dist-packages/Cheetah3-3.2.6.post1.dist-info
/usr/local/lib/python3.9/dist-packages/Cheetah
/usr/local/lib/python3.9/dist-packages/Cheetah/CheetahWrapper.py
/usr/local/lib/python3.9/dist-packages/Cheetah/Tests/CheetahWrapper.py
/usr/local/lib/python3.9/dist-packages/Cheetah/Tests/__pycache__/CheetahWrapper.cpython-39.pyc
/usr/local/lib/python3.9/dist-packages/Cheetah/__pycache__/CheetahWrapper.cpython-39.pyc
/usr/lib/python3/dist-packages/Cheetah3-3.2.6.egg-info
/usr/lib/python3/dist-packages/Cheetah
/usr/lib/python3/dist-packages/Cheetah/CheetahWrapper.py
/usr/lib/python3/dist-packages/Cheetah/Tests/CheetahWrapper.py
/usr/lib/python3/dist-packages/Cheetah/Tests/__pycache__/CheetahWrapper.cpython-39.pyc
/usr/lib/python3/dist-packages/Cheetah/__pycache__/CheetahWrapper.cpython-39.pyc
/home/pi/.local/lib/python3.9/site-packages/Cheetah
/home/pi/.local/lib/python3.9/site-packages/Cheetah/CheetahWrapper.py
/home/pi/.local/lib/python3.9/site-packages/Cheetah/Tests/CheetahWrapper.py
/home/pi/.local/lib/python3.9/site-packages/Cheetah/Tests/__pycache__/CheetahWrapper.cpython-39.pyc
/home/pi/.local/lib/python3.9/site-packages/Cheetah/__pycache__/CheetahWrapper.cpython-39.pyc
/home/pi/.local/lib/python3.9/site-packages/Cheetah3-3.2.6.dist-info
pi@ubuntu:~ $

--
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/uIMSw10r9JI/unsubscribe.
To unsubscribe from this group and all its topics, send an email to weewx-user+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/weewx-user/40fe1fca-2d7f-473d-90e5-1420852573d2n%40googlegroups.com.

vince

unread,
Jan 12, 2023, 3:18:59 PM1/12/23
to weewx-user
Wow.  Seems like one from a 'make altinstall' of python, one from a dpkg, and one from a 'pip3 install --user'.   You kinda only need one.  Personally I'd use the dpkg one.

Maybe just for grins 'rename' the directories in /usr/local/lib and /home/pi/.local and see if it works.  It's already broken anyway :-)

[...Tom - for me on deb10 /bin is symlinked to /usr/bin, so that's why the debug output shows /bin/python3 although I suspect it's a bug in weewx figuring out where python is.  It's backwards in the debug output...]

Kevin Key

unread,
Jan 12, 2023, 4:46:32 PM1/12/23
to weewx...@googlegroups.com
I tried that. Still the same problems. :(

vince

unread,
Jan 12, 2023, 5:11:43 PM1/12/23
to weewx-user
At some point your time is worth more than the few dollars for another SD card.   Personally I'd start over with a new SD card and get the simulator working, then add in the RTL stuff you're using and switch to that.

Getting the os clean is the first step.  Make sure you 'apt-get update' and 'apt-get upgrade' all your packages.  It's easy to get pieces mismatched.

Kevin Key

unread,
Jan 12, 2023, 11:41:30 PM1/12/23
to weewx...@googlegroups.com
I have quite a few other things configured on this Pi 4 - including Home Assistant (which is working fine). Can you think of anything else I should check?

Thanks,

Kevin

Tom Keffer

unread,
Jan 13, 2023, 7:41:35 AM1/13/23
to weewx...@googlegroups.com
Something I don't understand: you did a Debian package install, right? If so, why are you installing Cheetah? The installer should have done that for you. Did you switch between Python 2 and Python 3?

The other area I would check is /etc/defaults/weewx. Matthew is the expert on it, but make sure it's invoking Python 3, not 2. Post it here if you need to.

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

Kevin Key

unread,
Jan 14, 2023, 5:14:55 PM1/14/23
to weewx-user
RESOLVED:

I ended up having to download the Python3, Cheetah3, and PIL tarballs and install each of them using setup.py. Installed these items via the package managers wasn't working. Doing the manual installed fixed the issues.

Kevin

Reply all
Reply to author
Forward
0 new messages