Reading out Kamstrup Multical 402/403 with home-built optical head
(Updated: )
Our grid heating meter has been replaced, and since I like to read out meters, I had to replace my read out sensor as well. Here I document how I custom-built an IR / optical head to read out the Kamstrup Multical heat meter using their proprietary protocol.
TL;DR:
- Get head from using the hal9k.dk reader head (archive) then solder together (22 EUR including shipping in EU, a bargain ;). Best to pay with PayPal because banks apparently charge a ridiculous amount to transfer money across currencies.)
- Connect to an FTDI USB TTL reader (e.g. at tinytronics)
- Use either use this python script to read out the sensor and push to domoticz, or use my fork to push to InfluxDB or MQTT. Note that the original script seems to use more battery than required (see issue on GitHub repo, being worked on)
Hardware ¶
I got the optical head from hal9k.dk for 22 EUR including shipping, soldering and assembly required. Alternatively, you can get one from volkszaehler.org or buy the official one (not recommended, price >150 EUR).
Soldering instructions are on the hal9k website, and are fairly straight-forward. Note that the resistor color coding might differ from the ones mentioned in the article, use this website to check the resistance.
Software ¶
There are several software solutions available for USB-driven optical heads:
- The original script to reverse engineer the Kamstrup protocol is available here, but aimed at electricity meters.
- A newer version for Kamstrup Multical with Domoticz is available here. This script is recommended for use with Domoticz, but has a small bug that over-queries the meter in some cases, possibly reducing battery life.
- Finally, I adapted the above script to read the Kamstrup Multical and push to either InfluxDB or MQTT. It requires a bit more manual work but gives flexibility to use the data where wanted
Mounting ¶
Resources ¶
Useful background info on the Kamstrump Multical meter sensor here (archive) and here (archive).