Hi Vince,
Ok, I tried and got errors so something may have changed I need to correct.
This was running correctly on weewx 4.10.2 (Ubuntu latest). I downloaded the zip file and installed the extension with weectl extension install.
```
(weewx-venv) bg@RPI5:~/weewx-data $ weectl extension list
Using configuration file /home/bg/weewx-data/weewx.conf
Extension Name Version Description
MQTTSubscribe 3.0.0-rc08Source WeeWX data from MQTT.
emoncms 0.17 Upload weather data to EmonCMS.
```
I copied the following from my old weewx.conf:
```
```
The following is a section from weewx.log at the 15 minute archival time:
```
Dec 30 15:30:15 RPI5 weewxd[2112056]: INFO weewx.manager: Added record 2024-12-30 15:30:00 EST (1735590600) to database 'weewx.sdb'
Dec 30 15:30:15 RPI5 weewxd[2112056]: INFO weewx.manager: Added record 2024-12-30 15:30:00 EST (1735590600) to daily summary in 'weewx.sdb'
Dec 30 15:30:15 RPI5 weewxd[2112056]: ERROR weewx.restx: EmonCMS: Unexpected exception of type <class 'UnicodeEncodeError'>
Dec 30 15:30:15 RPI5 weewxd[2112056]: ERROR weewx.restx: *** Traceback (most recent call last):
Dec 30 15:30:15 RPI5 python3[2112056]: Exception in thread EmonCMS:
Dec 30 15:30:15 RPI5 python3[2112056]: Traceback (most recent call last):
Dec 30 15:30:15 RPI5 python3[2112056]: File "/usr/lib/python3.11/threading.py", line 1038, in _bootstrap_inner
Dec 30 15:30:15 RPI5 python3[2112056]: self.run()
Dec 30 15:30:15 RPI5 python3[2112056]: File "/home/bg/weewx-venv/lib/python3.11/site-packages/weewx/restx.py", line 357, in run
Dec 30 15:30:15 RPI5 python3[2112056]: self.run_loop(_manager)
Dec 30 15:30:15 RPI5 python3[2112056]: File "/home/bg/weewx-venv/lib/python3.11/site-packages/weewx/restx.py", line 384, in run_loop
Dec 30 15:30:15 RPI5 python3[2112056]: self.process_record(_record, dbmanager)
Dec 30 15:30:15 RPI5 python3[2112056]: File "/home/bg/weewx-data/bin/user/emoncms.py", line 288, in process_record
Dec 30 15:30:15 RPI5 python3[2112056]: self.post_with_retries(req)
Dec 30 15:30:15 RPI5 python3[2112056]: File "/home/bg/weewx-venv/lib/python3.11/site-packages/weewx/restx.py", line 482, in post_with_retries
Dec 30 15:30:15 RPI5 python3[2112056]: _response = self.post_request(request, data)
Dec 30 15:30:15 RPI5 python3[2112056]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Dec 30 15:30:15 RPI5 python3[2112056]: File "/home/bg/weewx-venv/lib/python3.11/site-packages/weewx/restx.py", line 553, in post_request
Dec 30 15:30:15 RPI5 python3[2112056]: _response = urllib.request.urlopen(request, data=data, timeout=self.timeout)
Dec 30 15:30:15 RPI5 weewxd[2112056]: ERROR weewx.restx: *** File "/home/bg/weewx-venv/lib/python3.11/site-packages/weewx/restx.py", line 384, in run_loop
Dec 30 15:30:15 RPI5 weewxd[2112056]: ERROR weewx.restx: *** self.process_record(_record, dbmanager)
Dec 30 15:30:15 RPI5 weewxd[2112056]: ERROR weewx.restx: *** File "/home/bg/weewx-data/bin/user/emoncms.py", line 288, in process_record
Dec 30 15:30:15 RPI5 weewxd[2112056]: ERROR weewx.restx: *** self.post_with_retries(req)
Dec 30 15:30:15 RPI5 weewxd[2112056]: ERROR weewx.restx: *** File "/home/bg/weewx-venv/lib/python3.11/site-packages/weewx/restx.py", line 482, in post_with_retries
Dec 30 15:30:15 RPI5 weewxd[2112056]: ERROR weewx.restx: *** _response = self.post_request(request, data)
Dec 30 15:30:15 RPI5 weewxd[2112056]: ERROR weewx.restx: *** ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Dec 30 15:30:15 RPI5 weewxd[2112056]: ERROR weewx.restx: *** File "/home/bg/weewx-venv/lib/python3.11/site-packages/weewx/restx.py", line 553, in post_request
Dec 30 15:30:15 RPI5 weewxd[2112056]: ERROR weewx.restx: *** _response = urllib.request.urlopen(request, data=data, timeout=self.timeout)
Dec 30 15:30:15 RPI5 weewxd[2112056]: ERROR weewx.restx: *** ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Dec 30 15:30:15 RPI5 weewxd[2112056]: ERROR weewx.restx: *** File "/usr/lib/python3.11/urllib/request.py", line 216, in urlopen
Dec 30 15:30:15 RPI5 weewxd[2112056]: ERROR weewx.restx: *** return opener.open(url, data, timeout)
Dec 30 15:30:15 RPI5 weewxd[2112056]: ERROR weewx.restx: *** ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Dec 30 15:30:15 RPI5 weewxd[2112056]: ERROR weewx.restx: *** File "/usr/lib/python3.11/urllib/request.py", line 519, in open
Dec 30 15:30:15 RPI5 weewxd[2112056]: ERROR weewx.restx: *** response = self._open(req, data)
Dec 30 15:30:15 RPI5 weewxd[2112056]: ERROR weewx.restx: *** ^^^^^^^^^^^^^^^^^^^^^
Dec 30 15:30:15 RPI5 weewxd[2112056]: ERROR weewx.restx: *** File "/usr/lib/python3.11/urllib/request.py", line 536, in _open
Dec 30 15:30:15 RPI5 weewxd[2112056]: ERROR weewx.restx: *** result = self._call_chain(self.handle_open, protocol, protocol +
Dec 30 15:30:15 RPI5 weewxd[2112056]: ERROR weewx.restx: *** ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Dec 30 15:30:15 RPI5 weewxd[2112056]: ERROR weewx.restx: *** File "/usr/lib/python3.11/urllib/request.py", line 496, in _call_chain
Dec 30 15:30:15 RPI5 weewxd[2112056]: ERROR weewx.restx: *** result = func(*args)
Dec 30 15:30:15 RPI5 weewxd[2112056]: ERROR weewx.restx: *** ^^^^^^^^^^^
Dec 30 15:30:15 RPI5 weewxd[2112056]: ERROR weewx.restx: *** File "/usr/lib/python3.11/urllib/request.py", line 1377, in http_open
Dec 30 15:30:15 RPI5 weewxd[2112056]: ERROR weewx.restx: *** return self.do_open(http.client.HTTPConnection, req)
Dec 30 15:30:15 RPI5 weewxd[2112056]: ERROR weewx.restx: *** ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Dec 30 15:30:15 RPI5 weewxd[2112056]: ERROR weewx.restx: *** File "/usr/lib/python3.11/urllib/request.py", line 1348, in do_open
Dec 30 15:30:15 RPI5 weewxd[2112056]: ERROR weewx.restx: *** h.request(req.get_method(), req.selector, req.data, headers,
Dec 30 15:30:15 RPI5 weewxd[2112056]: ERROR weewx.restx: *** File "/usr/lib/python3.11/http/client.py", line 1282, in request
Dec 30 15:30:15 RPI5 weewxd[2112056]: ERROR weewx.restx: *** self._send_request(method, url, body, headers, encode_chunked)
Dec 30 15:30:15 RPI5 weewxd[2112056]: ERROR weewx.restx: *** File "/usr/lib/python3.11/http/client.py", line 1293, in _send_request
Dec 30 15:30:15 RPI5 weewxd[2112056]: ERROR weewx.restx: *** self.putrequest(method, url, **skips)
Dec 30 15:30:15 RPI5 weewxd[2112056]: ERROR weewx.restx: *** File "/usr/lib/python3.11/http/client.py", line 1131, in putrequest
Dec 30 15:30:15 RPI5 weewxd[2112056]: ERROR weewx.restx: *** self._output(self._encode_request(request))
Dec 30 15:30:15 RPI5 weewxd[2112056]: ERROR weewx.restx: *** ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Dec 30 15:30:15 RPI5 weewxd[2112056]: ERROR weewx.restx: *** File "/usr/lib/python3.11/http/client.py", line 1211, in _encode_request
Dec 30 15:30:15 RPI5 weewxd[2112056]: ERROR weewx.restx: *** return request.encode('ascii')
Dec 30 15:30:15 RPI5 weewxd[2112056]: ERROR weewx.restx: *** ^^^^^^^^^^^^^^^^^^^^^^^
Dec 30 15:30:15 RPI5 python3[2112056]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Dec 30 15:30:15 RPI5 python3[2112056]: File "/usr/lib/python3.11/urllib/request.py", line 216, in urlopen
Dec 30 15:30:15 RPI5 weewxd[2112056]: ERROR weewx.restx: *** UnicodeEncodeError: 'ascii' codec can't encode character '\xb5' in position 926: ordinal not in range(128)
Dec 30 15:30:15 RPI5 weewxd[2112056]: CRITICAL weewx.restx: EmonCMS: Thread terminating. Reason: 'ascii' codec can't encode character '\xb5' in position 926: ordinal not in range(128)
Dec 30 15:30:15 RPI5 python3[2112056]: return opener.open(url, data, timeout)
Dec 30 15:30:15 RPI5 python3[2112056]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Dec 30 15:30:15 RPI5 python3[2112056]: File "/usr/lib/python3.11/urllib/request.py", line 519, in open
Dec 30 15:30:15 RPI5 python3[2112056]: response = self._open(req, data)
Dec 30 15:30:15 RPI5 python3[2112056]: ^^^^^^^^^^^^^^^^^^^^^
Dec 30 15:30:15 RPI5 python3[2112056]: File "/usr/lib/python3.11/urllib/request.py", line 536, in _open
Dec 30 15:30:15 RPI5 python3[2112056]: result = self._call_chain(self.handle_open, protocol, protocol +
Dec 30 15:30:15 RPI5 python3[2112056]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Dec 30 15:30:15 RPI5 python3[2112056]: File "/usr/lib/python3.11/urllib/request.py", line 496, in _call_chain
Dec 30 15:30:15 RPI5 python3[2112056]: result = func(*args)
Dec 30 15:30:15 RPI5 python3[2112056]: ^^^^^^^^^^^
Dec 30 15:30:15 RPI5 python3[2112056]: File "/usr/lib/python3.11/urllib/request.py", line 1377, in http_open
Dec 30 15:30:15 RPI5 python3[2112056]: return self.do_open(http.client.HTTPConnection, req)
Dec 30 15:30:15 RPI5 python3[2112056]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Dec 30 15:30:15 RPI5 python3[2112056]: File "/usr/lib/python3.11/urllib/request.py", line 1348, in do_open
Dec 30 15:30:15 RPI5 python3[2112056]: h.request(req.get_method(), req.selector, req.data, headers,
Dec 30 15:30:15 RPI5 python3[2112056]: File "/usr/lib/python3.11/http/client.py", line 1282, in request
Dec 30 15:30:15 RPI5 python3[2112056]: self._send_request(method, url, body, headers, encode_chunked)
Dec 30 15:30:15 RPI5 python3[2112056]: File "/usr/lib/python3.11/http/client.py", line 1293, in _send_request
Dec 30 15:30:15 RPI5 python3[2112056]: self.putrequest(method, url, **skips)
Dec 30 15:30:15 RPI5 python3[2112056]: File "/usr/lib/python3.11/http/client.py", line 1131, in putrequest
Dec 30 15:30:15 RPI5 python3[2112056]: self._output(self._encode_request(request))
Dec 30 15:30:15 RPI5 python3[2112056]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Dec 30 15:30:15 RPI5 python3[2112056]: File "/usr/lib/python3.11/http/client.py", line 1211, in _encode_request
Dec 30 15:30:15 RPI5 python3[2112056]: return request.encode('ascii')
Dec 30 15:30:15 RPI5 python3[2112056]: ^^^^^^^^^^^^^^^^^^^^^^^
Dec 30 15:30:15 RPI5 python3[2112056]: UnicodeEncodeError: 'ascii' codec can't encode character '\xb5' in position 926: ordinal not in range(128)
Dec 30 15:30:15 RPI5 weewxd[2112056]: INFO weewx.restx: Wunderground-PWS: Published record 2024-12-30 15:30:00 EST (1735590600)
Dec 30 15:30:16 RPI5 weewxd[2112056]: INFO weewx.restx: PWSWeather: Published record 2024-12-30 15:30:00 EST (1735590600)
Dec 30 15:30:16 RPI5 weewxd[2112056]: ERROR weewx.cheetahgenerator: Evaluation of template /home/bg/weewx-data/skins/Standard/smartphone/radar.html.tmpl failed.
Dec 30 15:30:16 RPI5 weewxd[2112056]: ERROR weewx.cheetahgenerator: **** Ignoring template /home/bg/weewx-data/skins/Standard/smartphone/radar.html.tmpl
Dec 30 15:30:16 RPI5 weewxd[2112056]: ERROR weewx.cheetahgenerator: **** Reason: cannot find 'radar_url' while searching for 'Extras.radar_url'
Dec 30 15:30:16 RPI5 weewxd[2112056]: ERROR weewx.cheetahgenerator: **** To debug, try inserting '#errorCatcher Echo' at top of template
Dec 30 15:30:16 RPI5 weewxd[2112056]: INFO weewx.cheetahgenerator: Generated 12 files for report StandardReport in 0.73 seconds
Dec 30 15:30:16 RPI5 weewxd[2112056]: INFO weewx.imagegenerator: Generated 21 images for report StandardReport in 0.47 seconds
Dec 30 15:30:16 RPI5 weewxd[2112056]: INFO weewx.reportengine: Copied 14 files to /home/bg/weewx-data/public_html
Dec 30 15:30:16 RPI5 weewxd[2112056]: INFO weewx.cheetahgenerator: Generated 1 files for report LoopDataReport in 0.03 seconds
Dec 30 15:30:16 RPI5 weewxd[2112056]: INFO weewx.reportengine: Copied 1 files to /home/bg/weewx-data/public_html/loopdata
Dec 30 15:30:16 RPI5 weewxd[2112056]: INFO weewx.cheetahgenerator: Generated 1 files for report lastrain in 0.03 seconds
Dec 30 15:30:17 RPI5 weewxd[2112056]: INFO weewx.restx: CWOP: Published record 2024-12-30 15:30:00 EST (1735590600)
Dec 30 15:30:17 RPI5 weewxd[2112056]: INFO weewx.cheetahgenerator: Generated 2 files for report wxobs in 0.30 seconds
Dec 30 15:30:17 RPI5 weewxd[2112056]: INFO weewx.reportengine: Copied 6 files to /home/bg/weewx-data/public_html/wxobs
Dec 30 15:30:17 RPI5 weewxd[2112056]: INFO weewx.cheetahgenerator: Generated 1 files for report PurpleReport in 0.01 seconds
Dec 30 15:30:17 RPI5 weewxd[2112056]: INFO weewx.imagegenerator: Generated 2 images for report PurpleReport in 0.03 seconds
Dec 30 15:30:17 RPI5 weewxd[2112056]: INFO weewx.restx: AWEKAS: Published record 2024-12-30 15:30:00 EST (1735590600)
Dec 30 15:30:23 RPI5 weewxd[2112056]: INFO weewx.restx: WOW: Published record 2024-12-30 15:30:00 EST (1735590600)
Dec 30 15:30:37 RPI5 weewxd[2112056]: INFO weewx.reportengine: ftpgenerator: Ftp'd 34 files in 20.35 seconds
Dec 30 15:30:57 RPI5 weewxd[2112056]: ERROR weewx.restx: StationRegistry: Failed to publish record 2024-12-30 15:30:00 EST (1735590600): HTTP Error 429: TOO MANY REQUESTS
```
Thanks for any suggestions.
Cheers,
Bob