Vesta Rules
There are a few rules necessary to obtain the desired system behavior. First, the Vesta has to determine if there is greenhouse (GH) demand, and whether that demand includes a low-temperature zone. The two ‘state variables’ (GH Low Demand and GH Demand) are set:

Set ~GH Low Demand to TRUE if GH Office Tstat is true

Set ~GH Low Demand to TRUE if Slab Heat Demand is true

Set ~GH Low Demand to TRUE if Mech Room Tstat is true

Set ~GH Demand to TRUE if ~GH Low Demand is true

Set ~GH Demand to TRUE if Bench Heat Demand is true
The greenhouse target temperature is set to 120 unless the bench is the only demand - then, it’s set to 150.

Set Greenhouse Target to 120.0 if ~GH Demand is true

Set Greenhouse Target to 150.0 if Bench Heat Demand is true and ~GH Low Demand is not true
Finally, a PID rule is used to modulate P15 to hold the Glycol supply temperature at the desired target temperature any time there’s greenhouse demand:

Control P15 GH HX Pump to make GH Glycol Hot Supply close to Greenhouse Target when ~GH Demand is true