feat: Moves ansible stuff into .ansible, adds setup to Makefile to link relevant files
This commit is contained in:
5
.ansible/ansible.cfg
Normal file
5
.ansible/ansible.cfg
Normal file
@@ -0,0 +1,5 @@
|
||||
[defaults]
|
||||
inventory=./inventory.ini
|
||||
roles_path=./roles
|
||||
stdout_callback=yaml
|
||||
interpreter_python=auto_silent
|
||||
47
.ansible/build/Definitions.md
Normal file
47
.ansible/build/Definitions.md
Normal file
@@ -0,0 +1,47 @@
|
||||
# Definitions
|
||||
|
||||
<!-- NOTE: Keep these at the very bottom, if any new definitions are added then
|
||||
they should also be added as links to the content section near the top. -->
|
||||
|
||||
### CFM50 {#cfm50-definition}
|
||||
|
||||
Is a unit of measurement that is taken when a blower door test is performed on the home. Stands for
|
||||
$C$ubic $F$eet per $M$inute at 50 pascals.
|
||||
|
||||
### IAQ {#iaq-definition}
|
||||
|
||||
Stands for $I$ndoor $A$ir $Q$uality. We spend most of our time indoors, so having good indoor air
|
||||
quality can help reduce illness and potentially improve the quality and longevity of life.
|
||||
|
||||
### LAIR {#lair-definition}
|
||||
|
||||
Stands for $L$eakage $A$ir $I$nfiltration $R$ate, which is a metric that compares the square footage
|
||||
of the home and it's blower door number. This aids in determining if a home is controllable by
|
||||
properly sized HVAC equipment or if [shell] improvements (air sealing and insulation) should be
|
||||
considered.
|
||||
|
||||
### Load Caclulation {#load-calculation-definition}
|
||||
|
||||
A load calculation, also called a Manual-J, calculates the heating and cooling requirements for a
|
||||
home. Each home has a unique heating and cooling load based on the direction it faces, the air
|
||||
leakage, the location, the insulation values, the types and sizes of windows, among other factors.
|
||||
|
||||
### Shell {#shell-definition}
|
||||
|
||||
Shell is a term used to describe the enclosure of the house. It is often used when talking about air
|
||||
leakage and insulation levels.
|
||||
|
||||
### SHR {#shr-definition}
|
||||
|
||||
Stands for $S$ensible $H$eat $R$atio. Sensible heat ratio is the ratio of work required by the air
|
||||
conditioner to remove moisture, as well as maintain the sensible temperature. The higher the number
|
||||
the better.
|
||||
|
||||
### TESP {#tesp-definition}
|
||||
|
||||
Stands for $T$otal $E$xternal $S$tatic $P$ressure, which is a metric used to determine how much
|
||||
resistance the blower motor has to overcome for the airflow requirement of the system.
|
||||
|
||||
### WC {#wc-definition}
|
||||
|
||||
Stands for $W$ater $C$olumn, which is a unit of measurement for pressure.
|
||||
307
.ansible/build/Report.md
Normal file
307
.ansible/build/Report.md
Normal file
@@ -0,0 +1,307 @@
|
||||
---
|
||||
title: "Home Performance Report"
|
||||
author: "Testy McTestface Jr Vault"
|
||||
date: \today{}
|
||||
mainfont: Avenir Next
|
||||
documentclass: article
|
||||
fontsize: 12pt
|
||||
# NOTE: The applegreen is a custom color defined in resources/head.tex
|
||||
linkcolor: applegreen
|
||||
urlcolor: applegreen
|
||||
abstract: |
|
||||
**Prepared For:**
|
||||
|
||||
Testy McTestface Sr
|
||||
|
||||
1234 Seasme Street Vault
|
||||
No Mans Land, Foo 55555
|
||||
|
||||
```{=latex}
|
||||
\begin{center}
|
||||
```
|
||||
<!-- below are just forced line breaks -->
|
||||
\
|
||||
\
|
||||
\
|
||||
|
||||
[{ width=30% }](https://example.com)
|
||||
|
||||
```{=latex}
|
||||
\end{center}
|
||||
```
|
||||
---
|
||||
|
||||
<!-- NOTE: Table of contents section only needs changed if new sections are
|
||||
added.
|
||||
-->
|
||||
|
||||
# Contents
|
||||
|
||||
1. [Introduction](#home-performance-report)
|
||||
1. [Your Goals](#your-goals)
|
||||
1. [Leakage](#how-leaky-is-your-house)
|
||||
1. [Observations](#observations)
|
||||
1. [HVAC](#hvac-observations)
|
||||
1. [Home](#home-observations)
|
||||
1. [Load Calculations](#load-calculations)
|
||||
1. [Your Loads](#your-loads)
|
||||
1. [Airflow Assessment](#airflow-assessment)
|
||||
1. [Your Static Measurements](#your-static-measurements)
|
||||
1. [Static Pressure Forecast](#static-measurements-forecast)
|
||||
1. [Summary](#summary)
|
||||
1. [Definitions](#definitions)
|
||||
1. [CFM50]
|
||||
1. [IAQ]
|
||||
1. [LAIR]
|
||||
1. [Load Calculation][load-calculation]
|
||||
1. [Shell][shell]
|
||||
1. [SHR]
|
||||
1. [TESP]
|
||||
1. [WC][wc]
|
||||
|
||||
# Home Performance Report
|
||||
|
||||
Thank you for having us to your home for a home performance assessment. I hope that it was
|
||||
beneficial. We learned a lot about your home and your goals during the brief visit. So, let’s jump
|
||||
in to some of the things discovered.
|
||||
|
||||
Below is a summary of your goals, house measurements, and our budget discussion as well as my
|
||||
observations and some recommendations. As part of the service we ran load calculations that help
|
||||
determine the right sized HVAC for your home as it stand and with some upgrades. Those are attached
|
||||
as are bids for replacements.
|
||||
|
||||
Once you read the report you’ll have 3 options: do nothing, pick and choose upgrades, or do more
|
||||
planning for more difficult goals or complex projects. These options are discussed at the end of the
|
||||
report as well as our leanings for your home.
|
||||
|
||||
\goalsimage
|
||||
|
||||
## Your goals:
|
||||
|
||||
<!-- NOTE: This should probably be a table in most cases, with a rank.-->
|
||||
|
||||
<!--
|
||||
| Goal | Rank |
|
||||
| ------ | ---- |
|
||||
| A goal | 8 |
|
||||
| B goal | 5 |
|
||||
-->
|
||||
<!-- WARNING: Add goals here -->
|
||||
|
||||
1. Add air conditioning.
|
||||
|
||||
# How Leaky Is Your House
|
||||
|
||||
<!-- NOTE: Several of the variables used in this section are defined in vars.sh
|
||||
Do not change them here, instead update them in the vars.sh file.
|
||||
-->
|
||||
|
||||
One of the main objectives was to perform a blower door test and load calculations for the home. We
|
||||
discovered that the blower door number was 3,000 [CFM50] for the approximately
|
||||
3,000 \squarefoot (1:1 [LAIR]). A leaky home, most often, is an
|
||||
uncomfortable and uncontrollable home.
|
||||
|
||||
> _Air leakage tends to have one of the largest impacts on the load of a home._
|
||||
>
|
||||
> - _Around 1:1 homes begin to be more controllable / comfortable_
|
||||
> - _your home is 3,000:3,000 \squarefoot for a ratio of
|
||||
> 1:1_
|
||||
> - _Leaky homes are very difficult to maintain comfort with HVAC alone._
|
||||
|
||||
# Observations
|
||||
|
||||
The below sections are observations about the current HVAC system and the home.
|
||||
|
||||
## HVAC Observations
|
||||
|
||||
<!-- WARNING: Add HVAC observations here. -->
|
||||
|
||||
1. Current furnace is sized appropriately based on the load of the home.
|
||||
1. Current duct system is not sized adequately for the system.
|
||||
1. Filter is too small for the system.
|
||||
1. Return sizing is not adequate.
|
||||
1. Supply sizing is marginal.
|
||||
1. Current static pressure is already high.
|
||||
1. These problems may become worse when AC is installed.
|
||||
|
||||
## Home Observations
|
||||
|
||||
<!-- WARNING: Add house observations here. -->
|
||||
|
||||
1. The house leakage is high for the size of the home.
|
||||
1. May be hard to control comfort without [shell] improvements.
|
||||
|
||||
# Load Calculations
|
||||
|
||||
Several [load-calculations][load-calculation] were performed on your home to determine the proper
|
||||
equipment sizing for this application. Below is a comparison of the
|
||||
[load-calculations][load-calculation] with the current air leakage and several improved air leakage
|
||||
targets.
|
||||
|
||||
## Your Loads
|
||||
|
||||
<!-- WARNING: Add the project loads here. -->
|
||||
|
||||
| [CFM50] | | Heating Total | Cooling Total | [SHR] | [LAIR] |
|
||||
| -------------------- | ----------- | ------------- | ------------- | -------- | ------------------- |
|
||||
| **3,000** | **Current** | **55,102** | **20,726** | **0.79** | **1:1** |
|
||||
| 2,000 | | 40,320 | 17,279 | 0.85 | 1.5:1 |
|
||||
| 1,350 | | 35,885 | 16,245 | 0.88 | 1:1 |
|
||||
|
||||
> **Note:**
|
||||
>
|
||||
> 1. _The lower the heating and cooling total's the better._
|
||||
> 1. _An undersized air conditioner is better than an oversized one._
|
||||
> 1. _Supplemental dehumidification may be required for [SHR]'s below 0.83._
|
||||
|
||||
The above table shows the relationship between air leakage and the amount of heating and cooling
|
||||
that is required for the home. A tight home is easier to control the comfort levels, offers superior
|
||||
IAQ levels, and lower utility costs.
|
||||
|
||||
<!-- WARNING: Update this summary for the given project -->
|
||||
|
||||
The projected cooling size required for your home is around 2-Tons for the current leakage rate, or
|
||||
1.5-Tons if [shell] improvements were made.
|
||||
|
||||
[Here is a link to your load calculation reports][loads-folder]
|
||||
|
||||
# Airflow Assessment
|
||||
|
||||
While on site, we also measured the total system airflow and static pressure of the system. Static
|
||||
pressure is equivalent to the blood pressure of your system and gives us a better understanding of
|
||||
the overall ability for the system to provide the proper amount of airflow, as well as how much it
|
||||
may struggle to do so.
|
||||
|
||||
Static pressure is the amount of resistance that the blower has to work against in order to move air
|
||||
through the system. Things that have an effect on the static pressure of the system include, air
|
||||
filters (size and type), duct sizes, amount of ducts, length of ducts, duct fittings and
|
||||
transitions, as well as internal system components. Each component of the system has a resistance
|
||||
associated with it that the blower has to overcome, by taking some key measurements we are able to
|
||||
determine the [TESP] of the system. While there are several static pressures in the system, when we
|
||||
talk about static pressure we are generally referring to [TESP].
|
||||
|
||||
Static pressure ([TESP]) has a range of _low_, _acceptable_, or _high_. While these numbers are
|
||||
specific to the actual equipment, most manufacturers follow similar standards. For the sake of
|
||||
simplicity, 0.5" [wc] or under is an _acceptable_ target, 0.8" [wc] is generally the max acceptable
|
||||
static pressure (although we like to stay well below this if possible), and above 0.8" [wc] is
|
||||
considered _high_ and should be addressed. _Low_ is generally not common and is rarely problematic,
|
||||
so it is not focused on much.
|
||||
|
||||
<!-- NOTE: Force a new page here, for images and sub-section heading to be on same page -->
|
||||
|
||||
\newpage
|
||||
|
||||
## Your Static Measurements
|
||||
|
||||
![True Flow Report][trueflow-image]{ height=50% }
|
||||
|
||||
<!-- WARNING: Summarize the static measurements here -->
|
||||
|
||||
The above image is a snapshot of the static pressures recorded for your system. This shows that the
|
||||
static pressure of your system is very high (1.114" [wc]). The primary culprits for the high static
|
||||
pressure are that the filter is undersized for the airflow required and the return duct sizing is
|
||||
small.
|
||||
|
||||
These measurements were taken in the heating mode because your system does not currently have air
|
||||
conditioning. Currently the heating airflow is on the low side for what is required for your system
|
||||
(1200 CFM would be ideal). This should be adjusted if possible during the install to get better
|
||||
performance and efficiency out of the system, given that some static pressures can be improved
|
||||
during the project.
|
||||
|
||||
\
|
||||
\
|
||||
|
||||
[Here is a link to the full airflow report.][trueflow-file]
|
||||
|
||||
<!-- NOTE: Force a new page here, for images and sub-section heading to be on same page -->
|
||||
|
||||
\newpage
|
||||
|
||||
## Static Measurements Forecast
|
||||
|
||||
![True Flow Forecast][trueflow-forecast-image]{ height=50% }
|
||||
|
||||
<!-- WARNING: Summarize the forecast results below. -->
|
||||
|
||||
The above image is a snapshot is of a forecast of the static pressures after adding air
|
||||
conditioning. It should be noted that these measurements are based solely on the airflow required
|
||||
for cooling mode, not for heating mode (in other words, heating mode is going to be higher because
|
||||
the airflow requirement is higher).
|
||||
|
||||
This shows that with an upgraded filter we can get the static pressure below the 0.8" [wc] max
|
||||
target while in cooling mode.
|
||||
|
||||
\
|
||||
\
|
||||
|
||||
[Here is a link to the full forecast report.][trueflow-forecast-file]
|
||||
|
||||
# Summary
|
||||
|
||||
The purpose of the home performance assessment is to help find the overlap between the house needs,
|
||||
the goals, and the budget to see if there's a viable project.
|
||||
|
||||
<!-- WARNING: Add summary here -->
|
||||
|
||||
The house is pretty leaky overall. This is due to the age and construction style of the house. This
|
||||
may lead to comfort problems or trouble maintaining comfort in all areas of the house.
|
||||
|
||||
Based on the [load calculations][load-calculation], the previously quoted systems are too large for
|
||||
the current load, so we need to update the proposals to be for 2-Ton systems. This will help with
|
||||
the fact that the static pressure of the system is already really high. The static pressure for
|
||||
heating will likely still be above the 0.8" [wc] max threshold.
|
||||
|
||||
An upgraded air filter is going to be required to help alleviate the blower motor. Another return
|
||||
may be required in the living space to further drop the static pressure, however this could likely
|
||||
be done in the future if desired. I would estimate that adding another return would be in the
|
||||
**$800-1,200** range.
|
||||
|
||||
While on site it was mentioned that you would like some of the ducts to be sealed that go to the
|
||||
second floor. This is something that is not included in our general proposals. I would estimate this
|
||||
to be an additional **$150-300** and will add options in the updated proposals.
|
||||
|
||||
Since the goal is to add air conditioning, then I would recommend going with a 2-Ton system. If the
|
||||
system does not maintain then you could look into [shell] improvements and air sealing the home.
|
||||
|
||||
Regards,
|
||||
|
||||
\
|
||||
\
|
||||
\
|
||||
|
||||
[Here is a link to all the documents][document-folder]
|
||||
|
||||
<!-- prettier-ignore-start -->
|
||||
|
||||
<!-- NOTE: These are reference links for short form linking in the document.
|
||||
This allows all the links to be changed / updated in one place.
|
||||
However most do not need updated unless sections are added, besides the
|
||||
document links, which are defined / setup in vars.sh.
|
||||
-->
|
||||
|
||||
[CFM50]: #cfm50-definition "CFM50"
|
||||
[IAQ]: #iaq-definition "IAQ"
|
||||
[LAIR]: #lair-definition "LAIR"
|
||||
[load-calculation]: #load-calculation-definition "load calculation"
|
||||
[shell]: #shell-definition "shell"
|
||||
[SHR]: #shr-definition "SHR"
|
||||
[wc]: #wc-definition "wc"
|
||||
[TESP]: #tesp-definition "TESP"
|
||||
|
||||
|
||||
<!-- IMPORTANT: Take screen shots of the TrueFlow reports and add to the img
|
||||
folder with names / path setup in vars.sh -->
|
||||
|
||||
<!-- default is img/trueflow.png -->
|
||||
[trueflow-image]: "img/trueflow.png"
|
||||
|
||||
<!-- default is img/forecast.png -->
|
||||
[trueflow-forecast-image]: "img/forecast.png"
|
||||
|
||||
<!-- NOTE: These links are defined in vars.sh -->
|
||||
|
||||
[loads-folder]: "https://example.com/path/to/loads/folder"
|
||||
[trueflow-file]: "https://example.com/path/to/trueflow/file"
|
||||
[trueflow-forecast-file]: "https://example.com/path/to/trueflow/forecast/file"
|
||||
[document-folder]: "https://example.com/path/to/document/folder"
|
||||
<!-- prettier-ignore-end -->
|
||||
26
.ansible/build/footer.tex
Normal file
26
.ansible/build/footer.tex
Normal file
@@ -0,0 +1,26 @@
|
||||
% customize the footer
|
||||
\usepackage{fancyhdr}
|
||||
\pagestyle{fancy}
|
||||
% clear all footers
|
||||
\fancyfoot{}
|
||||
% clear all headers
|
||||
\fancyhead{}
|
||||
|
||||
% change font size on footer.
|
||||
\newcommand{\changefont}{
|
||||
\fontsize{8}{10}\selectfont
|
||||
}
|
||||
% NOTE: What is displayed in the footer of each page.
|
||||
\fancyfoot[LE,LO]{
|
||||
\href{ https://example.com }
|
||||
{\changefont\textbf{
|
||||
www.Example.com
|
||||
}}
|
||||
}
|
||||
\fancyfoot[RE,RO]{\textbf{
|
||||
\changefont{
|
||||
Phone: \href{tel:555-555-5555 }{
|
||||
\color{orange}555-555-5555
|
||||
}
|
||||
}
|
||||
}}
|
||||
74
.ansible/build/head.tex
Normal file
74
.ansible/build/head.tex
Normal file
@@ -0,0 +1,74 @@
|
||||
% https://jdhao.github.io/2019/05/30/markdown2pdf_pandoc/#the-top
|
||||
% These were adapted from the above, which was very helpful in getting this
|
||||
% functional.
|
||||
|
||||
% change style of quote, see also https://tex.stackexchange.com/a/436253/114857
|
||||
\usepackage[most]{tcolorbox}
|
||||
|
||||
% change page margins
|
||||
\usepackage[top=2cm, bottom=1.5cm, left=2cm, right=2cm]{geometry}
|
||||
|
||||
% change the line spacing
|
||||
\usepackage{setspace}
|
||||
\setstretch{1.25}
|
||||
|
||||
\usepackage[utf8]{inputenc}
|
||||
|
||||
% NOTE: This needs to stay above hyperref otherwise internal links break.
|
||||
|
||||
% start each section on new page and make section titles orange.
|
||||
\usepackage{titlesec}
|
||||
\titleformat{\section}
|
||||
{\color{orange}\normalfont\Huge\bfseries}
|
||||
\newcommand{\sectionbreak}{\clearpage}
|
||||
|
||||
% custom colors
|
||||
\definecolor{applegreen}{rgb}{0.55,0.71,0.0}
|
||||
|
||||
% Remove figure from images
|
||||
\usepackage[labelformat=empty]{caption}
|
||||
|
||||
\usepackage{fancyvrb,newverbs}
|
||||
|
||||
% see for different color codes https://rgbcolorcode.com/color/E6FFEA
|
||||
\definecolor{linequote}{RGB}{224,215,188}
|
||||
\definecolor{backquote}{RGB}{230,255,234} % background color of quotes
|
||||
\definecolor{bordercolor}{RGB}{221,221,221}
|
||||
|
||||
% change left border: https://tex.stackexchange.com/a/475716/114857
|
||||
% change left margin: https://tex.stackexchange.com/a/457936/114857
|
||||
\newtcolorbox{myquote}[1][]{%
|
||||
enhanced,
|
||||
breakable,
|
||||
size=minimal,
|
||||
left=10pt,
|
||||
top=5pt,
|
||||
bottom=5pt,
|
||||
frame hidden,
|
||||
boxrule=0pt,
|
||||
sharp corners=all,
|
||||
colback=backquote,
|
||||
borderline west={4pt}{0pt}{bordercolor},
|
||||
#1
|
||||
}
|
||||
|
||||
% redefine quote environment to use the myquote environment, see https://tex.stackexchange.com/a/337587/114857
|
||||
\renewenvironment{quote}{\begin{myquote}}{\end{myquote}}
|
||||
|
||||
% remove the abstract title.
|
||||
\usepackage{abstract}
|
||||
\renewcommand{\abstractname}{}
|
||||
\renewcommand{\absnamepos}{empty}
|
||||
|
||||
\def\squarefoot{$ft^{\text{2}}$ }
|
||||
\def\goalsimage{
|
||||
\begin{center}
|
||||
|
||||
\hfill\break
|
||||
\hfill\break
|
||||
|
||||
\includegraphics[width=0.6\linewidth,height=\textheight,keepaspectratio]{img/goals.png}
|
||||
|
||||
\end{center}
|
||||
|
||||
}
|
||||
1
.ansible/group_vars/all/all
Symbolic link
1
.ansible/group_vars/all/all
Symbolic link
@@ -0,0 +1 @@
|
||||
.ansible/group_vars/all
|
||||
33
.ansible/group_vars/all/vars.yaml
Normal file
33
.ansible/group_vars/all/vars.yaml
Normal file
@@ -0,0 +1,33 @@
|
||||
---
|
||||
author_name: "Testy McTestface Jr"
|
||||
document_title: "Home Performance Report"
|
||||
company:
|
||||
website: "https://example.com"
|
||||
phone: "555-555-5555"
|
||||
url_display_title: "www.Example.com"
|
||||
|
||||
links:
|
||||
images:
|
||||
logo: "img/logo.png"
|
||||
trueflow: "img/trueflow.png"
|
||||
trueflow_forecast: "img/forecast.png"
|
||||
documents:
|
||||
loads_folder: "https://example.com/path/to/loads/folder"
|
||||
trueflow_file: "https://example.com/path/to/trueflow/file"
|
||||
trueflow_forecast_file: "https://example.com/path/to/trueflow/forecast/file"
|
||||
document_folder: "https://example.com/path/to/document/folder"
|
||||
|
||||
customer:
|
||||
name: "Testy McTestface Sr"
|
||||
address:
|
||||
street: "1234 Seasme Street"
|
||||
city: "No Mans Land"
|
||||
state: "Foo"
|
||||
zip: "55555"
|
||||
|
||||
home:
|
||||
square_feet: "3,000"
|
||||
cfm50: "3,000"
|
||||
lair: "1:1"
|
||||
|
||||
build_dir: "build"
|
||||
19
.ansible/group_vars/vault_example/vars.yaml
Normal file
19
.ansible/group_vars/vault_example/vars.yaml
Normal file
@@ -0,0 +1,19 @@
|
||||
---
|
||||
author_name: "{{ vault_author_name }}"
|
||||
document_title: "Home Performance Report"
|
||||
company: "{{ vault_company }}"
|
||||
links:
|
||||
images:
|
||||
logo: "img/logo.png"
|
||||
trueflow: "img/trueflow.png"
|
||||
trueflow_forecast: "img/forecast.png"
|
||||
documents: "{{ vault_document_links }}"
|
||||
|
||||
customer: "{{ vault_customer }}"
|
||||
|
||||
home:
|
||||
square_feet: "3,000"
|
||||
cfm50: "3,000"
|
||||
lair: "1:1"
|
||||
|
||||
build_dir: "build"
|
||||
35
.ansible/group_vars/vault_example/vault.yaml
Normal file
35
.ansible/group_vars/vault_example/vault.yaml
Normal file
@@ -0,0 +1,35 @@
|
||||
$ANSIBLE_VAULT;1.1;AES256
|
||||
37616334353636316232656136313764353534613834383266646665396364393233343464306632
|
||||
3834666636616134356661626238323731616438366539630a616565613030376235306233356266
|
||||
34323930656134363964666130613434313262313461373735656434333634333238343430353331
|
||||
3732373966383635310a303665663732343561303239356634393162306666323836643765313638
|
||||
38363130366534353164376333313435336362313438643166346236623537616438383437643965
|
||||
36343833393237336239633433326535616562316561666539343362636564633262303337383631
|
||||
62336331663032333039643033626634663636643762373539623262326462323762666435646362
|
||||
37633538346530646362383464363732663164303937313635363833366639623662323263633431
|
||||
39653434386263353834373239353236636538623632663061323431303937643761373364663835
|
||||
34303030383536383833363639623661363531643734303265386532326439346463376436613033
|
||||
66396536323865623832633663643936623531663734646630373966393562643439343631363365
|
||||
34303833303935313334663831616435343130376536666631643231373333656363386566363865
|
||||
62303062306565363535663261623361646464383166366233396233663838363136663461663630
|
||||
39316234653834393739386564663866613765323333393932616133613231333664373839643364
|
||||
34386335363065336632376135336132633331306435383861303261386564346136323562346432
|
||||
33343132636239396231653832313431623539616434353163333637653738656436646135633666
|
||||
36353266343932666538373137623162316566353437653066346338613732346662313433326261
|
||||
32343164613165383065333738633338653763366534303930656361393031353736643233366631
|
||||
65313931613833633037663631393861663134663239303033323135356130623062333634643331
|
||||
39613761613332613231616437303835333961646235386232306235613664336533666663613834
|
||||
62353237643461316563626538333936333261623039303663613230643962643139353734656630
|
||||
33636136303732376432363862363534646631303566666331373435643532653931376263376665
|
||||
38333037643730613637363832663838383231373765613531316664373334643232326365336531
|
||||
35656433313461633939383661323464373933623963653438323366343661656138653135636235
|
||||
63646135646561663863353236353939636531666166363866656230383931343937343834633263
|
||||
61313338616263616636633232633464643530313763323064343838643036316135353366373933
|
||||
64343235343435313664383630613639633233383766386265383264386133303063396339353731
|
||||
33373631336265303561633663656433643837346438353131383565333062383238633264646532
|
||||
31313931656533313031313032663035356438326365643262313734323661396465393138633564
|
||||
62383166313334376639343265366136396230643236303635303638313833333836636330663262
|
||||
63623434313838376366303763303961373733396163613365376236363233313438393637343064
|
||||
32623233633963623830356331383462666438656132303938386437323332366634656236383664
|
||||
38626539346339663533373062363531393263613636636237616263316537376438653339623435
|
||||
6238656639353432653566353865386562643830333831656336
|
||||
2
.ansible/inventory.ini
Normal file
2
.ansible/inventory.ini
Normal file
@@ -0,0 +1,2 @@
|
||||
[local]
|
||||
127.0.0.1 ansible_connection=local
|
||||
7
.ansible/playbook.yaml
Normal file
7
.ansible/playbook.yaml
Normal file
@@ -0,0 +1,7 @@
|
||||
---
|
||||
- name: Generate Report.
|
||||
hosts: all
|
||||
|
||||
roles:
|
||||
- role: report
|
||||
tag: report
|
||||
33
.ansible/roles/report/defaults/main.yaml
Normal file
33
.ansible/roles/report/defaults/main.yaml
Normal file
@@ -0,0 +1,33 @@
|
||||
---
|
||||
author_name: "Testy McTestface Jr"
|
||||
document_title: "Home Performance Report"
|
||||
company:
|
||||
website: "https://example.com"
|
||||
phone: "555-555-5555"
|
||||
url_display_title: "www.Example.com"
|
||||
|
||||
links:
|
||||
images:
|
||||
logo: "img/logo.png"
|
||||
trueflow: "img/trueflow.png"
|
||||
trueflow_forecast: "img/forecast.png"
|
||||
documents:
|
||||
loads_folder: "https://example.com/path/to/loads/folder"
|
||||
trueflow_file: "https://example.com/path/to/trueflow/file"
|
||||
trueflow_forecast_file: "https://example.com/path/to/trueflow/forecast/file"
|
||||
document_folder: "https://example.com/path/to/document/folder"
|
||||
|
||||
customer:
|
||||
name: "Testy McTestface Sr"
|
||||
address:
|
||||
street: "1234 Seasme Street"
|
||||
city: "No Mans Land"
|
||||
state: "Foo"
|
||||
zip: "55555"
|
||||
|
||||
home:
|
||||
square_feet: "3,000"
|
||||
cfm50: "3,000"
|
||||
lair: "1:1"
|
||||
|
||||
build_dir: "build"
|
||||
47
.ansible/roles/report/files/Definitions.md
Normal file
47
.ansible/roles/report/files/Definitions.md
Normal file
@@ -0,0 +1,47 @@
|
||||
# Definitions
|
||||
|
||||
<!-- NOTE: Keep these at the very bottom, if any new definitions are added then
|
||||
they should also be added as links to the content section near the top. -->
|
||||
|
||||
### CFM50 {#cfm50-definition}
|
||||
|
||||
Is a unit of measurement that is taken when a blower door test is performed on the home. Stands for
|
||||
$C$ubic $F$eet per $M$inute at 50 pascals.
|
||||
|
||||
### IAQ {#iaq-definition}
|
||||
|
||||
Stands for $I$ndoor $A$ir $Q$uality. We spend most of our time indoors, so having good indoor air
|
||||
quality can help reduce illness and potentially improve the quality and longevity of life.
|
||||
|
||||
### LAIR {#lair-definition}
|
||||
|
||||
Stands for $L$eakage $A$ir $I$nfiltration $R$ate, which is a metric that compares the square footage
|
||||
of the home and it's blower door number. This aids in determining if a home is controllable by
|
||||
properly sized HVAC equipment or if [shell] improvements (air sealing and insulation) should be
|
||||
considered.
|
||||
|
||||
### Load Caclulation {#load-calculation-definition}
|
||||
|
||||
A load calculation, also called a Manual-J, calculates the heating and cooling requirements for a
|
||||
home. Each home has a unique heating and cooling load based on the direction it faces, the air
|
||||
leakage, the location, the insulation values, the types and sizes of windows, among other factors.
|
||||
|
||||
### Shell {#shell-definition}
|
||||
|
||||
Shell is a term used to describe the enclosure of the house. It is often used when talking about air
|
||||
leakage and insulation levels.
|
||||
|
||||
### SHR {#shr-definition}
|
||||
|
||||
Stands for $S$ensible $H$eat $R$atio. Sensible heat ratio is the ratio of work required by the air
|
||||
conditioner to remove moisture, as well as maintain the sensible temperature. The higher the number
|
||||
the better.
|
||||
|
||||
### TESP {#tesp-definition}
|
||||
|
||||
Stands for $T$otal $E$xternal $S$tatic $P$ressure, which is a metric used to determine how much
|
||||
resistance the blower motor has to overcome for the airflow requirement of the system.
|
||||
|
||||
### WC {#wc-definition}
|
||||
|
||||
Stands for $W$ater $C$olumn, which is a unit of measurement for pressure.
|
||||
74
.ansible/roles/report/files/head.tex
Normal file
74
.ansible/roles/report/files/head.tex
Normal file
@@ -0,0 +1,74 @@
|
||||
% https://jdhao.github.io/2019/05/30/markdown2pdf_pandoc/#the-top
|
||||
% These were adapted from the above, which was very helpful in getting this
|
||||
% functional.
|
||||
|
||||
% change style of quote, see also https://tex.stackexchange.com/a/436253/114857
|
||||
\usepackage[most]{tcolorbox}
|
||||
|
||||
% change page margins
|
||||
\usepackage[top=2cm, bottom=1.5cm, left=2cm, right=2cm]{geometry}
|
||||
|
||||
% change the line spacing
|
||||
\usepackage{setspace}
|
||||
\setstretch{1.25}
|
||||
|
||||
\usepackage[utf8]{inputenc}
|
||||
|
||||
% NOTE: This needs to stay above hyperref otherwise internal links break.
|
||||
|
||||
% start each section on new page and make section titles orange.
|
||||
\usepackage{titlesec}
|
||||
\titleformat{\section}
|
||||
{\color{orange}\normalfont\Huge\bfseries}
|
||||
\newcommand{\sectionbreak}{\clearpage}
|
||||
|
||||
% custom colors
|
||||
\definecolor{applegreen}{rgb}{0.55,0.71,0.0}
|
||||
|
||||
% Remove figure from images
|
||||
\usepackage[labelformat=empty]{caption}
|
||||
|
||||
\usepackage{fancyvrb,newverbs}
|
||||
|
||||
% see for different color codes https://rgbcolorcode.com/color/E6FFEA
|
||||
\definecolor{linequote}{RGB}{224,215,188}
|
||||
\definecolor{backquote}{RGB}{230,255,234} % background color of quotes
|
||||
\definecolor{bordercolor}{RGB}{221,221,221}
|
||||
|
||||
% change left border: https://tex.stackexchange.com/a/475716/114857
|
||||
% change left margin: https://tex.stackexchange.com/a/457936/114857
|
||||
\newtcolorbox{myquote}[1][]{%
|
||||
enhanced,
|
||||
breakable,
|
||||
size=minimal,
|
||||
left=10pt,
|
||||
top=5pt,
|
||||
bottom=5pt,
|
||||
frame hidden,
|
||||
boxrule=0pt,
|
||||
sharp corners=all,
|
||||
colback=backquote,
|
||||
borderline west={4pt}{0pt}{bordercolor},
|
||||
#1
|
||||
}
|
||||
|
||||
% redefine quote environment to use the myquote environment, see https://tex.stackexchange.com/a/337587/114857
|
||||
\renewenvironment{quote}{\begin{myquote}}{\end{myquote}}
|
||||
|
||||
% remove the abstract title.
|
||||
\usepackage{abstract}
|
||||
\renewcommand{\abstractname}{}
|
||||
\renewcommand{\absnamepos}{empty}
|
||||
|
||||
\def\squarefoot{$ft^{\text{2}}$ }
|
||||
\def\goalsimage{
|
||||
\begin{center}
|
||||
|
||||
\hfill\break
|
||||
\hfill\break
|
||||
|
||||
\includegraphics[width=0.6\linewidth,height=\textheight,keepaspectratio]{img/goals.png}
|
||||
|
||||
\end{center}
|
||||
|
||||
}
|
||||
36
.ansible/roles/report/tasks/main.yaml
Normal file
36
.ansible/roles/report/tasks/main.yaml
Normal file
@@ -0,0 +1,36 @@
|
||||
---
|
||||
|
||||
- name: Ensure output directory exists.
|
||||
ansible.builtin.file:
|
||||
path: "{{ build_dir }}"
|
||||
state: "directory"
|
||||
mode: '0755'
|
||||
|
||||
- name: Copy Files.
|
||||
ansible.builtin.copy:
|
||||
src: "files/{{ item }}"
|
||||
dest: "{{ build_dir }}/{{ item }}"
|
||||
mode: '0600'
|
||||
with_items:
|
||||
- "Definitions.md"
|
||||
- "head.tex"
|
||||
|
||||
- name: Generate Footer File
|
||||
ansible.builtin.template:
|
||||
src: "templates/{{ item }}"
|
||||
dest: "{{ build_dir }}/footer.tex"
|
||||
mode: '0600'
|
||||
with_items:
|
||||
- "footer.tex"
|
||||
tags:
|
||||
- footer
|
||||
|
||||
- name: Generate Templated Report File
|
||||
ansible.builtin.template:
|
||||
src: "templates/{{ item }}"
|
||||
dest: "{{ build_dir }}/Report.md"
|
||||
mode: '0600'
|
||||
with_items:
|
||||
- "Report.md"
|
||||
tags:
|
||||
- report
|
||||
307
.ansible/roles/report/templates/Report.md
Normal file
307
.ansible/roles/report/templates/Report.md
Normal file
@@ -0,0 +1,307 @@
|
||||
---
|
||||
title: "{{ document_title }}"
|
||||
author: "{{ author_name }}"
|
||||
date: \today{}
|
||||
mainfont: Avenir Next
|
||||
documentclass: article
|
||||
fontsize: 12pt
|
||||
# NOTE: The applegreen is a custom color defined in resources/head.tex
|
||||
linkcolor: applegreen
|
||||
urlcolor: applegreen
|
||||
abstract: |
|
||||
**Prepared For:**
|
||||
|
||||
{{ customer.name }}
|
||||
|
||||
{{ customer.address.street }}
|
||||
{{ customer.address.city }}, {{ customer.address.state }} {{ customer.address.zip }}
|
||||
|
||||
```{=latex}
|
||||
\begin{center}
|
||||
```
|
||||
<!-- below are just forced line breaks -->
|
||||
\
|
||||
\
|
||||
\
|
||||
|
||||
[{ width=30% }]({{ company.website }})
|
||||
|
||||
```{=latex}
|
||||
\end{center}
|
||||
```
|
||||
---
|
||||
|
||||
<!-- NOTE: Table of contents section only needs changed if new sections are
|
||||
added.
|
||||
-->
|
||||
|
||||
# Contents
|
||||
|
||||
1. [Introduction](#home-performance-report)
|
||||
1. [Your Goals](#your-goals)
|
||||
1. [Leakage](#how-leaky-is-your-house)
|
||||
1. [Observations](#observations)
|
||||
1. [HVAC](#hvac-observations)
|
||||
1. [Home](#home-observations)
|
||||
1. [Load Calculations](#load-calculations)
|
||||
1. [Your Loads](#your-loads)
|
||||
1. [Airflow Assessment](#airflow-assessment)
|
||||
1. [Your Static Measurements](#your-static-measurements)
|
||||
1. [Static Pressure Forecast](#static-measurements-forecast)
|
||||
1. [Summary](#summary)
|
||||
1. [Definitions](#definitions)
|
||||
1. [CFM50]
|
||||
1. [IAQ]
|
||||
1. [LAIR]
|
||||
1. [Load Calculation][load-calculation]
|
||||
1. [Shell][shell]
|
||||
1. [SHR]
|
||||
1. [TESP]
|
||||
1. [WC][wc]
|
||||
|
||||
# Home Performance Report
|
||||
|
||||
Thank you for having us to your home for a home performance assessment. I hope that it was
|
||||
beneficial. We learned a lot about your home and your goals during the brief visit. So, let’s jump
|
||||
in to some of the things discovered.
|
||||
|
||||
Below is a summary of your goals, house measurements, and our budget discussion as well as my
|
||||
observations and some recommendations. As part of the service we ran load calculations that help
|
||||
determine the right sized HVAC for your home as it stand and with some upgrades. Those are attached
|
||||
as are bids for replacements.
|
||||
|
||||
Once you read the report you’ll have 3 options: do nothing, pick and choose upgrades, or do more
|
||||
planning for more difficult goals or complex projects. These options are discussed at the end of the
|
||||
report as well as our leanings for your home.
|
||||
|
||||
\goalsimage
|
||||
|
||||
## Your goals:
|
||||
|
||||
<!-- NOTE: This should probably be a table in most cases, with a rank.-->
|
||||
|
||||
<!--
|
||||
| Goal | Rank |
|
||||
| ------ | ---- |
|
||||
| A goal | 8 |
|
||||
| B goal | 5 |
|
||||
-->
|
||||
<!-- WARNING: Add goals here -->
|
||||
|
||||
1. Add air conditioning.
|
||||
|
||||
# How Leaky Is Your House
|
||||
|
||||
<!-- NOTE: Several of the variables used in this section are defined in vars.sh
|
||||
Do not change them here, instead update them in the vars.sh file.
|
||||
-->
|
||||
|
||||
One of the main objectives was to perform a blower door test and load calculations for the home. We
|
||||
discovered that the blower door number was {{ home.cfm50 }} [CFM50] for the approximately
|
||||
{{ home.square_feet }} \squarefoot ({{ home.lair }} [LAIR]). A leaky home, most often, is an
|
||||
uncomfortable and uncontrollable home.
|
||||
|
||||
> _Air leakage tends to have one of the largest impacts on the load of a home._
|
||||
>
|
||||
> - _Around 1:1 homes begin to be more controllable / comfortable_
|
||||
> - _your home is {{ home.cfm50 }}:{{ home.square_feet }} \squarefoot for a ratio of
|
||||
> {{ home.lair }}_
|
||||
> - _Leaky homes are very difficult to maintain comfort with HVAC alone._
|
||||
|
||||
# Observations
|
||||
|
||||
The below sections are observations about the current HVAC system and the home.
|
||||
|
||||
## HVAC Observations
|
||||
|
||||
<!-- WARNING: Add HVAC observations here. -->
|
||||
|
||||
1. Current furnace is sized appropriately based on the load of the home.
|
||||
1. Current duct system is not sized adequately for the system.
|
||||
1. Filter is too small for the system.
|
||||
1. Return sizing is not adequate.
|
||||
1. Supply sizing is marginal.
|
||||
1. Current static pressure is already high.
|
||||
1. These problems may become worse when AC is installed.
|
||||
|
||||
## Home Observations
|
||||
|
||||
<!-- WARNING: Add house observations here. -->
|
||||
|
||||
1. The house leakage is high for the size of the home.
|
||||
1. May be hard to control comfort without [shell] improvements.
|
||||
|
||||
# Load Calculations
|
||||
|
||||
Several [load-calculations][load-calculation] were performed on your home to determine the proper
|
||||
equipment sizing for this application. Below is a comparison of the
|
||||
[load-calculations][load-calculation] with the current air leakage and several improved air leakage
|
||||
targets.
|
||||
|
||||
## Your Loads
|
||||
|
||||
<!-- WARNING: Add the project loads here. -->
|
||||
|
||||
| [CFM50] | | Heating Total | Cooling Total | [SHR] | [LAIR] |
|
||||
| -------------------- | ----------- | ------------- | ------------- | -------- | ------------------- |
|
||||
| **{{ home.cfm50 }}** | **Current** | **55,102** | **20,726** | **0.79** | **{{ home.lair }}** |
|
||||
| 2,000 | | 40,320 | 17,279 | 0.85 | 1.5:1 |
|
||||
| 1,350 | | 35,885 | 16,245 | 0.88 | 1:1 |
|
||||
|
||||
> **Note:**
|
||||
>
|
||||
> 1. _The lower the heating and cooling total's the better._
|
||||
> 1. _An undersized air conditioner is better than an oversized one._
|
||||
> 1. _Supplemental dehumidification may be required for [SHR]'s below 0.83._
|
||||
|
||||
The above table shows the relationship between air leakage and the amount of heating and cooling
|
||||
that is required for the home. A tight home is easier to control the comfort levels, offers superior
|
||||
IAQ levels, and lower utility costs.
|
||||
|
||||
<!-- WARNING: Update this summary for the given project -->
|
||||
|
||||
The projected cooling size required for your home is around 2-Tons for the current leakage rate, or
|
||||
1.5-Tons if [shell] improvements were made.
|
||||
|
||||
[Here is a link to your load calculation reports][loads-folder]
|
||||
|
||||
# Airflow Assessment
|
||||
|
||||
While on site, we also measured the total system airflow and static pressure of the system. Static
|
||||
pressure is equivalent to the blood pressure of your system and gives us a better understanding of
|
||||
the overall ability for the system to provide the proper amount of airflow, as well as how much it
|
||||
may struggle to do so.
|
||||
|
||||
Static pressure is the amount of resistance that the blower has to work against in order to move air
|
||||
through the system. Things that have an effect on the static pressure of the system include, air
|
||||
filters (size and type), duct sizes, amount of ducts, length of ducts, duct fittings and
|
||||
transitions, as well as internal system components. Each component of the system has a resistance
|
||||
associated with it that the blower has to overcome, by taking some key measurements we are able to
|
||||
determine the [TESP] of the system. While there are several static pressures in the system, when we
|
||||
talk about static pressure we are generally referring to [TESP].
|
||||
|
||||
Static pressure ([TESP]) has a range of _low_, _acceptable_, or _high_. While these numbers are
|
||||
specific to the actual equipment, most manufacturers follow similar standards. For the sake of
|
||||
simplicity, 0.5" [wc] or under is an _acceptable_ target, 0.8" [wc] is generally the max acceptable
|
||||
static pressure (although we like to stay well below this if possible), and above 0.8" [wc] is
|
||||
considered _high_ and should be addressed. _Low_ is generally not common and is rarely problematic,
|
||||
so it is not focused on much.
|
||||
|
||||
<!-- NOTE: Force a new page here, for images and sub-section heading to be on same page -->
|
||||
|
||||
\newpage
|
||||
|
||||
## Your Static Measurements
|
||||
|
||||
![True Flow Report][trueflow-image]{ height=50% }
|
||||
|
||||
<!-- WARNING: Summarize the static measurements here -->
|
||||
|
||||
The above image is a snapshot of the static pressures recorded for your system. This shows that the
|
||||
static pressure of your system is very high (1.114" [wc]). The primary culprits for the high static
|
||||
pressure are that the filter is undersized for the airflow required and the return duct sizing is
|
||||
small.
|
||||
|
||||
These measurements were taken in the heating mode because your system does not currently have air
|
||||
conditioning. Currently the heating airflow is on the low side for what is required for your system
|
||||
(1200 CFM would be ideal). This should be adjusted if possible during the install to get better
|
||||
performance and efficiency out of the system, given that some static pressures can be improved
|
||||
during the project.
|
||||
|
||||
\
|
||||
\
|
||||
|
||||
[Here is a link to the full airflow report.][trueflow-file]
|
||||
|
||||
<!-- NOTE: Force a new page here, for images and sub-section heading to be on same page -->
|
||||
|
||||
\newpage
|
||||
|
||||
## Static Measurements Forecast
|
||||
|
||||
![True Flow Forecast][trueflow-forecast-image]{ height=50% }
|
||||
|
||||
<!-- WARNING: Summarize the forecast results below. -->
|
||||
|
||||
The above image is a snapshot is of a forecast of the static pressures after adding air
|
||||
conditioning. It should be noted that these measurements are based solely on the airflow required
|
||||
for cooling mode, not for heating mode (in other words, heating mode is going to be higher because
|
||||
the airflow requirement is higher).
|
||||
|
||||
This shows that with an upgraded filter we can get the static pressure below the 0.8" [wc] max
|
||||
target while in cooling mode.
|
||||
|
||||
\
|
||||
\
|
||||
|
||||
[Here is a link to the full forecast report.][trueflow-forecast-file]
|
||||
|
||||
# Summary
|
||||
|
||||
The purpose of the home performance assessment is to help find the overlap between the house needs,
|
||||
the goals, and the budget to see if there's a viable project.
|
||||
|
||||
<!-- WARNING: Add summary here -->
|
||||
|
||||
The house is pretty leaky overall. This is due to the age and construction style of the house. This
|
||||
may lead to comfort problems or trouble maintaining comfort in all areas of the house.
|
||||
|
||||
Based on the [load calculations][load-calculation], the previously quoted systems are too large for
|
||||
the current load, so we need to update the proposals to be for 2-Ton systems. This will help with
|
||||
the fact that the static pressure of the system is already really high. The static pressure for
|
||||
heating will likely still be above the 0.8" [wc] max threshold.
|
||||
|
||||
An upgraded air filter is going to be required to help alleviate the blower motor. Another return
|
||||
may be required in the living space to further drop the static pressure, however this could likely
|
||||
be done in the future if desired. I would estimate that adding another return would be in the
|
||||
**$800-1,200** range.
|
||||
|
||||
While on site it was mentioned that you would like some of the ducts to be sealed that go to the
|
||||
second floor. This is something that is not included in our general proposals. I would estimate this
|
||||
to be an additional **$150-300** and will add options in the updated proposals.
|
||||
|
||||
Since the goal is to add air conditioning, then I would recommend going with a 2-Ton system. If the
|
||||
system does not maintain then you could look into [shell] improvements and air sealing the home.
|
||||
|
||||
Regards,
|
||||
|
||||
\
|
||||
\
|
||||
\
|
||||
|
||||
[Here is a link to all the documents][document-folder]
|
||||
|
||||
<!-- prettier-ignore-start -->
|
||||
|
||||
<!-- NOTE: These are reference links for short form linking in the document.
|
||||
This allows all the links to be changed / updated in one place.
|
||||
However most do not need updated unless sections are added, besides the
|
||||
document links, which are defined / setup in vars.sh.
|
||||
-->
|
||||
|
||||
[CFM50]: #cfm50-definition "CFM50"
|
||||
[IAQ]: #iaq-definition "IAQ"
|
||||
[LAIR]: #lair-definition "LAIR"
|
||||
[load-calculation]: #load-calculation-definition "load calculation"
|
||||
[shell]: #shell-definition "shell"
|
||||
[SHR]: #shr-definition "SHR"
|
||||
[wc]: #wc-definition "wc"
|
||||
[TESP]: #tesp-definition "TESP"
|
||||
|
||||
|
||||
<!-- IMPORTANT: Take screen shots of the TrueFlow reports and add to the img
|
||||
folder with names / path setup in vars.sh -->
|
||||
|
||||
<!-- default is img/trueflow.png -->
|
||||
[trueflow-image]: "{{ links.images.trueflow }}"
|
||||
|
||||
<!-- default is img/forecast.png -->
|
||||
[trueflow-forecast-image]: "{{ links.images.trueflow_forecast }}"
|
||||
|
||||
<!-- NOTE: These links are defined in vars.sh -->
|
||||
|
||||
[loads-folder]: "{{ links.documents.loads_folder }}"
|
||||
[trueflow-file]: "{{ links.documents.trueflow_file }}"
|
||||
[trueflow-forecast-file]: "{{ links.documents.trueflow_forecast_file }}"
|
||||
[document-folder]: "{{ links.documents.document_folder }}"
|
||||
<!-- prettier-ignore-end -->
|
||||
26
.ansible/roles/report/templates/footer.tex
Normal file
26
.ansible/roles/report/templates/footer.tex
Normal file
@@ -0,0 +1,26 @@
|
||||
% customize the footer
|
||||
\usepackage{fancyhdr}
|
||||
\pagestyle{fancy}
|
||||
% clear all footers
|
||||
\fancyfoot{}
|
||||
% clear all headers
|
||||
\fancyhead{}
|
||||
|
||||
% change font size on footer.
|
||||
\newcommand{\changefont}{
|
||||
\fontsize{8}{10}\selectfont
|
||||
}
|
||||
% NOTE: What is displayed in the footer of each page.
|
||||
\fancyfoot[LE,LO]{
|
||||
\href{ {{ company.website }} }
|
||||
{\changefont\textbf{
|
||||
{{ company.url_display_title }}
|
||||
}}
|
||||
}
|
||||
\fancyfoot[RE,RO]{\textbf{
|
||||
\changefont{
|
||||
Phone: \href{tel:{{ company.phone }} }{
|
||||
\color{orange}{{ company.phone }}
|
||||
}
|
||||
}
|
||||
}}
|
||||
Reference in New Issue
Block a user