cfeenstra1024 / kamstrup-multical-hardware

PCB and housing for ESPHome integration with Kamstrup Multical 403 meter
MIT License
25 stars 2 forks source link
esphome kamstrup kamstrup403 multical

Hardware for use with ESPHome and Kamstrup Multical 403

This repository contains a PCB and housing that can be used as the hardware to read the measurements from a Kamstrup Multical 403. The PCB uses a 'D1 Mini' ESP8266 board. A software component for use in ESPHome has been created.

Using this setup you can read measurements from the Kamstrup Multical (e.g. city heating) and publish the measurements to Home Assistant.

Electronics

The Kamstrup Multical 403 uses an optical interface for communication. A PCB was designed that uses a mini-D1 ESP8266 board. The PCB Gerbers folder contains the required files to fabricate the PCB. The PCB Components folder contains the BOM (bill of materials) and the component placement files. A special version for use with JLCBCB has been created for these.

The PCB has the following features:

What you need

Images

PCB Top PCB Bottom

Housing

The housing can be 3D printed with a regular 3D printer. The Fusion 360 design and STL files are provided.

The Kamstrup Multical 40x meter needs to be waken up by pressing a button. It then stays awake for a few minutes. To keep the meter awake, magnets must be placed in the 4 holes. Every hole fits 2 magnets (using a total of 8).

What you need

Images

Housing Top Housing Inside Housing Bottom

Software

Use the kamstrup_kmp component in ESPHome. Refer to the Documentation for all details regarding this component.

Example config file:

uart:
  baud_rate: 1200
  stop_bits: 2
  tx_pin: GPIO15
  rx_pin: GPIO13

sensor:
  - platform: kamstrup_mc40x
    heat_energy:
      name: 'Heat Energy'
    power:
      name: 'Heat Power'
    temp_diff:
      name: 'Heat Temperature Difference'
    flow:
      name: 'Heat Flow'
    custom:
      - name: Custom Heat Energy
        command: 0x003C
      - name: Custom Heat Power
        command: 0x0050
    update_interval: 60s