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.