evoPlus - enhancing evohome's functionality

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts
  • PaulGr
    Automated Home Jr Member
    • Jun 2016
    • 12

    evoPlus - enhancing evohome's functionality

    Like many users of this forum, I am both delighted and disappointed with my evohome system. Delighted at the excellent per-zone temperature control. Disappointed at some design decisions, missing "convenience" functions like Advance and the apparent lack of interest from Honeywell.

    I decided to do something about it. The result is evoPlus.

    evoPlus is an auxiliary console for an evohome system. It has a simple button-based touch user interface and provides functions that are either missing from or implemented poorly in evohome.

    The hardware consists of a small plastic enclosure, a colour TFT display with touch screen and a Raspberry Pi Zero W. The software is written in Python and makes use of Andrew Stock's evohomeclient library. It also uses PyGame and a custom button class. A shell script is used to autostart the program and optionally log run-time events.

    My evoPlus unit is installed in my Hall on the wall opposite to the evotouch controller. The attached photo's show the evoPlus unit and the various screens. The main screen contains 8 buttons. Some invoke a function directly, others lead onto an options screen.

    Early Start allows you to start the heating earlier than usual tomorrow. It is useful if you have to get up early tomorrow for whatever reason. You select the time that you want the heating to come on and evoPlus activates a time comparator that turns the heating on at the specified time. Alternatively, if you get up early and want the heating to start right away, tap Now.

    Leave Early is for when you leave the house earlier than normal (perhaps after an early start).

    Return Early is for when you return earlier than normal.

    End of Day is for when you decide to have an early night. It forces all zones to their overnight temperatures.

    Boost allows you to increase the zone temperatures by a specified amount for a specified time.

    Setback does the opposite. I find it useful when going out for a while. It saves fuel by letting the house slowly cool down without getting too cold. Unlike the evohome Eco mode, it does not have irritating behaviour at 15 degrees C.

    Heat Now behaves like the traditional +Hr function. It lets you extend the heating in specified zones for a specified time. Great if you are staying up late to watch a film.

    Cancel All cancels all zone overrides.

    If you have a Raspberry Pi system, then you can try out evoPlus without needing any extra hardware. You can launch evoPlus from a Terminal window on the desktop and it will then run in its own window. This also works well with a VNC remote desktop.

    I have created a data pack that contains all the software together with a BoM, comprehensive instructions, case drawings etc. If you would like to try out evoPlus or build a unit, send me a PM with your contact details and I will email you the data pack. Feel free to adapt evoPlus or to modify it as you wish.

    Please note all information is provided on an "as is" and untested basis and without any warranty of any kind. Refer to the file disclaimer.txt in the data pack.
    Attached Files
  • dty
    Automated Home Ninja
    • Aug 2016
    • 489

    #2
    Nice. I've been meaning to try and completely remove the controller from my system and replace it with my own software connected to an HGI80.

    Comment

    • paulockenden
      Automated Home Legend
      • Apr 2015
      • 1719

      #3
      Overall, looks good, but I have some questions.

      Originally posted by PaulGr View Post
      Early Start allows you to start the heating earlier than usual tomorrow. It is useful if you have to get up early tomorrow for whatever reason. You select the time that you want the heating to come on and evoPlus activates a time comparator that turns the heating on at the specified time. Alternatively, if you get up early and want the heating to start right away, tap Now.
      I don't get that. Evohome has a schedule per zone. There's no real concept of the heating 'coming on' in the morning. Different zones will have different setpoints at various times of the day. So I'm struggling to see what this function does? Does it look for morning schedule changes across all zones and apply a time differential? What if a zone was set to, say, 16C from 00:00 to 03:30, then 18C until 05:00 then 20C until 08:00 then 18C for the rest of the morning. How would this function deal with that?

      Same question applies to the other functions too.

      I'm sure it'll cope, I'm just struggling to understand how.

      P.

      Comment

      • PaulGr
        Automated Home Jr Member
        • Jun 2016
        • 12

        #4
        Originally posted by paulockenden View Post
        Overall, looks good, but I have some questions.



        I don't get that. Evohome has a schedule per zone. There's no real concept of the heating 'coming on' in the morning. Different zones will have different setpoints at various times of the day. So I'm struggling to see what this function does? Does it look for morning schedule changes across all zones and apply a time differential? What if a zone was set to, say, 16C from 00:00 to 03:30, then 18C until 05:00 then 20C until 08:00 then 18C for the rest of the morning. How would this function deal with that?

        Same question applies to the other functions too.

        I'm sure it'll cope, I'm just struggling to understand how.

        P.
        Hi Paul.

        My schedule sets all zones to an overnight temperature of 10C. It's only on a very, very cold night that the boiler fires during the night. In the morning, I stagger the zone "start" times to suit the zone occupancy pattern.

        I originally thought of reading the schedule and parsing it, but it seemed rather complicated! Instead, I took a simpler approach. Since I know what I want the various functions to do, I put that knowledge into a lookup table. The table (a Python Dictionary) contains zone override temperatures and some other stuff. I defined several constants for the override "until" times.

        In the case of Early Start I used the time at which the first zone normally "starts". Simple, but it works for me. With a little effort, it would be possible to have a phased Early Start. The first phase could override some zones and set a scheduler for the second phase and so on. However, I didn't need this so I didn't do it.

        End of Day overrides all zones to 10C (using the lookup table) until 23:50. Again, simple, but it meets my needs.

        Boost and Setback read the current zone set points, manipulate them and apply them as overrides.

        Heat Now gets zone override temperatures from the lookup table and applies them as overrides for the specified time.

        If you want more detail I can send you the Data Pack and you can peruse the software. You could install it on one of your RasPi's and run it on the desktop. It works well with VNC on a headless RasPi. This won't cost you anything apart from a little time.

        It's definitely not rocket science, but it makes my evohome system a lot nicer to use.

        I hope this helps.

        Comment

        • mtmcgavock
          Automated Home Legend
          • Mar 2017
          • 507

          #5
          Originally posted by PaulGr View Post
          Hi Paul.

          My schedule sets all zones to an overnight temperature of 10C. It's only on a very, very cold night that the boiler fires during the night. In the morning, I stagger the zone "start" times to suit the zone occupancy pattern.

          I originally thought of reading the schedule and parsing it, but it seemed rather complicated! Instead, I took a simpler approach. Since I know what I want the various functions to do, I put that knowledge into a lookup table. The table (a Python Dictionary) contains zone override temperatures and some other stuff. I defined several constants for the override "until" times.

          In the case of Early Start I used the time at which the first zone normally "starts". Simple, but it works for me. With a little effort, it would be possible to have a phased Early Start. The first phase could override some zones and set a scheduler for the second phase and so on. However, I didn't need this so I didn't do it.

          End of Day overrides all zones to 10C (using the lookup table) until 23:50. Again, simple, but it meets my needs.

          Boost and Setback read the current zone set points, manipulate them and apply them as overrides.

          Heat Now gets zone override temperatures from the lookup table and applies them as overrides for the specified time.

          If you want more detail I can send you the Data Pack and you can peruse the software. You could install it on one of your RasPi's and run it on the desktop. It works well with VNC on a headless RasPi. This won't cost you anything apart from a little time.

          It's definitely not rocket science, but it makes my evohome system a lot nicer to use.

          I hope this helps.
          The early start thing I can see it being very useful. There's many of times where i'm getting up early for work or holidays when I want the heating to come on a 4am for example. Theres no easy way of doing this in Evohome without override the zones to stay on all night.

          Comment

          • philchillbill
            Automated Home Legend
            • Jan 2017
            • 591

            #6
            Nice ! I have implemented both boost and early/late start myself, using Alexa to trigger instead of needing a touchscreen so no additional hardware (it all runs on the NUC that my Domoticz runs on). For early/late start, I just download all the zone schedules from TCC and subtract an hour from whatever switchpoint is closest to 07:00 for each zone. It keeps the temp setpoint as-is and just changes the time. With this approach, all staggered zone-starts keep their temps and their mutual time differences, they just all happen an hour earlier (or later if I ask for a sleep-in tomorrow). After midday, the schedule is put back the way it was (normally is) so that next week will not have an early start on that day unless I specifically request it.

            I do it all in perl, pulling an entire TCC data-dump for my location into arrays of hashes, modifying, and re-saving to TCC. It's actually not that difficult to achieve this granularity. CPAN has modules for adding/subtracting mins/hrs from ISO date-time records that cross midnight nicely.

            Comment

            Working...
            X