DIY

Replacing Honeywell ST7100 with Nest Thermostat

Today I finally got around to fitting my Nest 3rd gen thermostat, ran into a few issues with the wiring as I was under the assumption that it was clever enough to not need the wires to the common connections for the central heating and hot water if they were the same as the main live, which they were on my original Honeywell setup.

Turned out after wiring it all in that indeed, you do need to jumper connect from live to each of the commons, at least in my case. After figuring this out I think my system represents the Y plan setup in the diagrams.

n case someone else plans to replace a Honeywell ST7100 with a Nest thermostat you need to wire it as follows:

  • Any spare lives (I had two) into a connector strip and ignore
  • Main live goes to L on the nest
  • Neutral, I had three wires going into this so fed them into connector strip then a single wire from there to the N on the Nest
  • 8 on ST7100 goes to 6 on the Nest
  • 7 on ST7100 goes to 4 on the Nest
  • 5 on ST7100 goes to 3 on the Nest
  • Then the missing step I had, link L to 2 and 2 to 5

One thing I have discovered is that whilst the Honeywell seemed to give preference to hot water if both heating and hot water are requested, the Nest seems to give preference to heating. This lead to a lack of hot water on the first few days, but now I have just changed the schedule to be at times when the heating is not on.

Programming

Visual Studio 2015 Update 3 Error C4772

Having just switched from Visual Studio 2015 Update 1 to Update 3 and updated our compiler from Intel Composer 2016.2 to 2017.1 we got an error C4772:

C++ Error C4772: #import referenced a type from a missing type library; ‘__missing_type__’ used as a placeholder

The code included two type libraries Common and Logger, the Logger library had a dependency on the Common type library. Previously this worked fine but it seems a change in Visual Studio 2015 or Intel Composer 2017 have broken this.

#import "..\tlb\Common.tlb"
#import "..\tlb\Logger.tlb"

If the code was changed to the following then the error disappeared:

#import "..\tlb\Common.tlb" no_registry
#import "..\tlb\Logger.tlb" no_registry

Unfortunately this only worked fine with the Microsoft compiler, with the Intel compiler we got an error C1108. For now this small import project can just be switched to MS compiler only, but it would seem that the reason for the error below is because when switching to the Intel compiler it adds ‘$(MSBuild_ExecutablePath)’ to the Exclude Directories, of which it includes ‘C:\windows\Microsoft.NET\Framework\v4.0.30319\’ which is where TLBREF.dll lives.

c:\program files (x86)\microsoft visual studio 14.0\vc\include\comdef.h: : error C1108: unable to find DLL: ‘TLBREF.dll’