Working configuration for Wolf "Mischermodul MM"

Hi,

I recently started setting up my openHAB system. Thanks a lot to all contributors.
A bit challenging was the read out of all the different temperatures from my Wolf CGB heating. I could retrieve most of the relevant data by using the ‘common’ parser but not the data from the ‘Mischermodul’. For this module I used the following custom parser configuration to read out the two most relevant parameters. Maybe it is useful for somebody else too. (BTW: Does anybody know the correct English expression for ‘Mischer’?)

[    {
	"comment":  "<Valve> Temperature (°C)",
	"device":   "Wolf MM", 
	"id":       "temp",
	"class":    "mixer",
	"command":  "50 22",
	"data":     "(90) 0F 00",

	"values": {
	    "temp": {"type": "word", "pos": 12, "label": "Mischer Temperatur (°C)", "factor": 0.1 , "min": 1, "max": 100}
	}
    },
    {
	"comment":  "<Valve> Temperature target(°C)",
	"filter":   "70 51 50 14 .*",
	"class":    "mixer",

	"values": {
	    "_temp_target_big": {"type": "char", "pos": 8},
	    "_temp_target_small": {"type": "char", "pos": 9},
	    "_temp_room_big": {"type": "char", "pos": 10},
	    "_temp_room_small": {"type": "char", "pos": 11}
	},
	"computed_values": {
	    "temp_target":   {"type": "script", "script": "(_temp_target_big+_temp_target_small/256)", "label": "Mischer Solltemperatur (°C)"},
	    "temp_room":     {"type": "script", "script": "(_temp_room_big+_temp_room_small/256)", "label": "Raumtemperatur (°C)"}
	}
    }
]

Here is the corresponding items configuration:

Number MM_Temp               "Mischer temp. [%.1f °C]"       <temperature>     (HeatingUnit)          { ebus="id:mixer.temp, refresh:60, dst:51"}
Number MM_Temp_Target        "Mischer Solltemp. [%.1f °C]"   <temperature>     (HeatingUnit)          { ebus="id:mixer.temp_target"}

Great, but maybe your second command could be type data2c! Than you can work without script.
Do you have more details to your mixer device? I would like to add this to the binding later on.

Actually the standard data types did not work because of the different byte order. EBus standard seems to be Low-Byte-First but Wolf uses High-Byte-First here. I took me quite a while until I realized that.

BTW: The _wolf-test-configuration.json file also contains the command “50 14” it says byte 12 should be “Warmwassertemperatur”, I will try to confirm that.

What additional information on the mixer device would be usefull for you?

The information on Byte 12 of command “50 14” from _wolf-test-configuration.json seems correct. Only the label is not 100% correct it should be “Warmwassersolltemperatur” not “Warmwassertemperatur”.

Byte 6 and 7 seem to depend on the operation mode of the system (warm water on/off, heating on/off, …).

Ah, good to see progress on my old researches. I personaly have no mixer but I also get this telegrams from my CSZ-2 heating unit.

I looked at google and now I know the mixer is just called “Mischermodul”, so I do not need any type etc.

The only think that I miss is the heating unit status from the BM2 display (“Stand by”, Eco mode", DHW" …)

My hardware is a bit older (CGB, BM, SM1, MM). Today I played around a bit and I could toggle a few bits. Here is the updated configuration:

{
    "comment":  "<Valve> Temperature target(°C)",
    "filter":   "70 51 50 14 .*",
    "class":    "mixer",
    "debug": 2,

    "values": {
        "state_dhw":             {"type": "bit", "pos":6, "bit": 0, "label": "Warmwasser"},
        "state_heating":         {"type": "bit", "pos":6, "bit": 1, "label": "Heizung"},
        "state_dhw_force":       {"type": "bit", "pos":6, "bit": 2, "label": "Einmalige Speicherladung"},
        "state_standby":         {"type": "bit", "pos":6, "bit": 5, "label": "Standby"},
        "state_dhw_circulation": {"type": "bit", "pos":6, "bit": 6, "label": "Zirkulation"},
        "_temp_target_big":      {"type": "char", "pos": 8},
        "_temp_target_small":    {"type": "char", "pos": 9},
        "_temp_room_big":        {"type": "char", "pos": 10},
        "_temp_room_small":      {"type": "char", "pos": 11},
        "temp_d_dhw":            {"type": "data1c", "pos":12, "label": "Warmwassersolltemperatur (°C)", "min":0, "max":100}
    },
    "computed_values": {
        "temp_target":   {"type": "script", "script": "(_temp_target_big+_temp_target_small/256)", "label": "Mischer Solltemperatur (°C)"},
        "temp_room":     {"type": "script", "script": "(_temp_room_big+_temp_room_small/256)", "label": "Raumtemperatur (°C)"}
    }
}
1 Like

I just found a small mistake in the code above, the bit for state_dhw_circulation was wrong.

{
    "comment":  "<Valve> Temperature target(°C)",
    "filter":   "70 51 50 14 .*",
    "class":    "mixer",
    "debug": 2,

    "values": {
        "state_dhw":             {"type": "bit", "pos":6, "bit": 0, "label": "Warmwasser"},
        "state_heating":         {"type": "bit", "pos":6, "bit": 1, "label": "Heizung"},
        "state_dhw_force":       {"type": "bit", "pos":6, "bit": 2, "label": "Einmalige Speicherladung"},
        "state_dhw_circulation": {"type": "bit", "pos":6, "bit": 4, "label": "Zirkulation"},
        "state_standby":         {"type": "bit", "pos":6, "bit": 5, "label": "Standby"},
        "_temp_target_big":      {"type": "char", "pos": 8},
        "_temp_target_small":    {"type": "char", "pos": 9},
        "_temp_room_big":        {"type": "char", "pos": 10},
        "_temp_room_small":      {"type": "char", "pos": 11},
        "temp_d_dhw":            {"type": "data1c", "pos":12, "label": "Warmwassersolltemperatur (°C)", "min":0, "max":100}
    },
    "computed_values": {
        "temp_target":   {"type": "script", "script": "(_temp_target_big+_temp_target_small/256)", "label": "Mischer Solltemperatur (°C)"},
        "temp_room":     {"type": "script", "script": "(_temp_room_big+_temp_room_small/256)", "label": "Raumtemperatur (°C)"}
    }
}