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.

Reply via email to