-
Notifications
You must be signed in to change notification settings - Fork 70
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Idle ? #26
Comments
Hey @IanAdd ! If you have the Hardware-Mod then the WiFi-Module knows the real state of the heating relay - then, and only then, action will change to 'idle' if the ralay is of. Without Hardware-Modification the WiFi Module can't rellay know the state of the heating. klausahrenberg/WThermostatBeca#17 (comment) The only thing would be to simulate difference between targetTemp and measuredTemp. The Thermostat seems to has the following hysteresis implemented.
Maybe i can simulate Kind Regards |
Hi |
@fashberg, hello. Simulating is not good idea:
By the way, SmartLife application shows current heater status (on/off), so this information transfers to WiFi module for stock firmware. May we got it for idle state detection? P.s. I may help with tests/debug if it needed. |
Hey @IanAdd and @IATkachenko Version https://github.com/fashberg/WThermostatBeca/releases/tag/v1.16-fas has now "RelayStateCalculation". @IATkachenko : I think SmartLive shows device-state on/off, but not relay state! Kind Regards |
@fashberg, unfortunately I flashed WThermostatBeca to my BHT-3000 after 30 minutes of test with SmartLife application and Home Assistant integration and have no screenshots, but thermostat interface have on/off button, mode buttons, data from internal and external sensors, temperature selector and relay status icon (that looks like fire) that shows/disappear based on relay status (it may be simulation too, but application have such icon and it is not on/off icon). And about "RelayStateCalculation". WThermostatBeca/WThermostat/WBecaDevice.h Line 1936 in 50952d8
old_target = 30, target = 30, dz = 1, actual = 25, old_actual = 24.5 => relay should be in HEATING state. Also I'm not sure about deadzone: is thermostat switch relay off at (target - dz)? For my observation it switch relay off just at target: for now I have target=30.5, actual 29.5 and relay is on. Relay stay ON at actual 30.0 and switch off at actual == target. Then is stay off till actual > (target - dz) and ONs again at actual = target - dz. Looks like condition should be: else if ((actual > oldActualTemperature && actual < target ) || ( target > oldTargetTemperature && actual <= (target - dz) ) ) relay is not turning ON if we increase target temperature in deadzone, but it stay ON if target > actual > target - dz for full processing cycle (see my observation above). |
Hey @IATkachenko ! looks better - applied to 1.17-fas Kind Regards |
@fashberg, I was not completely right with my suggestions, sorry :( Your original condition is correct. I was not familiar with message publishing algorithm: you are catching moment of start heating and change state just at this time. All other temperature changes is not require publishing new (or same) state. My bad, sorry for confusing, algorithm in 1.16 was correct. |
Hey @IATkachenko , OK, there a third version.
I've fixed another Bug in 1.17 that not all incoming updates started recalculation of the Heating State. You can test 1.18.beta1-fas - here attached in a ZIP or compile with gitpod or pull current master if (actual>=target){
network->log()->notice(F("RelaySimulation: State OFF"));
this->state->setString(STATE_OFF);
updateModeAndAction();
} else if ((actual != oldActualTemperature || target!=oldTargetTemperature) && actual <= (target - dz)){
this->state->setString(STATE_HEATING);
network->log()->notice(F("RelaySimulation: State HEATING"));
updateModeAndAction();
} else {
network->log()->notice(F("RelaySimulation: NOOP"));
} |
fixed in 274a38e |
If the target temperature is below the current temperature shouldn't the action payload be "idle" rather than "heating" ?
The text was updated successfully, but these errors were encountered: