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/e61f529d-5cef-499e-a603-3cfb77db8996n%40googlegroups.com.

Reply via email to