emsesp / EMS-ESP

ESP8266 firmware to read and control EMS and Heatronic compatible equipment such as boilers, thermostats, solar modules, and heat pumps
https://emsesp.github.io/docs
GNU Lesser General Public License v3.0
303 stars 97 forks source link

MQTT publish doesn't update all topics #237

Closed lmdecroos closed 4 years ago

lmdecroos commented 4 years ago

I'm testing version 1.9.4b9 and spotted that some of the MQTT topics as thermostat_data are only published once, shortly after startup. They are not anymore published afterwards

I tested also the new option "publish_always=on" and this didn't made any difference. Even after rebooting with publish_always=on, some of the topics are only published once and never updated afterwards

MQTT publish log: Timestamp:07:07:39 Topic:status Payload:online Timestamp:07:07:39 Topic:start Payload:start Timestamp:07:07:39 Topic:shower_data Payload:{"timer":"0","alert":"0"} Timestamp:07:23:45 Topic:boiler_data Payload:{"wWComfort":"Hot","wWSelTemp":56,"wWDesiredTemp":70,"selFlowTemp":53,"selBurnPow":100,"curBurnPow":25,"pumpMod":36,"wWCircPump":0,"wWCurTmp":49.1,"wWCurFlow":0,"curFlowTemp":54.3,"retTemp":49.9,"switchTemp":51.6,"sysPress":1.6,"boilTemp":53,"wWActivated":"on","wWOnetime":"off","burnGas":"on","flameCurr":8.6,"heatPmp":"on","fanWork":"on","ignWork":"off","wWCirc":"off","heating_temp":76,"pump_mod_max":91,"pump_mod_min":30,"wWHeat":"off","wWStarts":5568,"wWWorkM":39905,"UBAuptime":3400321,"burnStarts":26535,"burnWorkMin":407695,"heatWorkMin":367790,"ServiceCode":"-H","ServiceCodeNumber":200} Timestamp:07:23:45 Topic:tapwater_active Payload:0 Timestamp:07:23:45 Topic:heating_active Payload:1 Timestamp:07:07:48 Topic:thermostat_data Payload:{"hc1":{"daytemp":19,"nighttemp":15,"holidayttemp":17,"heatingtype":1,"mode":"auto"},"hc2":{"seltemp":13.5,"currtemp":14.3,"daytemp":18,"nighttemp":13.5,"holidayttemp":17,"heatingtype":1,"circuitcalctemp":5}}

publish_time=120 publish_always=on

proddy commented 4 years ago

I’ll check in a minute

lmdecroos commented 4 years ago

It took 20 minutes before the first update

now it’s publishing every 15 a 30 seconds even there is no change

I’m not sure about the expected behaviour of the new functionlity

On 9 Nov 2019, at 07:42, Proddy notifications@github.com wrote:

I’ll check in a minute

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/proddy/EMS-ESP/issues/237?email_source=notifications&email_token=ANDW443WAAPXGC6L5ZOMWI3QSZLWLA5CNFSM4JLD5G6KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEDT7HUI#issuecomment-552072145, or unsubscribe https://github.com/notifications/unsubscribe-auth/ANDW44ZSJAU2TDZ4FO4ANTLQSZLWLANCNFSM4JLD5G6A.

proddy commented 4 years ago

can't reproduce, but I'm looking into the code again. The recent change doesn't touch how MQTT publishes. It could be that the CRC library I used for checking payload changes has been modified.

lmdecroos commented 4 years ago

It could be a coincidence but I believe the publish in beta 1.9.4b9 started to work for all topics after i logged in to web GUI

I upgraded from the 1.9.1 release to latest beta.

I have now downgraded back to 1.9.1 ( as I still need the old MQTT topics to my 2 HC’s) and MQTT is now publishing every 15 a 30 seconds instead of every 120 seconds Even when changing the publish_time from 120 to 240, MQTT publishes every 20 seconds

It seems that the web GUI settings are not fully aligned with the console settings. As i’m in favour of console, I will always console instead of a web ui

On 9 Nov 2019, at 08:21, Proddy notifications@github.com wrote:

can't reproduce, but I'm looking into the code again. The recent change doesn't touch how MQTT publishes. It could be that the CRC library I used for checking payload changes has been modified.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/proddy/EMS-ESP/issues/237?email_source=notifications&email_token=ANDW44YZ3V7XYUBWTGLJGUTQSZQHRA5CNFSM4JLD5G6KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEDT7ZFA#issuecomment-552074388, or unsubscribe https://github.com/notifications/unsubscribe-auth/ANDW442S3VXOOSYM2PWTIS3QSZQHRANCNFSM4JLD5G6A.

proddy commented 4 years ago

I prefer Telnet too. I built the webUI for easy of use.

Anyway how's it always worked is that MQTT messages will be sent out when the payload has changed regardless of the publish_time setting. So this is typically between 10-20 seconds. The publish_time is used to force a regular update of everything (boiler, shower, thermo, heatbeat etc) even if nothing has changed. It does sound strange I agree so I may need to re-think if its useful.

I tested with the latest b9 and use MQTT explorer which shows the incoming MQTT messages, also the values that have changed since the last publish and the timestamp history. I can see changes coming in.

moustic999 commented 4 years ago

At start-up it is important to send everything. Afterwards sending only when bus emits should be enough, because bus already emits cyclicly....

Envoyé depuis mon smartphone Samsung Galaxy.

-------- Message d'origine -------- De : Proddy notifications@github.com Date : 9/11/19 08:36 (GMT+01:00) À : proddy/EMS-ESP EMS-ESP@noreply.github.com Cc : Subscribed subscribed@noreply.github.com Objet : Re: [proddy/EMS-ESP] MQTT publish doesn't update all topics (#237)

I prefer Telnet too. I built the webUI for easy of use.

Anyway how's it always worked is that MQTT messages will be sent out when the payload has changed regardless of the publish_time setting. So this is typically between 10-20 seconds. The publish_time is used to force a regular update of everything (boiler, shower, thermo, heatbeat etc) even if nothing has changed. It does sound strange I agree so I may need to re-think if its useful.

I tested with the latest b9 and use MQTT explorer which shows the incoming MQTT messages, also the values that have changed since the last publish and the timestamp history. I can see changes coming in.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHubhttps://eur04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fproddy%2FEMS-ESP%2Fissues%2F237%3Femail_source%3Dnotifications%26email_token%3DACLI2PZGGZBWTFBXFUHW3YTQSZSAHA5CNFSM4JLD5G6KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEDUAAHQ%23issuecomment-552075294&data=02%7C01%7C%7Cac27644931c74aba6e9608d764e78ce9%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637088817963777216&sdata=DWf1JRlKwgcYMRUUEZl2Z1rxsfrzxvGrsq76Rafaum0%3D&reserved=0, or unsubscribehttps://eur04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FACLI2P2ZPN3FIIJ27FVOHIDQSZSAHANCNFSM4JLD5G6A&data=02%7C01%7C%7Cac27644931c74aba6e9608d764e78ce9%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637088817963787225&sdata=%2BRfMl%2Fyh0fMf4sBsad9OdzCX17TrT9kaL92GI70v%2FMw%3D&reserved=0.

lmdecroos commented 4 years ago

ok, then maybe I’m confused regarding the publishing update frequency

On 9 Nov 2019, at 08:36, Proddy notifications@github.com wrote:

I prefer Telnet too. I built the webUI for easy of use.

Anyway how's it always worked is that MQTT messages will be sent out when the payload has changed regardless of the publish_time setting. So this is typically between 10-20 seconds. The publish_time is used to force a regular update of everything (boiler, shower, thermo, heatbeat etc) even if nothing has changed. It does sound strange I agree so I may need to re-think if its useful.

I tested with the latest b9 and use MQTT explorer which shows the incoming MQTT messages, also the values that have changed since the last publish and the timestamp history. I can see changes coming in.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/proddy/EMS-ESP/issues/237?email_source=notifications&email_token=ANDW443ICPWOVDN4QVMA6N3QSZSAJA5CNFSM4JLD5G6KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEDUAAHQ#issuecomment-552075294, or unsubscribe https://github.com/notifications/unsubscribe-auth/ANDW4476H2QXJFILKMO6XYDQSZSAJANCNFSM4JLD5G6A.

proddy commented 4 years ago

@moustic999 this is how it works now. MQTT data is always sent when there are values, which is typically 1-2 seconds after boot up when the EMS bus is connected. I made a change now for 1.9.4b10 which

@lmdecroos in my testing I can't reproduce what you found in the latest dev release. Or find anything strange in the code. It could have been issues upgrading from a very old 1.9.1 release. If you need help getting to 1.9.4 let me know.

lmdecroos commented 4 years ago

@proddy thanks for testing, I will maybe try to simulate the strange behaviour from this morning later on I'm stuck on version 1.9.1 since the MQTT topics has been changed from 1.9.2 onwards and the parsing for Domoticz has not yet updated. I'm waiting for bbqkees or someone else to amend the parsing plug-in

On 9 Nov 2019, at 09:53, Proddy notifications@github.com wrote:

@moustic999 https://github.com/moustic999 this is how it works now. MQTT data is always sent when there are values, which is typically 1-2 seconds after boot up when the EMS bus is connected. I made a change now for 1.9.4b10 which

removes publish_always makes publish_time manually publish at the given frequency, or with a value of 0 go to automatic mode and send as soon as there is new data to send. @lmdecroos https://github.com/lmdecroos in my testing I can't reproduce what you found in the latest dev release. Or find anything strange in the code. It could have been issues upgrading from a very old 1.9.1 release. If you need help getting to 1.9.4 let me know.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/proddy/EMS-ESP/issues/237?email_source=notifications&email_token=ANDW4467YVUQMFVOKGREQMDQSZ3BNA5CNFSM4JLD5G6KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEDUBGLA#issuecomment-552080172, or unsubscribe https://github.com/notifications/unsubscribe-auth/ANDW447KDVYC72B3TMBGCQTQSZ3BNANCNFSM4JLD5G6A.

proddy commented 4 years ago

I'll give bbqkees a nudge. 1.9.5 is coming out soon!

lmdecroos commented 4 years ago

I tested b10 and when setting publish_time to 0 then after a reboot the gateway is sometimes taken the “wrong” thermostat. but the updates are ok :)

My main thermostat is an RC35, the RC20 is only to control HC2

I have never seen this behaviour before

the RC20 has less details than the RC35 What is circuitcalctemp ?

Thermostat: RC20RF (ProductID:93 Version:02.00) Thermostat time is 23:16:51 09/11/2019 Heating Circuit 1 Current room temperature: 18.9 C Setpoint room temperature: 15.0 C Heating Circuit 2 Current room temperature: 13.9 C Setpoint room temperature: 13.5 C Timestamp:23:17:43 Topic:thermostat_data Payload:{"hc1":{"seltemp":15,"currtemp":18.9,"circuitcalctemp":5},"hc2":{"seltemp":13.5,"currtemp":13.9,"circuitcalctemp":5}}

Thermostat stats: Thermostat: RC35 (ProductID:86 Version:21.08) Thermostat time is 23:18:01 09/11/2019

Timestamp:23:38:37 Topic:thermostat_data Payload:{"hc1":{"daytemp":19,"nighttemp":15,"holidayttemp":17,"heatingtype":1,"mode":"auto"},"hc2":{"daytemp":18,"nighttemp":13.5,"holidayttemp":17,"heatingtype":1,"mode":"night”}}

On 9 Nov 2019, at 09:53, Proddy notifications@github.com wrote:

@moustic999 https://github.com/moustic999 this is how it works now. MQTT data is always sent when there are values, which is typically 1-2 seconds after boot up when the EMS bus is connected. I made a change now for 1.9.4b10 which

removes publish_always makes publish_time manually publish at the given frequency, or with a value of 0 go to automatic mode and send as soon as there is new data to send. @lmdecroos https://github.com/lmdecroos in my testing I can't reproduce what you found in the latest dev release. Or find anything strange in the code. It could have been issues upgrading from a very old 1.9.1 release. If you need help getting to 1.9.4 let me know.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/proddy/EMS-ESP/issues/237?email_source=notifications&email_token=ANDW4467YVUQMFVOKGREQMDQSZ3BNA5CNFSM4JLD5G6KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEDUBGLA#issuecomment-552080172, or unsubscribe https://github.com/notifications/unsubscribe-auth/ANDW447KDVYC72B3TMBGCQTQSZ3BNANCNFSM4JLD5G6A.

proddy commented 4 years ago

oh. The code doesn't handle more than 1 thermostat. I'll need to think how best to handle this.

lmdecroos commented 4 years ago

@proddy my RC35 is the main thermostat, this one use use to program my 2 HC’s and boiler and control the temperature of my HC1 the RC20 is the thermostat that is use to measure and control the temperature of the rooms heated by HC2

It’s only strange that from the first use of the EMS gateway ( version 1.8.3) until 1.9.4b9 the EMS gateway used always the information from RC35. only in 1.9.5b10 and when publish_time is set to 0 after some reboots ( for testing) te EMS gateway takes my RC20 as main thermostat and ignore the values of the RC35

i spotted that you have created a new feature to support more thermostats per system, i’m not sure if this related to this. But the EMS software should always use the main thermostat of the system, as all information should be available in the main thermostat

hope this makes sense and i don’t create unnecessary confusion

On 10 Nov 2019, at 00:37, Proddy notifications@github.com wrote:

oh. The code doesn't handle more than 1 thermostat. I'll need to think how best to handle this.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/proddy/EMS-ESP/issues/237?email_source=notifications&email_token=ANDW444DDDWLJWJI6WUT7DDQS5CURA5CNFSM4JLD5G6KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEDURTXI#issuecomment-552147421, or unsubscribe https://github.com/notifications/unsubscribe-auth/ANDW44Y2XUIWBZPZCYAQFMLQS5CURANCNFSM4JLD5G6A.

proddy commented 4 years ago

@lmdecroos how can EMS-ESP detect what the main thermostat is?

proddy commented 4 years ago

@lmdecroos in the EMS bus I'm guessing you'll have two EMS devices (RC20 and RC35) but sending messages. RC20 will pick up the HC1 controls and RC35 all 4 HCs. I therefore would expect a conflict. Can you confirm this?

proddy commented 4 years ago

This bug was related to MQTT which is fixed, so closing. Please use issue #238 to answer my last question.

lmdecroos commented 4 years ago

@proddy yes this is correct with the small correction that the RC35 is controlling HC1 and is the main device for programming the boiler. The RC20 is controlling the temperature of HC2

In case you have multiple HC's you will always having a dedicated thermostat per HC

On 13 Nov 2019, at 13:41, Proddy notifications@github.com wrote:

@lmdecroos https://github.com/lmdecroos in the EMS bus I'm guessing you'll have two EMS devices (RC20 and RC35) but sending messages. RC20 will pick up the HC1 controls and RC35 all 4 HCs. I therefore would expect a conflict. Can you confirm this?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/proddy/EMS-ESP/issues/237?email_source=notifications&email_token=ANDW444Y3NY55QYZQOW242LQTPYYTA5CNFSM4JLD5G6KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOED6ALQY#issuecomment-553387459, or unsubscribe https://github.com/notifications/unsubscribe-auth/ANDW442JTDQ2CCDOAAJABU3QTPYYTANCNFSM4JLD5G6A.

proddy commented 4 years ago

@lmdecroos so in your situation is there still a problem with 1.9.4b that I need to fix? Are you seeing the correct HC1 and HC2 values? If not then I expect you're getting two sets of HC2 data, one from the RC20 and one from the RC35.

proddy commented 4 years ago

Please use #238 for this