problem with ftp anc post http error 403

544 views
Skip to first unread message

Massimiliano Scarzella

unread,
Nov 11, 2021, 4:08:53 PM11/11/21
to weewx-user
Nov 11 22:03:10 raspberrypi weewx[5059] DEBUG user.sdr: lines=[]
Nov 11 22:03:10 raspberrypi weewx[5059] INFO weewx.cheetahgenerator: Generated 3 files for report ClientrawReport in 41.49 seconds
Nov 11 22:03:10 raspberrypi weewx[5059] DEBUG weewx.reportengine: Running report 'FTP'
Nov 11 22:03:10 raspberrypi weewx[5059] DEBUG weewx.reportengine: Found configuration file /home/weewx/skins/Ftp/skin.conf for report 'FTP'
Nov 11 22:03:10 raspberrypi weewx[5059] DEBUG weeutil.ftpupload: Attempting connection to ftp.sassarimeteo.altervista.org
Nov 11 22:03:11 raspberrypi weewx[5059] ERROR weewx.reportengine: Caught unrecoverable exception in generator 'weewx.reportengine.FtpGenerator'
Nov 11 22:03:11 raspberrypi weewx[5059] ERROR weewx.reportengine:         ****  'utf-8' codec can't decode byte 0xe8 in position 104: invalid continuation byte
Nov 11 22:03:11 raspberrypi weewx[5059] ERROR weewx.reportengine:         ****  Traceback (most recent call last):
Nov 11 22:03:11 raspberrypi weewx[5059] ERROR weewx.reportengine:         ****    File "/home/weewx/bin/weewx/reportengine.py", line 196, in run
Nov 11 22:03:11 raspberrypi weewx[5059] ERROR weewx.reportengine:         ****      obj.start()
Nov 11 22:03:11 raspberrypi weewx[5059] ERROR weewx.reportengine:         ****    File "/home/weewx/bin/weewx/reportengine.py", line 281, in start
Nov 11 22:03:11 raspberrypi weewx[5059] ERROR weewx.reportengine:         ****      self.run()
Nov 11 22:03:11 raspberrypi weewx[5059] ERROR weewx.reportengine:         ****    File "/home/weewx/bin/weewx/reportengine.py", line 331, in run
Nov 11 22:03:11 raspberrypi weewx[5059] ERROR weewx.reportengine:         ****      n = ftp_data.run()
Nov 11 22:03:11 raspberrypi weewx[5059] ERROR weewx.reportengine:         ****    File "/home/weewx/bin/weeutil/ftpupload.py", line 133, in run
Nov 11 22:03:11 raspberrypi weewx[5059] ERROR weewx.reportengine:         ****      ftp_server.connect(self.server, self.port)
Nov 11 22:03:11 raspberrypi weewx[5059] ERROR weewx.reportengine:         ****    File "/usr/lib/python3.9/ftplib.py", line 160, in connect
Nov 11 22:03:11 raspberrypi weewx[5059] ERROR weewx.reportengine:         ****      self.welcome = self.getresp()
Nov 11 22:03:11 raspberrypi weewx[5059] ERROR weewx.reportengine:         ****    File "/usr/lib/python3.9/ftplib.py", line 242, in getresp
Nov 11 22:03:11 raspberrypi weewx[5059] ERROR weewx.reportengine:         ****      resp = self.getmultiline()
Nov 11 22:03:11 raspberrypi weewx[5059] ERROR weewx.reportengine:         ****    File "/usr/lib/python3.9/ftplib.py", line 228, in getmultiline
Nov 11 22:03:11 raspberrypi weewx[5059] ERROR weewx.reportengine:         ****      line = self.getline()
Nov 11 22:03:11 raspberrypi weewx[5059] ERROR weewx.reportengine:         ****    File "/usr/lib/python3.9/ftplib.py", line 210, in getline
Nov 11 22:03:11 raspberrypi weewx[5059] ERROR weewx.reportengine:         ****      line = self.file.readline(self.maxline + 1)
Nov 11 22:03:11 raspberrypi weewx[5059] ERROR weewx.reportengine:         ****    File "/usr/lib/python3.9/codecs.py", line 322, in decode
Nov 11 22:03:11 raspberrypi weewx[5059] ERROR weewx.reportengine:         ****      (result, consumed) = self._buffer_decode(data, self.errors, final)
Nov 11 22:03:11 raspberrypi weewx[5059] ERROR weewx.reportengine:         ****  UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe8 in position 104: invalid continuation byte
Nov 11 22:03:11 raspberrypi weewx[5059] ERROR weewx.reportengine:         ****  Generator terminated
Nov 11 22:03:11 raspberrypi weewx[5059] DEBUG weewx.reportengine: Report 'RSYNC' not enabled. Skipping.
Nov 11 22:03:13 raspberrypi weewx[5059] DEBUG user.sdr: lines=[]
Nov 11 22:03:16 raspberrypi weewx[5059] DEBUG user.sdr: lines=[]
^C
pi@raspberrypi:/home/weewx/public_html $ sudo tail -f /var/log/syslog
Nov 11 22:04:09 raspberrypi weewx[5059] DEBUG user.sdr: lines=[]
Nov 11 22:04:13 raspberrypi weewx[5059] DEBUG user.sdr: lines=['{"time" : "2021-11-11 21:04:09", "model" : "Fineoffset-WHx080", "subtype" : 0, "id" : 12, "battery_ok" : 1, "temperature_C" : 12.700, "humidity" : 97, "wind_dir_deg" : 315, "wind_avg_km_h" : 0.000, "wind_max_km_h" : 0.000, "rain_mm" : 3.600, "mic" : "CRC"}\n', '{"time" : "2021-11-11 21:04:09", "model" : "Fineoffset-WHx080", "subtype" : 0, "id" : 12, "battery_ok" : 1, "temperature_C" : 12.700, "humidity" : 97, "wind_dir_deg" : 315, "wind_avg_km_h" : 0.000, "wind_max_km_h" : 0.000, "rain_mm" : 3.600, "mic" : "CRC"}\n']
Nov 11 22:04:13 raspberrypi weewx[5059] DEBUG user.sdr: packet={'windGust': 0.0, 'outBatteryStatus': 0, 'rain_total': 0.36, 'windSpeed': 0.0, 'windDir': 315.0, 'outHumidity': 97.0, 'outTemp': 12.7, 'dateTime': 1636664649, 'usUnits': 16}
Nov 11 22:04:13 raspberrypi weewx[5059] DEBUG user.sdr: packet={'windGust': 0.0, 'outBatteryStatus': 0, 'rain_total': 0.36, 'windSpeed': 0.0, 'windDir': 315.0, 'outHumidity': 97.0, 'outTemp': 12.7, 'dateTime': 1636664649, 'usUnits': 16}
Nov 11 22:04:13 raspberrypi weewx[5059] INFO user.rtcr: Failed to post data. Exception error message: 'HTTP Error 403: Forbidden'
Nov 11 22:04:13 raspberrypi weewx[5059] INFO user.rtcr: packet (1636664649) clientraw.txt generated in 0.16375 seconds
Nov 11 22:04:13 raspberrypi weewx[5059] INFO user.rtcr: packet (1636664649) skipped
Nov 11 22:04:16 raspberrypi weewx[5059] DEBUG user.sdr: lines=[]
Nov 11 22:04:19 raspberrypi weewx[5059] DEBUG user.sdr: lines=[]
Nov 11 22:04:22 raspberrypi weewx[5059] DEBUG user.sdr: lines=[]
Nov 11 22:04:25 raspberrypi weewx[5059] DEBUG user.sdr: lines=[]


Hi, can you help me? I'm always stuck at this point. thanks a lot

gjr80

unread,
Nov 12, 2021, 4:10:52 AM11/12/21
to weewx-user
Bit of a punt but do you have the è (e grave - lowercase e with grave accent) character anywhere in the Ftp skin.conf or the [StdReport] [[FTP]] stanza in weewx.conf or in the name/path of any of the files being ftp’d? That will likely be the source of the utf-8 error.

Gary

Massimiliano Scarzella

unread,
Nov 16, 2021, 3:14:11 PM11/16/21
to weewx-user
thanks for your reply, but after several attempts i could not find out the files with this error. I am not practical enough. Can you tell me how to find these errors? thanks a lot

Greg from Oz

unread,
Nov 16, 2021, 4:51:14 PM11/16/21
to weewx-user
Probably in this file:
/home/weewx/skins/Ftp/skin.conf 
or
/home/weewx/weewx.conf 

gjr80

unread,
Nov 17, 2021, 1:20:37 AM11/17/21
to weewx-user
I'm sorry I have not been able to look at this since my earlier post. Looking through the error trace in your first post it appears the error occurs when connecting to your FTP server but before you login to the server with your credentials. I am no great FTP expert, but before we go down any rabbit holes can you post your [[FTP]] stanza, you will find it under [StdReport] in /home/weewx/weewx.conf. Make sure you obliterate your user name and password before posting.

Regards the 403 error can you please post the [RealtimeClientraw] stanza from weewx.conf, it should not contain any sensitive info but do check before posting. Also, what version of rtcr.py do you have, you will find the version number around line 20 and again around line 187 (or perhaps down to around line 280 depending on the version) in /home/weewx/bin/user/rtcr.py.

Gary

Massimiliano Scarzella

unread,
Nov 17, 2021, 2:01:11 PM11/17/21
to weewx-user
Hi now I am attaching copies of the log, weex.conf and ftp skin.conf
i also tried to reinstall with deb version but the errors are still the same 
thanks a lot 

Log ----

pi@raspberrypi:/var/www/html/weewx $ sudo tail -f /var/log/syslog
Nov 17 19:43:55 raspberrypi weewx[6093] DEBUG user.rtcr: windrun will be updated using archive data
Nov 17 19:43:55 raspberrypi weewx[6093] DEBUG weewx.manager: Daily summary version is 4.0
Nov 17 19:43:55 raspberrypi weewx[6093] DEBUG weewx.engine: Finished loading service user.rtcr.RealtimeClientraw
Nov 17 19:43:55 raspberrypi weewx[6093] INFO __main__: Starting up weewx version 4.5.1
Nov 17 19:43:55 raspberrypi weewx[6093] DEBUG weewx.engine: Station does not support reading the time
Nov 17 19:43:55 raspberrypi weewx[6093] INFO weewx.engine: Using binding 'wx_binding' to database 'weewx.sdb'
Nov 17 19:43:55 raspberrypi weewx[6093] INFO weewx.manager: Starting backfill of daily summaries
Nov 17 19:43:55 raspberrypi weewx[6093] INFO weewx.manager: Daily summaries up to date
Nov 17 19:43:55 raspberrypi weewx[6093] INFO weewx.engine: Starting main packet loop.
Nov 17 19:43:55 raspberrypi weewx[6093] DEBUG weewx.manager: Daily summary version is 4.0
Nov 17 19:43:58 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:44:01 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:44:04 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:44:07 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:44:10 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:44:15 raspberrypi weewx[6093] DEBUG user.sdr: lines=['{"time" : "2021-11-17 18:44:12", "model" : "Fineoffset-WHx080", "subtype" : 0, "id" : 12, "battery_ok" : 1, "temperature_C" : 13.200, "humidity" : 85, "wind_dir_deg" : 90, "wind_avg_km_h" : 3.672, "wind_max_km_h" : 6.120, "rain_mm" : 18.900, "mic" : "CRC"}\n']
Nov 17 19:44:16 raspberrypi weewx[6093] DEBUG user.sdr: packet={'windGust': 6.12, 'outBatteryStatus': 0, 'rain_total': 1.89, 'windSpeed': 3.672, 'windDir': 90.0, 'outHumidity': 85.0, 'outTemp': 13.2, 'dateTime': 1637174652, 'usUnits': 16}
Nov 17 19:44:16 raspberrypi weewx[6093] INFO user.rtcr: Failed to post data. Exception error message: 'HTTP Error 403: Forbidden'
Nov 17 19:44:16 raspberrypi weewx[6093] INFO user.rtcr: packet (1637174652) clientraw.txt generated in 0.07406 seconds
Nov 17 19:44:19 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:44:22 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:44:25 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:44:28 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:44:31 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:44:34 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:44:37 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:44:40 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:44:43 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:44:46 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:44:49 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:44:52 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:44:55 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:44:58 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:45:04 raspberrypi weewx[6093] DEBUG user.sdr: lines=['{"time" : "2021-11-17 18:45:00", "model" : "Fineoffset-WHx080", "subtype" : 0, "id" : 12, "battery_ok" : 1, "temperature_C" : 13.200, "humidity" : 85, "wind_dir_deg" : 90, "wind_avg_km_h" : 3.672, "wind_max_km_h" : 4.896, "rain_mm" : 18.900, "mic" : "CRC"}\n', '{"time" : "2021-11-17 18:45:00", "model" : "Fineoffset-WHx080", "subtype" : 0, "id" : 12, "battery_ok" : 1, "temperature_C" : 13.200, "humidity" : 85, "wind_dir_deg" : 90, "wind_avg_km_h" : 3.672, "wind_max_km_h" : 4.896, "rain_mm" : 18.900, "mic" : "CRC"}\n']
Nov 17 19:45:04 raspberrypi weewx[6093] DEBUG user.sdr: packet={'windGust': 4.896, 'outBatteryStatus': 0, 'rain_total': 1.89, 'windSpeed': 3.672, 'windDir': 90.0, 'outHumidity': 85.0, 'outTemp': 13.2, 'dateTime': 1637174700, 'usUnits': 16}
Nov 17 19:45:04 raspberrypi weewx[6093] DEBUG user.sdr: packet={'windGust': 4.896, 'outBatteryStatus': 0, 'rain_total': 1.89, 'windSpeed': 3.672, 'windDir': 90.0, 'outHumidity': 85.0, 'outTemp': 13.2, 'dateTime': 1637174700, 'usUnits': 16}
Nov 17 19:45:04 raspberrypi weewx[6093] INFO user.rtcr: Failed to post data. Exception error message: 'HTTP Error 403: Forbidden'
Nov 17 19:45:04 raspberrypi weewx[6093] INFO user.rtcr: packet (1637174700) clientraw.txt generated in 0.12726 seconds
Nov 17 19:45:04 raspberrypi weewx[6093] INFO user.rtcr: packet (1637174700) skipped
Nov 17 19:45:07 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:45:10 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:45:13 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:45:16 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:45:19 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:45:22 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:45:25 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:45:28 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:45:31 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:45:34 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:45:37 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:45:40 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:45:43 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:45:46 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:45:51 raspberrypi weewx[6093] DEBUG user.sdr: lines=['{"time" : "2021-11-17 18:45:48", "model" : "Fineoffset-WHx080", "subtype" : 0, "id" : 12, "battery_ok" : 1, "temperature_C" : 13.200, "humidity" : 85, "wind_dir_deg" : 90, "wind_avg_km_h" : 3.672, "wind_max_km_h" : 6.120, "rain_mm" : 18.900, "mic" : "CRC"}\n']
Nov 17 19:45:51 raspberrypi weewx[6093] DEBUG user.sdr: packet={'windGust': 6.12, 'outBatteryStatus': 0, 'rain_total': 1.89, 'windSpeed': 3.672, 'windDir': 90.0, 'outHumidity': 85.0, 'outTemp': 13.2, 'dateTime': 1637174748, 'usUnits': 16}
Nov 17 19:45:52 raspberrypi weewx[6093] INFO user.rtcr: Failed to post data. Exception error message: 'HTTP Error 403: Forbidden'
Nov 17 19:45:52 raspberrypi weewx[6093] INFO user.rtcr: packet (1637174748) clientraw.txt generated in 0.19880 seconds
Nov 17 19:45:52 raspberrypi weewx[6093] INFO weewx.manager: Added record 2021-11-17 19:45:00 CET (1637174700) to database 'weewx.sdb'
Nov 17 19:45:52 raspberrypi weewx[6093] INFO weewx.manager: Added record 2021-11-17 19:45:00 CET (1637174700) to daily summary in 'weewx.sdb'
Nov 17 19:45:58 raspberrypi weewx[6093] INFO weewx.manager: Added record 2021-11-17 19:45:00 CET (1637174700) to database 'weewxwd.sdb'
Nov 17 19:45:58 raspberrypi weewx[6093] INFO weewx.manager: Added record 2021-11-17 19:45:00 CET (1637174700) to daily summary in 'weewxwd.sdb'
Nov 17 19:46:00 raspberrypi weewx[6093] DEBUG weewx.manager: Daily summary version is 4.0
Nov 17 19:46:00 raspberrypi weewx[6093] DEBUG weewx.reportengine: Running reports for latest time in the database.
Nov 17 19:46:00 raspberrypi weewx[6093] DEBUG weewx.reportengine: Running report 'SeasonsReport'
Nov 17 19:46:00 raspberrypi weewx[6093] DEBUG weewx.reportengine: Found configuration file /etc/weewx/skins/Seasons/skin.conf for report 'SeasonsReport'
Nov 17 19:46:02 raspberrypi weewx[6093] DEBUG weewx.cheetahgenerator: Using search list ['weewx.cheetahgenerator.Almanac', 'weewx.cheetahgenerator.Station', 'weewx.cheetahgenerator.Current', 'weewx.cheetahgenerator.Stats', 'weewx.cheetahgenerator.UnitInfo', 'weewx.cheetahgenerator.Extras', 'weewx.cheetahgenerator.JSONHelpers']
Nov 17 19:46:02 raspberrypi weewx[6093] DEBUG weewx.manager: Daily summary version is 4.0
Nov 17 19:46:03 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:46:06 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:46:09 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:46:12 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:46:15 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:46:19 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:46:22 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:46:25 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:46:28 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:46:31 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:46:34 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:46:37 raspberrypi weewx[6093] INFO weewx.cheetahgenerator: Generated 8 files for report SeasonsReport in 34.72 seconds
Nov 17 19:46:37 raspberrypi weewx[6093] DEBUG weewx.manager: Daily summary version is 4.0
Nov 17 19:46:40 raspberrypi weewx[6093] DEBUG user.sdr: lines=['{"time" : "2021-11-17 18:46:36", "model" : "Fineoffset-WHx080", "subtype" : 0, "id" : 12, "battery_ok" : 1, "temperature_C" : 13.200, "humidity" : 86, "wind_dir_deg" : 90, "wind_avg_km_h" : 3.672, "wind_max_km_h" : 4.896, "rain_mm" : 18.900, "mic" : "CRC"}\n', '{"time" : "2021-11-17 18:46:36", "model" : "Fineoffset-WHx080", "subtype" : 0, "id" : 12, "battery_ok" : 1, "temperature_C" : 13.200, "humidity" : 86, "wind_dir_deg" : 90, "wind_avg_km_h" : 3.672, "wind_max_km_h" : 4.896, "rain_mm" : 18.900, "mic" : "CRC"}\n']
Nov 17 19:46:40 raspberrypi weewx[6093] DEBUG user.sdr: packet={'windGust': 4.896, 'outBatteryStatus': 0, 'rain_total': 1.89, 'windSpeed': 3.672, 'windDir': 90.0, 'outHumidity': 86.0, 'outTemp': 13.2, 'dateTime': 1637174796, 'usUnits': 16}
Nov 17 19:46:40 raspberrypi weewx[6093] DEBUG user.sdr: packet={'windGust': 4.896, 'outBatteryStatus': 0, 'rain_total': 1.89, 'windSpeed': 3.672, 'windDir': 90.0, 'outHumidity': 86.0, 'outTemp': 13.2, 'dateTime': 1637174796, 'usUnits': 16}
Nov 17 19:46:40 raspberrypi weewx[6093] INFO user.rtcr: Failed to post data. Exception error message: 'HTTP Error 403: Forbidden'
Nov 17 19:46:40 raspberrypi weewx[6093] INFO user.rtcr: packet (1637174796) clientraw.txt generated in 0.15824 seconds
Nov 17 19:46:40 raspberrypi weewx[6093] INFO user.rtcr: packet (1637174796) skipped
Nov 17 19:46:43 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:46:44 raspberrypi weewx[6093] INFO weewx.imagegenerator: Generated 15 images for report SeasonsReport in 6.89 seconds
Nov 17 19:46:44 raspberrypi weewx[6093] INFO weewx.reportengine: Copied 5 files to /var/www/html/weewx
Nov 17 19:46:44 raspberrypi weewx[6093] DEBUG weewx.reportengine: Report 'SmartphoneReport' not enabled. Skipping.
Nov 17 19:46:44 raspberrypi weewx[6093] DEBUG weewx.reportengine: Report 'MobileReport' not enabled. Skipping.
Nov 17 19:46:44 raspberrypi weewx[6093] DEBUG weewx.reportengine: Report 'StandardReport' not enabled. Skipping.
Nov 17 19:46:44 raspberrypi weewx[6093] DEBUG weewx.reportengine: Running report 'WEEWXtagsReport'
Nov 17 19:46:44 raspberrypi weewx[6093] DEBUG weewx.reportengine: Found configuration file /etc/weewx/skins/WEEWXtags/skin.conf for report 'WEEWXtagsReport'
Nov 17 19:46:45 raspberrypi weewx[6093] DEBUG weewx.cheetahgenerator: Using search list ['weewx.cheetahgenerator.Almanac', 'weewx.cheetahgenerator.Station', 'weewx.cheetahgenerator.Current', 'weewx.cheetahgenerator.Stats', 'weewx.cheetahgenerator.UnitInfo', 'weewx.cheetahgenerator.Extras', 'weewx.cheetahgenerator.JSONHelpers', 'user.wssearchlist.MonthStats', 'user.wssearchlist.LastRainTags', 'user.wssearchlist.TimeSpanTags', 'user.wssearchlist.AvgWindTags', 'user.wssearchlist.SundryTags', 'user.wssearchlist.SkinDict', 'user.wssearchlist.HourRainTags', 'user.wssearchlist.ForToday', 'user.wssearchlist.RainThisDay', 'user.wssearchlist.RainDays', 'user.wsastro.MoonApsis', 'user.wsastro.Eclipse', 'user.wsastro.EarthApsis', 'user.wsastro.ChineseNewYear', 'user.wssearchlist.YestAlmanac', 'user.wssearchlist.TaggedStats', 'user.wssearchlist.TaggedArchiveStats', 'user.wssearchlist.ManualAverages']
Nov 17 19:46:45 raspberrypi weewx[6093] DEBUG weewx.manager: Daily summary version is 4.0
Nov 17 19:46:45 raspberrypi weewx[6093] DEBUG weewx.manager: Daily summary version is 4.0
Nov 17 19:46:46 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:46:46 raspberrypi weewx[6093] ERROR weewx.reportengine: Caught unrecoverable exception in generator 'weewx.cheetahgenerator.CheetahGenerator'
Nov 17 19:46:46 raspberrypi weewx[6093] ERROR weewx.reportengine:         ****  Unknown attribute previous_new_moon
Nov 17 19:46:46 raspberrypi weewx[6093] ERROR weewx.reportengine:         ****  Traceback (most recent call last):
Nov 17 19:46:46 raspberrypi weewx[6093] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/reportengine.py", line 196, in run
Nov 17 19:46:46 raspberrypi weewx[6093] ERROR weewx.reportengine:         ****      obj.start()
Nov 17 19:46:46 raspberrypi weewx[6093] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/reportengine.py", line 281, in start
Nov 17 19:46:46 raspberrypi weewx[6093] ERROR weewx.reportengine:         ****      self.run()
Nov 17 19:46:47 raspberrypi weewx[6093] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/cheetahgenerator.py", line 152, in run
Nov 17 19:46:47 raspberrypi weewx[6093] ERROR weewx.reportengine:         ****      ngen = self.generate(gen_dict[section_name], self.gen_ts)
Nov 17 19:46:47 raspberrypi weewx[6093] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/cheetahgenerator.py", line 222, in generate
Nov 17 19:46:47 raspberrypi weewx[6093] ERROR weewx.reportengine:         ****      ngen += self.generate(section[subsection], gen_ts)
Nov 17 19:46:47 raspberrypi weewx[6093] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/cheetahgenerator.py", line 222, in generate
Nov 17 19:46:47 raspberrypi weewx[6093] ERROR weewx.reportengine:         ****      ngen += self.generate(section[subsection], gen_ts)
Nov 17 19:46:47 raspberrypi weewx[6093] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/cheetahgenerator.py", line 310, in generate
Nov 17 19:46:47 raspberrypi weewx[6093] ERROR weewx.reportengine:         ****      searchList = self._getSearchList(encoding, timespan,
Nov 17 19:46:47 raspberrypi weewx[6093] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/cheetahgenerator.py", line 387, in _getSearchList
Nov 17 19:46:47 raspberrypi weewx[6093] ERROR weewx.reportengine:         ****      searchList += obj.get_extension_list(timespan, db_lookup)
Nov 17 19:46:47 raspberrypi weewx[6093] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/user/wssearchlist.py", line 1578, in get_extension_list
Nov 17 19:46:47 raspberrypi weewx[6093] ERROR weewx.reportengine:         ****      'ts': getattr(now_almanac, ph).raw})
Nov 17 19:46:47 raspberrypi weewx[6093] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/almanac.py", line 312, in __getattr__
Nov 17 19:46:47 raspberrypi weewx[6093] ERROR weewx.reportengine:         ****      raise AttributeError("Unknown attribute %s" % attr)
Nov 17 19:46:47 raspberrypi weewx[6093] ERROR weewx.reportengine:         ****  AttributeError: Unknown attribute previous_new_moon
Nov 17 19:46:47 raspberrypi weewx[6093] ERROR weewx.reportengine:         ****  Generator terminated
Nov 17 19:46:47 raspberrypi weewx[6093] DEBUG weewx.manager: Daily summary version is 4.0
Nov 17 19:46:49 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:46:50 raspberrypi weewx[6093] INFO weewx.imagegenerator: Generated 9 images for report WEEWXtagsReport in 3.59 seconds
Nov 17 19:46:51 raspberrypi weewx[6093] DEBUG weewx.manager: Daily summary version is 4.0
Nov 17 19:46:51 raspberrypi weewx[6093] INFO user.stackedwindrose: Generated 1 images for WEEWXtagsReport in 0.61 seconds
Nov 17 19:46:51 raspberrypi weewx[6093] DEBUG weewx.reportengine: Running report 'ClientrawReport'
Nov 17 19:46:51 raspberrypi weewx[6093] DEBUG weewx.reportengine: Found configuration file /etc/weewx/skins/Clientraw/skin.conf for report 'ClientrawReport'
Nov 17 19:46:51 raspberrypi weewx[6093] DEBUG weewx.cheetahgenerator: Using search list ['weewx.cheetahgenerator.Almanac', 'weewx.cheetahgenerator.Station', 'weewx.cheetahgenerator.Current', 'weewx.cheetahgenerator.Stats', 'weewx.cheetahgenerator.UnitInfo', 'weewx.cheetahgenerator.Extras', 'weewx.cheetahgenerator.JSONHelpers', 'user.wssearchlist.MonthStats', 'user.wssearchlist.LastRainTags', 'user.wssearchlist.TimeSpanTags', 'user.wssearchlist.SundryTags', 'user.wssearchlist.SkinDict', 'user.wssearchlist.TaggedStats', 'user.wssearchlist.TaggedArchiveStats', 'user.wssearchlist.RainDays', 'user.wssearchlist.ManualAverages']
Nov 17 19:46:51 raspberrypi weewx[6093] DEBUG weewx.manager: Daily summary version is 4.0
Nov 17 19:46:52 raspberrypi weewx[6093] DEBUG weewx.manager: Daily summary version is 4.0
Nov 17 19:46:52 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:46:55 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:46:58 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:47:01 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:47:04 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:47:07 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:47:10 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:47:13 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:47:15 raspberrypi weewx[6093] DEBUG weewx.units: Unable to convert from mbar to hPaformat
Nov 17 19:47:15 raspberrypi weewx[6093] DEBUG weewx.units: Unable to convert from mbar to hPaformat
Nov 17 19:47:16 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:47:19 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:47:22 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:47:27 raspberrypi weewx[6093] DEBUG user.sdr: lines=['{"time" : "2021-11-17 18:47:24", "model" : "Fineoffset-WHx080", "subtype" : 0, "id" : 12, "battery_ok" : 1, "temperature_C" : 13.200, "humidity" : 86, "wind_dir_deg" : 90, "wind_avg_km_h" : 3.672, "wind_max_km_h" : 6.120, "rain_mm" : 18.900, "mic" : "CRC"}\n']
Nov 17 19:47:27 raspberrypi weewx[6093] DEBUG user.sdr: packet={'windGust': 6.12, 'outBatteryStatus': 0, 'rain_total': 1.89, 'windSpeed': 3.672, 'windDir': 90.0, 'outHumidity': 86.0, 'outTemp': 13.2, 'dateTime': 1637174844, 'usUnits': 16}
Nov 17 19:47:28 raspberrypi weewx[6093] INFO user.rtcr: Failed to post data. Exception error message: 'HTTP Error 403: Forbidden'
Nov 17 19:47:28 raspberrypi weewx[6093] INFO user.rtcr: packet (1637174844) clientraw.txt generated in 0.18440 seconds
Nov 17 19:47:30 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:47:31 raspberrypi weewx[6093] INFO weewx.cheetahgenerator: Generated 3 files for report ClientrawReport in 39.32 seconds
Nov 17 19:47:31 raspberrypi weewx[6093] DEBUG weewx.reportengine: Running report 'FTP'
Nov 17 19:47:31 raspberrypi weewx[6093] DEBUG weewx.reportengine: Found configuration file /etc/weewx/skins/Ftp/skin.conf for report 'FTP'
Nov 17 19:47:31 raspberrypi weewx[6093] DEBUG weeutil.ftpupload: Attempting connection to ftp.sassarimeteo.altervista.org
Nov 17 19:47:31 raspberrypi weewx[6093] ERROR weewx.reportengine: Caught unrecoverable exception in generator 'weewx.reportengine.FtpGenerator'
Nov 17 19:47:31 raspberrypi weewx[6093] ERROR weewx.reportengine:         ****  'utf-8' codec can't decode byte 0xe8 in position 104: invalid continuation byte
Nov 17 19:47:31 raspberrypi weewx[6093] ERROR weewx.reportengine:         ****  Traceback (most recent call last):
Nov 17 19:47:31 raspberrypi weewx[6093] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/reportengine.py", line 196, in run
Nov 17 19:47:31 raspberrypi weewx[6093] ERROR weewx.reportengine:         ****      obj.start()
Nov 17 19:47:31 raspberrypi weewx[6093] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/reportengine.py", line 281, in start
Nov 17 19:47:31 raspberrypi weewx[6093] ERROR weewx.reportengine:         ****      self.run()
Nov 17 19:47:31 raspberrypi weewx[6093] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/reportengine.py", line 331, in run
Nov 17 19:47:31 raspberrypi weewx[6093] ERROR weewx.reportengine:         ****      n = ftp_data.run()
Nov 17 19:47:31 raspberrypi weewx[6093] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weeutil/ftpupload.py", line 133, in run
Nov 17 19:47:31 raspberrypi weewx[6093] ERROR weewx.reportengine:         ****      ftp_server.connect(self.server, self.port)
Nov 17 19:47:31 raspberrypi weewx[6093] ERROR weewx.reportengine:         ****    File "/usr/lib/python3.9/ftplib.py", line 160, in connect
Nov 17 19:47:31 raspberrypi weewx[6093] ERROR weewx.reportengine:         ****      self.welcome = self.getresp()
Nov 17 19:47:31 raspberrypi weewx[6093] ERROR weewx.reportengine:         ****    File "/usr/lib/python3.9/ftplib.py", line 242, in getresp
Nov 17 19:47:31 raspberrypi weewx[6093] ERROR weewx.reportengine:         ****      resp = self.getmultiline()
Nov 17 19:47:31 raspberrypi weewx[6093] ERROR weewx.reportengine:         ****    File "/usr/lib/python3.9/ftplib.py", line 228, in getmultiline
Nov 17 19:47:31 raspberrypi weewx[6093] ERROR weewx.reportengine:         ****      line = self.getline()
Nov 17 19:47:31 raspberrypi weewx[6093] ERROR weewx.reportengine:         ****    File "/usr/lib/python3.9/ftplib.py", line 210, in getline
Nov 17 19:47:31 raspberrypi weewx[6093] ERROR weewx.reportengine:         ****      line = self.file.readline(self.maxline + 1)
Nov 17 19:47:31 raspberrypi weewx[6093] ERROR weewx.reportengine:         ****    File "/usr/lib/python3.9/codecs.py", line 322, in decode
Nov 17 19:47:31 raspberrypi weewx[6093] ERROR weewx.reportengine:         ****      (result, consumed) = self._buffer_decode(data, self.errors, final)
Nov 17 19:47:31 raspberrypi weewx[6093] ERROR weewx.reportengine:         ****  UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe8 in position 104: invalid continuation byte
Nov 17 19:47:31 raspberrypi weewx[6093] ERROR weewx.reportengine:         ****  Generator terminated
Nov 17 19:47:31 raspberrypi weewx[6093] DEBUG weewx.reportengine: Report 'RSYNC' not enabled. Skipping.
Nov 17 19:47:33 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:47:36 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:47:39 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:47:43 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:47:46 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]
Nov 17 19:47:49 raspberrypi weewx[6093] DEBUG user.sdr: lines=[]

ftp skin.conf
###############################################################################
# Copyright (c) 2010 Tom Keffer <tke...@gmail.com>                           #
#                                                                             #
# FTP CONFIGURATION FILE                                                      #
#   This 'report' does not generate any files. Instead, we use the report     #
#   engine to invoke FTP, which copies files to another location.             #
###############################################################################

[Generators]
    generator_list = weewx.reportengine.FtpGenerator


weewx.conf
# WEEWX CONFIGURATION FILE
#
# Copyright (c) 2009-2021 Tom Keffer <tke...@gmail.com>
# See the file LICENSE.txt for your rights.

##############################################################################

# This section is for general configuration information.

# Set to 1 for extra debug info, otherwise comment it out or set to zero
debug = 1

# Root directory of the weewx data file hierarchy for this station
WEEWX_ROOT = /

# Whether to log successful operations
log_success = True

# Whether to log unsuccessful operations
log_failure = True

# How long to wait before timing out a socket (FTP, HTTP) connection
socket_timeout = 20

# Do not modify this. It is used when installing and updating weewx.
version = 4.5.1

##############################################################################

#   This section is for information about the station.

[Station]
    
    # Description of the station location
    location = Sassari - Sant Orsola Nord
    
    # Latitude in decimal degrees. Negative for southern hemisphere
    latitude = 40.450
    # Longitude in decimal degrees. Negative for western hemisphere.
    longitude = 8.320
    
    # Altitude of the station, with unit it is in. This is downloaded from
    # from the station if the hardware supports it.
    altitude = 140, meter
    
    # Set to type of station hardware. There must be a corresponding stanza
    # in this file with a 'driver' parameter indicating the driver to be used.
    station_type = SDR
    
    # If you have a website, you may specify an URL
    #station_url = http://www.example.com
    
    # The start of the rain year (1=January; 10=October, etc.). This is
    # downloaded from the station if the hardware supports it.
    rain_year_start = 1
    
    # Start of week (0=Monday, 6=Sunday)
    week_start = 6

##############################################################################

[SDR]
    # This section is for the software-defined radio driver.
    
    # The driver to use
    driver = user.sdr
    cmd = rtl_433 -M utc -F json
    [[sensor_map]]
        windGust = wind_gust.12.FOWHx080Packet
        outBatteryStatus = battery.12.FOWHx080Packet
        rain_total = rain_total.12.FOWHx080Packet
        windSpeed = wind_speed.12.FOWHx080Packet
        windDir = wind_dir.12.FOWHx080Packet
        outHumidity = humidity.12.FOWHx080Packet
        outTemp = temperature.12.FOWHx080Packet

# log_unknown_sensors = True
# log_unmapped_sensors = True

##############################################################################

[Simulator]
    # This section is for the weewx weather station simulator
    
    # The time (in seconds) between LOOP packets.
    loop_interval = 2.5
    
    # The simulator mode can be either 'simulator' or 'generator'.
    # Real-time simulator. Sleep between each LOOP packet.
    mode = simulator
    # Generator.  Emit LOOP packets as fast as possible (useful for testing).
    #mode = generator
    
    # The start time. Format is YYYY-mm-ddTHH:MM. If not specified, the default 
    # is to use the present time.
    #start = 2011-01-01T00:00
    
    # The driver to use:
    driver = weewx.drivers.simulator
##############################################################################

#   This section is for uploading data to Internet sites

[StdRESTful]
    
    [[StationRegistry]]
        # To register this weather station with weewx, set this to true
        register_this_station = false
    
    [[AWEKAS]]
        # This section is for configuring posts to AWEKAS.
        
        # If you wish to do this, set the option 'enable' to true,
        # and specify a username and password.
        # To guard against parsing errors, put the password in quotes.
        enable = false
        username = replace_me
        password = replace_me
    
    [[CWOP]]
        # This section is for configuring posts to CWOP.
        
        # If you wish to do this, set the option 'enable' to true,
        # and specify the station ID (e.g., CW1234).
        enable = false
        station = replace_me
    
    # If this is an APRS (radio amateur) station, uncomment
    # the following and replace with a passcode (e.g., 12345).
    #passcode = replace_me (APRS stations only)
    
    [[PWSweather]]
        # This section is for configuring posts to PWSweather.com.
        
        # If you wish to do this, set the option 'enable' to true,
        # and specify a station and password.
        # To guard against parsing errors, put the password in quotes.
        enable = false
        station = replace_me
        password = replace_me
    
    [[WOW]]
        # This section is for configuring posts to WOW.
        
        # If you wish to do this, set the option 'enable' to true,
        # and specify a station and password.
        # To guard against parsing errors, put the password in quotes.
        enable = false
        station = replace_me
        password = replace_me
    
    [[Wunderground]]
        # This section is for configuring posts to the Weather Underground.
        
        # If you wish to do this, set the option 'enable' to true,
        # and specify a station (e.g., 'KORHOODR3') and password.
        # To guard against parsing errors, put the password in quotes.
        enable = false
        station = replace_me
        password = replace_me
        
        # If you plan on using wunderfixer, set the following
        # to your API key:
        api_key = replace_me
        
        # Set the following to True to have weewx use the WU "Rapidfire"
        # protocol. Not all hardware can support it. See the User's Guide.
        rapidfire = False

##############################################################################

# Options for 'StdReport'
[StdReport]
    
    # Where the skins reside, relative to WEEWX_ROOT
    SKIN_ROOT = /etc/weewx/skins
    
    # Where the generated reports should go, relative to WEEWX_ROOT
    HTML_ROOT = /var/www/html/weewx
    
    # The database binding indicates which data should be used in reports.
    data_binding = wx_binding
    
    # Whether to log a successful operation
    log_success = True
    
    # Whether to log an unsuccessful operation
    log_failure = True
    
    # Each of the following subsections defines a report that will be run.
    # See the customizing guide to change the units, plot types and line
    # colors, modify the fonts, display additional sensor data, and other
    # customizations. Many of those changes can be made here by overriding
    # parameters, or by modifying templates within the skin itself.
    
    [[SeasonsReport]]
        # The SeasonsReport uses the 'Seasons' skin, which contains the
        # images, templates and plots for the report.
        skin = Seasons
        enable = true
    
    [[SmartphoneReport]]
        # The SmartphoneReport uses the 'Smartphone' skin, and the images and
        # files are placed in a dedicated subdirectory.
        skin = Smartphone
        enable = false
        HTML_ROOT = /var/www/html/weewx/smartphone
    
    [[MobileReport]]
        # The MobileReport uses the 'Mobile' skin, and the images and files
        # are placed in a dedicated subdirectory.
        skin = Mobile
        enable = false
        HTML_ROOT = /var/www/html/weewx/mobile
    
    [[StandardReport]]
        # This is the old "Standard" skin. By default, it is not enabled.
        skin = Standard
        enable = false
    [[WEEWXtagsReport]]
        skin = WEEWXtags
        enable = True
        [[[Units]]]
            [[[[StringFormats]]]]
                NONE = --
            [[[[TimeFormats]]]]
                date_f = %d/%m/%Y
                date_time_f = %d/%m/%Y %H:%M
    [[ClientrawReport]]
        skin = Clientraw
        enable = True
        [[[Units]]]
            [[[[StringFormats]]]]
                degree_C = %.1f
                degree_compass = %.0f
                foot = %.0f
                hPa = %.1f
                km = %.1f
                knot = %.1f
                mm = %.1f
                percent = %.0f
                uv_index = %.1f
                watt_per_meter_squared = %.0f
                NONE = --
    
    [[FTP]]
        # FTP'ing the results to a webserver is treated as just another report,
        # albeit one with an unusual report generator!
        skin = Ftp
        
        # If you wish to use FTP, set "enable" to "true", then
        # fill out the next four lines.
        # Use quotes around passwords to guard against parsing errors.
        enable = true
        user = 
        password = 
        server =                    # The ftp server name, e.g, www.myserver.org
        path = /weather    # The destination directory, e.g., /weather
        
        # Set to True for an FTP over TLS (FTPS) connection. Not all servers
        # support this.
        secure_ftp = False
        
        # To upload files from something other than what HTML_ROOT is set
        # to above, specify a different HTML_ROOT here.
        #HTML_ROOT = /var/www/html/weewx
        
        # Most FTP servers use port 21
        port = 21
        
        # Set to 1 to use passive mode, zero for active mode
        passive = 1
    
    [[RSYNC]]
        # rsync'ing to a webserver is treated as just another report
        skin = Rsync
        
        # If you wish to use rsync, you must configure passwordless ssh using
        # public/private key authentication from the user account that weewx
        # runs to the user account on the remote machine where the files
        # will be copied.
        #
        # If you wish to use rsync, set "enable" to "true", then
        # fill out server, user, and path.
        # The server should appear in your .ssh/config file.
        # The user is the username used in the identity file.
        # The path is the destination directory, such as /var/www/html/weather.
        # Be sure that the user has write permissions on the destination!
        enable = false
        server = replace_me
        user = replace_me
        path = replace_me
        
        # To upload files from something other than what HTML_ROOT is set
        # to above, specify a different HTML_ROOT here.
        #HTML_ROOT = /var/www/html/weewx
        
        # Rsync can be configured to remove files from the remote server if
        # they don't exist under HTML_ROOT locally. USE WITH CAUTION: if you
        # make a mistake in the remote path, you could could unintentionally
        # cause unrelated files to be deleted. Set to 1 to enable remote file
        # deletion, zero to allow files to accumulate remotely.
        delete = 0
    
    ####
    
    # Various options for customizing your reports.
    
    [[Defaults]]
        
        [[[Units]]]
            
            # The following section sets what unit to use for each unit group.
            # NB: The unit is always in the singular. I.e., 'mile_per_hour',
            # NOT 'miles_per_hour'
            [[[[Groups]]]]
                
                group_altitude = meter    # Options are 'foot' or 'meter'
                group_degree_day = degree_C_day    # Options are 'degree_F_day' or 'degree_C_day'
                group_distance = km    # Options are 'mile' or 'km'
                group_pressure = mbar    # Options are 'inHg', 'mmHg', 'mbar', 'hPa', or 'kPa'
                group_rain = cm    # Options are 'inch', 'cm', or 'mm'
                group_rainrate = cm_per_hour    # Options are 'inch_per_hour', 'cm_per_hour', or 'mm_per_hour'
                group_speed = km_per_hour    # Options are 'mile_per_hour', 'km_per_hour', 'knot', or 'meter_per_second'
                group_speed2 = km_per_hour2    # Options are 'mile_per_hour2', 'km_per_hour2', 'knot2', or 'meter_per_second2'
                group_temperature = degree_C    # Options are 'degree_F' or 'degree_C'
            
            # The following section sets the formatting for each type of unit.
            [[[[StringFormats]]]]
                
                centibar = %.0f
                cm = %.2f
                cm_per_hour = %.2f
                degree_C = %.1f
                degree_F = %.1f
                degree_compass = %.0f
                foot = %.0f
                hPa = %.1f
                hour = %.1f
                inHg = %.3f
                inch = %.2f
                inch_per_hour = %.2f
                km = %.1f
                km_per_hour = %.0f
                km_per_hour2 = %.1f
                knot = %.0f
                knot2 = %.1f
                kPa = %.2f
                mbar = %.1f
                meter = %.0f
                meter_per_second = %.1f
                meter_per_second2 = %.1f
                mile = %.1f
                mile_per_hour = %.0f
                mile_per_hour2 = %.1f
                mm = %.1f
                mmHg = %.1f
                mm_per_hour = %.1f
                percent = %.0f
                second = %.0f
                uv_index = %.1f
                volt = %.1f
                watt_per_meter_squared = %.0f
                NONE = "   N/A"
            
            # The following section overrides the label used for each type of unit
            [[[[Labels]]]]
                
                meter = " meter", " meters"    # You may prefer "metre".
                day = " day", " days"
                hour = " hour", " hours"
                minute = " minute", " minutes"
                second = " second", " seconds"
                NONE = ""
            
            # The following section sets the format for each time scale.
            # The values below will work in every locale, but they may not look
            # particularly attractive.
            [[[[TimeFormats]]]]
                
                hour = %H:%M
                day = %X
                week = %X (%A)
                month = %x %X
                year = %x %X
                rainyear = %x %X
                current = %x %X
                ephem_day = %X
                ephem_year = %x %X
            
            [[[[Ordinates]]]]
                
                # Ordinal directions. The last one is for no wind direction
                directions = N, NNE, NE, ENE, E, ESE, SE, SSE, S, SSW, SW, WSW, W, WNW, NW, NNW, N/A
            
            # The following section sets the base temperatures used for the
            #  calculation of heating, cooling, and growing degree-days.
            [[[[DegreeDays]]]]
                
                # Base temperature for heating days, with unit:
                heating_base = 65, degree_F
                # Base temperature for cooling days, with unit:
                cooling_base = 65, degree_F
                # Base temperature for growing days, with unit:
                growing_base = 50, degree_F
            
            # A trend takes a difference across a time period. The following
            # section sets the time period, and how big an error is allowed to
            # still be counted as the start or end of a period.
            [[[[Trend]]]]
                
                time_delta = 10800    # 3 hours
                time_grace = 300    # 5 minutes
        
        # The labels to be used for each observation type
        [[[Labels]]]
            
            # Set to hemisphere abbreviations suitable for your location:
            hemispheres = N, S, E, W
            
            # Formats to be used for latitude whole degrees, longitude whole
            # degrees, and minutes:
            latlon_formats = %02d, %03d, %05.2f
            
            # Generic labels, keyed by an observation type.
            [[[[Generic]]]]
                barometer = Barometer
                dewpoint = Dew Point
                ET = ET
                heatindex = Heat Index
                inHumidity = Inside Humidity
                inTemp = Inside Temperature
                outHumidity = Humidity
                outTemp = Outside Temperature
                radiation = Radiation
                rain = Rain
                rainRate = Rain Rate
                UV = UV Index
                windDir = Wind Direction
                windGust = Gust Speed
                windGustDir = Gust Direction
                windSpeed = Wind Speed
                windchill = Wind Chill
                windgustvec = Gust Vector
                windvec = Wind Vector
                extraTemp1 = Temperature1
                extraTemp2 = Temperature2
                extraTemp3 = Temperature3
                
                # Sensor status indicators
                
                rxCheckPercent = Signal Quality
                txBatteryStatus = Transmitter Battery
                windBatteryStatus = Wind Battery
                rainBatteryStatus = Rain Battery
                outTempBatteryStatus = Outside Temperature Battery
                inTempBatteryStatus = Inside Temperature Battery
                consBatteryVoltage = Console Battery
                heatingVoltage = Heating Battery
                supplyVoltage = Supply Voltage
                referenceVoltage = Reference Voltage
        
        [[[Almanac]]]
            
            # The labels to be used for the phases of the moon:
            moon_phases = New, Waxing crescent, First quarter, Waxing gibbous, Full, Waning gibbous, Last quarter, Waning crescent

##############################################################################

#   This service acts as a filter, converting the unit system coming from
#   the hardware to a unit system in the database.

[StdConvert]
    
    # The target_unit affects only the unit system in the database. Once
    # chosen it cannot be changed without converting the entire database.
    # Modification of target_unit after starting weewx will result in
    # corrupt data - the database will contain a mix of US and METRIC data.
    #
    # The value of target_unit does not affect the unit system for
    # reporting - reports can display US, Metric, or any combination of units.
    #
    # In most cases, target_unit should be left as the default: US
    #
    # In particular, those migrating from a standard wview installation
    # should use US since that is what the wview database contains.
    
    # DO NOT MODIFY THIS VALUE UNLESS YOU KNOW WHAT YOU ARE DOING!
    target_unit = US    # Options are 'US', 'METRICWX', or 'METRIC'

##############################################################################

#   This section can adjust data using calibration expressions.

[StdCalibrate]
    
    [[Corrections]]
        # For each type, an arbitrary calibration expression can be given.
        # It should be in the units defined in the StdConvert section.
        # Example:
        foo = foo + 0.2

##############################################################################

#   This section is for quality control checks. If units are not specified,
#   values must be in the units defined in the StdConvert section.

[StdQC]
    
    [[MinMax]]
        barometer = 26, 32.5, inHg
        pressure = 24, 34.5, inHg
        outTemp = -40, 120, degree_F
        inTemp = 10, 120, degree_F
        outHumidity = 0, 100
        inHumidity = 0, 100
        windSpeed = 0, 120, mile_per_hour
        rain = 0, 10, inch

##############################################################################


##############################################################################

#   This section controls the origin of derived values.

[StdWXCalculate]
    
    [[Calculations]]
        # How to calculate derived quantities.  Possible values are:
        #  hardware        - use the value provided by hardware
        #  software        - use the value calculated by weewx
        #  prefer_hardware - use value provide by hardware if available,
        #                      otherwise use value calculated by weewx
        
        pressure = prefer_hardware
        altimeter = prefer_hardware
        appTemp = prefer_hardware
        barometer = prefer_hardware
        cloudbase = prefer_hardware
        dewpoint = prefer_hardware
        ET = prefer_hardware
        heatindex = prefer_hardware
        humidex = prefer_hardware
        inDewpoint = prefer_hardware
        maxSolarRad = prefer_hardware
        rainRate = prefer_hardware
        windchill = prefer_hardware
        windrun = prefer_hardware
        wet_bulb = prefer_hardware
        abs_humidity = prefer_hardware, archive

##############################################################################

#   For hardware that supports it, this section controls how often the
#   onboard clock gets updated.

[StdTimeSynch]
    
    # How often to check the weather station clock for drift (in seconds)
    clock_check = 14400
    
    # How much it can drift before we will correct it (in seconds)
    max_drift = 5

##############################################################################

#   This section is for configuring the archive service.

[StdArchive]
    
    # If the station hardware supports data logging then the archive interval
    # will be downloaded from the station. Otherwise, specify it (in seconds).
    archive_interval = 300
    
    # If possible, new archive records are downloaded from the station
    # hardware. If the hardware does not support this, then new archive
    # records will be generated in software.
    # Set the following to "software" to force software record generation.
    record_generation = hardware
    
    # Whether to include LOOP data in hi/low statistics
    loop_hilo = True
    
    # The data binding used to save archive records
    data_binding = wx_binding
    
    # Whether to log successful archive operations
    log_success = True
    
    # Whether to log unsuccessful archive operations
    log_failure = True

##############################################################################


##############################################################################

#   This section binds a data store to a database.

[DataBindings]
    
    [[wx_binding]]
        # The database must match one of the sections in [Databases].
        # This is likely to be the only option you would want to change.
        database = archive_sqlite
        # The name of the table within the database
        table_name = archive
        # The manager handles aggregation of data for historical summaries
        manager = weewx.manager.DaySummaryManager
        # The schema defines the structure of the database.
        # It is *only* used when the database is created.
        schema = schemas.wview_extended.schema
    [[ws_binding]]
        database = ws_sqlite
        table_name = archive
        manager = weewx.manager.DaySummaryManager
        schema = user.wsschema.ws_schema

##############################################################################


##############################################################################

#   This section defines various databases.

[Databases]
    
    # A SQLite database is simply a single file
    [[archive_sqlite]]
        database_name = weewx.sdb
        database_type = SQLite
    
    # MySQL
    [[archive_mysql]]
        database_name = weewx
        database_type = MySQL
    [[ws_sqlite]]
        database_type = SQLite
        database_name = weewxwd.sdb
    [[ws_mysql]]
        database_type = MySQL
        database_name = weewxwd

##############################################################################

#   This section defines defaults for the different types of databases.

[DatabaseTypes]
    
    # Defaults for SQLite databases
    [[SQLite]]
        driver = weedb.sqlite
        # Directory in which the database files are located
        SQLITE_ROOT = /var/lib/weewx
    
    # Defaults for MySQL databases
    [[MySQL]]
        driver = weedb.mysql
        # The host where the database is located
        host = localhost
        # The user name for logging in to the host
        user = weewx
        # The password for the user name (quotes guard against parsing errors)
        password = weewx

##############################################################################

#   This section configures the internal weewx engine.

[Engine]
    
    # The following section specifies which services should be run and in what order.
    [[Services]]
        prep_services = weewx.engine.StdTimeSynch
        data_services = ,
        process_services = weewx.engine.StdConvert, weewx.engine.StdCalibrate, weewx.engine.StdQC, weewx.wxservices.StdWXCalculate, user.ws.WsWXCalculate
        xtype_services = weewx.wxxtypes.StdWXXTypes, weewx.wxxtypes.StdPressureCooker, weewx.wxxtypes.StdRainRater, weewx.wxxtypes.StdDelta, user.wsxtypes.StdWSXTypes
        archive_services = weewx.engine.StdArchive, user.ws.WsArchive
        restful_services = weewx.restx.StdStationRegistry, weewx.restx.StdWunderground, weewx.restx.StdPWSweather, weewx.restx.StdCWOP, weewx.restx.StdWOW, weewx.restx.StdAWEKAS
        report_services = weewx.engine.StdPrint, weewx.engine.StdReport, user.rtcr.RealtimeClientraw

##############################################################################


[WeewxSaratoga]
    # WeewxSaratoga database binding
    data_binding = ws_binding
    
    # radiation (solar insolation) level above which the sun is considered 
    # shining
    sunshine_threshold = 120
    
    [[RealtimeClientraw]]
        
        # If using an external website, configure remote_server_url to point to 
        # the post_clientraw.php script on your website like:
        #
        # To disable or use the webserver on this system, leave the entry 
        # commented out or blank.
        # remote_server_url = http://your.website.com/post_clientraw.php
        
        # min_interval sets the minimum clientraw.txt generation interval. 
        # 10 seconds is recommended for all Saratoga template users. Default 
        # is 0 seconds.
        min_interval = 10
        
        # Python date-time format strings. Format string codes as per 
        
        # Date format. Recommended entries are:
        #   date_format = %-m/%-d/%Y  # recommended for USA users
        #   date_format = %-d/%-m/%Y  # recommended for non-USA users
        date_format = %-d/%-m/%Y
        
        # Long format times (HMS). Recommended entries are:
        #   long_time_format = %-I:%M:%S_%p  # recommended for USA users
        #   long_time_format = %H:%M:%S  # recommended for non-USA users 
        long_time_format = %H:%M:%S
        
        # Short format times (HM). Recommended entries are:
        #   short_time_format = %-I:%M_%p  # recommended for USA users
        #   short_time_format = %H:%M  # recommended for non-USA users
        short_time_format = %H:%M

##############################################################################


[Accumulator]
    
    # Start WeeWX-Saratoga extractors
    [[forecastRule]]
        extractor = last
    [[forecastText]]
        accumulator = firstlast
        extractor = last

Massimiliano Scarzella

unread,
Nov 18, 2021, 9:58:18 AM11/18/21
to weewx-user
to install weewx I used this procedure, starting from:
then installation of weex deb 10 python3 from the official site, then rtl_433 and rtl-sdr from the respective official sites, then your
https://github.com/gjr80/weewx-saratoga to enter the data in my saratoga template.

ps. I did not find the rtcr.py file because now my installation is on / etc
I'm waiting for your directions Gary,
thanks a lot

I inform you that in the sd card I have the latest version of raspbian desktop for raspberry pi 1 b

gjr80

unread,
Nov 18, 2021, 9:25:26 PM11/18/21
to weewx-user
Simple one first. I can see from your log extract that you have rtcr.py from the weewx-saratoga extension, That is good enough for me, I just wanted to know which code base to look at. The problem is that you do not have pyephem installed, the templates and searchlists in weewx-saratoga should be robust enough to handle pyephem not being installed but it seems I still have some work to do in that regard. I will get that fixed, but I suggest you install pyephem using:

$ sudo apt install python3-ephem

You will need to restart WeeWX after installing pyephem. Installing pyephem is recommended when using weewx-saratoga as a lot more ephemeris related tags are now populated.

Regards your FTP error. I have setup a virtual machine here and with the same [StdReport] [[FTP]] settings as you have, though as you did not provide the server setting I have used ftp.sassarimeteo.altervista.org as per your log extract. I also used a fake user name and password. When enabled the FTP generator on my virtual machine it failed at the login stage (as would be expected - I provided fake credentials) whereas your log indicates that the FTP generator fails earlier during the establishment of the connection. This means the credentials have nothing to do with your problem (as expected) and the FTP server is not the issue (my WeeWX install had no problems with the server response). I am afraid I am at a bit of a loss, I don't use FTP so have little FTP knowledge. Given the nature of the error, perhaps it is somehow tied to your locale, I do not know, if this were case though I find it hard to believe that no one else has had a similar problem. Perhaps someone with more FTP experience can help.

Gary

vince

unread,
Nov 18, 2021, 9:56:07 PM11/18/21
to weewx-user
Gary - "UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe8 in position 104: invalid continuation byte" got me wondering if that locale is not installed/built on this raspi perhaps.  What does 'locale' return, and which locales are installed via raspi-config ?

Massimiliano Scarzella

unread,
Nov 19, 2021, 4:45:10 AM11/19/21
to weewx-user
The same problem thai I have in this example:
with the document for resolution:
but I don't think I'm able to understand, I don't have the necessary knowledge unfortunately.
thanks gary, today i try to install pyephem
Message has been deleted

Tom Keffer

unread,
Nov 19, 2021, 8:14:09 AM11/19/21
to weewx-user
The FTP server at altervista.org is returning results using the 'latin-1' encoding, instead of the far more common 'utf-8'.

To fix, go into /home/weewx/bin/weeutil/ftpupload.py and change this

                log.debug("Attempting connection to %s", self.server)
                ftp_server = ftplib.FTP()

to this

                log.debug("Attempting connection to %s", self.server)
                ftp_server = ftplib.FTP(encoding='latin-1')

See if that makes a difference.


--
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/478b232a-6209-4f25-abd3-1ce5b4968893n%40googlegroups.com.

Massimiliano Scarzella

unread,
Nov 19, 2021, 12:20:24 PM11/19/21
to weewx-user

Perfect, the ftp upload problem was SOLVED using Tom's solution and the ephemeris problem SOLVED with Gary's solution, thanks to both. Only this problem remains in the log: Nov 19 18:05:05 raspberrypi weewx [1197] INFO user.rtcr: Failed to post data. Exception error message: 'HTTP Error 403: Forbidden' which refers to the [[RealtimeClientraw]] what is missing? In the / etc / weewx version where is the rtcr.py file located? Thanks again

vince

unread,
Nov 19, 2021, 1:03:40 PM11/19/21
to weewx-user
On Friday, November 19, 2021 at 9:20:24 AM UTC-8 scarz...@gmail.com wrote:

Perfect, the ftp upload problem was SOLVED using Tom's solution and the ephemeris problem SOLVED with Gary's solution, thanks to both. Only this problem remains in the log: Nov 19 18:05:05 raspberrypi weewx [1197] INFO user.rtcr: Failed to post data. Exception error message: 'HTTP Error 403: Forbidden' which refers to the [[RealtimeClientraw]] what is missing?

That error tells me that the webserver is not configured to permit the HTTP POST from the weewx computer.    How to do that depends on which webserver you are running and how you have it configured.   I would expect the default setting is to deny this, so you probably need to open something up in your webserver configuration.
 
In the / etc / weewx version where is the rtcr.py file located?

Not understanding why you'd want to look for that when you're getting a permission denied from your webserver.

Try "find / -name rtcr.py -print" for the Linux way to find it.
But to answer, the extension puts it in the same place all other extension executables go.... /usr/share/weewx/user



Massimiliano Scarzella

unread,
Nov 19, 2021, 3:09:34 PM11/19/21
to weewx-user

Thanks Vince. I don't know of the Http post so I can't fix it. I can tell you that by clicking on the post_clientraw.php file the answer is 405 Method Not Allowed, that is 405 - Method Not Allowed for GET or HEAD request but I can't solve. 

Tom Keffer

unread,
Nov 19, 2021, 4:10:03 PM11/19/21
to weewx-user
Massimiliano,

I've fixed this in commit fd6d9a, which offers a new option "ftp_encoding", where you can specify an alternative encoding.

Could you replace your copy of ftplib.py with the new version, which is attached. Then in your [[FTP]] section, add

[[FTP]]
    # (Other options as before)
    ftp_encoding = latin-1

Thanks for testing this.

-tk



--
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.
ftpupload.py

vince

unread,
Nov 19, 2021, 4:11:51 PM11/19/21
to weewx-user
On Friday, November 19, 2021 at 12:09:34 PM UTC-8 scarz...@gmail.com wrote:
Thanks Vince. I don't know of the Http post so I can't fix it. I can tell you that by clicking on the post_clientraw.php file the answer is 405 Method Not Allowed, that is 405 - Method Not Allowed for GET or HEAD request but I can't solve.

We'd need to know which webserver software www.sassarimeteo.altervista.org  is running, and we'd to see it's configuration to be able to help.

Is this your site ?   It looks like it might be behind cloudfare but it's a little hard to tell remotely.
 

gjr80

unread,
Nov 19, 2021, 5:05:19 PM11/19/21
to weewx-user
Hang, before we go down too many rabbit holes why don't we look at a few basics on the web server and see if there are any clues there. post-clientraw.php is a very basic script that accepts a file via HTTP POST and saves it to the web server. 403 is suggestive of a permissions error; what permissions/ownership exist on post-clientraw.php and it's owning directory? They should be 755. Do any relevant errors show in the web server error log?

Gary

vince

unread,
Nov 19, 2021, 5:28:15 PM11/19/21
to weewx-user
yes - same thing I was saying.

Tell us the configuration and show us the logs from the webserver.

Massimiliano Scarzella

unread,
Nov 20, 2021, 2:45:30 AM11/20/21
to weewx-user
I did as you told me but now I have the same mistake again. I replaced the file and added to the weew.conf file in the ftp section. before the change it worked

Massimiliano Scarzella

unread,
Nov 20, 2021, 3:32:40 AM11/20/21
to weewx-user
ok, one thing at a time: I replaced the ftpupload.py file as required and added
[[FTP]] # (Other options as before) ftp_encoding = latin-1 to weew.conf but it gave me the same initial error.
then I edited the ftpupload.py file with
log.debug ("Attempting connection to% s", self.server) ftp_server = ftplib.FTP (encoding = 'latin-1')
and it is restarted. Now works. For this I await instructions.

Massimiliano Scarzella

unread,
Nov 20, 2021, 3:40:12 AM11/20/21
to weewx-user
second thing: altervista is a free hosting so I don't know if I can have the log. I can send you the logs of the check-fetch-times.php file which is as follows:
_____________________________________________________________________________________________________
check-fetch-times.php Version 1.43 - 14-May-2021
Notice: php_uname() has been disabled for security reasons in /membri/sassarimeteo/check-fetch-times.php on line 1624
Website PHP information

Webserver OS:
PHP Version: 7.3.25 built for Linux
PHP cmd location: /usr/local/php73-fcgi/bin/php
Document root: /var/www/html
Template root: /membri/sassarimeteo
allow_url_fopen = ON
allow_url_include = off
Stream support for http is available
Stream support for https is available
Streams supported: compress.zlib, data, file, ftp, ftps, glob, http, https, phar, php, zip
Socket transports: ssl, tcp, tls, tlsv1.0, tlsv1.1, tlsv1.2, udg, udp, unix

Checking access to key websites for your template set

This script will check the load times and the ability to save cache files for the included support scripts with your template package.

Included Settings.php time=0.002 secs.

Using lang=en as default for testing

--checking UV Forecast from temis.nl -- Using Settings.php $SITE['UVscript'] entry for test. URL: https://www.temis.nl/uvradiation/nrt/uvindex.php?lon=8.32&lat=40.45 Cache: ./cache/uv-forecast.txt curl fetching 'https://www.temis.nl/uvradiation/nrt/uvindex.php?lon=8.32&lat=40.45' HTTP stats: RC=200 Times: dns=0.000 conn=0.000 pxfer=0.145 get=0.283 total=0.428 secs RC=200, bytes=6419 Wrote 6419 bytes to ./cache/uv-forecast.txt successfully. Test was SUCCESSFUL. --end UV Forecast from temis.nl check -- --checking Aerisweather Forecast for Lat/Long -- Using first entry in Settings.php $SITE['AWforecasts'] for test. Aerisweather test bypassed .. $SITE['AWAPIkey'] and/or $SITE['AWAPIsecret']not configured. --checking METEOalarm warning URL -- Using Settings.php $SITE['EUwarningURL'] entry for test. URL: http://www.meteoalarm.eu/index3.php?area=DK004&day=0&lang=en_UK Cache: ./cache/meteoalarm-en.txt curl fetching 'http://www.meteoalarm.eu/index3.php?area=DK004&day=0&lang=en_UK' HTTP stats: RC=500 Times: dns=0.000 conn=0.000 pxfer=0.000 get=25.107 total=25.107 secs headers returned: HTTP/1.0 500 Can't connect to www.meteoalarm.eu:80 Date: Sat, 20 Nov 2021 08:34:46 GMT Server: Apache Content-Type: text/plain RC=500, bytes=240 ------------ Headers returned: HTTP/1.0 500 Can't connect to www.meteoalarm.eu:80 Date: Sat, 20 Nov 2021 08:34:46 GMT Server: Apache Content-Type: text/plai ------------ Skipped cache write test to ./cache/meteoalarm-en.txt file. Test was NOT successful. --end METEOalarm warning URL check -- Total time taken = 0.002 secs. Elapsed 25 seconds. PHP Version 7.3.25 Memory post_max_size 32M bytes. Memory usage 983480 bytes. Memory peak usage 1173832 bytes. 
________________________________________________________________________________________________

this is the software information

 Server del Database
  • Server: Localhost via UNIX socket
  • Tipo di server: MySQL
  • Versione del server: 8.0.21 - Source distribution
  • Versione protocollo: 10
  • Utente: sassarimeteo@localhost
  • Codifica caratteri del server: UTF-8 Unicode (utf8)
Web server
  • Apache
  • Versione del client del database: libmysql - mysqlnd 5.0.11-dev - 20120503 - $Id: 
  • Estensione PHP: mysqli
_______________________________________________

if necessary I can send the information of the htaccess file 

Massimiliano Scarzella

unread,
Nov 20, 2021, 3:46:25 AM11/20/21
to weewx-user
I changed authorization to clientraw.php 777

Tom Keffer

unread,
Nov 20, 2021, 8:29:04 AM11/20/21
to weewx-user
When you added 

ftp_encoding = latin-1

Did you put it in the same [[FTP]] section you already have? When you're done, the results should look like this:

[StdReport]

    ... options for other reports

    [[FTP]]
        skin = Ftp
        enable = true
        user = your user name
        password = your password
        server = your server name
        path = /weather
        passive = 1
        ftp_encoding = latin-1


        

Massimiliano Scarzella

unread,
Nov 20, 2021, 8:38:54 AM11/20/21
to weewx-user
here it is,

[[FTP]]
# FTP'ing the results to a webserver is treated as just another report,
# albeit one with an unusual report generator!
skin = Ftp

# If you wish to use FTP, set "enable" to "true", then
# fill out the next four lines.
# Use quotes around passwords to guard against parsing errors.
enable = true
user = ''
password = ''
server = ftp.sassarimeteo.altervista.org    # The ftp server name, e.g, www.myserver.org
path = /    # The destination directory, e.g., /weather

# Set to True for an FTP over TLS (FTPS) connection. Not all servers
# support this.
secure_ftp = False

# To upload files from something other than what HTML_ROOT is set
# to above, specify a different HTML_ROOT here.
HTML_ROOT = /var/www/html/weewx

# Most FTP servers use port 21
port = 21

# Set to 1 to use passive mode, zero for active mode
passive = 1

# (Other options as before)
ftp_encoding = latin-1


vince

unread,
Nov 20, 2021, 1:11:32 PM11/20/21
to weewx-user
On Saturday, November 20, 2021 at 12:46:25 AM UTC-8 scarz...@gmail.com wrote:
I changed authorization to clientraw.php 777


Making any file mode 777 on an Internet facing computer is a very bad idea.
Please don't do that.

You could make it 755 or even 555 to be very safe.
 
Message has been deleted

Massimiliano Scarzella

unread,
Nov 22, 2021, 8:33:37 AM11/22/21
to weewx-user
now i have this error: can you help me please?  

pi@raspberrypi:~ $ sudo tail -f /var/log/syslog
Nov 22 14:29:21 raspberrypi weewx[3943] DEBUG user.sdr: lines=[]
Nov 22 14:29:24 raspberrypi weewx[3943] DEBUG user.sdr: lines=[]
Nov 22 14:29:27 raspberrypi weewx[3943] DEBUG user.sdr: lines=[]
Nov 22 14:29:30 raspberrypi weewx[3943] DEBUG user.sdr: lines=[]
Nov 22 14:29:33 raspberrypi weewx[3943] DEBUG user.sdr: lines=[]
Nov 22 14:29:36 raspberrypi weewx[3943] DEBUG user.sdr: lines=[]
Nov 22 14:29:39 raspberrypi weewx[3943] DEBUG user.sdr: lines=[]
Nov 22 14:29:42 raspberrypi weewx[3943] DEBUG user.sdr: lines=[]
Nov 22 14:29:45 raspberrypi weewx[3943] DEBUG user.sdr: lines=[]
Nov 22 14:29:48 raspberrypi weewx[3943] DEBUG user.sdr: lines=[]
Nov 22 14:29:51 raspberrypi weewx[3943] DEBUG user.sdr: lines=[]
Nov 22 14:29:54 raspberrypi weewx[3943] DEBUG user.sdr: lines=[]
Nov 22 14:29:57 raspberrypi weewx[3943] DEBUG user.sdr: lines=[]
Nov 22 14:30:00 raspberrypi weewx[3943] DEBUG user.sdr: lines=[]
Nov 22 14:30:03 raspberrypi weewx[3943] DEBUG user.sdr: lines=[]
Nov 22 14:30:06 raspberrypi weewx[3943] DEBUG user.sdr: lines=[]
Nov 22 14:30:09 raspberrypi weewx[3943] DEBUG user.sdr: lines=[]
Nov 22 14:30:12 raspberrypi weewx[3943] DEBUG user.sdr: lines=[]
Nov 22 14:30:15 raspberrypi weewx[3943] DEBUG user.sdr: lines=[]
Nov 22 14:30:18 raspberrypi weewx[3943] DEBUG user.sdr: lines=[]
Nov 22 14:30:21 raspberrypi weewx[3943] DEBUG user.sdr: lines=[]
Nov 22 14:30:24 raspberrypi weewx[3943] DEBUG user.sdr: lines=[]
Nov 22 14:30:27 raspberrypi weewx[3943] DEBUG user.sdr: lines=[]
Nov 22 14:30:30 raspberrypi weewx[3943] DEBUG user.sdr: lines=[]
Nov 22 14:30:33 raspberrypi weewx[3943] DEBUG user.sdr: lines=[]
Nov 22 14:30:36 raspberrypi weewx[3943] DEBUG user.sdr: lines=[]
Nov 22 14:30:42 raspberrypi weewx[3943] DEBUG user.sdr: lines=['{"time" : "2021-11-22 13:30:38", "model" : "Fineoffset-WHx080", "subtype" : 0, "id" : 12, "battery_ok" : 1, "temperature_C" : 16.400, "humidity" : 81, "wind_dir_deg" : 135, "wind_avg_km_h" : 7.344, "wind_max_km_h" : 12.240, "rain_mm" : 30.000, "mic" : "CRC"}\n']
Nov 22 14:30:42 raspberrypi weewx[3943] DEBUG user.sdr: packet={'windGust': 12.24, 'outBatteryStatus': 0, 'rain_total': 3.0, 'windSpeed': 7.344, 'windDir': 135.0, 'outHumidity': 81.0, 'outTemp': 16.4, 'dateTime': 1637587838, 'usUnits': 16}
Nov 22 14:30:42 raspberrypi weewx[3943] INFO user.rtcr: packet (1637587838) clientraw.txt generated in 0.15354 seconds
Nov 22 14:30:43 raspberrypi weewx[3943] INFO weewx.manager: Added record 2021-11-22 14:30:00 CET (1637587800) to database 'weewx.sdb'
Nov 22 14:30:43 raspberrypi weewx[3943] INFO weewx.manager: Added record 2021-11-22 14:30:00 CET (1637587800) to daily summary in 'weewx.sdb'
Nov 22 14:30:48 raspberrypi weewx[3943] INFO weewx.manager: Added record 2021-11-22 14:30:00 CET (1637587800) to database 'weewxwd.sdb'
Nov 22 14:30:48 raspberrypi weewx[3943] INFO weewx.manager: Added record 2021-11-22 14:30:00 CET (1637587800) to daily summary in 'weewxwd.sdb'
Nov 22 14:30:51 raspberrypi weewx[3943] DEBUG weewx.manager: Daily summary version is 4.0
Nov 22 14:30:51 raspberrypi weewx[3943] DEBUG weewx.reportengine: Running reports for latest time in the database.
Nov 22 14:30:51 raspberrypi weewx[3943] DEBUG weewx.reportengine: Running report 'SeasonsReport'
Nov 22 14:30:51 raspberrypi weewx[3943] DEBUG weewx.reportengine: Found configuration file /etc/weewx/skins/Seasons/skin.conf for report 'SeasonsReport'
Nov 22 14:30:52 raspberrypi weewx[3943] DEBUG weewx.cheetahgenerator: Using search list ['weewx.cheetahgenerator.Almanac', 'weewx.cheetahgenerator.Station', 'weewx.cheetahgenerator.Current', 'weewx.cheetahgenerator.Stats', 'weewx.cheetahgenerator.UnitInfo', 'weewx.cheetahgenerator.Extras', 'weewx.cheetahgenerator.JSONHelpers']
Nov 22 14:30:52 raspberrypi weewx[3943] DEBUG weewx.manager: Daily summary version is 4.0
Nov 22 14:30:54 raspberrypi weewx[3943] DEBUG user.sdr: lines=[]
Nov 22 14:30:57 raspberrypi weewx[3943] DEBUG user.sdr: lines=[]
Nov 22 14:31:00 raspberrypi weewx[3943] DEBUG user.sdr: lines=[]
Nov 22 14:31:03 raspberrypi weewx[3943] DEBUG user.sdr: lines=[]
Nov 22 14:31:06 raspberrypi weewx[3943] INFO weewx.cheetahgenerator: Generated 8 files for report SeasonsReport in 13.75 seconds
Nov 22 14:31:06 raspberrypi weewx[3943] DEBUG weewx.manager: Daily summary version is 4.0
Nov 22 14:31:06 raspberrypi weewx[3943] DEBUG user.sdr: lines=[]
Nov 22 14:31:09 raspberrypi weewx[3943] DEBUG user.sdr: lines=[]
Nov 22 14:31:12 raspberrypi weewx[3943] INFO weewx.imagegenerator: Generated 15 images for report SeasonsReport in 6.41 seconds
Nov 22 14:31:12 raspberrypi weewx[3943] INFO weewx.reportengine: Copied 0 files to /var/www/html/weewx
Nov 22 14:31:12 raspberrypi weewx[3943] DEBUG weewx.reportengine: Report 'SmartphoneReport' not enabled. Skipping.
Nov 22 14:31:12 raspberrypi weewx[3943] DEBUG weewx.reportengine: Report 'MobileReport' not enabled. Skipping.
Nov 22 14:31:12 raspberrypi weewx[3943] DEBUG weewx.reportengine: Report 'StandardReport' not enabled. Skipping.
Nov 22 14:31:12 raspberrypi weewx[3943] DEBUG weewx.reportengine: Running report 'WEEWXtagsReport'
Nov 22 14:31:12 raspberrypi weewx[3943] DEBUG user.sdr: lines=[]
Nov 22 14:31:12 raspberrypi weewx[3943] DEBUG weewx.reportengine: Found configuration file /etc/weewx/skins/WEEWXtags/skin.conf for report 'WEEWXtagsReport'
Nov 22 14:31:13 raspberrypi weewx[3943] DEBUG weewx.cheetahgenerator: Using search list ['weewx.cheetahgenerator.Almanac', 'weewx.cheetahgenerator.Station', 'weewx.cheetahgenerator.Current', 'weewx.cheetahgenerator.Stats', 'weewx.cheetahgenerator.UnitInfo', 'weewx.cheetahgenerator.Extras', 'weewx.cheetahgenerator.JSONHelpers', 'user.wssearchlist.MonthStats', 'user.wssearchlist.LastRainTags', 'user.wssearchlist.TimeSpanTags', 'user.wssearchlist.AvgWindTags', 'user.wssearchlist.SundryTags', 'user.wssearchlist.SkinDict', 'user.wssearchlist.HourRainTags', 'user.wssearchlist.ForToday', 'user.wssearchlist.RainThisDay', 'user.wssearchlist.RainDays', 'user.wsastro.MoonApsis', 'user.wsastro.Eclipse', 'user.wsastro.EarthApsis', 'user.wsastro.ChineseNewYear', 'user.wssearchlist.YestAlmanac', 'user.wssearchlist.TaggedStats', 'user.wssearchlist.TaggedArchiveStats', 'user.wssearchlist.ManualAverages']
Nov 22 14:31:13 raspberrypi weewx[3943] DEBUG weewx.manager: Daily summary version is 4.0
Nov 22 14:31:13 raspberrypi weewx[3943] DEBUG weewx.manager: Daily summary version is 4.0
Nov 22 14:31:15 raspberrypi weewx[3943] DEBUG user.sdr: lines=[]
Nov 22 14:31:18 raspberrypi weewx[3943] DEBUG user.sdr: lines=[]
Nov 22 14:31:21 raspberrypi weewx[3943] DEBUG user.sdr: lines=[]
Nov 22 14:31:24 raspberrypi weewx[3943] DEBUG user.sdr: lines=[]
Nov 22 14:31:24 raspberrypi weewx[3943] INFO weewx.cheetahgenerator: Generated 1 files for report WEEWXtagsReport in 11.81 seconds
Nov 22 14:31:24 raspberrypi weewx[3943] DEBUG weewx.manager: Daily summary version is 4.0
Nov 22 14:31:27 raspberrypi weewx[3943] DEBUG user.sdr: lines=[]
Nov 22 14:31:29 raspberrypi weewx[3943] INFO weewx.imagegenerator: Generated 9 images for report WEEWXtagsReport in 4.95 seconds
Nov 22 14:31:29 raspberrypi weewx[3943] DEBUG weewx.manager: Daily summary version is 4.0
Nov 22 14:31:30 raspberrypi weewx[3943] INFO user.stackedwindrose: Generated 1 images for WEEWXtagsReport in 0.60 seconds
Nov 22 14:31:30 raspberrypi weewx[3943] DEBUG weewx.reportengine: Running report 'ClientrawReport'
Nov 22 14:31:30 raspberrypi weewx[3943] DEBUG weewx.reportengine: Found configuration file /etc/weewx/skins/Clientraw/skin.conf for report 'ClientrawReport'
Nov 22 14:31:30 raspberrypi weewx[3943] DEBUG weewx.cheetahgenerator: Using search list ['weewx.cheetahgenerator.Almanac', 'weewx.cheetahgenerator.Station', 'weewx.cheetahgenerator.Current', 'weewx.cheetahgenerator.Stats', 'weewx.cheetahgenerator.UnitInfo', 'weewx.cheetahgenerator.Extras', 'weewx.cheetahgenerator.JSONHelpers', 'user.wssearchlist.MonthStats', 'user.wssearchlist.LastRainTags', 'user.wssearchlist.TimeSpanTags', 'user.wssearchlist.SundryTags', 'user.wssearchlist.SkinDict', 'user.wssearchlist.TaggedStats', 'user.wssearchlist.TaggedArchiveStats', 'user.wssearchlist.RainDays', 'user.wssearchlist.ManualAverages']
Nov 22 14:31:30 raspberrypi weewx[3943] DEBUG user.sdr: lines=[]
Nov 22 14:31:30 raspberrypi weewx[3943] DEBUG weewx.manager: Daily summary version is 4.0
Nov 22 14:31:31 raspberrypi weewx[3943] DEBUG weewx.manager: Daily summary version is 4.0
Nov 22 14:31:33 raspberrypi weewx[3943] DEBUG user.sdr: lines=[]
Nov 22 14:31:35 raspberrypi weewx[3943] DEBUG weewx.units: Unable to convert from mbar to hPaformat
Nov 22 14:31:36 raspberrypi weewx[3943] DEBUG weewx.cheetahgenerator: Skip 'clientrawhour.txt': last_mod=1637587674.943399 age=221.55380201339722 stale=540
Nov 22 14:31:36 raspberrypi weewx[3943] DEBUG weewx.cheetahgenerator: Skip 'clientrawdaily.txt': last_mod=1637587682.0830753 age=214.43250489234924 stale=540
Nov 22 14:31:36 raspberrypi weewx[3943] INFO weewx.cheetahgenerator: Generated 1 files for report ClientrawReport in 5.85 seconds
Nov 22 14:31:36 raspberrypi weewx[3943] DEBUG weewx.reportengine: Running report 'FTP'
Nov 22 14:31:36 raspberrypi weewx[3943] DEBUG weewx.reportengine: Found configuration file /etc/weewx/skins/Ftp/skin.conf for report 'FTP'
Nov 22 14:31:36 raspberrypi weewx[3943] DEBUG weeutil.ftpupload: Attempting connection to ftp.sassarimeteo.altervista.org'
Nov 22 14:31:36 raspberrypi weewx[3943] ERROR weewx.reportengine: ftpgenerator: (0): caught exception '<class 'socket.gaierror'>': [Errno -2] Nome o servizio sconosciuto
Nov 22 14:31:36 raspberrypi weewx[3943] ERROR weewx.reportengine:         ****  Traceback (most recent call last):
Nov 22 14:31:36 raspberrypi weewx[3943] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/reportengine.py", line 331, in run
Nov 22 14:31:36 raspberrypi weewx[3943] ERROR weewx.reportengine:         ****      n = ftp_data.run()
Nov 22 14:31:36 raspberrypi weewx[3943] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weeutil/ftpupload.py", line 138, in run
Nov 22 14:31:36 raspberrypi weewx[3943] ERROR weewx.reportengine:         ****      ftp_server.connect(self.server, self.port)
Nov 22 14:31:36 raspberrypi weewx[3943] DEBUG user.sdr: lines=[]
Nov 22 14:31:36 raspberrypi weewx[3943] ERROR weewx.reportengine:         ****    File "/usr/lib/python3.9/ftplib.py", line 156, in connect
Nov 22 14:31:36 raspberrypi weewx[3943] ERROR weewx.reportengine:         ****      self.sock = socket.create_connection((self.host, self.port), self.timeout,
Nov 22 14:31:36 raspberrypi weewx[3943] ERROR weewx.reportengine:         ****    File "/usr/lib/python3.9/socket.py", line 822, in create_connection
Nov 22 14:31:36 raspberrypi weewx[3943] ERROR weewx.reportengine:         ****      for res in getaddrinfo(host, port, 0, SOCK_STREAM):
Nov 22 14:31:36 raspberrypi weewx[3943] ERROR weewx.reportengine:         ****    File "/usr/lib/python3.9/socket.py", line 953, in getaddrinfo
Nov 22 14:31:36 raspberrypi weewx[3943] ERROR weewx.reportengine:         ****      for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
Nov 22 14:31:36 raspberrypi weewx[3943] ERROR weewx.reportengine:         ****  socket.gaierror: [Errno -2] Nome o servizio sconosciuto
Nov 22 14:31:36 raspberrypi weewx[3943] DEBUG weeutil.ftpupload: Attempting connection to ftp.sassarimeteo.altervista.org'
Nov 22 14:31:36 raspberrypi weewx[3943] ERROR weewx.reportengine: ftpgenerator: (1): caught exception '<class 'socket.gaierror'>': [Errno -2] Nome o servizio sconosciuto
Nov 22 14:31:36 raspberrypi weewx[3943] ERROR weewx.reportengine:         ****  Traceback (most recent call last):
Nov 22 14:31:36 raspberrypi weewx[3943] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/reportengine.py", line 331, in run
Nov 22 14:31:36 raspberrypi weewx[3943] ERROR weewx.reportengine:         ****      n = ftp_data.run()
Nov 22 14:31:36 raspberrypi weewx[3943] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weeutil/ftpupload.py", line 138, in run
Nov 22 14:31:36 raspberrypi weewx[3943] ERROR weewx.reportengine:         ****      ftp_server.connect(self.server, self.port)
Nov 22 14:31:36 raspberrypi weewx[3943] ERROR weewx.reportengine:         ****    File "/usr/lib/python3.9/ftplib.py", line 156, in connect
Nov 22 14:31:36 raspberrypi weewx[3943] ERROR weewx.reportengine:         ****      self.sock = socket.create_connection((self.host, self.port), self.timeout,
Nov 22 14:31:36 raspberrypi weewx[3943] ERROR weewx.reportengine:         ****    File "/usr/lib/python3.9/socket.py", line 822, in create_connection
Nov 22 14:31:36 raspberrypi weewx[3943] ERROR weewx.reportengine:         ****      for res in getaddrinfo(host, port, 0, SOCK_STREAM):
Nov 22 14:31:36 raspberrypi weewx[3943] ERROR weewx.reportengine:         ****    File "/usr/lib/python3.9/socket.py", line 953, in getaddrinfo
Nov 22 14:31:36 raspberrypi weewx[3943] ERROR weewx.reportengine:         ****      for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
Nov 22 14:31:36 raspberrypi weewx[3943] ERROR weewx.reportengine:         ****  socket.gaierror: [Errno -2] Nome o servizio sconosciuto
Nov 22 14:31:36 raspberrypi weewx[3943] DEBUG weeutil.ftpupload: Attempting connection to ftp.sassarimeteo.altervista.org'
Nov 22 14:31:36 raspberrypi weewx[3943] ERROR weewx.reportengine: ftpgenerator: (2): caught exception '<class 'socket.gaierror'>': [Errno -2] Nome o servizio sconosciuto
Nov 22 14:31:37 raspberrypi weewx[3943] ERROR weewx.reportengine:         ****  Traceback (most recent call last):
Nov 22 14:31:37 raspberrypi weewx[3943] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weewx/reportengine.py", line 331, in run
Nov 22 14:31:37 raspberrypi weewx[3943] ERROR weewx.reportengine:         ****      n = ftp_data.run()
Nov 22 14:31:37 raspberrypi weewx[3943] ERROR weewx.reportengine:         ****    File "/usr/share/weewx/weeutil/ftpupload.py", line 138, in run
Nov 22 14:31:37 raspberrypi weewx[3943] ERROR weewx.reportengine:         ****      ftp_server.connect(self.server, self.port)
Nov 22 14:31:37 raspberrypi weewx[3943] ERROR weewx.reportengine:         ****    File "/usr/lib/python3.9/ftplib.py", line 156, in connect
Nov 22 14:31:37 raspberrypi weewx[3943] ERROR weewx.reportengine:         ****      self.sock = socket.create_connection((self.host, self.port), self.timeout,
Nov 22 14:31:37 raspberrypi weewx[3943] ERROR weewx.reportengine:         ****    File "/usr/lib/python3.9/socket.py", line 822, in create_connection
Nov 22 14:31:37 raspberrypi weewx[3943] ERROR weewx.reportengine:         ****      for res in getaddrinfo(host, port, 0, SOCK_STREAM):
Nov 22 14:31:37 raspberrypi weewx[3943] ERROR weewx.reportengine:         ****    File "/usr/lib/python3.9/socket.py", line 953, in getaddrinfo
Nov 22 14:31:37 raspberrypi weewx[3943] ERROR weewx.reportengine:         ****      for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
Nov 22 14:31:37 raspberrypi weewx[3943] ERROR weewx.reportengine:         ****  socket.gaierror: [Errno -2] Nome o servizio sconosciuto
Nov 22 14:31:37 raspberrypi weewx[3943] ERROR weewx.reportengine: ftpgenerator: Upload failed
Nov 22 14:31:37 raspberrypi weewx[3943] DEBUG weewx.reportengine: Report 'RSYNC' not enabled. Skipping.
Nov 22 14:31:39 raspberrypi weewx[3943] DEBUG user.sdr: lines=[]



Massimiliano Scarzella

unread,
Nov 22, 2021, 9:26:57 AM11/22/21
to weewx-user
ok solved. i found the problem.

Massimiliano Scarzella

unread,
Nov 22, 2021, 11:26:38 AM11/22/21
to weewx-user
the generated WEEWXtags.php file has this error: Parse error: syntax error, unexpected 'air_density' (T_STRING) in /membri/sassarimeteo/weather/WEEWXtags.php on line 779.
inside it is generated as follows:
$ airdensity = '?' air_density '?'; // air density
And
$ wetbulb = '?' wet_bulb '?';
why does it happen?
thank you so much for your help

Tom Keffer

unread,
Nov 22, 2021, 2:29:39 PM11/22/21
to weewx-user
PHP? There is no PHP code anywhere in WeeWX. You'll have to ask the author of WEEWXtags.php.

--
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.

Massimiliano Scarzella

unread,
Nov 22, 2021, 2:37:52 PM11/22/21
to weewx-user
OK thank you very much. the author is gir80: https://github.com/gjr80/weewx-saratoga I send a message to the respective page

gjr80

unread,
Nov 22, 2021, 8:41:46 PM11/22/21
to weewx-user
The air density and wet bulb errors are due to the respective (weewx-saratoga extension) xtypes being unable to calculate air density and wet bulb due to the station not providing WeeWX field pressure (a common issue among SDR driven console based systems as the pressure sensor is typically in the console and not available via SDR). I picked this issue up earlier, and whilst I implemented a fix at the time, I never managed to get the fix issued. Give me a day or so to untangle a few things I will have an updated release.

Gary

Massimiliano Scarzella

unread,
Nov 23, 2021, 2:47:24 AM11/23/21
to weewx-user
thanks Gary, I wrote the same problem also in your page on github and  now I have found a temporary solution by blocking the variables in WEEWXtags.php.tmpl. But in the future I would like to read the pressure through a working Bmp085 already connected to the GPIO with the pressure data. I await your solution

gjr80

unread,
Nov 24, 2021, 8:35:04 PM11/24/21
to weewx-user
Just to wrap up this aspect of this thread I have released v0.1.2 of the WeeWX-Saratoga extension. Details are on the WeeWX-Saratoga extension GitHub release page. Key changes are that v0.1.2 will tolerate pyehem not being installed and the templates now better handle the WeeWX-Saratoga included xtypes.

Gary

Massimiliano Scarzella

unread,
Nov 25, 2021, 2:40:11 AM11/25/21
to weewx-user
Ok. Thanks a lot
Reply all
Reply to author
Forward
0 new messages