-
-
Notifications
You must be signed in to change notification settings - Fork 97
Buderus SM10 Solar Module Support #77
Comments
First, could you post back the version and product ID for the SM10 so I can add it to the known devices list. An Then do a (I'm assuming 0x10 is the type ID for the SM10 here) |
I got the following after autodetect (did it a few times, always the same response): `Scanning EMS bus for devices.
The logging after sending those commands is the following: send 0B 90 97 00 FF Hope this helps. |
I made a mistake, the SM10's ID is 0x30 so try this instead:
|
No prob, thanks for your help. Here is the logs, let me know if you need more: send 0B B0 97 00 16 (17:36:38) Sending raw telegram: 0B B0 97 00 16 (CRC=35), #data=1 send 0B B0 02 00 03 (17:39:01) Sending read of type 0x3E to 0x10: telegram: 0B 90 3E 00 63 (CRC=CF), #data=1 |
looks funny. Can you retry So for the returned SM10 data its sayings does that look correct? |
Sure, see below.
Temperature may be right, pump modulation too but the pump is off. Right after logging I had a look at the RC35, collector temp was 16°C (overclouded, a few minutes ago it was sunny), pump modulation was 0, boiler temp middle was 47°C. send 0B B0 02 00 03 (18:39:09) Sending raw telegram: 0B B0 02 00 03 (CRC=46), #data=1 (18:40:11) Boiler -> all, type 0x2A telegram: 08 00 2A 00 00 00 00 00 00 00 00 00 CF 00 00 80 00 00 80 00 80 00 80 00 00 (CRC=93), #data=21 send 0B B0 02 00 03 (18:40:25) Sending raw telegram: 0B B0 02 00 03 (CRC=46), #data=1 |
I added SM10 support. It should automatically detect the Solar Module and refresh results along with the boiler values. The information should be displayed in the |
Wow, thanks so much, you are very quick :) I will try the dev branch first and do it myself (I gotta learn it anyway). If I run into problems then I will report back. I'll keep you posted. Again, thanks for the quick support. |
Little problem, the dev version does not store settings so I can't connect it to my Wifi. After setting my MQTT broker with: set mqtt_host 10.42.0.3 [FS] Failed to open config file for writing I get an error. Setting my WiFi info will store them: Stored settings: wifi_ssid=mediaDS After reboot everything is erased again. Any ideas? Edit: I am using the Arduino IDE |
Okay, I hardcoded SSID, pass and MQTT host so at least I can test it. Here is what I get via Telnet: autodetect
And here is what I get via MQTT: {"wWSelTemp":"50","selFlowTemp":"43.0","outdoorTemp":"0.40","wWActivated":"on","wWComfort":"Hot","wWCurTmp":"45.90","wWCurFlow":"0.0","wWHeat":"off","curFlowTemp":"46.70","retTemp":"?","burnGas":"off","heatPmp":"on","fanWork":"on","ignWork":"off","wWCirc":"off","selBurnPow":"100","curBurnPow":"0","sysPress":"0.0","boilTemp":"?","pumpMod":"60","ServiceCode":"0Y","ServiceCodeNumber":204} I can't find any reference to SM10. Here is a log file for a few seconds: (00:10:11.270) Thermostat -> Boiler, type 0x1A telegram: 10 08 1A 00 2B 64 64 00 (CRC=91), #data=4 |
the "failed to write" error is odd. I've seen this once before. To be sure could you update everything and wipe the ESP with The autodetect should discover the SM10. I'll check the code again. I haven't added the MQTT yet - I want to make sure the detection and reading values works first. |
I don't use platformio and don't even know what it is but I will have a look. I'll report back after a good night sleep. Have a good night, |
well then you're uploading it incorrectly. If you're not using platformio or looked at my README best familiarize yourself on how to build using SPIFFS and memory partitioning & sectors. |
Don't worry, I did read your Readme - and I did every step explained in section "Building Using Arduino IDE". It compiles fine. But I noticed I flashed it witout SPIFFS - my bad, mea culpa :) Anyway, will this have anything to do with the SM10 not listed with autodetect? What else can I help you with? |
do a |
Ok, now everything is working as intended. As a side note - on first reboot after setting the wifi data it crashes with: Exception (28):
ctx: cont ets Jan 8 2013,rst cause:2, boot mode:(3,0) load 0x4010f000, len 1384, room 16 Here is the log (I did autodetect twice): Started scan of EMS bus for known devices
Started scan of EMS bus for known devices Requesting type Version(0x02) from dest 0x02
|
I made a typo with the ID (again!). Now fixed in the latest dev branch. |
No big deal, I could have seen it myself, unfortunately I am busy with 3D design at the moment. I'll check the latest dev in a few and report back to you. |
Well done! It identifies the SM10 (but no real data). Her is the logs: Started scan of EMS bus for known devices
Here is the info:
And here a log after autodetect:
|
Ok, here is some more information: It is sunny outside, no clouds, I expect the temperature to go up from here. Here is what my RC35 displays:
Here is a rather long log file, maybe you'll find the above data somewhere in it:
|
ok, back to the drawing board then! |
Yep, take your time as I will continue my 3D work now. As I always say: have fun :) |
I can get the collector temp and bottom temp but not sure where % modulation and the middle temps are. I need more data. Could you do a few spot checks between settings shown on the RC35 and the contents of a I just need the line that looks like: (00:39:10.886) 0x30 -> me, type 0x97 telegram: 30 0B 97 00 00 00 01 7F 50 01 19 03 00 00 E1 00 00 (CRC=6F), #data=13 |
Okay, I did some spot checks and still looking through it. The RC35 displayed steady values during logging. They are:
None of the values changed while logging. Here is the filtered output containing only data packets from the SM10 to all, the boiler or the EMS-ESP. The value that's bothering me is "AD" which then counts down and jumps between "A6" and "A5". I have no idea what that might be.
|
thanks - we're getting closer. It would still help to get the % modulation as its always zero and there are so many 0x00s in the telegram :) |
You're welocme and yes, I agree - too many zero's. However, I will not climp up my roof to imitate the sun with my flashlight :) At the moment it is very cloudy and dark, looks like it will rain soon. Maybe we will see some better data tomorow - weather forecast says it should be a warm and sunny day. Let's hope for the best. Thanks so much for all the help. |
LOL Ok! I'll commit some changes for the collective and bottom temps and we'll guess the % modulation. We can always fix that later when the sun comes out. That 44C middle temp - I have no idea where that comes from! I guess its not that important. You always do a 'log t' and just see how your RC35 is sending requests to the SM10. |
Hmm, ok, Byte 7 and 8 are the collector temp (*10) which makes sense - 17.3°C * 10 = 00AD, Byte 9 is the pump modulation in % (00 in our case) followed by 2 bytes with the value of the temp sensor of the warm water (0129 in our case, if divided by 10 you'll get 29,7 - which is the 30°C dsiplayed by the RC35). The next byte contains in bit 1 if the pump is on or off - in our case it is on which is weird - the pump should be off, maybe it is inverse?. The next 3 bytes are the uptime of the SM10 - in our case 00 00 E6(?). The last byte in the payload is of unknown functionality. |
I maybe able to shine some light on this (no pun intended) - there is only one NTC wired to the SM10 which is actually in the hot water tank. I assume that's the bottom temperatur reported by the SM10. The sensor of the middle temperatur is not wired to the SM10 but to the boiler directly. So I assume the RC35 is collecting the data from the SM10 and the boiler and displays it's values. So, forget about the middle temperature - that's not from the SM10. |
I did a quick check - result is similar to yesterday. It detects the SM10 but no data is presented:
logs are similar to the ones we know already. |
ok, think I fixed that. I missed a call to fetch the values after detection. |
Alright, I'll check it right now and will let you know. |
Nope, the same output as before. Detected but only "?" as data. |
oh. can you Also - do you want these values in a single JSON object sent to an MQTT topic? Handy if using Home Assistant or Gafana |
Done, see the log below. I marked the two lines for your convenience. I am actually not a big fan of gigantic JSON blobs, because I have to write so much Javascript to extract all the data for display (and other stuff) but for now it would be nice to have all SM10 data in a single JSON object. I have to be careful because of data lenght restrictions. My MQTT broker is already choking on the boiler JSON :) Btw, I am using ioBroker in a Multihost system with vis as visualisation (Android tablets inside the walls) and Influxdb and Grafana as a data logging/visualisation graph system. Here is the log:
|
Take your time, please. I am tired and go to sleep now. Have a good night and I'm looking forward to more testing of your software tomorrow. |
I found the error and fixed it, I think. I'm getting sloppy. Good point on the MQTT - it's on my list to make the JSON configurable. So what format would you like the SM10 messages in? Same as the thermostat with one topic and 3 key/values? |
Good morning, I'd like that, just one topic and three objects would be fine. I'll do testing once I finish my first coffee (I'm useless before that). |
Well done, now I get valid data from the SM10. So, goal achieved from your side. What I don't understand is the difference between the "bottom" temp and the current WW temp (middle). The NTC for WW sits just above the SM10 NTC but the difference is more than 20°C (bottom 30.5°C vs. middle 56.7°C.). This is really weird. The current output of "info":
|
Update: :) The pump modulation also seems to be valid:
|
Addition info: Would be nice to add the pump active/not active to be able to identify a pump failure. And yes, it is bit 1 of byte 11. If the pump modulates, the value is "3", if not it is "1". If modulation is 0% and the pump is activated means the pump is probably "kaputt" and needs to be serviced. |
pump active added. Also MQTT |
All working except pump active - it says pump "on" but the data says it is off. My fault - it is not byte 11 but byte 10, bit 1 (bit 0 is always 1). Sorry for the typo. data telegram: SM10 -> all, type 0x97 telegram: 30 00 97 00 00 00 00 5B 00 01 32 01 00 01 21 00 00 |
MQTT works fine, very well done! If the pump activation is fixed it is perfect. Thanks a lot for all your work, now it is my turn to make something useful out of all the data. I'll stay in touch with you - if you need anything, just let me know. Have a nice weekend Dieter |
you nailed it, proddy. Have it running for a few hours. Works fine. Thanks so much! |
great, it was fun working together. Thanks for helping out. If you notice anything strange please just re-open this issue and report back. |
Sorry, there seems to be something wrong regarding the "Pump activation flag". The Wiki has a mistake: Byte 7 - 8 are the temperature Example of a data packet: SM10 -> all, type 0x97 telegram: 30 00 97 00 00 00 01 95 1E 01 29 02 00 01 38 00 00 (CRC=AE), #data=13 |
no problem. Changed line #1132 in
The 7 is the offset in the data package after the header, so position 12 (+5) when comparing to the German ems wiki. |
Yep, did that already - I just sat here studying your code :) All good now, enjoy the rest of your weekend. |
FYI, the ems-esp.ino is missing from the dev branch :) |
It’s renamed to .cpp which makes the build slightly faster and debugging work. It should still build fine with platformio |
Ah, ok. That makes sense. |
I have also a Buderus SM10 module. Solar Module stats: What is the issue regarding the Energy values? I didn't show this energy values popping up in this issue. |
Hi
Software (1.55 if I remember corectly) is working fine with my Logatrend boiler. Except for the SM10 solar module, which is quite common here in Germany. Is it possible to add it to the MQTT data?
It is described technically in the Wiki, unfortunately I am new to programming an ESP8266, so I can't do it myself without help. The SM10 is just a pump and some sensors, it would be nice to have the pump modulation, if there is solar energy at all and the temperatures received from the solar panels.
If you need additional information please don't hesitate to ask.
Dieter
The text was updated successfully, but these errors were encountered: