De Dietrich/Diematic (Modbus) to MQTT Interface

Hello Kromagnsss,

I thank you for your feedback. Yes automatic discovery need birth message to be retained to allow proper behavior if the Diematic interface is launched after HA.

I have updated wiki to remind that.
Benoit

Hi all,
Thanks for all this great work !
@BenoitS and @mtrofimm , based on your discussion here above, does that mean that the GitHub project from BenoitS is compatible with Diametic Isystem (one year before, it seems to not to be the case)?
I have a De Dietrich Modulens AGC 35.
Thanks

Hello,

I donā€™t think itā€™s compatible because I heard that Diematic Isystem is only a modBus slave. But I never try as I do not have access to any Boiler with Diematic Isystem.

What I saw on the internet that modBus register seems to be equivalent, so the main task should be update the loop function inside Diematic3Panel class. For that you need a Boiler, the hardware stuff and few python knowledeges.

Regards,
Benoit

Hi,
I try to use docker compose and I got this message :
[+] Running 0/1
ā ¦ diematic Pulling 1.6s
manifest unknown
I search on dockerhub : diematic and i didnā€™t find any image
docker image diematic, is it still in dockerhub ?
maybe you change name ?
Thanks

I forgot to give my docker-compose.yml
version: ā€˜3ā€™
services:
diematic:
container_name: diematic
restart: unless-stopped
image: Package diematic_to_mqtt Ā· GitHub
volumes:
- ~docker/diematic/conf:/app/conf
- ~docker/diematic/log:/app/log

hello,

docker image are still there :

But I think there is an access right issue:
docker pull Package diematic_to_mqtt Ā· GitHub
Error response from daemon: Head ā€œhttps://ghcr.io/v2/benoit3/diematic_to_mqtt/manifests/dev-latestā€: denied: denied

As I renew github repository secret token for workflow actions 3 days ago, it could be linked. But I donā€™t at all to solve that. I will look for, but as Iā€™m newbe for this kind of subject it could take days.

Benoit

Hi Benoit,
Thanks for your answer.
Iā€™m going to wait for your search.
Iā€™m newbe too and iā€™m trying to use docker for parts of my sofwares to avoid too much confusion :wink:
Itā€™s working, thanks.
But I have an other trouble. Everything is working, except i donā€™t see any published message in my MQTT server (Mosquitto). What can be wrong ?
see below some logs:
024-01-24 10:01:40,676 - main - CRITICAL - Modbus interface address: 192.168.1.62 : 20108
2024-01-24 10:01:40,677 - main - CRITICAL - Modbus regulator address: 0xa
2024-01-24 10:01:40,679 - main - CRITICAL - Broker: 192.168.1.87 #warning: using server name or localhost or 127.0.0.1 may not work with docker : 1883
2024-01-24 10:01:40,680 - main - CRITICAL - Topic Root: home/heater/boiler
2024-01-24 10:01:40,681 - main - CRITICAL - Hassio Discovery Enable: True
2024-01-24 10:01:40,682 - main - CRITICAL - Hassio Discovery Prefix: homeassistant
2024-01-24 10:01:40,683 - main - CRITICAL - Regulator type is Diematic3
2024-01-24 10:01:40,865 - Diematic - INFO - Using tzinfo (ā€˜Europe/Parisā€™) for Boiler time sync
2024-01-24 10:01:40,869 - Diematic - WARNING - Init Link with Regulator
2024-01-24 10:01:46,193 - Diematic - INFO - ModBus Master Slave Synchro OK
2024-01-24 10:01:47,222 - main - INFO - Publish :home/heater/boiler/status Online
2024-01-24 10:01:47,224 - main - INFO - Publish :home/heater/boiler/date 2024-01-24T11:01:00+01:00
2024-01-24 10:01:47,226 - main - INFO - Publish :home/heater/boiler/lastTimeSync
2024-01-24 10:01:47,229 - main - INFO - Publish :home/heater/boiler/type 1
2024-01-24 10:01:47,231 - main - INFO - Publish :home/heater/boiler/ctrl 402
2024-01-24 10:01:47,233 - main - INFO - Publish :home/heater/boiler/ext/temp 10.1
2024-01-24 10:01:47,235 - main - INFO - Publish :home/heater/boiler/temp 48.8
2024-01-24 10:01:47,237 - main - INFO - Publish :home/heater/boiler/targetTemp 0.0
2024-01-24 10:01:47,239 - main - INFO - Publish :home/heater/boiler/returnTemp
2024-01-24 10:01:47,241 - main - INFO - Publish :home/heater/boiler/waterPressure 1.0
When i check with MQTT explorer no trace on any message home/ā€¦
I published a message from SBC where diematic_to_MQTT is implemented
eric@pine64:~$ mosquitto_pub -h 192.168.1.87 -t home/heater/boiler/zoneB/dayTemp/set -m 17.5
and then i can see a message in an other SBC where i have MQTTT server home/heater/boiler/zoneB/dayTemp
So it seems something is wrong in my config see above
Modbus]
ip: 192.168.1.62
port: 20108
#regulator address is used for Diematic3
regulatorAddress:0x0A
#interfaceAddress is used for DiematicDelta
interfaceAddress:0x32

[MQTT]
brokerHost: 192.168.1.87 #warning: using server name or localhost or 127.0.0.1 may not work with docker
brokerPort: 1883
brokerLogin:
brokerPassword:
#topic prefix without any / at the beginning and the end of it
topicPrefix: home/heater
#clientId is append to the topicPrefix
clientId: boiler

[Boiler]
#regulator type ( Diematic3 (Default) or DiematicDelta, for dev purpose only)
regulatorType:Diematic3
#timezone in pytz list
timezone:Europe/Paris
#automatic boiler time synchronization
timeSync:False
#period for parameter polling in seconds
period: 10
#force circuit A to be enabled. False means it is automatic if a temperature sensor is detected
enable_circuit_A: False
#force circuit B to be enabled. False means it is automatic if a temperature sensor is detected
enable_circuit_B: True

[Home Assistant]
#enable MQTT Discovery
MQTT_DiscoveryEnable:1
#topic prefix without any / at the beginning and the end of it
discovery_prefix: homeassistant

thanks
Eric

Hello,
seems to be corrected now.
I unfortunately clear some parts of docker images.
They should be regenerated
Benoit

Hi Benoit,
After upgrading Paho-MQTT to version 2.0 I had a ā€œcallback_api_versionā€ issue without possibility to launch the diematic service. So to make it compatible with paho-mqtt 2.0, it is very simple and we just have to change in Diematic32MQTT.py Line 322

client = mqtt.Client()

by

client = mqtt.Client(mqtt.CallbackAPIVersion.VERSION1)

Then again it works like a charm :wink:
Rofiq

Hello,
Trank you for the issue and the correction. Can you raise an issue on github to track them?
Regards,
Benoit

Hi Benoit,
Done, thanks

Corrected in main / v1.2.5

Hi @ damienvw,
I have the same heater and looking for an integration with HA.

I used the integration via Somfy Tahoma and Dedietrich ModBus interface 7618074, but since 2023 the integration does not work anymore. I reported this to Somfy but did not get any help.

Did you find a solution for Diematic iSystem?
I found integration by ngraziano/isystem-to-mqtt, but it uses different USB interface and not plug and play for HA.

Regards,
Pawel

Hi,
Unfortunately I donā€™t belong any boiler with such iSystem interface. So Iā€™m not able to do it.

Maybe somebody will do it but when?
BenoƮt

Hi @rofiq
Thanks for the nice guide.
I tried to instal it on my HAOS running on rpi5-64.

  • Core2024.10.1
  • Supervisor2024.10.0
  • Operating System13.1

When using SSH & web terminal I am getting ā€œbash: sudo command not foundā€ for command sudo pip3 install pytz.

I check the Terminal & SSH add-on documentation a there is statement " * This add-on will not enable you to install packages or do anything as root. This is not working with Home Assistant*."

Looks I canā€™t use the HA CLI.

Any idea/advice?

Hi @champ2410

Thanks for the detailed installation guide.
I tried to instal it on my HAOS running on rpi5-64.

  • Core2024.10.1
  • Supervisor2024.10.0
  • Operating System13.1

I can see the local add-on ā€œDiematic 3ā€ in my HA add-ons section. However when. trying to instal I got error:

INFO (MainThread) [supervisor.addons.addon] No local_diematic3 addon Docker image local/aarch64-addon-diematic3 found
ERROR (MainThread) [supervisor.docker.addon] Invalid build environment, canā€™t build this add-on!

Do you have any suggestions what I am doing wrong?

Hi @BenoitS,

I finally managed to get your brilliant script in HA and connected it with Diematic4 (iSystem). Thanks for sharing it!

I am not able to instal it in HAOS but I did using my another rpi with docker composer.
I have two HAs, one for Diematic32MQTT and second for HA dashboard and MQTT broker.

I use same converter USR-TCP232 306. In general it works fin. It reads the boiler parameter as well as updates them. I changed the settings in the converter and unselected option ā€œCP Server-kick off old connectionā€. Otherwise, it worked only once for 40 seconds (in MASTER mode).

Settings of the converter seem to be ok:

Iā€™m getting error in the SLAVE mode "WARNING - Received Frame Length Error". I assume because of this only MASTER mode is working and in HA I got parameters for 40 seconds and for the next 40s MQTT device is not available. I understand that 40s coming from 10s pooling refresh time set in config and 30s validity time set in the Diematic3Panel.py.

Regulator address is set in the config as 0x0A

I assume it will work as expected when I solve the issue with the frame length.

Here is some log info:

Do you have any idea what could be the problem here?

Thanks for any input

Hello ,

I thank you for your feedback, it is the first one with Diematic4 (iSystem). For HAOS installation I can not help you as I donā€™t use it, and have not enough free time to build a test bench. Maybe can you contact rofiq (see above).

For second issue analysis, can you provide logs between 16:53:08 and 15:53:48 ?
Regards,
Benoit

Hi Benoit,
Thank you for the quick response.
There is nothing in the log between this timeframe:

This log was created just after restarting the service.

Here is additional log from the running script when switching between SLAVE and MASTER mode:

2024-10-11 19:28:07,158 - DDModbus - WARNING - Received Frame Length Error
2024-10-11 19:28:07,158 - Diematic - WARNING - Synchro timeout
2024-10-11 19:28:07,167 - Diematic - WARNING - Init Link with Regulator
2024-10-11 19:28:07,768 - Diematic - DEBUG - Bus status switched to MASTER after 40.609395265579224
2024-10-11 19:28:07,769 - DDModbus - DEBUG - Send read request: 0a030001003f556100
2024-10-11 19:28:08,025 - DDModbus - DEBUG - Answer received: 0a037e0000000000300015001b0005005000be8046000100030000000000af00aa003c0008ffff0003000f0000000000d200b9003c000800f000070016006401c20000ffff000000c800b4003c000800e800070016006401c20000ffff0000000000000000000000000000000000000000000000000000022600000002022200005142000000
2024-10-11 19:28:08,026 - DDModbus - DEBUG - Answer valid 
2024-10-11 19:28:08,027 - DDModbus - DEBUG - Send read request: 0a0300400040449500
2024-10-11 19:28:08,214 - DDModbus - DEBUG - Answer received: 0a038000010000000000000000000000000000000000000064028f8ccc280609110000000000000000000000000000000000000000002b000000000000000000000000006400000000000000000000006c00000000000000000000000b000a0018000000008ccc000000000000028f00000000000203200000000000000000000f03e02c85000000
2024-10-11 19:28:08,215 - DDModbus - DEBUG - Answer valid 
2024-10-11 19:28:08,216 - DDModbus - DEBUG - Send read request: 0a0301800040455500
2024-10-11 19:28:08,435 - DDModbus - DEBUG - Answer received: 0a03800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000028002b000000000000000000000000000000000064000e0078000400040000000000000000091128060000a2f9000000
2024-10-11 19:28:08,436 - DDModbus - DEBUG - Answer valid 
2024-10-11 19:28:08,436 - DDModbus - DEBUG - Send read request: 0a0301c00017057f00
2024-10-11 19:28:08,543 - DDModbus - DEBUG - Answer received: 0a032e0000000000000033028f02498ccc073b000e00180000022300000000006400000000ffff00008001800100008001d8e5000000
2024-10-11 19:28:08,543 - DDModbus - DEBUG - Answer valid 
2024-10-11 19:28:08,544 - __main__ - INFO - Publish :home/heater/boiler/status Online
2024-10-11 19:28:08,545 - __main__ - INFO - Publish :home/heater/boiler/date 2024-10-11T21:27:00+02:00
2024-10-11 19:28:08,545 - __main__ - INFO - Publish :home/heater/boiler/type 24
2024-10-11 19:28:08,546 - __main__ - INFO - Publish :home/heater/boiler/ctrl 48
2024-10-11 19:28:08,547 - __main__ - INFO - Publish :home/heater/boiler/ext/temp 8.0
2024-10-11 19:28:08,547 - __main__ - INFO - Publish :home/heater/boiler/temp 65.5
2024-10-11 19:28:08,548 - __main__ - INFO - Publish :home/heater/boiler/targetTemp 0.0
2024-10-11 19:28:08,549 - __main__ - INFO - Publish :home/heater/boiler/returnTemp 58.5
2024-10-11 19:28:08,550 - __main__ - INFO - Publish :home/heater/boiler/waterPressure 1.4
2024-10-11 19:28:08,550 - __main__ - INFO - Publish :home/heater/boiler/power 31
2024-10-11 19:28:08,551 - __main__ - INFO - Publish :home/heater/boiler/smokeTemp -327.6
2024-10-11 19:28:08,553 - __main__ - INFO - Publish :home/heater/boiler/ionizationCurrent 5.1
2024-10-11 19:28:08,554 - __main__ - INFO - Publish :home/heater/boiler/fanSpeed 1851
2024-10-11 19:28:08,556 - __main__ - INFO - Publish :home/heater/boiler/burnerStatus 1
2024-10-11 19:28:08,556 - __main__ - INFO - Publish :home/heater/boiler/alarm {"id": 65535, "txt": "D\u00e9faut inconnu"}
2024-10-11 19:28:08,558 - __main__ - INFO - Publish :home/heater/boiler/hotWater/pump 1
2024-10-11 19:28:08,559 - __main__ - INFO - Publish :home/heater/boiler/hotWater/temp 54.6
2024-10-11 19:28:08,560 - __main__ - INFO - Publish :home/heater/boiler/hotWater/mode AUTO
2024-10-11 19:28:08,561 - __main__ - INFO - Publish :home/heater/boiler/hotWater/dayTemp 55.0
2024-10-11 19:28:08,562 - __main__ - INFO - Publish :home/heater/boiler/hotWater/nightTemp 10.0
2024-10-11 19:28:08,563 - __main__ - INFO - Publish :home/heater/boiler/zoneB/temp 24.0
2024-10-11 19:28:08,564 - __main__ - INFO - Publish :home/heater/boiler/zoneB/mode AUTO
2024-10-11 19:28:08,565 - __main__ - INFO - Publish :home/heater/boiler/zoneB/pump 0
2024-10-11 19:28:08,566 - __main__ - INFO - Publish :home/heater/boiler/zoneB/dayTemp 21.0
2024-10-11 19:28:08,566 - __main__ - INFO - Publish :home/heater/boiler/zoneB/nightTemp 18.5
2024-10-11 19:28:08,568 - __main__ - INFO - Publish :home/heater/boiler/zoneB/antiiceTemp 6.0
2024-10-11 19:28:08,569 - Diematic - DEBUG - Now :2024-10-11 19:28:08.569296+00:00
2024-10-11 19:28:08,570 - Diematic - DEBUG - Boiler :2024-10-11 21:27:00+02:00
2024-10-11 19:28:08,571 - Diematic - DEBUG - Drift :68.569296
2024-10-11 19:28:08,571 - Diematic - DEBUG - Drift Counter:1
2024-10-11 19:28:48,623 - Diematic - WARNING - Synchro timeout
2024-10-11 19:28:48,624 - __main__ - INFO - Publish :home/heater/boiler/status Offline
2024-10-11 19:28:48,624 - __main__ - INFO - Publish :home/heater/boiler/date 
2024-10-11 19:28:48,625 - __main__ - INFO - Publish :home/heater/boiler/type 
2024-10-11 19:28:48,625 - __main__ - INFO - Publish :home/heater/boiler/ctrl 
2024-10-11 19:28:48,626 - __main__ - INFO - Publish :home/heater/boiler/ext/temp 
2024-10-11 19:28:48,627 - __main__ - INFO - Publish :home/heater/boiler/temp 
2024-10-11 19:28:48,628 - __main__ - INFO - Publish :home/heater/boiler/targetTemp 
2024-10-11 19:28:48,628 - __main__ - INFO - Publish :home/heater/boiler/returnTemp 
2024-10-11 19:28:48,629 - __main__ - INFO - Publish :home/heater/boiler/waterPressure 
2024-10-11 19:28:48,629 - __main__ - INFO - Publish :home/heater/boiler/power 
2024-10-11 19:28:48,630 - __main__ - INFO - Publish :home/heater/boiler/smokeTemp 
2024-10-11 19:28:48,631 - __main__ - INFO - Publish :home/heater/boiler/ionizationCurrent 
2024-10-11 19:28:48,631 - __main__ - INFO - Publish :home/heater/boiler/fanSpeed 
2024-10-11 19:28:48,632 - __main__ - INFO - Publish :home/heater/boiler/burnerStatus 
2024-10-11 19:28:48,634 - __main__ - INFO - Publish :home/heater/boiler/alarm 
2024-10-11 19:28:48,637 - __main__ - INFO - Publish :home/heater/boiler/hotWater/pump 
2024-10-11 19:28:48,639 - __main__ - INFO - Publish :home/heater/boiler/hotWater/temp 
2024-10-11 19:28:48,641 - __main__ - INFO - Publish :home/heater/boiler/hotWater/mode 
2024-10-11 19:28:48,642 - __main__ - INFO - Publish :home/heater/boiler/hotWater/dayTemp 
2024-10-11 19:28:48,643 - __main__ - INFO - Publish :home/heater/boiler/hotWater/nightTemp 
2024-10-11 19:28:48,645 - __main__ - INFO - Publish :home/heater/boiler/zoneB/temp 
2024-10-11 19:28:48,646 - __main__ - INFO - Publish :home/heater/boiler/zoneB/mode 
2024-10-11 19:28:48,647 - __main__ - INFO - Publish :home/heater/boiler/zoneB/pump 
2024-10-11 19:28:48,648 - __main__ - INFO - Publish :home/heater/boiler/zoneB/dayTemp 
2024-10-11 19:28:48,649 - __main__ - INFO - Publish :home/heater/boiler/zoneB/nightTemp 
2024-10-11 19:28:48,650 - __main__ - INFO - Publish :home/heater/boiler/zoneB/antiiceTemp 
2024-10-11 19:28:48,656 - Diematic - WARNING - Init Link with Regulator
2024-10-11 19:28:48,658 - DDModbus - DEBUG - Frame received: 
2024-10-11 19:28:48,658 - DDModbus - WARNING - Received Frame Length Error
2024-10-11 19:28:48,659 - Diematic - DEBUG - Bus status switched to SLAVE
2024-10-11 19:28:48,659 - DDModbus - DEBUG - Frame received: 

Thanks and regards,
Pawel