dear community,
one of my wishes would be to have control about the warm water one-time loading of the ww buffer. This function can be activated by the water tap symbol of the RC20(RF) / ES73 / RC3x controller...
my logging shows, that my RC20RF sends every minute a status command to the boiler which is usually
(19:37:19.169) 0x18 -> Boiler, type 0x35, telegram: 18 08 35 00 00 00 (CRC=1A) #data=2
if I press the water tap button the message changes to:
(19:12:20.932) 0x18 -> Boiler, type 0x35, telegram: 18 08 35 00 22 22 (CRC=7C) #data=2
if I press again to stop the ww heating it sends:
(19:36:18.042) 0x18 -> Boiler, type 0x35, telegram: 18 08 35 00 02 00 (CRC=1E) #data=2
... but sometimes ...
(07:25:42.224) 0x18 -> Boiler, type 0x35, telegram: 18 08 35 00 02 22 (CRC=3C) #data=2
it seems to me, that the first databyte enables or disables the function 0x22=enable, 0x02=disable, but I do not really understand the second databyte, which is sometimes 0x22 and sometimes 0x00?
has someone detailed information about type 0x35?
thanks
@SpaceTeddy this was on my feature todo list to implement next. See https://github.com/proddy/EMS-ESP/issues/94. Perhaps work together with vanbogaertetienne
hi proddy,
I try to create a demo version with the OneTime water heating command, but I fail to add an extra mqtt boiler_cmd Topic. I tried to use the same way like the wwactivation, but in telnet mode, I never receive a mqtt command.
With mqttlog telnet command I see the new Topic:home/ems-esp/boiler_cmd_wwonetime MQTT subscription, but seems that it is not received.
I added also
// wwOneTime
if (strcmp(topic, TOPIC_BOILER_CMD_WWONETIME) == 0) {
if (message[0] == '1' || strcmp(message, "on") == 0) {
ems_setWarmWaterOnetime(true);
} else if (message[0] == '0' || strcmp(message, "off") == 0) {
ems_setWarmWaterOnetime(false);
}
return;
}
in the ems-esp.cpp, but no success.
ems.cpp
/**
* Activate / De-activate One Time warm water 0x35
* true = on, false = off
*/
void ems_setWarmWaterOnetime(bool activated) {
myDebug_P(PSTR("Setting boiler warm water OneTime loading %s"), activated ? "on" : "off");
_EMS_TxTelegram EMS_TxTelegram = EMS_TX_TELEGRAM_NEW; // create new Tx
EMS_TxTelegram.timestamp = millis(); // set timestamp
EMS_Sys_Status.txRetryCount = 0; // reset retry counter
EMS_TxTelegram.action = EMS_TX_TELEGRAM_WRITE;
EMS_TxTelegram.dest = EMS_Boiler.device_id;
EMS_TxTelegram.type = EMS_TYPE_UBAFlags;
EMS_TxTelegram.offset = EMS_OFFSET_UBAParameterWW_wwOneTime;
EMS_TxTelegram.length = EMS_MIN_TELEGRAM_LENGTH;
EMS_TxTelegram.type_validate = EMS_ID_NONE; // don't validate
EMS_TxTelegram.dataValue = (activated ? 0x22 : 0x02); // 0x22 is on, 0x02 is off for RC20RF
EMS_TxQueue.push(EMS_TxTelegram);
}
Any idea what else to add to create an additional boiler_cmd?
thx
did you subscribe to it? Look at function MQTTCallback() in ems-esp.cpp
yes, sure. You can check it in my fork.
https://github.com/SpaceTeddy/EMS-ESP/blob/master/src/ems-esp.cpp
myESP.mqttSubscribe(TOPIC_BOILER_CMD_WWONETIME);
looked briefly at your code additions and it should work. Add some more debug statements, like comment out line 347 in MyESP.cpp
already done this, but also here no incomming message. It is strange to me, because the other commands like wwactivate work well with raspi mosquitto and MQTT.fx.
Anyhow, I will start a pull request in the next days and hopefully you can xcheck it with your hardware/software setup.
thx
ok. You could also test with MQTT Explorer (which is what I do) and force a Publish
checked, but still no success. :(
I'm testing with your branch and found the problem - not in your code - the number of subscriptions is limited. I'll looking into a fix
the problem is that there are too many Subscribes filling up the TCP stack on the ESP8266. A workaround for now is to comment on the loop in MQTTCallback() which subscribes to all the Heating Circuits. Until I've fixed https://github.com/proddy/EMS-ESP/issues/204
after comment on the mqtt HC loop, the OneTime water loading mqtt commands works fine.
many thanks for your quick check. 馃憤
beware @SpaceTeddy I made some changes to the MQTT in dev that will break your code. It should be relatively easy to figure out. Let me know if you need help porting it over.
noticed. with the next master release, I will update my fork and my HomeAutomation (fhem). no worries.
thanks again for your strong effort help us all to control our heating systems. Hope thats eats not all your time :) 馃憤
np. Please use the dev branch and post your PRs on that instead of master. I looked through your code its looks good. It'll be good if you can push the PR soon so I can finalize the 1.9.2 or even call it 1.10.0 because of your new feature addition.
@SpaceTeddy how's this feature coming along? It'll be good to add it to the next release as more people are asking.
well, for my system it is working fine since weeks, but I have really some trouble with Git to stay updated with your master or dev branch. If you could tell me a version, I would like to delete my actual fork, will create a new fork and start a pull request. This is based for the RC20RF controller and I would like to double check first, if there is a different behavior, if I press the tap water button at my es73 / RC30.
Hope to init a pull request in the next 2 days...
you should always fork the dev branch (not a specific version or tag) and keep it in sync with the updates as frequently as you can.
this was implemented in 1.9.3. If it needs more work please re-open
Most helpful comment
@SpaceTeddy this was on my feature todo list to implement next. See https://github.com/proddy/EMS-ESP/issues/94. Perhaps work together with vanbogaertetienne