zivillian / ism7mqtt

GNU General Public License v3.0
56 stars 10 forks source link

Wrong values for CWL 400 Excellent #34

Closed marc107 closed 1 year ago

marc107 commented 1 year ago

Hi! First of all, thanks for the great work! I was able to successfully transfer values for the heater and solar panel using the Docker container via MQTT. Unfortunately, I do not get any reasonable values displayed for my controlled residential ventilation (CWL 400 Excellent). Although the correct terms are transferred via MQTT, the values do not make sense - below is a screenshot. Does anyone have an idea?

Thx in advance!

Best regards

Marc

cwl

marc107 commented 1 year ago

Corresponding json file:

{
  "Devices": [
    {
      "ReadBusAddress": "0x00",
      "DeviceTemplateId": 19000,
      "Parameter": [
        19000,
        19001,
        19002,
        19003,
        19004,
        19007,
        19011,
        19012,
        19014,
        19015,
        19016,
        19019,
        19020,
        19021
      ]
    },
    {
      "ReadBusAddress": "0x7C",
      "DeviceTemplateId": 23000,
      "Parameter": [
        23010,
        23011,
        23012,
        23013,
        23014,
        23015,
        23017,
        23018,
        23019,
        23023,
        23024,
        23025,
        23026,
        23027,
        23028,
        23030,
        23031,
        23032,
        23033,
        23034,
        23035,
        23036,
        23037,
        23038,
        23039,
        23040,
        23041,
        23042,
        23043,
        23044,
        23045,
        23046,
        23047,
        23048,
        23050,
        23052,
        23057,
        23062,
        23066,
        23070,
        23071,
        23073,
        23074,
        23075,
        23076,
        23080,
        23081,
        23082,
        23083,
        23084,
        23085,
        23086,
        23087
      ]
    }
  ]
}
zivillian commented 1 year ago

Judging from the values I guess this not a problem of ism7mqtt, but the ISM reporting invalid values. All of them look like beeing reported as 0xff. Do you get different values using the Smartset application or in the Wolf portal?

marc107 commented 1 year ago

Thank you for your answer! The values in the Wolf Smartset look good, see the following screenshots.

CWL1 CWL2

I recreated the parameter.json file, but the content is the same as the first version.

zivillian commented 1 year ago

Can you capture the debug output and post it here (-d)? Please redact the password (which is printed in the first few lines).

marc107 commented 1 year ago

Glad to! Please forgive my ignorance, but how can I enable debug mode in the docker container?

marc107 commented 1 year ago

Found it, sorry!

marc107 commented 1 year ago

Hope the log is sufficient!?

> <?xml version="1.0" encoding="utf-16"?><direct-logon-request xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><password>xxxx</password></direct-logon-request>
< <?xml version="1.0" encoding="utf-8"?><direct-logon-response state="ok" sid="1"><installationname>ISM7</installationname><serialnumber>abcde</serialnumber><date-time>2022-12-22T23:03:22</date-time><ism-softwareversion>200.1.5.2.1</ism-softwareversion><ism-hardwareversion>1.0</ism-hardwareversion><type>ISM7i</type></direct-logon-response>
> <?xml version="1.0" encoding="utf-16"?><read-systemconfig-request xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" sid="1" />
< <?xml version="1.0" encoding="utf-8"?><read-systemconfig-response sid="1"><gateway type="ISM7i" softwareNumber="1" softwareVersion="200" wlan="false" g3="false"/><busconfig type="ebus"><busDevices><busDevice ba="0x8" sv="0x70" sr="0x1" cfg="0x405A" did="0x21"/><busDevice ba="0x35" sv="0x2" sr="0x4" cfg="0xC000" did="0x20"/><busDevice ba="0x7C" sv="0xFF" sr="0xFF" cfg="0x322" did="0x11"/><busDevice ba="0x76" sv="0x2" sr="0x27" cfg="0x8000" did="0x15"/></busDevices></busconfig></read-systemconfig-response>
> <?xml version="1.0" encoding="utf-16"?><tbreq xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" bn="1" gw="1" ae="false" ty="pull"><ird in="4" ba="0x7C" /><ird in="7" ba="0x7C" /><ird in="8" ba="0x7C" /><ird in="9" ba="0x7C" /><ird in="10" ba="0x7C" /><ird in="11" ba="0x7C" /><ird in="12" ba="0x7C" /><ird in="13" ba="0x7C" /><ird in="14" ba="0x7C" /><ird in="15" ba="0x7C" /><ird in="16" ba="0x7C" /><ird in="17" ba="0x7C" /><ird in="18" ba="0x7C" /><ird in="19" ba="0x7C" /><ird in="20" ba="0x7C" /><ird in="21" ba="0x7C" /><ird in="22" ba="0x7C" /><ird in="23" ba="0x7C" /><ird in="24" ba="0x7C" /><ird in="25" ba="0x7C" /><ird in="26" ba="0x7C" /><ird in="27" ba="0x7C" /><ird in="33" ba="0x7C" /><ird in="48" ba="0x7C" /><ird in="59" ba="0x7C" /></tbreq>
< <?xml version="1.0" encoding="utf-8"?><tbres bn="1" gw="1" st="OK" ts="2022-12-22T23:03:29" emsg=""><irs se="0" ba="0x7C" in="4" dl="0xFF" dh="0xFF" st="OK"/><irs se="0" ba="0x7C" in="7" dl="0xFF" dh="0xFF" st="OK"/><irs se="0" ba="0x7C" in="8" dl="0xFF" dh="0xFF" st="OK"/><irs se="0" ba="0x7C" in="9" dl="0xFF" dh="0xFF" st="OK"/><irs se="0" ba="0x7C" in="10" dl="0xFF" dh="0xFF" st="OK"/><irs se="0" ba="0x7C" in="11" dl="0xFF" dh="0xFF" st="OK"/><irs se="0" ba="0x7C" in="12" dl="0xFF" dh="0xFF" st="OK"/><irs se="0" ba="0x7C" in="13" dl="0xFF" dh="0xFF" st="OK"/><irs se="0" ba="0x7C" in="14" dl="0xFF" dh="0xFF" st="OK"/><irs se="0" ba="0x7C" in="15" dl="0xFF" dh="0xFF" st="OK"/><irs se="0" ba="0x7C" in="16" dl="0xFF" dh="0xFF" st="OK"/><irs se="0" ba="0x7C" in="17" dl="0xFF" dh="0xFF" st="OK"/><irs se="0" ba="0x7C" in="18" dl="0xFF" dh="0xFF" st="OK"/><irs se="0" ba="0x7C" in="19" dl="0xFF" dh="0xFF" st="OK"/><irs se="0" ba="0x7C" in="20" dl="0xFF" dh="0xFF" st="OK"/><irs se="0" ba="0x7C" in="21" dl="0xFF" dh="0xFF" st="OK"/><irs se="0" ba="0x7C" in="22" dl="0xFF" dh="0xFF" st="OK"/><irs se="0" ba="0x7C" in="23" dl="0xFF" dh="0xFF" st="OK"/><irs se="0" ba="0x7C" in="24" dl="0xFF" dh="0xFF" st="OK"/><irs se="0" ba="0x7C" in="25" dl="0xFF" dh="0xFF" st="OK"/><irs se="0" ba="0x7C" in="26" dl="0xFF" dh="0xFF" st="OK"/><irs se="0" ba="0x7C" in="27" dl="0xFF" dh="0xFF" st="OK"/><irs se="0" ba="0x7C" in="33" dl="0xFF" dh="0xFF" st="OK"/><irs se="0" ba="0x7C" in="48" dl="0xFF" dh="0xFF" st="OK"/><irs se="0" ba="0x7C" in="59" st="ER"/></tbres>
publishing mqtt with topic 'Wolf/192.168.111.111/CWL_0x7C' '{"Bypass-Temperatur":-0.1,"Ablufttemperatur":-0.1,"ZH + WRG":-1,"Frischlufttemperatur":-0.1,"Druckungleichgewicht zulaessig":-1,"Festes Druckungleichgewicht":-1,"Heizregister":-1,"Luftdurchsatz Zuluft":-1,"Temperatur Nachheizregister":-0.1,"Luftdurchsatz Abluft":-1,"Auswahl Eingang 1":-1,"Mindestspannung Eingang 1":-0.1,"Bypass Status":-1,"Hoechstspannung Eingang 1":-0.1,"Bedingungen Schalteingang 1":-1,"Zuluftventilator-Modus Schalteingang 1":-1,"Abluftventilator-Modus Schalteingang 1":-1,"Auswahl Eingang 2":-1,"Mindestspannung Eingang 2":-0.1,"Zuluftdruck":-0.1,"Hoechstspannung Eingang 2":-0.1,"Abluftdruck":-0.1,"Bedingungen Schalteingang 2":-1,"Frost Status":-1,"Zuluftventilator-Modus Schalteingang 2":-1,"Abluftventilator-Modus Schalteingang 2":-1,"Erdwaermetauscher":-1,"Mindesttemperatur Erdwaermetauscher":-0.1,"Hoechsttemperatur Erdwaermetauscher":-0.1,"Funktion der Bypass Klappe":-1,"Luftdurchsatz Stufe 0 (Feuchteschutz)":-1,"Bypass-Hysterese":-0.1}'
> <?xml version="1.0" encoding="utf-16"?><tbreq xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" bn="5" gw="1" ae="false" ty="push"><ird in="4" ba="0x7C" is="60" /><ird in="7" ba="0x7C" is="60" /><ird in="8" ba="0x7C" is="60" /><ird in="9" ba="0x7C" is="60" /><ird in="10" ba="0x7C" is="60" /><ird in="11" ba="0x7C" is="60" /><ird in="12" ba="0x7C" is="60" /><ird in="13" ba="0x7C" is="60" /><ird in="14" ba="0x7C" is="60" /><ird in="15" ba="0x7C" is="60" /><ird in="16" ba="0x7C" is="60" /><ird in="17" ba="0x7C" is="60" /><ird in="18" ba="0x7C" is="60" /><ird in="19" ba="0x7C" is="60" /><ird in="20" ba="0x7C" is="60" /><ird in="21" ba="0x7C" is="60" /><ird in="22" ba="0x7C" is="60" /><ird in="23" ba="0x7C" is="60" /><ird in="24" ba="0x7C" is="60" /><ird in="25" ba="0x7C" is="60" /><ird in="26" ba="0x7C" is="60" /><ird in="27" ba="0x7C" is="60" /><ird in="33" ba="0x7C" is="60" /><ird in="48" ba="0x7C" is="60" /><ird in="59" ba="0x7C" is="60" /></tbreq>
< <?xml version="1.0" encoding="utf-8"?><tbres bn="5" gw="1" st="OK" ts="2022-12-22T23:03:35" emsg=""><irs se="0" ba="0x7C" in="4" dl="0xFF" dh="0xFF" st="OK"/><irs se="0" ba="0x7C" in="7" dl="0xFF" dh="0xFF" st="OK"/><irs se="0" ba="0x7C" in="8" dl="0xFF" dh="0xFF" st="OK"/><irs se="0" ba="0x7C" in="9" dl="0xFF" dh="0xFF" st="OK"/><irs se="0" ba="0x7C" in="10" dl="0xFF" dh="0xFF" st="OK"/><irs se="0" ba="0x7C" in="11" dl="0xFF" dh="0xFF" st="OK"/><irs se="0" ba="0x7C" in="12" dl="0xFF" dh="0xFF" st="OK"/><irs se="0" ba="0x7C" in="13" dl="0xFF" dh="0xFF" st="OK"/><irs se="0" ba="0x7C" in="14" dl="0xFF" dh="0xFF" st="OK"/><irs se="0" ba="0x7C" in="15" dl="0xFF" dh="0xFF" st="OK"/><irs se="0" ba="0x7C" in="16" dl="0xFF" dh="0xFF" st="OK"/><irs se="0" ba="0x7C" in="17" dl="0xFF" dh="0xFF" st="OK"/><irs se="0" ba="0x7C" in="18" dl="0xFF" dh="0xFF" st="OK"/><irs se="0" ba="0x7C" in="19" dl="0xFF" dh="0xFF" st="OK"/><irs se="0" ba="0x7C" in="20" dl="0xFF" dh="0xFF" st="OK"/><irs se="0" ba="0x7C" in="21" dl="0xFF" dh="0xFF" st="OK"/><irs se="0" ba="0x7C" in="22" dl="0xFF" dh="0xFF" st="OK"/><irs se="0" ba="0x7C" in="23" dl="0xFF" dh="0xFF" st="OK"/><irs se="0" ba="0x7C" in="24" dl="0xFF" dh="0xFF" st="OK"/><irs se="0" ba="0x7C" in="25" dl="0xFF" dh="0xFF" st="OK"/><irs se="0" ba="0x7C" in="26" dl="0xFF" dh="0xFF" st="OK"/><irs se="0" ba="0x7C" in="27" dl="0xFF" dh="0xFF" st="OK"/><irs se="0" ba="0x7C" in="33" dl="0xFF" dh="0xFF" st="OK"/><irs se="0" ba="0x7C" in="48" dl="0xFF" dh="0xFF" st="OK"/><irs se="0" ba="0x7C" in="59" st="ER"/></tbres>
publishing mqtt with topic 'Wolf/192.168.111.111/CWL_0x7C' '{"Bypass-Temperatur":-0.1,"Ablufttemperatur":-0.1,"ZH + WRG":-1,"Frischlufttemperatur":-0.1,"Druckungleichgewicht zulaessig":-1,"Festes Druckungleichgewicht":-1,"Heizregister":-1,"Luftdurchsatz Zuluft":-1,"Temperatur Nachheizregister":-0.1,"Luftdurchsatz Abluft":-1,"Auswahl Eingang 1":-1,"Mindestspannung Eingang 1":-0.1,"Bypass Status":-1,"Hoechstspannung Eingang 1":-0.1,"Bedingungen Schalteingang 1":-1,"Zuluftventilator-Modus Schalteingang 1":-1,"Abluftventilator-Modus Schalteingang 1":-1,"Auswahl Eingang 2":-1,"Mindestspannung Eingang 2":-0.1,"Zuluftdruck":-0.1,"Hoechstspannung Eingang 2":-0.1,"Abluftdruck":-0.1,"Bedingungen Schalteingang 2":-1,"Frost Status":-1,"Zuluftventilator-Modus Schalteingang 2":-1,"Abluftventilator-Modus Schalteingang 2":-1,"Erdwaermetauscher":-1,"Mindesttemperatur Erdwaermetauscher":-0.1,"Hoechsttemperatur Erdwaermetauscher":-0.1,"Funktion der Bypass Klappe":-1,"Luftdurchsatz Stufe 0 (Feuchteschutz)":-1,"Bypass-Hysterese":-0.1}'

debug.txt

zivillian commented 1 year ago

Yes it is, but as I guessed, your module only sends 0xff - maybe it get's better if you let it run for a few hours

marc107 commented 1 year ago

OK, I will run it and watch.

There is one point I still don't really understand. If Smartset shows correct values, then the ISM7 must not only send 0xff. Or does the communication run differently here?

marc107 commented 1 year ago

Yes it is, but as I guessed, your module only sends 0xff - maybe it get's better if you let it run for a few hours

No changes after some hours. Is above log showing raw data? Or can we collect this data?

As it is, the problem seems to occur with at least a second Wolf CWL.

zivillian commented 1 year ago

Is above log showing raw data?

Sadly yes, what you see is the raw data sent by the CWL.

Can you attach your smartset.db file? Maybe we need other parameters for CWL.

marc107 commented 1 year ago

Sure, but unfortunately i was not able to locate the "smartset.db". Where should i be able to find it?

zivillian commented 1 year ago

it should be located at %APPDATA%\Wolf GmbH\Smartset\App_Data\smartsetpc.sdf

marc107 commented 1 year ago

Alright! I am on vacation for a few days. Gonna upload the file next friday /saturday.

marc107 commented 1 year ago

As promised my sdf-file... Could you please leave a short message after downloading. I gonna remove the file after this.

zivillian commented 1 year ago

done

marc107 commented 1 year ago

Great! Thx!

zivillian commented 1 year ago

I think I've found something - the ConverterTemplates.xml contains an additional element ServiceReadNumber for those parameters:

<NumericConverter16Template CTID="23017">
      <TelegramNr>7</TelegramNr>
      <ServiceReadNumber>4022</ServiceReadNumber>
      <Type>SS10</Type>
</NumericConverter16Template>

Now we need to figure out how to send this in the irs elements. I think the easiest way is to look at the traffic from the smartset application. You can run the ism7proxy from the releases, but you need to replace the LuCon.WebPortal.StandaloneService.dll in the Smartset directory with the attached version. Then just connect the Smartset Application with the IP 127.0.0.1 and paste the (redacted) log.

marc107 commented 1 year ago

Sorry for the simple question, but just that I understood you correctly. I replace the dll in the smartset directory, run "ism7proxy.exe -i IP_ISM7," and connect the smartset app to localhost?

zivillian commented 1 year ago

yep, that's correct

marc107 commented 1 year ago

Fine, thx! I am still on the move, unfortunately without VPN to the ISM7. I should be able to upload the file tomorrow.

marc107 commented 1 year ago

@zivillian

So, I just got around piping the output of ism7proxy.exe into a file. I went through all the settings of the CWL "expert" / "non-expert" with all the tabs @ the smartset app. Does this help you or do you need other/further info? ism7.zip

zivillian commented 1 year ago

This should be enough. I've found the request for the Parameter 23017 (Ablufttemperatur) and it shows the ServiceReadNumber from the ConverterTemplate:

<ird se="A;171" ba="0x7C" in="7" is="60" snr="4022" />

I'll add the snr attribute tomorrow. Would be great if you can test and confirm, that this fixes the issue.

marc107 commented 1 year ago

Great! Testing won`t be a problem... I am using the docker container, are u going to update this too?

zivillian commented 1 year ago

I'll also publish a docker tag for testing.

Can you create another trace while modifying one of the parameters (like Luftdurchsatz Stufe 0 (Feuchteschutz))? I'd like to see how the ServiceWriteNumber is sent to the ism.

zivillian commented 1 year ago

@marc107 I've published a new tag to docker: zivillian/ism7mqtt:cwl

marc107 commented 1 year ago

@zivillian

Using the following .json file I now get correct values - great, thanks!

{ "Devices": [ { "ReadBusAddress": "0x7C", "DeviceTemplateId": 23000, "Parameter": [ 23010, 23011, 23012, 23013, 23014, 23015, 23017, 23018, 23019, 23023, 23024, 23025, 23026, 23027, 23028, 23030, 23031, 23032, 23033, 23034, 23035, 23036, 23037, 23038, 23039, 23040, 23041, 23042, 23043, 23044, 23045, 23046, 23087 ] } ] }

Screenshot of the readings in fhem:

image

marc107 commented 1 year ago

I'll also publish a docker tag for testing.

Can you create another trace while modifying one of the parameters (like Luftdurchsatz Stufe 0 (Feuchteschutz))? I'd like to see how the ServiceWriteNumber is sent to the ism.

Sure, no problem - see attachment. I changed the "Programmwahl Lüftung" from "Reduzierte Lüftung" to ""Nennlüftung" and then back to "Reduzierte Lüftung". Then changed the value "CWL02 Luftdurchsatz Stufe 1 (Reduz. Lüftung)" from 135m³/h to 136m³/h.

change_cwl.zip

zivillian commented 1 year ago

This is fixed in master and will be included in the next release.