Hi Gary, I'm glad to inform you that I solved the problem upgrading the firmware of the GW1000 directly from the app. Before this upgrade it was running on firmware version GW1000A_V1.5.4, while now it is GW1000A_V1.6.6. Unfortunately I saw your message after upgrading and so I could not try your commands. Anyway, what happened should be useful for anyone in the future having this issue. Thank you! Il giorno lunedì 24 maggio 2021 alle 23:17:23 UTC+2 gjr80 ha scritto:
> Hi, > > When the driver is interrogating your GW1000 the GW1000 is responding with > some control codes that differ from those documented in the GW1000 API. > Could you provide the firmware version of your GW1000 as reported in the WS > View app. It would also help to see some of the raw data coming back from > the GW1000. Could you run the following commands: > > $ PYTHONPATH=/home/weewx/bin python -m user.gw1000 --firmware-version > --debug=3 > > and > > $ PYTHONPATH=/home/weewx/bin python -m user.gw1000 --live-data --debug=3 > > The above commands should result in a number of lines of debug output > appearing in the WeeWX log. Could you provide a copy of the entire log > output resulting from those two commands as well as the console output. > > Gary > On Tuesday, 25 May 2021 at 05:55:03 UTC+10 [email protected] wrote: > >> Hi Lang, >> thank you for answering. So, the configuration file is named >> 'piscina.conf' because I am using WeeWX in multi mode, and each station has >> its personal configuration file. In the specific case, I'm using the WN30 >> sensor for measuring a pole water temperature. Here is the complete log: >> May 24 21:44:31 raspberrypi weewx-piscina[2019]: engine: Initializing >> weewx version 3.9.2 >> May 24 21:44:31 raspberrypi weewx-piscina[2019]: engine: Using Python >> 2.7.16 (default, Oct 10 2019, 22:02:15) #012[GCC 8.3.0] >> May 24 21:44:31 raspberrypi weewx-piscina[2019]: engine: Platform >> Linux-5.4.51+-armv6l-with-debian-10.4 >> May 24 21:44:31 raspberrypi weewx-piscina[2019]: engine: Locale is >> 'en_GB.UTF-8' >> May 24 21:44:31 raspberrypi weewx-piscina[2019]: engine: pid file is >> /var/run/weewx-piscina.pid >> May 24 21:44:31 raspberrypi weewx-piscina[2023]: engine: Using >> configuration file /etc/weewx/piscina.conf >> May 24 21:44:31 raspberrypi weewx-piscina[2023]: engine: Debug is 1 >> May 24 21:44:31 raspberrypi weewx-piscina[2023]: engine: Initializing >> engine >> May 24 21:44:31 raspberrypi weewx-piscina[2023]: engine: Loading station >> type GW1000 (user.gw1000) >> May 24 21:44:34 raspberrypi weewx-piscina[2023]: gw1000: Failed to obtain >> response to attempt 1 to send command 'CMD_READ_STATION_MAC': timed out >> May 24 21:44:44 raspberrypi weewx-piscina[2023]: gw1000: field map is >> {'co2': 'co2', 'co2_24h_avg': 'co2_24h_avg', 'dateTime': 'datetime', >> 'daymaxwind': 'daymaxwind', 'dayRain': 'rainday', 'dewpoint': 'dewpoint', >> 'extraHumid1': 'humid1', 'extraHumid2': 'humid2', 'extraHumid3': 'humid3', >> 'extraHumid4': 'humid4', 'extraHumid5': 'humid5', 'extraHumid6': 'humid6', >> 'extraHumid7': 'humid7', 'extraHumid8': 'humid8', 'extraHumid17': >> 'humid17', 'extraTemp1': 'temp1', 'extraTemp2': 'temp2', 'extraTemp3': >> 'temp3', 'extraTemp4': 'temp4', 'extraTemp5': 'temp5', 'extraTemp6': >> 'temp6', 'extraTemp7': 'temp7', 'extraTemp8': 'temp8', 'extraTemp9': >> 'temp9', 'extraTemp10': 'temp10', 'extraTemp11': 'temp11', 'extraTemp12': >> 'temp12', 'extraTemp13': 'temp13', 'extraTemp14': 'temp14', 'extraTemp15': >> 'temp15', 'extraTemp16': 'temp16', 'extraTemp17': 'temp17', 'heatindex': >> 'heatindex', 'hourRain': 'rainhour', 'inHumidity': 'inhumid', 'inTemp': >> 'intemp', 'leafWet1': 'leafwet1', 'leafWet2': 'leafwet2', 'leafWet3': >> 'leafwet3', 'leafWet4': 'leafwet4', 'leafWet5': 'leafwet5', 'leafWet6': >> 'leafwet6', 'leafWet7': 'leafwet7', 'leafWet8': 'leafwet8', 'leak1': >> 'leak1', 'leak2': 'leak2', 'leak3': 'leak3', 'leak4': 'leak4', >> 'lightning_distance': 'lightningdist', 'lightning_last_det_time': >> 'lightningdettime', 'lightning_strike_count': 'lightning_strike_count', >> 'lightningcount': 'lightningcount', 'luminosity': 'light', 'monthRain': >> 'rainmonth', 'outHumidity': 'outhumid', 'outTemp': 'outtemp', 'pm2_5': >> 'pm251', 'pm2_51_24h_avg': 'pm251_24h_avg', 'pm2_52': 'pm252', >> 'pm2_52_24h_avg': 'pm252_24h_avg', 'pm2_53': 'pm253', 'pm2_53_24h_avg': >> 'pm253_24h_avg', 'pm2_54': 'pm254', 'pm2_54_24h_avg': 'pm254_24h_avg', >> 'pm2_55': 'pm255', 'pm2_55_24h_avg': 'pm255_24h_avg', 'pm10': 'pm10', >> 'pm10_24h_avg': 'pm10_24h_avg', 'pressure': 'absbarometer', 'rain': 'rain', >> 'rainRate': 'rainrate', 'relbarometer': 'relbarometer', 'soilMoist1': >> 'soilmoist1', 'soilMoist2': 'soilmoist2', 'soilMoist3': 'soilmoist3', >> 'soilMoist4': 'soilmoist4', 'soilMoist5': 'soilmoist5', 'soilMoist6': >> 'soilmoist6', 'soilMoist7': 'soilmoist7', 'soilMoist8': 'soilmoist8', >> 'soilMoist9': 'soilmoist9', 'soilMoist10': 'soilmoist10', 'soilMoist11': >> 'soilmoist11', 'soilMoist12': 'soilmoist12', 'soilMoist13': 'soilmoist13', >> 'soilMoist14': 'soilmoist14', 'soilMoist15': 'soilmoist15', 'soilMoist16': >> 'soilmoist16', 'soilTemp1': 'soiltemp1', 'soilTemp2': 'soiltemp2', >> 'soilTemp3': 'soiltemp3', 'soilTemp4': 'soiltemp4', 'soilTemp5': >> 'soiltemp5', 'soilTemp6': 'soiltemp6', 'soilTemp7': 'soiltemp7', >> 'soilTemp8': 'soiltemp8', 'soilTemp9': 'soiltemp9', 'soilTemp10': >> 'soiltemp10', 'soilTemp11': 'soiltemp11', 'soilTemp12': 'soiltemp12', >> 'soilTemp13': 'soiltemp13', 'soilTemp14': 'soiltemp14', 'soilTemp15': >> 'soiltemp15', 'soilTemp16': 'soiltemp16', 'stormRain': 'rainevent', >> 'totalRain': 'raintotals', 'UV': 'uvi', 'uvradiation': 'uv', 'weekRain': >> 'rainweek', 'wh25_batt': 'wh25_batt', 'wh25_sig': 'wh25_sig', 'wh26_batt': >> 'wh26_batt', 'wh26_sig': 'wh26_sig', 'wh31_ch1_batt': 'wh31_ch1_batt', >> 'wh31_ch1_sig': 'wh31_ch1_sig', 'wh31_ch2_batt': 'wh31_ch2_batt', >> 'wh31_ch2_sig': 'wh31_ch2_sig', 'wh31_ch3_batt': 'wh31_ch3_batt', >> 'wh31_ch3_sig': 'wh31_ch3_sig', 'wh31_ch4_batt': 'wh31_ch4_batt', >> 'wh31_ch4_sig': 'wh31_ch4_sig', 'wh31_ch5_batt': 'wh31_ch5_batt', >> 'wh31_ch5_sig': 'wh31_ch5_sig', 'wh31_ch6_batt': 'wh31_ch6_batt', >> 'wh31_ch6_sig': 'wh31_ch6_sig', 'wh31_ch7_batt': 'wh31_ch7_batt', >> 'wh31_ch7_sig': 'wh31_ch7_sig', 'wh31_ch8_batt': 'wh31_ch8_batt', >> 'wh31_ch8_sig': 'wh31_ch8_sig', 'wh35_ch1_batt': 'wh35_ch1_batt', >> 'wh35_ch1_sig': 'wh35_ch1_sig', 'wh35_ch2_batt': 'wh35_ch2_batt', >> 'wh35_ch2_sig': 'wh35_ch2_sig', 'wh35_ch3_batt': 'wh35_ch3_batt', >> 'wh35_ch3_sig': 'wh35_ch3_sig', 'wh35_ch4_batt': 'wh35_ch4_batt', >> 'wh35_ch4_sig': 'wh35_ch4_sig', 'wh35_ch5_batt': 'wh35_ch5_batt', >> 'wh35_ch5_sig': 'wh35_ch5_sig', 'wh35_ch6_batt': 'wh35_ch6_batt', >> 'wh35_ch6_sig': 'wh35_ch6_sig', 'wh35_ch7_batt': 'wh35_ch7_batt', >> 'wh35_ch7_sig': 'wh35_ch7_sig', 'wh35_ch8_batt': 'wh35_ch8_batt', >> 'wh35_ch8_sig': 'wh35_ch8_sig', 'wh40_batt': 'wh40_batt', 'wh40_sig': >> 'wh40_sig', 'wh41_ch1_batt': 'wh41_ch1_batt', 'wh41_ch1_sig': >> 'wh41_ch1_sig', 'wh41_ch2_batt': 'wh41_ch2_batt', 'wh41_ch2_sig': >> 'wh41_ch2_sig', 'wh41_ch3_batt': 'wh41_ch3_batt', 'wh41_ch3_sig': >> 'wh41_ch3_sig', 'wh41_ch4_batt': 'wh41_ch4_batt', 'wh41_ch4_sig': >> 'wh41_ch4_sig', 'wh45_batt': 'wh45_batt', 'wh45_sig': 'wh45_sig', >> 'wh51_ch1_batt': 'wh51_ch1_batt', 'wh51_ch1_sig': 'wh51_ch1_sig', >> 'wh51_ch2_batt': 'wh51_ch2_batt', 'wh51_ch2_sig': 'wh51_ch2_sig', >> 'wh51_ch3_batt': 'wh51_ch3_batt', 'wh51_ch3_sig': 'wh51_ch3_sig', >> 'wh51_ch4_batt': 'wh51_ch4_batt', 'wh51_ch4_sig': 'wh51_ch4_sig', >> 'wh51_ch5_batt': 'wh51_ch5_batt', 'wh51_ch5_sig': 'wh51_ch5_sig', >> 'wh51_ch6_batt': 'wh51_ch6_batt', 'wh51_ch6_sig': 'wh51_ch6_sig', >> 'wh51_ch7_batt': 'wh51_ch7_batt', 'wh51_ch7_sig': 'wh51_ch7_sig', >> 'wh51_ch8_batt': 'wh51_ch8_batt', 'wh51_ch8_sig': 'wh51_ch8_sig', >> 'wh51_ch9_batt': 'wh51_ch9_batt', 'wh51_ch9_sig': 'wh51_ch9_sig', >> 'wh51_ch10_batt': 'wh51_ch10_batt', 'wh51_ch10_sig': 'wh51_ch10_sig', >> 'wh51_ch11_batt': 'wh51_ch11_batt', 'wh51_ch11_sig': 'wh51_ch11_sig', >> 'wh51_ch12_batt': 'wh51_ch12_batt', 'wh51_ch12_sig': 'wh51_ch12_sig', >> 'wh51_ch13_batt': 'wh51_ch13_batt', 'wh51_ch13_sig': 'wh51_ch13_sig', >> 'wh51_ch14_batt': 'wh51_ch14_batt', 'wh51_ch14_sig': 'wh51_ch14_sig', >> 'wh51_ch15_batt': 'wh51_ch15_batt', 'wh51_ch15_sig': 'wh51_ch15_sig', >> 'wh51_ch16_batt': 'wh51_ch16_batt', 'wh51_ch16_sig': 'wh51_ch16_sig', >> 'wh55_ch1_batt': 'wh55_ch1_batt', 'wh55_ch1_sig': 'wh55_ch1_sig', >> 'wh55_ch2_batt': 'wh55_ch2_batt', 'wh55_ch2_sig': 'wh55_ch2_sig', >> 'wh55_ch3_batt': 'wh55_ch3_batt', 'wh55_ch3_sig': 'wh55_ch3_sig', >> 'wh55_ch4_batt': 'wh55_ch4_batt', 'wh55_ch4_sig': 'wh55_ch4_sig', >> 'wh57_batt': 'wh57_batt', 'wh57_sig': 'wh57_sig', 'wh65_batt': 'wh65_batt', >> 'wh65_sig': 'wh65_sig', 'wh68_batt': 'wh68_batt', 'wh68_sig': 'wh68_sig', >> 'windchill': 'windchill', 'windDir': 'winddir', 'windGust': 'gustspeed', >> 'windSpeed': 'windspeed', 'ws80_batt': 'ws80_batt', 'ws80_sig': 'ws80_sig', >> 'yearRain': 'rainyear'} >> May 24 21:44:44 raspberrypi weewx-piscina[2023]: gw1000: driver version >> is 0.3.1 >> May 24 21:44:44 raspberrypi weewx-piscina[2023]: gw1000: GW1000 address >> is 192.168.0.25:45000 >> May 24 21:44:44 raspberrypi weewx-piscina[2023]: gw1000: poll interval is >> 20 seconds >> May 24 21:44:44 raspberrypi weewx-piscina[2023]: gw1000: max tries is 3, >> retry wait time is 10 seconds >> May 24 21:44:44 raspberrypi weewx-piscina[2023]: gw1000: broadcast >> address is 255.255.255.255:46000, socket timeout is 2 seconds >> May 24 21:44:44 raspberrypi weewx-piscina[2023]: engine: Loading service >> weewx.engine.StdTimeSynch >> May 24 21:44:44 raspberrypi weewx-piscina[2023]: engine: Finished loading >> service weewx.engine.StdTimeSynch >> May 24 21:44:44 raspberrypi weewx-piscina[2023]: engine: Loading service >> weewx.engine.StdConvert >> May 24 21:44:44 raspberrypi weewx-piscina[2023]: engine: StdConvert >> target unit is 0x10 >> May 24 21:44:44 raspberrypi weewx-piscina[2023]: engine: Finished loading >> service weewx.engine.StdConvert >> May 24 21:44:44 raspberrypi weewx-piscina[2023]: engine: Loading service >> weewx.engine.StdCalibrate >> May 24 21:44:44 raspberrypi weewx-piscina[2023]: engine: Finished loading >> service weewx.engine.StdCalibrate >> May 24 21:44:44 raspberrypi weewx-piscina[2023]: engine: Loading service >> weewx.engine.StdQC >> May 24 21:44:44 raspberrypi weewx-piscina[2023]: engine: Finished loading >> service weewx.engine.StdQC >> May 24 21:44:44 raspberrypi weewx-piscina[2023]: engine: Loading service >> weewx.wxservices.StdWXCalculate >> May 24 21:44:44 raspberrypi weewx-piscina[2023]: wxcalculate: The >> following values will be calculated: barometer=software, >> windchill=prefer_hardware, dewpoint=prefer_hardware, >> appTemp=prefer_hardware, rainRate=prefer_hardware, windrun=prefer_hardware, >> heatindex=prefer_hardware, maxSolarRad=prefer_hardware, >> humidex=prefer_hardware, pressure=prefer_hardware, >> inDewpoint=prefer_hardware, ET=prefer_hardware, altimeter=prefer_hardware, >> cloudbase=prefer_hardware >> May 24 21:44:44 raspberrypi weewx-piscina[2023]: wxcalculate: The >> following algorithms will be used for calculations: altimeter=aaNOAA, >> maxSolarRad=RS >> May 24 21:44:44 raspberrypi weewx-piscina[2023]: engine: Finished loading >> service weewx.wxservices.StdWXCalculate >> May 24 21:44:44 raspberrypi weewx-piscina[2023]: engine: Loading service >> weewx.engine.StdArchive >> May 24 21:44:44 raspberrypi weewx-piscina[2023]: engine: Archive will use >> data binding wx_binding >> May 24 21:44:44 raspberrypi weewx-piscina[2023]: engine: Record >> generation will be attempted in 'software' >> May 24 21:44:44 raspberrypi weewx-piscina[2023]: engine: Using archive >> interval of 300 seconds (software record generation) >> May 24 21:44:45 raspberrypi weewx-piscina[2023]: engine: Use LOOP data in >> hi/low calculations: 1 >> May 24 21:44:45 raspberrypi weewx-piscina[2023]: gw1000: Invalid response >> to attempt 1 to send command 'CMD_READ_SENSOR_ID_NEW': Invalid command code >> in API response. Expected '60' (0x3C), received '99' (0x63). >> May 24 21:44:45 raspberrypi weewx-piscina[2023]: manager: Daily summary >> version is 2.0 >> May 24 21:44:45 raspberrypi weewx-piscina[2023]: engine: Using binding >> 'wx_binding' to database 'piscina.sdb' >> May 24 21:44:45 raspberrypi weewx-piscina[2023]: manager: Starting >> backfill of daily summaries >> May 24 21:44:45 raspberrypi weewx-piscina[2023]: engine: Finished loading >> service weewx.engine.StdArchive >> May 24 21:44:45 raspberrypi weewx-piscina[2023]: engine: Loading service >> weewx.restx.StdStationRegistry >> May 24 21:44:45 raspberrypi weewx-piscina[2023]: restx: StationRegistry: >> Registration not requested. >> May 24 21:44:45 raspberrypi weewx-piscina[2023]: engine: Finished loading >> service weewx.restx.StdStationRegistry >> May 24 21:44:45 raspberrypi weewx-piscina[2023]: engine: Loading service >> weewx.restx.StdWunderground >> May 24 21:44:45 raspberrypi weewx-piscina[2023]: restx: Wunderground: >> Posting not enabled. >> May 24 21:44:45 raspberrypi weewx-piscina[2023]: engine: Finished loading >> service weewx.restx.StdWunderground >> May 24 21:44:45 raspberrypi weewx-piscina[2023]: engine: Loading service >> weewx.restx.StdPWSweather >> May 24 21:44:45 raspberrypi weewx-piscina[2023]: restx: PWSweather: >> Posting not enabled. >> May 24 21:44:45 raspberrypi weewx-piscina[2023]: engine: Finished loading >> service weewx.restx.StdPWSweather >> May 24 21:44:45 raspberrypi weewx-piscina[2023]: engine: Loading service >> weewx.restx.StdCWOP >> May 24 21:44:45 raspberrypi weewx-piscina[2023]: restx: CWOP: Posting not >> enabled. >> May 24 21:44:45 raspberrypi weewx-piscina[2023]: engine: Finished loading >> service weewx.restx.StdCWOP >> May 24 21:44:45 raspberrypi weewx-piscina[2023]: engine: Loading service >> weewx.restx.StdWOW >> May 24 21:44:45 raspberrypi weewx-piscina[2023]: restx: WOW: Posting not >> enabled. >> May 24 21:44:45 raspberrypi weewx-piscina[2023]: engine: Finished loading >> service weewx.restx.StdWOW >> May 24 21:44:45 raspberrypi weewx-piscina[2023]: engine: Loading service >> weewx.restx.StdAWEKAS >> May 24 21:44:45 raspberrypi weewx-piscina[2023]: restx: AWEKAS: Posting >> not enabled. >> May 24 21:44:45 raspberrypi weewx-piscina[2023]: engine: Finished loading >> service weewx.restx.StdAWEKAS >> May 24 21:44:45 raspberrypi weewx-piscina[2023]: engine: Loading service >> weewx.engine.StdPrint >> May 24 21:44:45 raspberrypi weewx-piscina[2023]: engine: Finished loading >> service weewx.engine.StdPrint >> May 24 21:44:45 raspberrypi weewx-piscina[2023]: engine: Loading service >> weewx.engine.StdReport >> May 24 21:44:45 raspberrypi weewx-piscina[2023]: engine: Finished loading >> service weewx.engine.StdReport >> May 24 21:44:45 raspberrypi weewx-piscina[2023]: engine: Starting up >> weewx version 3.9.2 >> May 24 21:44:45 raspberrypi weewx-piscina[2023]: engine: Station does not >> support reading the time >> May 24 21:44:45 raspberrypi weewx-piscina[2023]: engine: Starting main >> packet loop. >> May 24 21:44:55 raspberrypi weewx-piscina[2023]: gw1000: Invalid response >> to attempt 2 to send command 'CMD_READ_SENSOR_ID_NEW': Invalid command code >> in API response. Expected '60' (0x3C), received '99' (0x63). >> May 24 21:45:05 raspberrypi weewx-piscina[2023]: gw1000: Invalid response >> to attempt 3 to send command 'CMD_READ_SENSOR_ID_NEW': Invalid command code >> in API response. Expected '60' (0x3C), received '99' (0x63). >> May 24 21:45:05 raspberrypi weewx-piscina[2023]: gw1000: Failed to obtain >> response to command 'CMD_READ_SENSOR_ID_NEW' after 3 attempts >> May 24 21:45:05 raspberrypi weewx-piscina[2023]: gw1000: IP address >> specified in 'weewx.conf', re-discovery was not attempted >> May 24 21:45:05 raspberrypi weewx-piscina[2023]: gw1000: Unable to obtain >> live sensor data >> May 24 21:45:05 raspberrypi weewx-piscina[2023]: gw1000: Next update in >> 20 seconds >> May 24 21:45:05 raspberrypi weewx-piscina[2023]: engine: Main loop >> exiting. Shutting engine down. >> May 24 21:45:06 raspberrypi weewx-piscina[2023]: gw1000: Gw1000Collector >> thread has been terminated >> May 24 21:45:06 raspberrypi weewx-piscina[2023]: engine: Caught >> WeeWxIOError: Failed to obtain response to command 'CMD_READ_SENSOR_ID_NEW' >> after 3 attempts >> May 24 21:45:06 raspberrypi weewx-piscina[2023]: **** Waiting 60 >> seconds then retrying... >> >> And here the configuration file (piscina.conf): >> >> # WEEWX CONFIGURATION FILE >> # >> # Copyright (c) 2009-2015 Tom Keffer <[email protected]> >> # 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 = /home/weewx >> >> # How long to wait before timing out a socket (FTP, HTTP) connection >> socket_timeout = 200 >> >> # Do not modify this. It is used when installing and updating weewx. >> version = 3.9.2 >> >> loop_on_init = 1 >> >> >> ############################################################################## >> >> # This section is for information about the station. >> >> [Station] >> >> # Description of the station location >> location = Termometro acqua piscina >> >> # Latitude and longitude in decimal degrees >> latitude = 41.446295 >> longitude = 12.622721 >> >> # Altitude of the station, with unit it is in. This is downloaded from >> # from the station if the hardware supports it. >> altitude = 10, meter # Choose 'foot' or 'meter' for unit >> >> # 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 = GW1000 >> >> # 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 = 0 >> >> >> ############################################################################## >> >> # 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 >> >> # 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 >> >> >> ############################################################################## >> >> # This section specifies what reports, using which skins, to generate. >> >> [StdReport] >> >> # Where the skins reside, relative to WEEWX_ROOT >> SKIN_ROOT = skins >> >> # Where the generated reports should go, relative to WEEWX_ROOT >> HTML_ROOT = public_html/piscina >> >> # The database binding indicates which data should be used in reports. >> data_binding = wx_binding >> >> # Each of the following subsections defines a report that will be run. >> >> [[StandardReport]] >> # 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. >> >> # The StandardReport uses the 'Standard' skin, which contains the >> # images, templates and plots for the report. >> skin = Standard >> [[[Units]]] >> [[[[Groups]]]] >> group_altitude = meter >> group_speed2 = km_per_hour2 >> group_pressure = mbar >> group_rain = mm >> group_rainrate = mm_per_hour >> group_temperature = degree_C >> group_degree_day = degree_C_day >> group_speed = km_per_hour >> >> [[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, uncomment and fill out the next four >> lines. >> # Use quotes around passwords to guard against parsing errors. >> user = xxx >> password = xxx >> server = xxx >> path = xxx >> >> # 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 = public_html >> >> # 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 as to the user account on the remote machine where the >> files >> # will be copied. >> # >> # The server, user, and path determine where files will be sent. >> # The server is the server name, such as www.threefools.org >> # The user is the username, such as weewx >> # The path is the destination directory, such as >> /var/www/html/weather >> # Be sure that the user has write permissions on the destination! >> #server = replace_me >> #user = replace_me >> #path = replace_me >> >> # 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 >> >> >> ############################################################################## >> >> # 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 = METRIC # 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 >> outTemp = -40, 120, degree_F >> inTemp = 10, 120, degree_F >> outHumidity = 0, 100 >> inHumidity = 0, 100 >> windSpeed = 0, 120, mile_per_hour >> pressure = 24, 34.5, inHg >> >> >> ############################################################################## >> >> # This section controls the origin of derived values. >> >> [StdWXCalculate] >> >> ignore_zero_wind = False >> >> [[Calculations]] >> # Derived quantities are calculated by this service. 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 >> barometer = prefer_hardware >> altimeter = prefer_hardware >> windchill = prefer_hardware >> heatindex = prefer_hardware >> dewpoint = prefer_hardware >> inDewpoint = prefer_hardware >> rainRate = prefer_hardware >> >> >> ############################################################################## >> >> # 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 = software >> >> # Whether to include LOOP data in hi/low statistics >> loop_hilo = True >> >> # The data binding used to save archive records >> data_binding = wx_binding >> >> >> ############################################################################## >> >> # 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.wxmanager.WXDaySummaryManager >> # The schema defines the structure of the database. >> # It is *only* used when the database is created. >> schema = schemas.wview.schema >> >> >> ############################################################################## >> >> # This section defines various databases. >> >> [Databases] >> >> # A SQLite database is simply a single file >> [[archive_sqlite]] >> database_type = SQLite >> database_name = piscina.sdb >> >> # MySQL >> [[archive_mysql]] >> database_type = MySQL >> database_name = piscina >> >> >> ############################################################################## >> >> # 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 = %(WEEWX_ROOT)s/archive >> >> # 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] >> >> [[Services]] >> # This section specifies the services that should be run. They are >> # grouped by type, and the order of services within each group >> # determines the order in which the services will be run. >> prep_services = weewx.engine.StdTimeSynch >> data_services = user.gw1000.Gw1000Service >> process_services = weewx.engine.StdConvert, >> weewx.engine.StdCalibrate, weewx.engine.StdQC, >> weewx.wxservices.StdWXCalculate >> archive_services = weewx.engine.StdArchive >> 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 >> >> >> ############################################################################## >> >> # Options for extension 'GW1000' >> [Accumulator] >> >> # Start GW1000 driver extractors >> [[daymaxwind]] >> extractor = last >> [[lightning_distance]] >> extractor = last >> [[lightning_strike_count]] >> extractor = sum >> [[lightningcount]] >> extractor = last >> [[lightning_last_det_time]] >> extractor = last >> [[stormRain]] >> extractor = last >> [[hourRain]] >> extractor = last >> [[dayRain]] >> extractor = last >> [[weekRain]] >> extractor = last >> [[monthRain]] >> extractor = last >> [[yearRain]] >> extractor = last >> [[totalRain]] >> extractor = last >> [[pm2_51_24h_avg]] >> extractor = last >> [[pm2_52_24h_avg]] >> extractor = last >> [[pm2_53_24h_avg]] >> extractor = last >> [[pm2_54_24h_avg]] >> extractor = last >> [[pm2_55_24h_avg]] >> extractor = last >> [[pm10_24h_avg]] >> extractor = last >> [[co2_24h_avg]] >> extractor = last >> [[wh40_batt]] >> extractor = last >> [[wh26_batt]] >> extractor = last >> [[wh25_batt]] >> extractor = last >> [[wh65_batt]] >> extractor = last >> [[wh31_ch1_batt]] >> extractor = last >> [[wh31_ch2_batt]] >> extractor = last >> [[wh31_ch3_batt]] >> extractor = last >> [[wh31_ch4_batt]] >> extractor = last >> [[wh31_ch5_batt]] >> extractor = last >> [[wh31_ch6_batt]] >> extractor = last >> [[wh31_ch7_batt]] >> extractor = last >> [[wh31_ch8_batt]] >> extractor = last >> [[wh35_ch1_batt]] >> extractor = last >> [[wh35_ch2_batt]] >> extractor = last >> [[wh35_ch3_batt]] >> extractor = last >> [[wh35_ch4_batt]] >> extractor = last >> [[wh35_ch5_batt]] >> extractor = last >> [[wh35_ch6_batt]] >> extractor = last >> [[wh35_ch7_batt]] >> extractor = last >> [[wh35_ch8_batt]] >> extractor = last >> [[wh41_ch1_batt]] >> extractor = last >> [[wh41_ch2_batt]] >> extractor = last >> [[wh41_ch3_batt]] >> extractor = last >> [[wh41_ch4_batt]] >> extractor = last >> [[wh45_batt]] >> extractor = last >> [[wh51_ch1_batt]] >> extractor = last >> [[wh51_ch2_batt]] >> extractor = last >> [[wh51_ch3_batt]] >> extractor = last >> [[wh51_ch4_batt]] >> extractor = last >> [[wh51_ch5_batt]] >> extractor = last >> [[wh51_ch6_batt]] >> extractor = last >> [[wh51_ch7_batt]] >> extractor = last >> [[wh51_ch8_batt]] >> extractor = last >> [[wh51_ch9_batt]] >> extractor = last >> [[wh51_ch10_batt]] >> extractor = last >> [[wh51_ch11_batt]] >> extractor = last >> [[wh51_ch12_batt]] >> extractor = last >> [[wh51_ch13_batt]] >> extractor = last >> [[wh51_ch14_batt]] >> extractor = last >> [[wh51_ch15_batt]] >> extractor = last >> [[wh51_ch16_batt]] >> extractor = last >> [[wh55_ch1_batt]] >> extractor = last >> [[wh55_ch2_batt]] >> extractor = last >> [[wh55_ch3_batt]] >> extractor = last >> [[wh55_ch4_batt]] >> extractor = last >> [[wh57_batt]] >> extractor = last >> [[wh68_batt]] >> extractor = last >> [[ws80_batt]] >> extractor = last >> [[wh40_sig]] >> extractor = last >> [[wh26_sig]] >> extractor = last >> [[wh25_sig]] >> extractor = last >> [[wh65_sig]] >> extractor = last >> [[wh31_ch1_sig]] >> extractor = last >> [[wh31_ch2_sig]] >> extractor = last >> [[wh31_ch3_sig]] >> extractor = last >> [[wh31_ch4_sig]] >> extractor = last >> [[wh31_ch5_sig]] >> extractor = last >> [[wh31_ch6_sig]] >> extractor = last >> [[wh31_ch7_sig]] >> extractor = last >> [[wh31_ch8_sig]] >> extractor = last >> [[wh35_ch1_sig]] >> extractor = last >> [[wh35_ch2_sig]] >> extractor = last >> [[wh35_ch3_sig]] >> extractor = last >> [[wh35_ch4_sig]] >> extractor = last >> [[wh35_ch5_sig]] >> extractor = last >> [[wh35_ch6_sig]] >> extractor = last >> [[wh35_ch7_sig]] >> extractor = last >> [[wh35_ch8_sig]] >> extractor = last >> [[wh41_ch1_sig]] >> extractor = last >> [[wh41_ch2_sig]] >> extractor = last >> [[wh41_ch3_sig]] >> extractor = last >> [[wh41_ch4_sig]] >> extractor = last >> [[wh45_sig]] >> extractor = last >> [[wh51_ch1_sig]] >> extractor = last >> [[wh51_ch2_sig]] >> extractor = last >> [[wh51_ch3_sig]] >> extractor = last >> [[wh51_ch4_sig]] >> extractor = last >> [[wh51_ch5_sig]] >> extractor = last >> [[wh51_ch6_sig]] >> extractor = last >> [[wh51_ch7_sig]] >> extractor = last >> [[wh51_ch8_sig]] >> extractor = last >> [[wh51_ch9_sig]] >> extractor = last >> [[wh51_ch10_sig]] >> extractor = last >> [[wh51_ch11_sig]] >> extractor = last >> [[wh51_ch12_sig]] >> extractor = last >> [[wh51_ch13_sig]] >> extractor = last >> [[wh51_ch14_sig]] >> extractor = last >> [[wh51_ch15_sig]] >> extractor = last >> [[wh51_ch16_sig]] >> extractor = last >> [[wh55_ch1_sig]] >> extractor = last >> [[wh55_ch2_sig]] >> extractor = last >> [[wh55_ch3_sig]] >> extractor = last >> [[wh55_ch4_sig]] >> extractor = last >> [[wh57_sig]] >> extractor = last >> [[wh68_sig]] >> extractor = last >> [[ws80_sig]] >> extractor = last >> >> >> ############################################################################## >> >> # Options for extension 'GW1000' >> [GW1000] >> # This section is for the GW1000 API driver. >> >> # How often to poll the GW1000 API, default is every 20 seconds: >> poll_interval = 20 >> >> # The driver to use: >> driver = user.gw1000 >> >> >> ############################################################################## >> >> #examples of json >> #{"time" : "2019-09-13 15:44:52", "brand" : "OS", "model" : "THGR810", >> "id" : 254, "channel" : 1, "battery" : "OK", "temperature_C" : 27.800, >> "humidity" : 40} >> #{"time" : "2019-09-13 15:45:01", "brand" : "OS", "model" : "THGR810", >> "id" : 71, "channel" : 2, "battery" : "OK", "temperature_C" : 27.200, >> "humidity" : 46} >> >> >> >> >> Il giorno lunedì 24 maggio 2021 alle 21:35:59 UTC+2 >> [email protected] ha scritto: >> >>> The WN30 is just an extra temperature sensor and belongs to the WH31 >>> extra sensor group - only it measures only temperature and not humidity. >>> As it is primarily meant for measuring water temperature, humidity will >>> be always 100% and therefore measuring it makes little sense. >>> >>> But it works just like other WH31 extra T/H sensors. I have one in my >>> collection of WH31 sensors and weewx processes it without any problem. >>> >>> Is there a special reason why your weewx configuration file is named >>> piscina.conf and not weewx.conf ? >>> Has weewx been told to use piscina.conf instead of weewx.conf (default) >>> in the respective files ? >>> >>> Can you please provide a *complete* syslog starting from the weewx >>> launch until it either terminates itself or you do so by issuing the stop >>> command !? >>> Also, your weewx.conf (piscina.conf) would be helpful (you can/should >>> remove passwords and API-keys if you use any there) >>> >>> If you so far only started the driver, can you just configure weewx as >>> in the GW1000 driver description in the weewx.conf file >>> (/etc/weewx/weewx.conf), >>> and start weewx - and provide the logs and the weewx.conf file !? >>> >>> Then we can have a better understanding what going on and what's >>> potential going wrong here. >>> On 24.05.2021 20:36, [email protected] wrote: >>> >>> Hi everyone, >>> I am trying to use WeeWX with a GW1000 hardware (this >>> <https://www.froggit.de/product_info.php?info=p410_dp1500-wi-fi-wetterserver-usb-dongle.html>) >>> >>> that is receiving data from a WN30 temperature sensor (this >>> <https://www.froggit.de/product_info.php?language=en&info=p480_dp30-multi-kanal-temperatur-funksensor-mit-wasserfestem-kabelfuehler.html>). >>> >>> I installed the hardware and connected to the WiFi, and by the smartphone >>> app everything seems fine: in fact I can see live data from there. >>> Now, I want to use the GW1000 driver >>> <https://github.com/gjr80/weewx-gw1000>for reading its data with WeeWX. >>> I correctly followed the instruction and installed the driver on WeeWX >>> 3.9.2, but I am having some troubles. >>> In particular, I am getting the following error: >>> gw1000: Invalid response to attempt 1 to send command >>> 'CMD_READ_SENSOR_ID_NEW': Invalid command code in API response. Expected >>> '60' (0x3C), received '99' (0x63) >>> This is what the test-driver returns: >>> $ PYTHONPATH=/home/weewx/bin python -m user.gw1000 --test-driver >>> Using configuration file /etc/weewx/piscina.conf >>> debug level is '1' >>> >>> IP address to be obtained by discovery >>> Port number set to default port number >>> >>> Interrogating GW1000 at 192.168.0.25:45000 >>> >>> Traceback (most recent call last): >>> File "/usr/lib/python2.7/runpy.py", line 174, in _run_module_as_main >>> "__main__", fname, loader, pkg_name) >>> File "/usr/lib/python2.7/runpy.py", line 72, in _run_code >>> exec code in run_globals >>> File "/home/weewx/bin/user/gw1000.py", line 5906, in <module> >>> main() >>> File "/home/weewx/bin/user/gw1000.py", line 5900, in main >>> direct_gw100.process_options() >>> File "/home/weewx/bin/user/gw1000.py", line 4833, in process_options >>> self.test_driver() >>> File "/home/weewx/bin/user/gw1000.py", line 5647, in test_driver >>> for pkt in driver.genLoopPackets(): >>> File "/home/weewx/bin/user/gw1000.py", line 2057, in genLoopPackets >>> raise weewx.WeeWxIOError(e) >>> weewx.WeeWxIOError: Failed to obtain response to command >>> 'CMD_READ_SENSOR_ID_NEW' after 3 attempts >>> >>> Any ideas?? >>> Thank you! >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "weewx-user" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/weewx-user/2f6e835e-dbcd-4d71-bcee-cf431475ccd4n%40googlegroups.com >>> >>> <https://groups.google.com/d/msgid/weewx-user/2f6e835e-dbcd-4d71-bcee-cf431475ccd4n%40googlegroups.com?utm_medium=email&utm_source=footer> >>> . >>> >>> -- You received this message because you are subscribed to the Google Groups "weewx-user" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/weewx-user/1a433e84-2b36-4a53-b6f9-cdf1c82be185n%40googlegroups.com.
