Yes that's the trick and fixed it for me too - Thx Joe Garcia schrieb am Montag, 20. Oktober 2025 um 06:07:25 UTC+2:
> OK, that fixed it, thanks! For anyone else running into this problem, > just replace /usr/share/weewx/weewx/crc16.py with @Tom Keffer's earlier > version. > > On Monday, 20 October 2025 at 16:42:50 UTC+13 Joe Garcia wrote: > >> Thanks, I'll give it a go and report back. >> >> If by "the author" you mean the developer of the Meteostick driver, I'm >> not sure how useful that'll be, a lot of his (very useful) WeeWX-related >> tools date from around the 2020 time frame and haven't been updated since >> then. For example there's multi-year-old PRs for the driver still active. >> Not meant as a criticism, everyone has a day job they need to deal with, >> just pointing out that a fix at the meteostick.py end may be awhile >> forthcoming. >> >> On Monday, 20 October 2025 at 02:38:09 UTC+13 Tom Keffer wrote: >> >>> It appears that this part of the meteostick driver was never updated to >>> Python 3. >>> >>> The crc16() function could work with either Python 2 or 3 until V5.2, at >>> which point the Python 2 code was removed. >>> >>> For the moment, replace the file /usr/share/weewx/weewx/crc16.py with >>> the older version, attached below. >>> >>> I'll file an issue with the author. >>> >>> -tk >>> >>> On Sun, Oct 19, 2025 at 6:16 AM Joe Garcia <[email protected]> wrote: >>> >>>> Yeah, sorry, the post took awhile to appear so I couldn't update it >>>> with the full log, whole thing is attached below. Looking at the repo, >>>> there was a change to crc16.py 11 months ago that may have caused this: >>>> >>>> - def crc16(bytes, crc_start=0): >>>> + def crc16(byte_buf, crc_start=0): >>>> >>>> - return reduce(lambda crc_sum, ch: (_table[(crc_sum >> 8) ^ ch] ^ >>>> (crc_sum << 8)) & 0xffff, byte_buf, crc_start) >>>> + crc_sum = reduce(lambda crc, ch : (_table[(crc >> 8) ^ ch] ^ (crc << >>>> 8)) & 0xffff, byte_iter, crc_start) >>>> >>>> but see my earlier comment about no hablo Python :). >>>> >>>> CRITICAL __main__: Caught unrecoverable exception: >>>> CRITICAL __main__: **** unsupported operand type(s) for ^: 'int' >>>> and 'str' >>>> CRITICAL __main__: **** Traceback (most recent call last): >>>> CRITICAL __main__: **** File "/usr/share/weewx/weewxd.py", line >>>> 127, in main >>>> CRITICAL __main__: **** engine.run() >>>> CRITICAL __main__: **** ~~~~~~~~~~^^ >>>> CRITICAL __main__: **** File "/usr/share/weewx/weewx/engine.py", >>>> line 204, in run >>>> CRITICAL __main__: **** for packet in >>>> self.console.genLoopPackets(): >>>> CRITICAL __main__: **** >>>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^ >>>> CRITICAL __main__: **** File >>>> "/etc/weewx/bin/user/meteostick.py", line 311, in genLoopPackets >>>> CRITICAL __main__: **** data = >>>> self.station.parse_readings(readings, self.rain_per_tip) >>>> CRITICAL __main__: **** File >>>> "/etc/weewx/bin/user/meteostick.py", line 638, in parse_readings >>>> CRITICAL __main__: **** data = self.parse_raw(raw, >>>> CRITICAL __main__: **** >>>> self.channels['iss'], >>>> CRITICAL __main__: **** ...<3 lines>... >>>> CRITICAL __main__: **** >>>> self.channels['temp_hum_2'], >>>> CRITICAL __main__: **** rain_per_tip) >>>> CRITICAL __main__: **** File >>>> "/etc/weewx/bin/user/meteostick.py", line 687, in parse_raw >>>> CRITICAL __main__: **** Meteostick._check_crc(raw_msg_crc, >>>> chksum) >>>> CRITICAL __main__: **** >>>> ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ >>>> CRITICAL __main__: **** File >>>> "/etc/weewx/bin/user/meteostick.py", line 505, in _check_crc >>>> CRITICAL __main__: **** crc_result = crc16(msg) >>>> CRITICAL __main__: **** File "/usr/share/weewx/weewx/crc16.py", >>>> line 49, in crc16 >>>> CRITICAL __main__: **** return reduce(lambda crc_sum, ch: >>>> (_table[(crc_sum >> 8) ^ ch] ^ (crc_sum << 8)) & 0xffff, >>>> CRITICAL __main__: **** byte_buf, crc_start) >>>> CRITICAL __main__: **** File "/usr/share/weewx/weewx/crc16.py", >>>> line 49, in <lambda> >>>> CRITICAL __main__: **** return reduce(lambda crc_sum, ch: >>>> (_table[(crc_sum >> 8) ^ ch] ^ (crc_sum << 8)) & 0xffff, >>>> CRITICAL __main__: **** >>>> ~~~~~~~~~~~~~~~^~~~ >>>> CRITICAL __main__: **** TypeError: unsupported operand type(s) for >>>> ^: 'int' and 'str' >>>> CRITICAL __main__: **** Exiting. >>>> Traceback (most recent call last): >>>> File "/usr/share/weewx/weewxd.py", line 226, in <module> >>>> main() >>>> ~~~~^^ >>>> File "/usr/share/weewx/weewxd.py", line 127, in main >>>> engine.run() >>>> ~~~~~~~~~~^^ >>>> File "/usr/share/weewx/weewx/engine.py", line 204, in run >>>> for packet in self.console.genLoopPackets(): >>>> ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^ >>>> File "/etc/weewx/bin/user/meteostick.py", line 311, in genLoopPackets >>>> data = self.station.parse_readings(readings, self.rain_per_tip) >>>> File "/etc/weewx/bin/user/meteostick.py", line 638, in parse_readings >>>> data = self.parse_raw(raw, >>>> self.channels['iss'], >>>> ...<3 lines>... >>>> self.channels['temp_hum_2'], >>>> rain_per_tip) >>>> File "/etc/weewx/bin/user/meteostick.py", line 687, in parse_raw >>>> Meteostick._check_crc(raw_msg_crc, chksum) >>>> ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^ >>>> File "/etc/weewx/bin/user/meteostick.py", line 505, in _check_crc >>>> crc_result = crc16(msg) >>>> File "/usr/share/weewx/weewx/crc16.py", line 49, in crc16 >>>> return reduce(lambda crc_sum, ch: (_table[(crc_sum >> 8) ^ ch] ^ >>>> (crc_sum << 8)) & 0xffff, >>>> byte_buf, crc_start) >>>> File "/usr/share/weewx/weewx/crc16.py", line 49, in <lambda> >>>> return reduce(lambda crc_sum, ch: (_table[(crc_sum >> 8) ^ ch] ^ >>>> (crc_sum << 8)) & 0xffff, >>>> ~~~~~~~~~~~~~~~^~~~ >>>> TypeError: unsupported operand type(s) for ^: 'int' and 'str' >>>> >>>> On Sunday, 19 October 2025 at 03:12:18 UTC+13 Tom Keffer wrote: >>>> >>>>> I'm sorry but the lines in your snippet are so truncated it's hard to >>>>> tell what's going on. Can we see the full lines? >>>>> >>>>> On Sat, Oct 18, 2025 at 7:02 AM Joe Garcia <[email protected]> wrote: >>>>> >>>>>> Another instance of 5.2 breakage, Meteostick support no longer works: >>>>>> >>>>>> CRITICAL __main__: **** File >>>>>> "/etc/weewx/bin/user/meteostick.py", l> >>>>>> CRITICAL __main__: **** crc_result = crc16(msg) >>>>>> CRITICAL __main__: **** File >>>>>> "/usr/share/weewx/weewx/crc16.py", lin> >>>>>> CRITICAL __main__: **** return reduce(lambda crc_sum, ch: >>>>>> (_table> >>>>>> CRITICAL __main__: **** byte_buf, crc_start) >>>>>> CRITICAL __main__: **** File >>>>>> "/usr/share/weewx/weewx/crc16.py", lin> >>>>>> CRITICAL __main__: **** return reduce(lambda crc_sum, ch: >>>>>> (_table> >>>>>> CRITICAL __main__: **** >>>>>> > >>>>>> CRITICAL __main__: **** TypeError: unsupported operand type(s) >>>>>> for ^:> >>>>>> CRITICAL __main__: **** Exiting. >>>>>> >>>>>> This may also have come about from an update to Python that occurred >>>>>> at the same time, not 5.2-specific. Unfortunately I don't speak Python >>>>>> so >>>>>> I'm not sure what's required to fix meteostick.py, and the original on >>>>>> Github hasn't been updated since 2019. >>>>>> >>>>>> -- >>>>>> 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 visit >>>>>> https://groups.google.com/d/msgid/weewx-user/56358b16-66c3-41f6-b500-5cd3e6f9aad6n%40googlegroups.com >>>>>> >>>>>> <https://groups.google.com/d/msgid/weewx-user/56358b16-66c3-41f6-b500-5cd3e6f9aad6n%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 visit >>>> https://groups.google.com/d/msgid/weewx-user/eebc86d4-933e-480b-a5d4-6cdb1b49403fn%40googlegroups.com >>>> >>>> <https://groups.google.com/d/msgid/weewx-user/eebc86d4-933e-480b-a5d4-6cdb1b49403fn%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 visit https://groups.google.com/d/msgid/weewx-user/739afb6d-c04c-4b05-a3cc-7185923bbfe8n%40googlegroups.com.
