{"id":48101,"date":"2020-01-13T08:02:58","date_gmt":"2020-01-13T08:02:58","guid":{"rendered":"https:\/\/automatedhome.com\/?p=48101"},"modified":"2020-04-09T17:59:56","modified_gmt":"2020-04-09T16:59:56","slug":"building-an-opentherm-weather-compensator-for-honeywell-evohome","status":"publish","type":"post","link":"https:\/\/automatedhome.com\/tutorials\/building-an-opentherm-weather-compensator-for-honeywell-evohome.html","title":{"rendered":"Building an OpenTherm Weather Compensator for Honeywell evohome"},"content":{"rendered":"\n<p>We fitted <a rel=\"noreferrer noopener\" aria-label=\"Honeywell evohome (opens in a new tab)\" href=\"https:\/\/automatedhome.com\/reviews\/review-honeywell-evohome-wireless-smart-home-heating-controls.html\" target=\"_blank\">Honeywell evohome<\/a> in our last house and it remains one of our favourite smart home heating systems. Now Automated Home reader Kevin Smart has created his own DIY Weather Compensator for evohome&#8230;<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<p>This project adds weather compensation support to an Evohome OpenTherm Intergas setup by modifying the OpenTherm <a rel=\"noreferrer noopener\" aria-label=\"Gateway PIC firmware (opens in a new tab)\" href=\"http:\/\/otgw.tclcode.com\/firmware.html\" target=\"_blank\">Gateway PIC firmware<\/a>.<\/p>\n\n\n\n<p>I was frustrated that both the Intergas HRE SB boiler and Evohome controller ignore the outside temperature reported by a connected external sensor when using OpenTherm.  The Intergas manual states&#8230; <\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>The outside temperature sensor can be used in combination with an on\/off room thermostat or an OpenTherm thermostat.<\/p><\/blockquote>\n\n\n\n<p>In fact, the boiler only performs weather-compensation adjustment when using an on\/off room thermostat. With an OpenTherm thermostat such as Evohome, the thermostat is responsible for any weather compensation.  Although the Evohome controller fetches the outside temperature from the Internet it does nothing with it other than displaying it.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Hardware<\/h2>\n\n\n\n<p>I ordered an OpenTherm Gateway, Soldering Service, Enclosure and FTDI cable from <a href=\"https:\/\/www.nodo-shop.nl\/nl\/48-opentherm-gateway\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"nodo-shop.nl (opens in a new tab)\">nodo-shop.nl<\/a> out of curiosity, to monitor communication between the Evohome R8810A OpenTherm bridge and boiler.  It turns out that the bridge does read the outside temperature from the boiler.  Also, I learned that the boiler does not report the Max CH water setpoint set by the front panel but overriding this does influence the Control setpoint temperatures sent by Evohome.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Strategy<\/h2>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"alignright size-medium\"><a href=\"https:\/\/i0.wp.com\/automatedhome.com\/wp-content\/uploads\/2020\/01\/OpenTherm-evohome-1.jpg?ssl=1\" target=\"_blank\" rel=\"noreferrer noopener\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"207\" height=\"300\" src=\"https:\/\/i0.wp.com\/automatedhome.com\/wp-content\/uploads\/2020\/01\/OpenTherm-evohome-1.jpg?resize=207%2C300&#038;ssl=1\" alt=\"Weather Compensator for Honeywell evohome\" class=\"wp-image-48115\" srcset=\"https:\/\/i0.wp.com\/automatedhome.com\/wp-content\/uploads\/2020\/01\/OpenTherm-evohome-1.jpg?resize=207%2C300&amp;ssl=1 207w, https:\/\/i0.wp.com\/automatedhome.com\/wp-content\/uploads\/2020\/01\/OpenTherm-evohome-1.jpg?w=688&amp;ssl=1 688w\" sizes=\"(max-width: 207px) 100vw, 207px\" \/><\/a><\/figure><\/div>\n\n\n\n<p>Basically, the Evohome OpenTherm bridge calculates the Control setpoint temperature from the aggregated peak percentage demand from all zones, and this is ranged within any received Max CH water setpoint.  By default, with my boiler, the Max is 90C despite the maximum CH temperature being set to 60C at the boiler front panel.  The boiler will clamp the maximum to the boiler setting though e.g. 60C.  For Domestic Hot Water heating I have a DHW Priority setup which ensures the boiler fires at 70C overriding the Control setpoint, so this will be unaffected by weather compensation.<\/p>\n\n\n\n<p>The consideration was which weather compensation strategy to use:<\/p>\n\n\n\n<p>1. Get the OpenTherm Gateway to modify the Max CH water setpoint based on a heat curve calculation, or <br> 2. Cap the Control setpoint based on a heat curve calculation<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"alignleft size-medium\"><a href=\"https:\/\/i0.wp.com\/automatedhome.com\/wp-content\/uploads\/2020\/01\/OpenTherm-evohome-heat-curve.jpg?ssl=1\" target=\"_blank\" rel=\"noreferrer noopener\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"221\" height=\"300\" src=\"https:\/\/i0.wp.com\/automatedhome.com\/wp-content\/uploads\/2020\/01\/OpenTherm-evohome-heat-curve.jpg?resize=221%2C300&#038;ssl=1\" alt=\"OpenThern Heat Curve\" class=\"wp-image-48118\" srcset=\"https:\/\/i0.wp.com\/automatedhome.com\/wp-content\/uploads\/2020\/01\/OpenTherm-evohome-heat-curve.jpg?resize=221%2C300&amp;ssl=1 221w, https:\/\/i0.wp.com\/automatedhome.com\/wp-content\/uploads\/2020\/01\/OpenTherm-evohome-heat-curve.jpg?resize=756%2C1024&amp;ssl=1 756w, https:\/\/i0.wp.com\/automatedhome.com\/wp-content\/uploads\/2020\/01\/OpenTherm-evohome-heat-curve.jpg?resize=768%2C1041&amp;ssl=1 768w, https:\/\/i0.wp.com\/automatedhome.com\/wp-content\/uploads\/2020\/01\/OpenTherm-evohome-heat-curve.jpg?w=777&amp;ssl=1 777w\" sizes=\"(max-width: 221px) 100vw, 221px\" \/><\/a><\/figure><\/div>\n\n\n\n<p>The difference will be that for 2) a % demand will be mapped to a consistent temperature if that temperature is below a weather compensated maximum. But for 1) the % demand will map to a different temperature based on the outside temperature, lowering as the outside temperature increases.<\/p>\n\n\n\n<p>As an experiment I used the Opentherm Monitor application to modify the Max CH setpoint.  Immediately the control setpoint was seen to reduce proportionally, but I found that some of the temperatures were likely to be too low for my system, so I opted for strategy 2) Cap the Control setpoint.<\/p>\n\n\n\n<p>Now in terms of weather compensation calculation I decided to implement the default heat curve A in the Intergas manual. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Code<\/h2>\n\n\n\n<p>Since the PIC microcontroller does not support division or multiplication, only bit shifting, I simplified this equation Y = 25+(25-X)<em>(80-25)\/(25+7) = 67.97-X<\/em>1.72 to 68-X*1.75 = 68-(X+X\/2+X\/4), which is only two right rotations, two additions and a subtraction.<\/p>\n\n\n\n<p>We need to handle below zero outside temperatures (as two&#8217;s complement) adding a little more complexity to the PIC assembly code, the first time I had written assembly code in many years!<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>movfw byte3   ;Outside temperature integer\nmovwf TMax    ;TMax = outside \nclrc          ;Support -ve temperatures by shifting in 1 rather than 0\nbtfsc byte3,7\nsetc\nrrf TMax,F    ;TMax = outside\/2\naddwf TMax,W  ;W=outside+outside\/2\nclrc          ;Support -ve temperatures\nbtfsc byte3,7\nsetc\nrrf TMax,F    ;TMax = outside\/4\naddwf TMax,W  ;W=outside+outside\/2+outside\/4\nsublw 68      ;W=68-(outside+outside\/2+outside\/4) based on Intergas default heat curve\nmovwf TMax    ;Calculated max setpoint  <\/code><\/pre>\n\n\n\n<p>This code is called approximately once per minute when the gateway fetches the outside temperature (MessageID27).<\/p>\n\n\n\n<p>Then all there is left to do is to ensure that a control setpoint temperature write does not exceed the calculated max setpoint temperature, by adding some code to the MessageID1 handler, which already supports overriding the control setpoint:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>btfss byte1,4       ;WriteData request?\nreturn   \nclrf controlsetpt1  ;Clear any previous override\nclrf controlsetpt2\nmovfw byte3\nsubwf TMax,w        ;If setpoint is higher than TMax, clamp it at TMax\nskpnc               ;In PIC for sub, C flag is opposite to what I would normally expect!\nreturn\nmovfw TMax\nmovwf controlsetpt1<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">The Results<\/h2>\n\n\n\n<p>For efficiency I have set my boiler&#8217;s maximum Central Heating temperature to 60C, via its front panel, so this will be the maximum flow temperature even if a higher setpoint is requested.  With this setup, the max flow temperature will only be reduced below 60C, when the outside temperature is above 5C.  Evohome will of course further reduce the temperature when the percentage demand from zones decreases and the boiler will modulate accordingly.<\/p>\n\n\n\n<p>I monitored operation over the next few days using the Opentherm Monitor and Intergas Diagnostic Software.  There was a big swing in outside temperature between 9C (max setpoint 53C) and -1C (max setpoint 72C, capped by the boiler at 60C) and the solution appeared to be working well.  The bigger test will be as we head into Spring and the average temperatures increase.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"940\" height=\"911\" src=\"https:\/\/i0.wp.com\/automatedhome.com\/wp-content\/uploads\/2020\/01\/OpenTherm-evohome-NegativeOutside.jpg?resize=940%2C911&#038;ssl=1\" alt=\"\" class=\"wp-image-48121\" srcset=\"https:\/\/i0.wp.com\/automatedhome.com\/wp-content\/uploads\/2020\/01\/OpenTherm-evohome-NegativeOutside.jpg?w=940&amp;ssl=1 940w, https:\/\/i0.wp.com\/automatedhome.com\/wp-content\/uploads\/2020\/01\/OpenTherm-evohome-NegativeOutside.jpg?resize=300%2C291&amp;ssl=1 300w, https:\/\/i0.wp.com\/automatedhome.com\/wp-content\/uploads\/2020\/01\/OpenTherm-evohome-NegativeOutside.jpg?resize=768%2C744&amp;ssl=1 768w\" sizes=\"(max-width: 940px) 100vw, 940px\" \/><figcaption>Outside temperature -1C, Control setpoint override of 72C, Boiler 60C<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"938\" height=\"991\" src=\"https:\/\/i0.wp.com\/automatedhome.com\/wp-content\/uploads\/2020\/01\/OpenTherm-evohome-5COutside.jpg?resize=938%2C991&#038;ssl=1\" alt=\"\" class=\"wp-image-48122\" srcset=\"https:\/\/i0.wp.com\/automatedhome.com\/wp-content\/uploads\/2020\/01\/OpenTherm-evohome-5COutside.jpg?w=938&amp;ssl=1 938w, https:\/\/i0.wp.com\/automatedhome.com\/wp-content\/uploads\/2020\/01\/OpenTherm-evohome-5COutside.jpg?resize=284%2C300&amp;ssl=1 284w, https:\/\/i0.wp.com\/automatedhome.com\/wp-content\/uploads\/2020\/01\/OpenTherm-evohome-5COutside.jpg?resize=768%2C811&amp;ssl=1 768w\" sizes=\"(max-width: 938px) 100vw, 938px\" \/><figcaption>Outside temperature 5C, Control setpoint override of 60C<\/figcaption><\/figure>\n\n\n\n<p>So, there you have it, what was for me a perfect Christmas holiday project!<\/p>\n\n\n\n<p>Kevin can be contacted at &#8211; kevin&lt;underscore>smart&lt;at>iname&lt;dot>com<\/p>\n\n\n\n<p >No products found.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>We fitted Honeywell evohome in our last house and it remains one of our favourite smart home heating systems. Now Automated Home reader Kevin Smart&#8230;<\/p>\n","protected":false},"author":3,"featured_media":48129,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"jetpack_post_was_ever_published":false,"apple_news_api_created_at":"2020-01-13T08:03:06Z","apple_news_api_id":"4b652180-70c9-4729-a247-b510019cf01a","apple_news_api_modified_at":"2020-04-09T17:00:04Z","apple_news_api_revision":"AAAAAAAAAAAAAAAAAAAAAw==","apple_news_api_share_url":"https:\/\/apple.news\/AS2UhgHDJRymiR7UQAZzwGg","apple_news_coverimage":0,"apple_news_coverimage_caption":"","apple_news_is_hidden":"","apple_news_is_paid":"","apple_news_is_preview":"","apple_news_is_sponsored":"","apple_news_maturity_rating":"","apple_news_metadata":"\"\"","apple_news_pullquote":"","apple_news_pullquote_position":"","apple_news_slug":"","apple_news_sections":[],"apple_news_suppress_video_url":false,"apple_news_use_image_component":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"activitypub_content_warning":"","activitypub_content_visibility":"","footnotes":""},"categories":[42,31],"tags":[],"class_list":["post-48101","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-hvac","category-tutorials"],"apple_news_notices":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/automatedhome.com\/wp-content\/uploads\/2020\/01\/opentherm-gateway-circuit-board.jpg?fit=777%2C502&ssl=1","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/automatedhome.com\/wp-json\/wp\/v2\/posts\/48101"}],"collection":[{"href":"https:\/\/automatedhome.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/automatedhome.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/automatedhome.com\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/automatedhome.com\/wp-json\/wp\/v2\/comments?post=48101"}],"version-history":[{"count":33,"href":"https:\/\/automatedhome.com\/wp-json\/wp\/v2\/posts\/48101\/revisions"}],"predecessor-version":[{"id":49705,"href":"https:\/\/automatedhome.com\/wp-json\/wp\/v2\/posts\/48101\/revisions\/49705"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/automatedhome.com\/wp-json\/wp\/v2\/media\/48129"}],"wp:attachment":[{"href":"https:\/\/automatedhome.com\/wp-json\/wp\/v2\/media?parent=48101"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/automatedhome.com\/wp-json\/wp\/v2\/categories?post=48101"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/automatedhome.com\/wp-json\/wp\/v2\/tags?post=48101"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}