SAT icon indicating copy to clipboard operation
SAT copied to clipboard

Modulation and Setpoint Synchro report alternating problems based on BoilerStatus

Open stachdude opened this issue 3 months ago • 8 comments

Hi,

First, as a new user, thank you for this awesome project!

I recently installed an emsesp gateway and SAT. I'm not sure if what I'm seeing is a bug or expected behavior, but I wanted to report it.

🛠️ Environment

  • Boiler: Junkers ZBS14/100 S-3 MA
  • Thermostat: FW120
  • Gateway: emsesp
  • SAT Version: develop branch
  • HA Integration: custom_components.sat

Symptoms

I'm observing an issue where the Modulation Synchro and Control Setpoint Synchro entities report a "problem" state. This state seems to alternate depending on the BoilerStatus:

  • When BoilerStatus is IDLE: Control Setpoint Synchro reports a problem.
  • When BoilerStatus is HEATING_UP (or other active states): Modulation Synchro reports a problem, and Control Setpoint Synchro clears to "OK".

Activity Log

Here is a corresponding snippet from the activity log showing the change:

Relative Modulation Synchro cleared (no problem detected)
11:54:19 AM - 1 second ago
Boiler Status changed to BoilerStatus.IDLE
11:54:17 AM - 3 seconds ago
Boiler Status changed to BoilerStatus.HEATING_UP
11:52:08 AM - 2 minutes ago
Boiler Status changed to BoilerStatus.PUMP_STARTING
11:52:07 AM - 2 minutes ago
Boiler Status changed to BoilerStatus.HEATING_UP
11:51:47 AM - 3 minutes ago
Boiler Status changed to BoilerStatus.PUMP_STARTING
11:51:45 AM - 3 minutes ago
Boiler Status changed to BoilerStatus.HEATING_UP
11:51:39 AM - 3 minutes ago
Boiler Status changed to BoilerStatus.PUMP_STARTING
11:51:35 AM - 3 minutes ago
Boiler Status changed to BoilerStatus.HEATING_UP
11:51:27 AM - 3 minutes ago
Relative Modulation Synchro detected problem
11:50:58 AM - 4 minutes ago
Boiler Status changed to BoilerStatus.PUMP_STARTING
11:50:27 AM - 4 minutes ago
Control Setpoint Synchro cleared (no problem detected)
11:50:27 AM - 4 minutes ago
Boiler Status changed to BoilerStatus.HEATING_UP
11:50:27 AM - 4 minutes ago
Control Setpoint Synchro detected problem
11:40:17 AM - 14 minutes ago
Relative Modulation Synchro cleared (no problem detected)
11:39:41 AM - 15 minutes ago
Boiler Status changed to BoilerStatus.IDLE
11:39:40 AM - 15 minutes ago
Boiler Status changed to BoilerStatus.HEATING_UP
11:38:38 AM - 16 minutes ago

Additional Context & Secondary Issues

  1. DWM Unavailability: I am also unable to get SAT to work with DWM. The hot water set point is shown as "unavailable" in Home Assistant:
  2. Branch: I am using the develop branch because the stable release does not seem to work correctly for me. On stable, auto-calibration never finishes (even after 40 minutes), and the Modulation Synchro is constantly in a problem state. The develop branch seems more stable, aside from the alternating synchro issue reported above, and also calibration process unable to finish
  3. Setup: My FW120 thermostat's remotemp is being updated via MQTT from an HA automation, using data from Xiaomi BLE (LYWSDCGQ) sensors.

Despite these synchro warnings, the boiler seems to respond correctly to SAT commands and maintain the set temperature based on presets. I also see BoilerStatus.OVERSHOOT_HANDLING states reported, which seems correct.

I don't see any related errors in the emsesp logs or in the Home Assistant logs for custom_components.sat.

Please let me know if you need any more logs or details!

stachdude avatar Nov 11 '25 11:11 stachdude

Hi, a quick update to my report.

My initial observation that the problems are always alternating seems to be incorrect.

Based on the newest logs, it looks like the Control Setpoint Synchro problem can persist, and then the Relative Modulation Synchro problem can appear at the same time when the boiler starts heating.

In the log below, Control Setpoint Synchro detected a problem at 11:54:57 AM. It did not clear, and then at 12:06:17 PM (after the boiler status changed to HEATING_UP), the Relative Modulation Synchro also detected a problem.

This means both synchro entities can be in a problem state simultaneously.

Here is the new log:

Relative Modulation Synchro cleared (no problem detected)
12:39:01 PM - 4 minutes ago
Boiler Status changed to BoilerStatus.IDLE
12:38:57 PM - 4 minutes ago
Relative Modulation Synchro detected problem
12:06:17 PM - 36 minutes ago
Boiler Status changed to BoilerStatus.HEATING_UP
12:05:47 PM - 37 minutes ago
Control Setpoint Synchro detected problem
11:54:57 AM - 1 hour ago
Relative Modulation Synchro cleared (no problem detected)
11:54:19 AM - 1 hour ago

stachdude avatar Nov 11 '25 11:11 stachdude

Hi @stachdude and welcome! Yes you are correct this is not a normal behavior for the synchros. The synchros do not affect the SAT operation at all. They are only ensure that the SAT commands are delivered to the boiler. Other than the synchros issue is SAT working for you? Is it regulating the heating of your home at the setpoint?

sergeantd83 avatar Nov 11 '25 12:11 sergeantd83

Thank you @sergeantd83, and yes it seems to be doing it's job, I do see in emsesp logs commands being accepted with no errors

emsesp logs

2025-11-11T13:25:47.001 I 8765: [command] Called command thermostat/remotetemp (room temperature from remote) with value 22.4 and id 1 on device 0x10
2025-11-11T13:25:47.104 I 8766: [command] Called command boiler/selflowtemp (selected flow temperature) with value 44.00
2025-11-11T13:25:47.194 I 8767: [command] Called command boiler/selflowtemp (selected flow temperature) with value 44.00
2025-11-11T13:25:47.999 I 8768: [command] Called command boiler/burnmaxpower (burner max power) with value 20
2025-11-11T13:25:48.125 I 8769: [command] Called command boiler/burnmaxpower (burner max power) with value 20
2025-11-11T13:25:48.349 I 8770: [command] Called command boiler/burnmaxpower (burner max power) with value 20
2025-11-11T13:25:51.127 I 8771: [command] Called command thermostat/remotetemp (room temperature from remote) with value 22.3 and id 1 on device 0x10
2025-11-11T13:25:51.322 I 8772: [command] Called command boiler/selflowtemp (selected flow temperature) with value 44.00
2025-11-11T13:25:52.186 I 8773: [command] Called command boiler/burnmaxpower (burner max power) with value 20
2025-11-11T13:26:11.092 I 8774: [command] Called command thermostat/remotetemp (room temperature from remote) with value 22.2 and id 1 on device 0x10
2025-11-11T13:26:11.328 I 8775: [command] Called command boiler/selflowtemp (selected flow temperature) with value 44.00
2025-11-11T13:26:12.144 I 8776: [command] Called command boiler/burnmaxpower (burner max power) with value 20
2025-11-11T13:26:16.991 I 8777: [command] Called command boiler/selflowtemp (selected flow temperature) with value 44.00
2025-11-11T13:26:17.994 I 8778: [command] Called command boiler/burnmaxpower (burner max power) with value 20
2025-11-11T13:26:27.154 I 8779: [command] Called command boiler/selflowtemp (selected flow temperature) with value 44.00
2025-11-11T13:26:28.201 I 8780: [command] Called command boiler/burnmaxpower (burner max power) with value 20
2025-11-11T13:26:29.212 I 8781: [command] Called command thermostat/remotetemp (room temperature from remote) with value 22.3 and id 1 on device 0x10
2025-11-11T13:26:29.215 I 8782: [command] Called command boiler/selflowtemp (selected flow temperature) with value 44.00
2025-11-11T13:26:29.224 I 8783: [command] Called command boiler/selflowtemp (selected flow temperature) with value 44.00
2025-11-11T13:26:30.240 I 8784: [command] Called command boiler/burnmaxpower (burner max power) with value 20
2025-11-11T13:26:30.341 I 8785: [command] Called command boiler/burnmaxpower (burner max power) with value 20
2025-11-11T13:26:31.108 I 8786: [command] Called command boiler/selflowtemp (selected flow temperature) with value 44.00
2025-11-11T13:26:32.115 I 8787: [command] Called command boiler/burnmaxpower (burner max power) with value 20
2025-11-11T13:26:32.473 I 8788: [command] Called command boiler/selflowtemp (selected flow temperature) with value 44.00
2025-11-11T13:26:33.487 I 8789: [command] Called command boiler/burnmaxpower (burner max power) with value 20
2025-11-11T13:26:39.236 I 8790: [command] Called command boiler/selflowtemp (selected flow temperature) with value 44.00
2025-11-11T13:26:40.270 I 8791: [command] Called command boiler/burnmaxpower (burner max power) with value 20
2025-11-11T13:26:45.243 I 8792: [command] Called command boiler/selflowtemp (selected flow temperature) with value 44.00
2025-11-11T13:26:46.252 I 8793: [command] Called command boiler/burnmaxpower (burner max power) with value 20
2025-11-11T13:26:46.912 I 8794: [command] Called command boiler/selflowtemp (selected flow temperature) with value 44.00
2025-11-11T13:26:48.000 I 8795: [command] Called command boiler/burnmaxpower (burner max power) with value 20
2025-11-11T13:26:57.194 I 8796: [command] Called command boiler/selflowtemp (selected flow temperature) with value 44.00
2025-11-11T13:26:58.204 I 8797: [command] Called command boiler/burnmaxpower (burner max power) with value 20
2025-11-11T13:27:07.172 I 8798: [command] Called command boiler/selflowtemp (selected flow temperature) with value 0
2025-11-11T13:27:08.219 I 8799: [command] Called command boiler/burnmaxpower (burner max power) with value 20
2025-11-11T13:27:09.232 I 8800: [command] Called command boiler/heatingoff (force heating off) with value on
2025-11-11T13:27:10.068 I 8801: [command] Called command boiler/selflowtemp (selected flow temperature) with value 0

The only other thing besides those synchro problems, as I mentioned, is DHW control completely missing.

stachdude avatar Nov 11 '25 13:11 stachdude

This is the proposed EMS mapping from the EMS-ESP creators. You can change it in your installation, if the proposed node_ids are not working for you.

sergeantd83 avatar Nov 11 '25 13:11 sergeantd83

@sergeantd83 thanks, will look into this, but this will probably only cover DHW missing, not the main issue, which at this point Im not sure what to think about, as it seems from what You are saying, they basically are just caused by "missing" ack's ?

stachdude avatar Nov 11 '25 17:11 stachdude

No, EMS-ESP creators advised us to use the dhw/seltemp ack, which is a Read/Write value. Can you confirm that this is the correct value? https://github.com/Alexwijn/SAT/blob/5890ed2ba7ac9785fc919c1f51131b4f95a1fb18/custom_components/sat/mqtt/ems.py#L15

sergeantd83 avatar Nov 12 '25 04:11 sergeantd83

@sergeantd83 Yes, I agree, that's my understanding as well, and it is a correct value.

~~I've done some more debugging, and the DHW issue seems to be specific to my setup, or perhaps to Junkers boilers in general. I can successfully send the command dhw/seltemp to the boiler, but it has no effect. I suspect this is why the DHW setpoint shows as "unavailable" in Home Assistant.~~

edit: DHW setpoints will not work for ems, as You pointed out, the mappings are not defined in ems.py so this is resolved.

Regarding the Synchro issues, however, all the emsesp mappings seem to be available and readable, so I'm still not sure why SAT is reporting a "problem" state.

My main question is: does this reported "problem" have any practical implication on SAT's operation? For example, could it cause incorrect calculations or other unintended behavior?

edit: Browsing issues here, I've found @enricoschroeder comment with his fork changes https://github.com/Alexwijn/SAT/issues/109#issuecomment-3460246101, which when applied to my situation, synchro issues seems to be fixed for now, will observe performance, but his changes make a lot of sense in my environment.

stachdude avatar Nov 12 '25 17:11 stachdude

I just saw this happening for me as well for binary_sensor.relative_modulation_synchro but iam using an Esphome gateway and a Remeha avanta ace 28c boiler. Heating stopped working too and had to reload the integration to make it work again. Iam using the main branch.

Rick-van-Dam avatar Nov 19 '25 06:11 Rick-van-Dam