-
-
Notifications
You must be signed in to change notification settings - Fork 98
Write supports EMS+ device Nefit Moduline 3000 #145
Comments
Yes, it's on the list. I was working with a @moustic999 on some tests a while back, and there is also a special RC300 branch we started. The wiki https://github.com/proddy/EMS-ESP/wiki/RC3xx-Thermostats talks about the approach. I think a good start to change the temp is via the 0x01B9 type, so sending something like this:
to set it to 20.5 degrees (0x29) |
Hi The thermostaat went from auto to manual, but the temperatuur was not set to 20.5, just took the temp where is was on manual mode 17.0 (see below the logging) I was trying to understand the wiki (https://github.com/proddy/EMS-ESP/wiki/Deciphering-EMS-Plus) AUTO Mode, setting temporary temp to 21.5(0x2B) How is the src work, 0B, 10, 48 when to choose what? regards Richard send 0B 10 FF 00 01 B9 00 Thermostat stats: |
ah, didn't realize you had a Gateway too which is the master. So either try impersonating the gateway with |
No I have nog gateway, that I have from the example of the wiki. send 0B 48 FF 08 01 B9 2B gives this, no temp set send 0B 48 FF 08 01 B9 2B Thermostat stats: |
from the wiki, 8 and 10 are offsets for setting the temp in auto and manual. Try experimenting with
to see if anything jumps to 21.5 degrees |
Hi it works like this now The thermostat must be in manual mode The thermostat is in auto mode This combination only works so in automode (0A) doesn't work, and manual mode (08) also not working |
yes, that is expected behavior. It's how far @moustic999 got with his investigation. A sloppy way is to check the op mode and then send the temp in 2 Tx calls. You can get the mode with `send 0B 90 FF 01 01 B9', which will return a telegram with data length 1 and last byte is 0 for Manual or FF for Auto. |
actually thinking about it, it should switch to manual and always set the manual temp? |
nope it doesn't this works for setting mode send 0B 10 FF 00 01 B9 00 (manual, and it takes the temp what I have set on my thermostat last time it was on manual) |
No, I meant the logic is that when you change the temp in HA or somewhere else it should first force the thermostat to manual mode and then set the temp. 2 telegrams |
The logic is that it stays on the mode (auto or manual) For example , I have a default program (auto) the temp from 17:00 - 23:00 is default in the program 19.5 . If I have it some cold, I let the program running and change it to 21.0, then om 23:00 the temp goes down for the night (program keeps running in auto). So that's how I use the thermostat and also with HA . I use manual mode only for vacation (15.0, for x weeks). |
@kroon040 you are right for the mode. |
Same is for me, I can test. |
ok I need some help with the sequence of steps. When setting the temp I guess we'll need to first determine the mode (auto/manual) and then send the new temperature to the correct offset. Its a bit sloppy and I'm sure there is an easier way but this is all we have at the moment, agree? If you provide the commands I'll add the code and explain how it works |
agree, to do it like this, read the mode (auto/manual), and set it with the right command the temperature reading auto / manual, see other topic. these we had also. The thermostat must be in manual mode The thermostat is in auto mode |
ok. I'll add that to do the todo list |
#144 has example messages to be used to implement this feature. Waiting for the broadcast messages on 1A5 |
Proddy, if you change something then, the 01A5 is sent but only with modified offsets, not full lenght |
Ok. In the broadcast messages do you have any idea which byte holds the
mode setting?
…On Fri, 12 Jul 2019 at 09:13, Ludovic Laurent ***@***.***> wrote:
Proddy,
the 01A5 is broadcasted every 120 seconds, even with you don't change
anything.
this broadcasted message is in 2 part because of the lenght
example :
(03:22:49.018) Thermostat -> all, type 0x01A5 telegram: 10 00 FF 00 01 A5
80 00 01 2C 29 00 2C 20 01 B6 03 03 01 01 B6 02 28 00 00 11 01 03 FF FF 00
(CRC=A1), #data=24 <--- RCPLUSStatusMessage(0x1A5) received (03:22:49.708)
Thermostat -> all, type 0x01A5 telegram: 10 00 FF 19 01 A5 06 04 00 00 00
00 FF 64 4B 00 3C 01 FF 01 02 (CRC=93), #data=14 <---
RCPLUSStatusMessage(0x1A5) received
if you change something then, the 01A5 is sent but only with modified
offsets, not full lenght
example :
(02:53:19.068) Thermostat -> all, type 0x01A5 telegram: 10 00 FF 0D 01 A5
00 9F 01 9B (CRC=AE) #data=4 <--- RCPLUSStatusMessage(0x1A5)
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#145>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AAJMO6FGF4MMITW6BUPGFPDP7AVKXANCNFSM4H47YG7A>
.
|
as specified in the wiki, it is offset 0x0A The bit you need is the bit 1 |
ok thanks @moustic999 |
@kroon040 added a check for mode in 1.8.1b16 so it shouldn't show as ? any more. Can you test? Next step would be to implement the writing of the temps. |
@proddy , I can check, is there a bin on the release page of 1.8.1b16, of do in need to extract it from dev, and compile it myself? |
always easier to build yourself from source (it's only 2 commands you need
to type). I can also generate a .bin file if you prefer - I'm ok either way
…On Mon, Jul 15, 2019 at 5:11 PM kroon040 ***@***.***> wrote:
@proddy <https://github.com/proddy> , I can check, is there a bin on the
release page of 1.8.1b16, of do in need to extract it from dev, and compile
it myself?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#145>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AAJMO6EE2K6NUMJISLJNZE3P7SHQLANCNFSM4H47YG7A>
.
|
If you could generate a bin file, it should be nice |
Tested, but not weel, I lost reading temp and default no reading (manual/auto) Flashing firmware and rebooted, after 10 min, still Thermostat stats: setting to manual Thermostat stats: back to auto Thermostat stats: |
This one Try:
|
|
ah, that doesn't give us much. @moustic999 you're the expert. any idea how to read values from EMS+ ? |
Hey, sorry for the late answer, I'm in holiday When you are in manual mode, here is the command to change the manual temperature :
Meaning : I don't have direct access to my heater, but I'm pretty sure it is the right command ;-) some explanatation regarding latest message : Not sure about this because I don'h have all my docs with me.
So you can be sure that command 0167 has only 2 Bytes of data. Never more. |
thanks LL for responding during your vacation. We know how to write to EMS+ based on your earlier tests and it works fine. What we're after are the calls to query the telegrams, i.e. send read commands to a specific telegram type, like 0x167 to fetch the current thermostat temperatures. Everything I've asked @kroon040 to try hasn't worked unfortunately. With EMS 1.0 it was easy, you just added a MSB to the recipient (e.g. x10 becomes x90) and the payload is the amount of data to return. It seems EMS+ behaves differently. Any ideas? @kroon040 thinking about this, what you could do is switch the RC3000 off and on when EMS-ESP is running and capture all the traffic between the boiler and thermostat. There must be some reads in there somewhere. |
Ok @proddy Pay attention that in EMS+ Read commands ( 90 as dest) will also be WRITE commands if you set data after the EMS+ command !!!! |
we tried that in #145 (comment) and the result was: |
as long as I remember, I always receive 00 00 also at home. I think this command is not used |
ok - think we just got mixed up with all the random testing. |
Yep that works
|
yep, it is the right one. Note also that 01A5 is sent cyclicly, but not for an heat pump it seems. only on gas/gasoil heater ( to be confirmed) |
HC1 -> 01A5 |
this is the manual and the one sent in cyclicly
(02:51:19.919) Thermostat -> all, type 0x01A5, telegram: 10 00 FF 00 01 A5
00 D5 21 24 00 00 24 27 00 AD 05 01 03 00 AD 01 8D 00 00 11 01 04 08 56 00
(CRC=AA) #data=25
(02:51:53.808) Thermostat -> me, type 0x01A5, telegram: 10 0B FF 00 01 A5
00 D5 21 24 00 00 24 27 00 AD 05 01 03 00 AD 01 8D 00 00 11 01 04 08 56 00
(CRC=54) #data=25
If I change the temp :
thermostat temp 18.0 and then sent
send 0B 90 FF 00 19 01 A5
should it direct change in de telnet interface?
send 0B 90 FF 00 19 01 A5
Op di 20 aug. 2019 om 14:10 schreef Ludovic Laurent <
[email protected]>:
… HC1 -> 01A5
HC2 -> 01A6
HC3 -> 01A7
HC4 -> 01A8
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#145>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AJUUBKLTFCFAJ6TIZELTUULQFPNMDANCNFSM4H47YG7A>
.
--
Slimme meter kabel kopen?
h <http://www.kroonen.eu/slimmemeter>ttp://www.slimmemeterkabel.nl
|
when you change the temp on the thermostat, you should see, in telnet, 01A5 from thermostat to all with new Value. But it send only offset bytes that are changed . |
to change the temp in the telnet, you must use th 01B9 command 01A5 is status message only. |
Thanks. Think I can finish the implementation now. We were testing with querying x167 when it should have been x1a5. Doh. |
Yes @kroon040 , it should. Can you check if |
I did setting the temp and send 0B 90 FF 00 19 01 A5 (with 19.0 and 19.5)
|
latest log is fine then, it broadcast the order to everybody |
ok, I think I finally understand it now. With EMS+ reading and writing is different. It's exactly what @moustic999 was telling me all along but my poor brain needed to catch up. So reading 2 bytes of data from 0x1A5 its: And writing a value of 0x77 to type 0x1A5 its: Write has a byte less. So I need to change the code and adjust the telegram depending on the action (Read or Write). Almost there @kroon040 ! |
yes almost there , the Write command for heating is 01B9. That's for HC1, some others command are Read/write. |
yes, I'm aware. I was just an example to show how the telegram format differs between Read and Write, which is unlike EMS 1.0 |
yes that's what I told you, Lot of changes are needed to support ems+ |
@kroon040 made a new build for you to try. You can get it here. Please try 'thermostat read 1a5' and see if it brings the correct temperatures back then wait a few seconds and try |
The thermostat unit change immediatly. The telnet interface not yet, after a thermostat read 1a5, waited 10sec, abot a minute the telnet interface change also
|
1.9.0b7, supported for writing temp and mode works. |
Hi,
It Should be nice to have write support on the nefit moduline 3000 (RC300/RC310) for setting the temperature
The all use the EMS+ protocol. Hoping to add support soon.
The text was updated successfully, but these errors were encountered: