Skip to content

Conversation

@jktjkt
Copy link

@jktjkt jktjkt commented Jan 24, 2026

Thanks for an awesome tool. We have 10 pcs of Multical 603 and 148 of Multical 303, this PR is a result of some quick toying around with Zenovate/Tespro OP-BT optical head. Please review the individual commits for more details, this is just a summary:

  • unit handling
    • the unit of Kelvins is just K, there's no ˚K
    • add support for W and var with no prefix
    • add other units from the docs (and I learned about the \N{THAT GLYPH NAME} syntax, yay)
  • registers
    • add E1/V1/E8/E9 identification
    • convert some which were mentioned in the vendor's docs, but unused here
    • convert their numbers to decimal

The unit tests all pass. Some of your linters produce a diff which touches files that I have not modified, and I cannot run ruff in my env. Hope this is OK.

There are no "Kelvin degrees", it's always just Kelvins.
This is stated in the "58101758_B1_GB_02.2021" document (Modbus register
mapping, Modbus RTU, Modbus/KMP TCP/IP"). It also makes sense, looking
at all the other values in the table.
These data come from the "58101758_B1_GB_02.2021" document (Modbus
register mapping, Modbus RTU, Modbus/KMP TCP/IP"). I have not seen them
in my meters, but given that all the other values match, I\d say there's
a high chance of them being correct.
This is speculative (I have no KMP-speaking electricity meter with an
IEC optical port), but given that the "kvar" is already defined, and
looking at the other units, this is very likely a typo.
Some of these calculators support multiple flow meters, so let's
identify which "channel" this is using.
The datasheet has this information, so let's include it in the source
code.
Almost all of these were cross-checked against a number of PDFs which I
found on the web. The exceptions are documented in the code:

- 259 is very likely the Q_p, aka the nominal flow,
- 400 is an educated guess, a one-decimal-digit precise T1-T2 difference
- 675 is only there on our WM-Bus enabled Multical 303 which were
  procured with a transmission interval of 96 seconds

I'm using decimal numbers instead of hex because that's what the vast
majority of the documents use. I'll change the existing constants in a
follow-up commit.
The vast majority of the vendor-provided documentation uses decimal
numbers as the primary format -- and so does this tool in its default
output. I only found a couple of documents which used hex numbers, and
in these cases they were always accompanied with the decimal equivalent.
I saw no instance of hexadecimal with no decimal equivalents.

I checked that the resulting content of the list is exactly the same.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant