pihome-shc/pihome

"Live temperature"

Opened this issue · 40 comments

I was thinking about how could a regular thermostat behavior could be implemented, like setting the temperature on the go, no boost, no override or any schedule.

A slider, visible on the zone pop-up window that could update the target temperature, for that zone, in the database or insert a new value and then boiler.php does the job. The hierarchy (boiler.php line 483) could be like it is now and at the end the "live temp".

We have the slider. We need a new database table. Maybe a checkbox to update the state for the slider in the database (on or off) and the submit button.

What do you think?

@sandreialexandru you mean set that temperature for ever? or it would have some time limit?

Having a time limit would only duplicate the functionality of boost. The temperature set with the slider would be target temperature until boost, night climate, override or schedule comes into action. Basic thermostats don't have schedules, but sometimes there is a need to adjust the temperature on the go.

i was only thinking how to limit the run time, setting the X temperature for a zone until next schedule/boost/night climate kick in and stop the slider temperature. I think you need another table for this to function.

Maximum run time for the zone could be the limit

This would be a nice addition to PiHOME interface and a great way to control live temperature
http://anthonyterrien.com/demo/knob/

we can implement slider on the screen, http://anthonyterrien.com/demo/knob/ looks very fancy and looks nice as well but it need more space on the screen, at the moment screen refreshes after every 15 seconds and any model open get closed same goes for schedules, if we want to implement something we need to have that refresh bit more intelligent instead of hard coded 15seconds.

Anyone any ideas on how this could be implemented ?

Maybe another card under OneTouch. This would eliminate the problem of the 15 seconds refresh.
Slider or knob to update temperature in another table into the database with a SUBMIT button.

A slider is the simplest to create. I guess the idea is to change the temperature whilst a schedule is running, if so the slider could initialize with the current schedule temperature, then any change of the slider could be used as an override temperature for the duration of the schedule.

Doing it like this would only create a slider for OVERRIDE. Let's say that there are 5 schedules during one day. It means that we would have to readjust the slider for every schedule.
My initial idea was to have a slider and adjust a target temperature, on the go, when no any other function would be active (night climate, boost, override, schedule, holiday...). The slider would update "target_c" only if other functions are off. When a schedule or boost were to be activated then target_c would be updated and Live Temperature disabled.
The hierarchy would be: Boost>Night Climate>Override>Schedule>Live Temperature

What do you think?

I'm thinking that live-temperature is not attached to any zone and that it takes precedence eg if activated during a schedule or boost then it controls the temperature until the running schedule/boost completes, hence it controls temperature live, further schedule/boost cycles use their existing temperature settings, as these are future events and hence not yet live

If it is not attached to any zone, what schedule will it override, assuming we have more that one zone? Having it like this wouldn't it be like modifying an active schedule?
In my opinion, live temperature should be a function of a plain thermostat.

@twa127 your idea to implement something like this is good, but is not what I had in mind and just a simple temperature set slider is what is missing. At this point we are forced to use schedules or night climate.

I was assuming it would effect any currently running heating schedule, or if no schedule is currently running it would act as simple thermostat with a safety cut-off after a set time, and would be cancelled by the next heating schedule to run or would time-out. The thing about a simple set/action temperature slider is that it has no end point, so the system could be left operating indefinitely. Also I don't like the idea that any temperature change made by the slider remains set as an override until it is explicitly cancelled.

"it would effect any currently running heating schedule, or if no schedule is currently running it would act as simple thermostat with a safety cut-off after a set time, and would be cancelled by the next heating schedule to run or would time-out"
@twa127 this is a great idea of implementation. I agree with the fact that it should not run indefinitely, altough we have maximum run time for boiler.

I think we are confused how Live Temperature should work,
right now PiHome Smart heating flows:
Frost protection -> Away-> Zone Max C -> Night Climate -> Boost -> Override -> Schedule

this sequence works as it is defined, if you put system into boost it ignores schedule and override and desires temperature and end time coms from Boost, once boost time or temperature condition are meet system continue to function but boost ends and if you have schedule set at that time it switch back to schedule, it works even one zone is running from schedule but you still can boost any other zone and that zone will demand heat until its boost time or temperature condition aren't meet.

How Live Temperature should work:
you will have three options for user to present, enable check box, desired temperature slider, and time in minutes slider, live temperature should sit before boost in PiHome smart heating flow:
Frost protection -> Away-> Zone Max C -> Night Climate -> Live Temperature-> Boost -> Override -> Schedule

instead of this demanding heating for all zones needless it should work zone by zone same way as boost

smart_heating_flowchart

Wouldn't it be like boost, but with a slider?
Maybe the maximum running time could be boiler max time and not have the option to set the time for live temperature. I agree that there should be zones included so we can have control over each temperature.

We could utilise boiler max time or zone max time to timebox the max running time with set temperature.

Designing the heating flow, as @pihome-shc said, means that when night climate ends the boiler starts automaticaly for live temperature, which isn't a great idea if you ask me. Schedule should start the boiler, wich can be overwitten by boost or override. The current heating flow is perfect. I would place live temperature at the end, after schedule and, as @twa127 said, set the end point with a timer, wich could also be the maximum time for the zone.

I interpret what you're saying as - live temp is a temporary change to any active target_c temperature which stays active until -

  1. the current running schedule finishes
  2. the current running boost finishes
  3. the live temperature max run time is reached

If you want a permanent change to any schedule or boost temperatures, then the change should be made in those schedules or boost settings

Have I got that right :-))

I agree that there is no need for another slider to modify boost or override. Boost or override should take over schedules and live temperature be last in the heating flow.

how about something like this ?

live0
live1

The duration slider doesn't make this like boost?
I've been thinking and we can't consider the boiler max time the end point for live temperature. In my opinion, we should not have a slider for live temp time and set the max time as the maximum zone time. If 2 or more zones run one after the other the boiler max time could end, but if maximum time for live temp is the same as zone max temp, then the boiler stops when max zone time is reached.

One schedule running after the other is not an issue, as the second schedule will clear the live_temparature condition and it runs as normal. The reason for the max duration is as a safety cut-out for a future feature where you can manually trigger the heating zone ON/OFF using the live_temperature as for $target_c.

As far as I can see currently neither $zone_max_operation_time or $boiler_max_operation_time are used in any of the control logic

Another point to consider is that when #393 get implemented, dual zone systems will only have 2 zone table entries, one for heating and the other for hot water, all the 'zombie' temperature measurement only zones will disappear ,hence live temperature will normally only effect the single heating zone

If boiler max time and zone max time aren't used in any logic, why keep entries in database and settings of them?
I see you point with #393, but live temp would only be active for heating zones.
I agree with the safety cut for live temperature, but I shall stick with the argument that if implementing temperature and time control we only build a "manual boost". Controlling the temperature manually but keeping the safety cut with zone max temp is, in my opinion, the best way. Boiler is controlled by /cron/boiler.php wich could, for example, take into consideration the max time set for the zone and the new heating flow. A zone with only live temperature will also have a maximum time(in settings), also for safety cut.

I'd be quite happy using either $zone_max_operation_time or $boiler_max_operation_time and a single slider or some other widget to set the temperature, @pihome-shc am I correct in saying that these 2 table entries are not being used ?

Maybe boiler.php should take into consideration both max times for boiler and zones. It would be a very good safety feature.

I have test night climate with boost, and this is what we have, i have corrected this mistake in flowchart and i'm about to update this on PiHome website as well.

Frost protection -> Away-> Zone Max C -> Boost -> Night Climate -> Override -> Schedule

I still think live temperature should not depend on running schedule or boost time, but zone max time.

smart_heating

"I still think live temperature should not depend on running schedule or boost time, but zone max time." - @pihome-shc I agree, but this means that if live temp is not schedule dependant then it comes after in the heating flow. (......->schedule->live temperature).

"I still think live temperature should not depend on running schedule or boost time, but zone max time." - sorry but don't agree, take real world example -

  • Zone Max time set to 12 hours
  • Schedule start 1600hrs, schedule stop 2000hrs
  • Schedule temp 19C
  • Time now 1700hrs
  • I want to change live temp to 20C using single slider

Result runs at 20c until 1700 + 1200 ie 0700hrs, I think it should have run until the schedule stop time

Why have live temperature modify the schedule temperature? If someone wants to change temperature it should be done by editing the schedule, there is no need for another slider. Live temperature should not be tied of a schedule and it should be independent. If a schedule becomes active, then it takes controll of target_c. I see live temperature like a plain thermostat.
In @twa127 example, I see nothing wrong: if temperature is 19 at 1700 hours, and the boiler should run at 20 for the next 12 hours, when temperature gets to 20 then boiler stops. We have deadband and hysteresis and boiler starts again when temperature goes bellow 20. What is wrong in that? Zone max time and boiler max time are continuous boiler running times and I would not recommend setting those bigger than 2-3 hours. After 2-3 hours the boiler stops untill hysteresis passes, then starts again to keep the live temperature.

Not what I'm saying, I don't see live temperature changing anything, I don't see live temperature changing the heating flow at all, what it does change is the control temperature on the fly for the currently executing schedule or boost or override.

Taking my previous example - what happens if you have a second schedule starting at 2100hrs - I argue that it should use its own schedule temperature and not the live temperature set at 1700hrs which is still active because it has not reached the zone max time

I see you point, but keep in mind that live temperature is not tied to any schedule and it is active in the heating flow ONLY nothing else is active ie: boost, override, schedule.
My initial idea was to have a function of a plain thermostat (like a mechanical one), on wich you can adjust a target temperature on the fly.
If a schedule were to become active, whatever the temperature it has in it's settings, live temperature would become inactive.

Hi,

I agree, I think :-)) but as I see it there is no heating flow unless boost, override or schedule is active

Like you I'm thinking along the same mechanical lines, but I see the thermostat idea coupled with a mode selector the same as the tradition central heating controller with modes OFF, Central Heating ON, Hot Water ON, BOTH ON and TIMED (schedule). This ideal does add the extra complication of where to get the Hot Water control temperature from in manual modes

ON or OFF and TIMED = schedule
Selecting a zone is a good idea.
A check box for enabling live temperature, would also be a good idea or maybe show the live temp slider under each zone card.
"where to get the Hot Water control temperature from in manual modes" - what do you mean?

If you selected ON for the Hot Water Zone then you would need a control temperature from somewhere other than a schedule

Control temperature is a refference temperature to set the slider when enabling live temperature for heating zone? If so, maybe a predefined value or the last set value. Idealy it would be the actual temperature of the zone.

Any new ideas on how this could be implemented in version 2? Should we agree on the best solution for both boiler and HVAC?