Sends MQTT events from KRONOTERM device
Project description
kronoterm2mqtt
Get information from the Kronoterm heat pump connected to Modbus TEX interface.
While reading Modbus registers from the pump the kronoterm2mqtt sends MQTT discovery events from KRONOTERM to MQTT broker (Mosquito) that Home Assistant then reads and the sensor readings appear therein automatically.
Optionally, the MQTT loop can also control custom (DIY) IO expander to be added to heat pump controlling additional heating loops and pumps for solar DHW pre-heat boiler. This expander board is using Arduino nano MCU to provide serial (UART) interface for Raspberry Pi control. See Etera UART GPIO expander project for help on the protocol and interface. By default, this module functionality is disabled so that only Kronoterm Heat Pump MQTT can still be used without having this hardware module.
Bootstrap kronoterm2mqtt
Clone the sources and just call the CLI to create a Python Virtualenv, e.g.:
~$ git clone --recursive https://github.com/kosl/kronoterm2mqtt.git
~$ cd kronoterm2mqtt
~/kronoterm2mqtt$ ./cli.py --help
The output of ./cli.py --help
looks like:
kronoterm2mqtt v0.1.6 bed9746 (/home/leon/kronoterm2mqtt)
Usage: ./cli.py [OPTIONS] COMMAND [ARGS]...
╭─ Options ────────────────────────────────────────────────────────────────────────────────╮
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ───────────────────────────────────────────────────────────────────────────────╮
│ edit-settings Edit the settings file. On first call: Create the default one. │
│ print-registers Print RAW modbus register data │
│ print-settings Display (anonymized) MQTT server username and password │
│ print-values Print all values from the definition │
│ probe-usb-ports Probe through the USB ports and print the values from definition │
│ publish-loop Publish KRONOTERM registers to Home Assistant MQTT │
│ systemd-debug Print Systemd service template + context + rendered file content. │
│ systemd-remove Remove Systemd service file. (May need sudo) │
│ systemd-setup Write Systemd service file, enable it and (re-)start the service. │
│ (May need sudo) │
│ systemd-status Display status of systemd service. (May need sudo) │
│ systemd-stop Stops the systemd service. (May need sudo) │
│ test-mqtt-connection Test connection to MQTT Server │
│ version Print version and exit │
╰──────────────────────────────────────────────────────────────────────────────────────────╯
Project Homepage: https://github.com/kosl/kronoterm2mqtt
Setup
Once having hardware (Modbus wiring) correctly installed the steps to get running are:
./cli-app.py edit-setting
to configure MQTT host and credentials, heat pump model and RS485 port../cli-app.py test-mqtt-connection
to check that Mosquitto broker accepts connections../cli-app.py print-values
to see the actual registers from the heat pump converted to correct units.- Install and configure MQTT integration in Home assistant
./cli-app.py publish-loop
to see the heat pump under Home Assistant -> Settings -> Devices & Services -> MQTT.sudo ./cli-app.py systemd-setup
to create permanent service, andsudo ./cli-app.py systemd-start
to start thepublish-loop
service
There are some other useful commands to debug (-v
switch) and
develop it further. Unwanted registers can be commented out by
changing kronoterm2mqtt/definitions/kronoterm_ksm.toml
individual
[[sensor]]
entries to something like [[sensor_disabled]]
so that
it will be skipped during definitions scan. There are quite some
number of disabled sensors that can be shown and the TOML file can get
more sensors if required.
print-values
$ ./cli.py print-values
+ /home/leon/kronoterm2mqtt/.venv-app/bin/kronoterm2mqtt_app print-values
kronoterm2mqtt v0.1.6 42cf603 (/home/leon/kronoterm2mqtt)
(Set log level 0: ERROR)
Connect to /dev/ttyUSB0...
HP inlet temperature 30.7 °C
DHW temperature 48.1 °C
Outside temperature 29.0 °C
HP outlet temperature 30.9 °C
Evaporating temperature 30.7 °C
Compressor temperature 30.3 °C
Current power consumption 0.0 W
Loop 1 temperature 29.8 °C
Loop 2 temperature 28.3 °C
Loop 2 thermostat temperature 25.5 °C
Heating system pressure 1.4 bar
Source pressure 1.8 bar
COP 0.00
SCOP 0.00
Using PyPi repository
kronoterm2mqtt is released under PyPi so that it is easier to install it in a virtual environment such as:
python -m venv venv
venv/bin/pip install kronoterm2mqtt
venv/bin/kronoterm2mqtt_app edit-settings
venv/bin/kronoterm2mqtt_app print-values
Images
Modbus RTU connection within a Kronoterm ETERA heat pump from Raspberry Pi3B to TEX interface
Raspberry Pi3B (running Home Assistant) and a small 5-port ethernet switch below are powered by a buckle step down (12->5V) converters.
Home Assistant
Home Assistant -> Settings -> Devices & Services -> MQTT screenshot
TODO
-
enum_sensor
to convert status registers to more meaningfull text readings instead of float sensor -
switch
to turn on at least DHW circulation pump manually in Home Assistant and then programatically since 6 transitions provided by the heat pump is too limited -
binary_sensor
to show some two-state states -
status_sensor
to decode binary statuses inenum
like manner combined. For example error messages. - Upgrade ha-services with
number
component allowing change of some numeric parameters (set temperatures, etc.).
References
Navodila za priklop in uporabo CNS sistema.pdf
Kronoterm Modbus RTU description (in Slovene) obtained from Kronoterm supportInstallation and Operating Manual for BMS System.pdf
Kronoterm Modbus RTU description obtained from Kronoterm support
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file kronoterm2mqtt-0.1.6.tar.gz
.
File metadata
- Download URL: kronoterm2mqtt-0.1.6.tar.gz
- Upload date:
- Size: 559.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.11.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | bdf63eb3df6745dec8cf3284247865a1dd0edc16abc8aefe06b207222ba20094 |
|
MD5 | 83627b3dad265fd6d753341d9f1f3614 |
|
BLAKE2b-256 | bb8e8556251f7987e21664d0255c9734384ba78cc49a87c393f349da811bba44 |
File details
Details for the file kronoterm2mqtt-0.1.6-py3-none-any.whl
.
File metadata
- Download URL: kronoterm2mqtt-0.1.6-py3-none-any.whl
- Upload date:
- Size: 37.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.11.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d108c849d8cc4b92ce8b5aad86f703ae900d52f5cf57da8625ff82c66192a8d0 |
|
MD5 | c4e18a2eb081cfa878a9f0c09567b10d |
|
BLAKE2b-256 | 4a09b015a2c3900632be132f028c87776d331630ef6af69deef379ca04d8a26b |