Normally, I don't deal with the influx driver, but Matthew is swamped so I took a look.
I believe the problem is that the driver was not completely ported to Python 3. The HTTP response needs to be converted from a byte array to a string before performing the find() operation. Try this version of influx.py <https://raw.githubusercontent.com/tkeffer/weewx-influx/master/bin/user/influx.py> . -tk On Wed, Jan 13, 2021 at 5:52 PM Tom Corbett <giantkingsq...@gmail.com> wrote: > > Hi All, > > I'm new to weewx and python in general so have been plugging away for a > couple of weeks getting everything setup and working. > > My hardware is an ecowitt WH9200 and I'm using weewx 4.2 on FreeBSD which > I setup using the py-setup method. I am capturing the data using the > weewx-interceptor in listen mode. This all seems to be flowing fine into > the sqlite DB. > > I then have the weewx-influx extension sending data to an InfluxDB every > minute. This will work fine for several hours; ~ 11 hours being the current > record, but will crash with the following in the logs: My take on that is > that for some reason a string is being sent to Influx rather than an > integer or boolean, however I could be seeing the symptom rather than the > cause. > > To investigate I checked the record in the sqlite DB immediately after the > last one in the InfluxDB, ie the one that caused the crash, and could see > nothing that looked different to all the previous one. IE, I couldn't see > any strings in the record. > > Any help would be appreciated in tracking this down. I'm a bit perplexed > as to why it runs happily for hours then has a coniption. > > Thanks, > > Tom > > Here's the relevent section of weewx.conf, nothing too interesting AFAIK. > > [[Influx]] > database = weewx_hades_test > host = 192.168.178.25 > unit_system = METRICWX > > Logs: > > Jan 14 10:54:45 28spots kernel: Jan 14 10:54:45 28spots weewx[964] ERROR > weewx.restx: Influx: Unexpected exception of type <class 'TypeError'> > > Jan 14 10:54:47 28spots kernel: Jan 14 10:54:47 28spots weewx[964] ERROR > weewx.restx: *** Traceback (most recent call last): > > Jan 14 10:54:47 28spots kernel: Jan 14 10:54:47 28spots weewx[964] ERROR > weewx.restx: *** File "/usr/home/weewx/bin/weewx/restx.py", line 475, in > post_with_retries > > Jan 14 10:54:47 28spots kernel: Jan 14 10:54:47 28spots weewx[964] ERROR > weewx.restx: *** _response = self.post_request(request, data) > > Jan 14 10:54:47 28spots kernel: Jan 14 10:54:47 28spots weewx[964] ERROR > weewx.restx: *** File "/usr/home/weewx/bin/user/influx.py", line 498, in > post_request > > Jan 14 10:54:47 28spots kernel: Jan 14 10:54:47 28spots weewx[964] ERROR > weewx.restx: *** return super(InfluxThread, > self).post_request(request, payload) > > Jan 14 10:54:47 28spots kernel: Jan 14 10:54:47 28spots weewx[964] ERROR > weewx.restx: *** File "/usr/home/weewx/bin/weewx/restx.py", line 537, in > post_request > > Jan 14 10:54:47 28spots kernel: Jan 14 10:54:47 28spots weewx[964] ERROR > weewx.restx: *** _response = urllib.request.urlopen(request, > data=data_bytes, timeout=self.timeout) > > Jan 14 10:54:47 28spots kernel: Jan 14 10:54:47 28spots weewx[964] ERROR > weewx.restx: *** File "/usr/local/lib/python3.7/urllib/request.py", line > 222, in urlopen > > Jan 14 10:54:47 28spots kernel: Jan 14 10:54:47 28spots weewx[964] ERROR > weewx.restx: *** return opener.open(url, data, timeout) > > Jan 14 10:54:47 28spots kernel: Jan 14 10:54:47 28spots weewx[964] ERROR > weewx.restx: *** File "/usr/local/lib/python3.7/urllib/request.py", > line 531, in open > > Jan 14 10:54:47 28spots kernel: Jan 14 10:54:47 28spots weewx[964] ERROR > weewx.restx: *** response = meth(req, response) > > Jan 14 10:54:47 28spots kernel: Jan 14 10:54:47 28spots weewx[964] ERROR > weewx.restx: *** File "/usr/local/lib/python3.7/urllib/request.py", line > 641, in http_response > > Jan 14 10:54:47 28spots kernel: Jan 14 10:54:47 28spots weewx[964] ERROR > weewx.restx: *** 'http', request, response, code, msg, hdrs) > > Jan 14 10:54:47 28spots kernel: Jan 14 10:54:47 28spots weewx[964] ERROR > weewx.restx: *** File "/usr/local/lib/python3.7/urllib/request.py", > line 569, in error > > Jan 14 10:54:47 28spots kernel: Jan 14 10:54:47 28spots weewx[964] ERROR > weewx.restx: *** return self._call_chain(*args) > > Jan 14 10:54:47 28spots kernel: Jan 14 10:54:47 28spots weewx[964] ERROR > weewx.restx: *** File "/usr/local/lib/python3.7/urllib/request.py", line > 503, in _call_chain > > Jan 14 10:54:47 28spots kernel: Jan 14 10:54:47 28spots weewx[964] ERROR > weewx.restx: *** result = func(*args) > > Jan 14 10:54:47 28spots kernel: Jan 14 10:54:47 28spots weewx[964] ERROR > weewx.restx: *** File "/usr/local/lib/python3.7/urllib/request.py", line > 649, in http_error_default > > Jan 14 10:54:47 28spots kernel: Jan 14 10:54:47 28spots weewx[964] ERROR > weewx.restx: *** raise HTTPError(req.full_url, code, msg, hdrs, fp) > > Jan 14 10:54:47 28spots kernel: Jan 14 10:54:47 28spots weewx[964] ERROR > weewx.restx: *** urllib.error.HTTPError: HTTP Error 500: Internal Server > Error > > Jan 14 10:54:47 28spots kernel: Jan 14 10:54:47 28spots weewx[964] ERROR > weewx.restx: *** > > Jan 14 10:54:47 28spots kernel: Jan 14 10:54:47 28spots weewx[964] ERROR > weewx.restx: *** During handling of the above exception, another exception > occurred: > > Jan 14 10:54:47 28spots kernel: Jan 14 10:54:47 28spots weewx[964] ERROR > weewx.restx: *** > > Jan 14 10:54:47 28spots kernel: Jan 14 10:54:47 28spots weewx[964] ERROR > weewx.restx: *** Traceback (most recent call last): > > Jan 14 10:54:47 28spots kernel: Jan 14 10:54:47 28spots weewx[964] ERROR > weewx.restx: *** File "/usr/home/weewx/bin/weewx/restx.py", line 381, > in run_loop > > Jan 14 10:54:47 28spots kernel: Jan 14 10:54:47 28spots weewx[964] ERROR > weewx.restx: *** self.process_record(_record, dbmanager) > > Jan 14 10:54:47 28spots kernel: Jan 14 10:54:47 28spots weewx[964] ERROR > weewx.restx: *** File "/usr/home/weewx/bin/weewx/restx.py", line 446, > in process_record > > Jan 14 10:54:47 28spots kernel: Jan 14 10:54:47 28spots weewx[964] ERROR > weewx.restx: *** self.post_with_retries(_request, data) > > Jan 14 10:54:47 28spots kernel: Jan 14 10:54:47 28spots weewx[964] ERROR > weewx.restx: *** File "/usr/home/weewx/bin/weewx/restx.py", line 496, in > post_with_retries > > Jan 14 10:54:47 28spots kernel: Jan 14 10:54:47 28spots weewx[964] ERROR > weewx.restx: *** self.handle_exception(e, _count + 1) > > Jan 14 10:54:47 28spots kernel: Jan 14 10:54:47 28spots weewx[964] ERROR > weewx.restx: *** File "/usr/home/weewx/bin/user/influx.py", line 486, in > handle_exception > > Jan 14 10:54:47 28spots kernel: Jan 14 10:54:47 28spots weewx[964] ERROR > weewx.restx: *** if payload and payload.find("error") >=0: > > Jan 14 10:54:47 28spots kernel: Jan 14 10:54:47 28spots weewx[964] ERROR > weewx.restx: *** TypeError: argument should be integer or bytes-like > object, not 'str' > Jan 14 10:54:47 28spots kernel: Jan 14 10:54:47 28spots weewx[964] > CRITICAL weewx.restx: Influx: Thread terminating. Reason: argument should > be integer or bytes-like object, not 'str' > > > -- > 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+unsubscr...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/weewx-user/d556f993-de2b-4016-b7f8-b396ab32b327n%40googlegroups.com > <https://groups.google.com/d/msgid/weewx-user/d556f993-de2b-4016-b7f8-b396ab32b327n%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 weewx-user+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/weewx-user/CAPq0zEBFN%3DcgZzHBYkwE9UO_Ci9QMP08%2BV7UoEqbeG4mSBV1%3Dw%40mail.gmail.com.