\input texinfo   @c -*-texinfo-*-
@comment %**start of header
@include version.texi
@setfilename remotecontrol.info
@settitle GNU remotecontrol
@comment %**end of header
@copying
This manual is for GNU remotecontrol (version @value{VERSION}, @value{UPDATED}), which is an example in the Texinfo documentation.

Copyright @copyright{} 2013 GNU remotecontrol authors.

@quotation
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, with the Front-Cover Texts being ``A GNU Manual,'' and with the Back-Cover Texts as in (a) below. A copy of the license is included in the section entitled ``GNU Free Documentation License.''

(a) The FSF's Back-Cover Text is: ``You have the freedom to copy and modify this GNU manual. Buying copies from the FSF supports it in developing GNU and promoting software freedom.''
@end quotation
@end copying

@dircategory Interfaces
@direntry
* Remotecontrol: (remotecontrol).  Managing IP-enabled thermostats & HVAC.
@end direntry

@titlepage
@title GNU remotecontrol
@subtitle for version @value{VERSION}, @value{UPDATED}
@author Stephen H. Dawson
@page
@vskip 0pt plus 1filll
@insertcopying
@end titlepage

@c Output the Table of Contents at the beginning.
@contents

@ifnottex
@node Top
@top GNU remotecontrol

This manual is for GNU remotecontrol (version @value{VERSION}, @value{UPDATED}).
@end ifnottex

@menu
* Overview::  An overview of GNU remotecontrol.
* Scope::  The scope of this document. 
* Key Principles::  Key principles of GNU remotecontrol, described.
* GNU remotecontrol & BACnet::  How they work together.
* Tax Benefit::  Tax benefits of using GNU remotecontrol.
* System Architecture and Concepts::  The architecture of the system.
* Usage Instructions::  How to use it.
* Usage Recommendations::  Tips to use it.
* Use Case Scenarios::  How you might want to use it.
* Implementation Cost::  The cost to get started.
* Roadmap::  Where we're going.
* REFERENCE::  Reference materials for cabling and power.
* Contributors::  Who made this?
* GNU Free Documentation License:: The license covering this document.
@c * Index::  Complete index.
@end menu

@node Overview
@chapter Overview
GNU remotecontrol is a web application serving as a management tool for multiple IP enabled HVAC thermostats (device), and other Building Automation devices. The purpose of GNU remotecontrol is to read from and write to multiple IP enabled thermostats all at one time.

The GNU remotecontrol framework is designed to work with any IP enabled HVAC thermostat, but can be easily developed to operate any number of networked devices. This framework is built with @uref{http://en.wikipedia.org/wiki/CURL,cURL}, @uref{http://en.wikipedia.org/wiki/PHP,PHP}, and @uref{http://en.wikipedia.org/wiki/MySQL,MySQL}. Its system architecture is enabled on a server-client principle, where users can login to the server using a web browser to manage multiple remote devices from a single web interface. The GNU remotecontrol framework was developed to work in combination with a Remote Monitoring Server, which monitors configurable device parameters and can generate automatic system responses and alerts. If required, the GNU remotecontrol is both scalable and distributable over multiple computers serving different roles in the HVAC or remote device management framework. The @uref{http://www.proliphix.com/,Proliphix} IP thermostat (currently the only true IP enabled HVAC thermostat on the market) was used to develop the GNU remotecontrol web application. The @uref{http://en.wikipedia.org/wiki/Application_programming_interface,Application Programming Interface} (API) @strong{Proliphix IP Devices HTTP API, Revision 1.8} is used to read from and write to the Object Identification (OID) numbers defined in the API for the thermostat device.

The intended structure of this documentation is to provide as much assistance as possible to understanding @strong{why} you need/want to use GNU remotecontrol and instruction for @strong{how} to use GNU remotecontrol. Our research during the development of GNU remotecontrol found users operated best when they were given the opportunity to gain a high-level understanding of all the technologies associated with GNU remotecontrol. This documentation is written as a combined reference manual and technical manual for GNU remotecontrol. The @strong{Scope} section contains a listing of the minimum recommended chapter reading, per role. Each section in @strong{System Architecture and Concepts} contains instructions for @strong{Security Model}, any @strong{Options} that are recommended, @strong{Requirements} to run that technology, and @strong{Configuration} of that technology.

We recognize this documentation contains a lot of material. The documentation is segmented for you to select what you need to read to get going with GNU remotecontrol. We have done all we know how to structure this documentation in a Table of Contents that helps you easily find what you are looking for, obtain a complete understanding of each role, and master the minimum recommended chapter reading as simply and quickly as possible. It is our hope you find this documentation contains all of the information you need to successfully and effortlessly use GNU remotecontrol. With that said, we give you GNU remotecontrol.

@node Scope
@chapter Scope
The scope of this documentation is to address the 3 roles that function daily in the usage of GNU remotecontrol; @strong{Information Technology}, @strong{Energy Management}, and @strong{End User}. A 4th role, @strong{Financial Management}, is a role that operates in the @uref{http://en.wikipedia.org/wiki/Cost%E2%80%93benefit_analysis,Cost Benefit Analysis} and in reviews to evaluate facility improvement opportunities. The documentation contains information pertinent to each role. The intended end result is to help equip each role with the necessary definitions and reference information to further high-level communication among the roles.

The following list is the minimum recommended chapter reading, per role.

@section Information Technology
     @itemize @bullet
         @item
         @xref{Key Principles}.
         @item
         @xref{System Architecture and Concepts}.
         @item
         @xref{Usage Instructions}.
         @item
         @xref{Usage Recommendations}.
     @end itemize
        
@section Energy Management
     @itemize @bullet
         @item
         @xref{Key Principles}.
         @item
	 @xref{GNU remotecontrol & BACnet}.
         @item
	 @xref{Tax Benefit}.
         @item
	 @xref{System Architecture and Concepts}.
         @item
	 @xref{Usage Instructions}.
         @item
	 @xref{Usage Recommendations}.
         @item
	 @xref{Use Case Scenarios}.
         @item
	 @xref{Implementation Cost}.
         @item
	 @xref{Roadmap}.
         @item
	 @xref{REFERENCE}.
     @end itemize

@section End User
     @itemize @bullet
	 @item
	 @xref{Key Principles}.
	 @item
	 @xref{Usage Instructions}.
	 @item
	 @xref{Usage Recommendations}.
	 @item
	 @xref{Use Case Scenarios}.
	 @end itemize

@section Financial Management
     @itemize @bullet
         @item
         @xref{Key Principles}.
         @item
	 @xref{GNU remotecontrol & BACnet}.
         @item
	 @xref{Tax Benefit}.
         @item
	 @xref{System Architecture and Concepts}.
         @item
	 @xref{Usage Instructions}.
         @item
	 @xref{Usage Recommendations}.
         @item
	 @xref{Use Case Scenarios}.
         @item
	 @xref{Implementation Cost}.
         @item
	 @xref{Roadmap}.
         @item
	 @xref{REFERENCE}.
     @end itemize

@node Key Principles
@chapter Key Principles

@section Present Capabilities
GNU remotecontrol is designed to substantially reduce the time & effort necessary to remotely manage multiple IP thermostats, while significantly increasing your productivity through its many useful and time saving features. The User Interface is no more difficult than using any other web application involving simple check boxes and pull-down menus. GNU remotecontrol, combined with the Remote Monitoring Server, work together as a complete HVAC energy management system. GNU remotecontrol more than pays for itself by saving time/effort in manual labor for managing all resources individually.....and then some.

@section HVAC Thermostat
It is necessary to understand the design and usage intent of the HVAC thermostat to fully grasp the design and usage intent of GNU remotecontrol.

The @uref{http://en.wikipedia.org/wiki/thermostat,HVAC thermostat} is often a combination of either a @uref{http://en.wikipedia.org/wiki/Relay,relay} or a @uref{http://en.wikipedia.org/wiki/Semiconductor_device,semiconductor device} to have circuits either opened or closed, off or on. Examples of this include heating, cooling, or a fan. The addition of a scheduling option to turn any of these items off or on at a certain date/time does make it more practical of a device in terms of managing day-to-day operation of a HVAC system. Adding in the ability to track run time duration for heating, cooling, or a fan help energy efficiency measurements. The final addition of remote access, through the traditional IP enabled data network, takes the HVAC thermostat to an interconnected device capable of multiple read/write techniques. The cable from the thermostat to the HVAC equipment is solid core 18-@uref{http://en.wikipedia.org/wiki/American_wire_gauge,AWG}, either 4 or 8 separately jacketed wires, depending on system capability, all contained within a protective jacket.

@section Choosing Decision Makers
You will most likely need to work with others who have a different skill set than you do to achieve an effective energy management strategy. It is necessary to carefully plan for your selection of the decision makers you choose to work with. Choosing decision makers that are capable to run your HVAC and IT systems is paramount to the success of your system performance.

@subsection HVAC
Being a licensed @uref{http://en.wikipedia.org/wiki/Professional_engineer,Professional Engineer} does not make that person a @uref{http://en.wikipedia.org/wiki/Certified_Energy_Manager,Certified Energy Manager} (CEM). They are separate qualifications, each with their own requirements. Go with a Certified Energy Manager to help you determine if you qualify for any tax benefit for commercial building being rated as energy efficient. Even if you don't qualify for a tax benefit, you will most likely find a very beneficial set of methods to increase your energy management strategies that makes paying the Certified Energy Manger well worth the expense.

@subsection Information Technology
Being in an IT role does not make one qualified do an end-to-end design of an IT system. Relevant certifications help to know if one is really capable to do what they say they can do. Experience is probably the strongest credential one can have for being capable to run an IT system. Simply put, operation does not equal design. They are separate qualifications, each with their own requirements.

@subsection Conclusion
Look to your @strong{Cost Benefit Analysis} for decision making on how you need to design and operate your energy management strategy.

@section Security Considerations
The following is a list of information that will greatly help you plan for the network implementation and configuration of your energy management strategy.

@subsection Supervisory Control And Data Acquisition
@uref{http://en.wikipedia.org/wiki/SCADA,SCADA} speaks to the industrial side of HVAC automation.

@subsection Industrial Control System
@uref{http://en.wikipedia.org/wiki/Industrial_Control_Systems,ICS} speaks to industrial production facilities.

@subsection System Administration-Audit-Network Security
@uref{http://www.sans.org/,SANS} specializes in Internet Security training.

@section Frequently Asked Questions

@subsection Why do we call it GNU remotecontrol?
This code was originally called @strong{JUT}.....``@strong{J}ust @strong{U}se @strong{T}his'' to represent the intention of this software automation to take the complicated and make it very, very simple, from a user perspective. The name changed to GNU remotecontrol, when code was released under the GNU license.

@subsection Why do I need GNU remotecontrol?
If you have IP thermostats, you know that it takes time/effort to keep your energy usage down and control your climate for your comfort. This time and effort is increased with each remote device or HVAC unit that you want to administrate. GNU remotecontrol helps you spend less time/effort administrating your IP thermostats, provides automated record keeping of what changed, who changed it, and when it was changed. GNU remotecontrol deployment helps keep your energy usage as low as possible.

@subsection How do I know who changed what?
The access logs of your Web Server, your Operating System, and all of the other technologies that achieve user validation of a web application. Technologies that are time tested, tried and true, that you can count on. No need to reinvent the wheel, use what works very well when possible.

@subsection What will GNU remotecontrol do for me?
Free up your time/effort for starters. Also, enable you to know who did what to your IP thermostats when GNU remotecontrol was used to change your IP thermostats. Finally, your GNU remotecontrol application can help you minimize your energy costs.

@subsection Can I figure my energy usage for my HVAC units?
The IP thermostat will very much help with that measurement.

@subsection How do I use GNU remotecontrol?
Pretty easy, actually. Select the IP thermostats you want to change the settings of.....make the change.....and that's it. You can easily see the time/effort you save changing the air conditioning from 75@textdegree{}F to 73@textdegree{}F for several IP thermostats, all at once!  Then, imagine changing your setback schedule somehow on top of that, for say 30 different IP thermostats, all at once!

@subsection Can I use GNU remotecontrol and Remote Monitoring Server together?
Oh, yes. Think of GNU remotecontrol as writing to your IP thermostats, and Remote Monitoring Server reading information about your IP thermostats. The two go hand in hand. They are intended to work together.

@subsection What about the weather, can I tie weather related data into GNU remotecontrol and Remote Monitoring Server?
Yes. Use your Remote Monitoring Server to collect information about the weather from International Weather Services for the location of your IP thermostat. That will tell you a great deal about the quality of your energy management strategy.

@subsection Mobile access for GNU remotecontrol?
Yes, but that depends on who you have for cell phone service, the type of cell phone you have, and the Internet browser on that phone.

@subsection Do I need to install anything to my computer?
No. GNU remotecontrol is a @uref{http://www.w3.org/standards/,WC3} compliant web application. More times than not, your network is ready to go as-is.

@subsection How many different users will be able to use GNU remotecontrol?
You can set up different user accounts, but the nature of an IP thermostat means the people touching it be very clear with each other as to how they want to set the IP thermostat.

@subsection Encryption.....is GNU remotecontrol safe to use with my network?
We recommend you use a High Grade (AES-256 bit) encryption to secure the connection from your computer to your GNU remotecontrol server and verify the identity of your server with your own signed SSL Certificate. The connection from your computer to your IP thermostat is not changed from your normal connection to your Proliphix IP thermostat.

@subsection Is GNU remotecontrol compatible with BACnet?
Yes. @xref{GNU remotecontrol & BACnet}.

@subsection Can I use GNU remotecontrol to help Test & Balance my HVAC system?
Yes. Remote Monitoring Server & GNU remotecontrol work together to help you do just this. Recorded data of your HVAC system's usage and outdoor weather information is priceless for testing & balancing. The review of recorded data offers considerable cost savings, in both time and effort, to when optimizing your system setup. Additionally, you can reduce the number of people necessary to do the testing and balancing down to 1 person.

@section Future Capabilities
The next logical step is to expand GNU remotecontrol and become certified with industrial HVAC, lighting control, access control, and fire detection technologies. The BACnet communication protocol is an excellent candidate for connection to the GNU remotecontrol framework. @xref{GNU remotecontrol & BACnet}. The @uref{http://en.wikipedia.org/wiki/Modbus,MODBUS} communication protocol may also be implemented at a future date, but demand for this capability enhancement is not clearly understood.

@node GNU remotecontrol & BACnet
@chapter GNU remotecontrol & BACnet
@section Introduction
The @uref{http://www.bacnet.org/,BACnet} data communication protocol of @uref{http://www.ashrae.org/,ASHRAE} provides the @uref{http://www.bacnet.org/WG/XML/index.html,BACnet XML Working Group}. 

@section Associated Specifications
The following is a list of information that will greatly help you plan for the usage of the data captured in your energy management strategy.

     @itemize @bullet
	 @item
	 @strong{Extensible Markup Language} - @uref{http://en.wikipedia.org/wiki/XML,XML}
	 
	 @emph{"The design goals of XML emphasize simplicity, generality, and usability over the Internet. It is a textual data format with strong support via Unicode for the languages of the world. Although the design of XML focuses on documents, it is widely used for the representation of arbitrary data structures, for example in web services."}
	 
	 
	 @emph{"XML documents consist entirely of characters from the Unicode repertoire. Except for a small number of specifically excluded control characters, any character defined by Unicode may appear within the content of an XML document."}
	 
	 
	 @item
	 @strong{Representational State Transfer} - @uref{http://en.wikipedia.org/wiki/Representational_state_transfer, REST}
	 
	 @emph{"Unlike SOAP-based web services, there is no "official" standard for RESTful web services. This is because REST is an architecture, unlike SOAP, which is a protocol. Even though REST is not a standard, a RESTful implementation such as the Web can use standards like HTTP, URI, XML, etc."}
	 
	 
	 @item
	 @strong{BACnet} @uref{http://www.bacnet.org/Addenda/index.html,ADDENDA AND COMPANION STANDARDS}
	 
		@itemize @bullet
		@item
		@uref{http://www.bacnet.org/Addenda/Add-135-2010al-PPR3-Draft-4_chair_approved.pdf,Addendum 135-2008al}
		
		@item
		@uref{http://www.bacnet.org/Addenda/Add-2004-135c.pdf,Addendum 2004-135c}
		
		@item
		@uref{http://www.bacnet.org/Addenda/Add-135-2010am-APR1-1_chair-approved.pdf,Addendum 135-2010am}
		@end itemize
	 
	 @item
	 @strong{The Native PHP} @uref{http://www.php.net/manual/en/book.xml.php,XML Parser}
	 @end itemize

@section Going Forward
The roadmap of GNU remotecontrol is a commitment to International standards and protocols for Information Technology to provide availability, relevance, transparency, and maintenance of the GNU remotecontrol framework. (@xref{Roadmap}.)  The BACnet XML Working Group is an excellent example of these attributes.

@node Tax Benefit
@chapter Tax Benefit
@uref{http://www.irs.gov/irb/2006-26_IRB/ar11.html,Internal Revenue Bulletin: 2006-26}, @strong{Notice 2006-52}, @emph{Deduction for Energy Efficient Commercial Buildings} defines the tax deduction allowed for the hardware and software required for GNU remotecontrol to operate in commercial buildings in the United States. The costs for GNU remotecontrol are 100% tax deductible.....if you meet these requirements. The tax deduction, combined with spending less money for energy due to an improved energy management strategies, means GNU remotecontrol more than pays for itself.

@node System Architecture and Concepts
@chapter System Architecture and Concepts

The following pieces of the GNU remotecontrol architecture are @strong{necessary}.
     @itemize @bullet
	 @item
	 Web Server
	 @item
	 Database Server
	 @end itemize

The following pieces of the GNU remotecontrol architecture are @strong{optional}.
     @itemize @bullet
	 @item
	 Remote Monitoring Server
	 @item
	 Email Server
	 @end itemize

@section Web Server
GNU remotecontrol uses PHP v5.3.9 and MySQL v5.5.2, in combination with cURL v7.28.1, running without difficulty on either Windows or Linux.

@subsection Security Model
GNU remotecontrol is configured with the security necessary for any other @uref{http://en.wikipedia.org/wiki/Web_server,Web Server}. You are responsible for setting up your security on your Web Server.

@subsection Requirements
GNU remotecontrol can run anywhere that can run PHP with cURL and MySQL.

GNU remotecontrol runs without any known problems on @uref{http://en.wikipedia.org/wiki/Apache_HTTP_Server,Apache} and @uref{http://en.wikipedia.org/wiki/Internet_Information_Services,IIS}. Running GNU remotecontrol on a @uref{http://en.wikipedia.org/wiki/Comparison_of_lightweight_web_servers,lightweight} Web Server versus a @uref{http://en.wikipedia.org/wiki/Comparison_of_web_servers,complete} Web Server is possible, but not recommended. This is due to the security benefits of a complete Web Server. Again, you are responsible for setting up your security on your Web Server.

@subsection Configuration
Follow the configuration stated by the Web Server you so choose to use.

Here is what you need for running GNU remotecontrol on Apache, after you setup your security on your Web Server.

	@itemize @bullet
	@item
	@strong{Apache httpd.config:}
	
	Options FollowSymLinks
	 
	AllowOverride None
	
	Order allow,deny
	Allow from all
	
	AuthType Digest
	
	AuthName "tstat"
	
	AuthUserFile "PATH_TO...../passwords_digest"
	
	Require user [Same user account name you setup for your database user account.]
	
	

	@item
	@strong{Settings necessary in your PHP configuration (php.ini):}
	
	register_globals = Off
	
	auto_globals_jit = On
	
	

	@item
	@strong{Extensions necessary in your PHP installation:}
	
	php_curl
	
	php_mysqli
    @end itemize


@section Database Server
GNU remotecontrol uses PHP v5.3.9 and MySQL v5.5.2, in combination with cURL v7.28.1, running without difficulty on either Windows or Linux.

It is important to consider the option of a @uref{http://en.wikipedia.org/wiki/Federated_database_system,Federated Database System}. This option provides for the benefit of leveraging other Database Systems to work with your GNU remotecontrol database. You are not bound to only use MySQL for your GNU remotecontrol. Thinking outside of the box here will most likely bring you innovation of how you can implement your GNU remotecontrol.

@subsection Security Model
GNU remotecontrol is configured with the security necessary for any other @uref{http://en.wikipedia.org/wiki/Database_system,Database System}. You are responsible for setting up your security on your Database Server.

@subsection Requirements
Follow the requirements stated by the Database System you so choose to use.

GNU remotecontrol runs without any known problems on MySQL. Running GNU remotecontrol on a @uref{http://en.wikipedia.org/wiki/Back-end_database#Small_Database_Systems,lightweight} Database Server versus a @uref{http://en.wikipedia.org/wiki/Comparison_of_relational_database_management_systems,complete} Database Server is possible, but not recommended. This is due to the security benefits of a complete Database Server. Again, you are responsible for setting up your security on your Database Server.

@subsection Configuration
Follow the requirements stated by the Database System you so choose to use.

There is only 1 database script, @emph{iptstat.sql}. This is in the folder @emph{/dbscripts}. This script builds the GNU remotecontrol database. From there, you apply your security model as you see fit.

@subsection Translations
All databases have a character set and collation setting that can be configured to handle languages with special characters. The @uref{http://dev.mysql.com/doc/refman/5.5/en/charset-charsets.html,Character Sets and Collations} specify what you can add to your tables. This does not have to be a global setting. This can be table-specific or even column-specific.

GNU remotecontrol is built to display in any language you can get into the database. You can also edit the contents, as you prefer, with wording that is more appropriate for your end-users. This will help ease your usage of GNU remotecontrol.

@section Remote Monitoring Server
GNU remotecontrol uses PHP v5.3.9 and MySQL v5.5.2, in combination with cURL v7.28.1, running without difficulty on either Windows or Linux.

@subsection Security Model
GNU remotecontrol is configured with the security necessary for any other @uref{http://en.wikipedia.org/wiki/Remote_monitoring,Remote Monitoring} application. You are responsible for setting up your security on your Remote Monitoring Server. 

@subsection Options
The question must be answered.....@strong{why would you not monitor your systems}?  If your answer contents you to not have a Remote Monitoring Server, so be it. Perhaps you trust the decisions and work of others enough to not bother with setting up a Remote Monitoring Server. That is often a poor choice.

Running a Remote Monitoring Server is the easy part of having a Remote Monitoring Server. The biggest decision you have to make is.....@strong{ are you going to run it, or is someone else}?  Then, and only then, choose the technology combination you want to have for your Remote Monitoring Server. Do not let your skill set alone decide what is best for meeting your needs. Determine what you needs are, count the cost, and then choose your technology.

We have developed plugins for Nagios that quite nicely round out the energy management strategy. Check out the @strong{Nagios Plugins}.

@strong{Popular Options}
	 
	 @itemize @bullet
	 @item
	 @uref{http://www.nagios.org/,Nagios}
	 @item
	 @uref{http://www.solarwinds.com/,Solar Winds}
	 @item
	 @uref{http://www.mmonit.com/,M/Monit}
	 @end itemize

@quotation Note:
There are many, many other options to choose.
@end quotation

@subsection Requirements
Follow the requirements stated by the Remote Monitoring application you so choose to use.

@subsection Configuration
Follow the configuration stated by the Remote Monitoring application you so choose to use


@section Nagios Plugins
We have developed 2 plugins to round out the GNU remotecontrol Architecture. The outcome of these plugins is to capture numbers related to your IP enabled thermostat and RSS feeds for weather information out of doors. Numbers are so much easier for processing data to achieve knowledge. Text, images, video, and so on are on quite complicated to process into knowledge. The metrics of @uref{http://en.wikipedia.org/wiki/Temperature,Temperature}, @uref{http://en.wikipedia.org/wiki/Humidity,Humidity}, @uref{http://en.wikipedia.org/wiki/Wind_speed,Wind-Speed}, @uref{http://en.wikipedia.org/wiki/Wind_chill,Wind-Chill}, and @uref{http://en.wikipedia.org/wiki/Barometric_pressure,Atmospheric (Barometric) Pressure} help to analyze your entire HVAC system and determine if your energy management strategy is working for you. Other metrics can be added in as preferred, as shared below.

@subsection Proliphix Alarms
The Proliphix thermostat device has 4 alarms.
	 @itemize @bullet
	 @item
	 Low Temperature
	 @item
	 High Temperature
	 @item
	 High Humidity
	 @item
	 Filter Change
	 @end itemize

Alarms in the thermostat device were considered for displaying in index.php or another web page not developed (perhaps something like a GNU remotecontrol alarms.php web page). Feedback from users during development of GNU remotecontrol showed their preference is to be informed of alarms from a Remote Monitoring Server notification. This approach also provides logging of all monitored information, a feature not available in the thermostat device.

The Temperature and Humidity alarms are already provided for in the Nagios checks we have developed. The Filter Change alarm has various pre-determined options to select; 10, 30, 60, 90, 120, 240, 365 Runtime Days. This does not account for dust accumulating on a filter, should the power be off to the thermostat device. This logic combination is determined as insufficient to use for monitoring when to change the filter of an HVAC system. Reasoning for this determination includes:
	 @itemize @bullet
	 @item
	 Various pollutants enter filters at different times in different ways.
	 @item
	 Allergens are more prevalent in the Spring compared to the other seasons of the year.
	 @item
	 Dust is more common if a manufacturing facility has dust as a byproduct of manufacturing.
	 @item
	 Dust is generated from Wood Stoves and Fire Places. Heating needs often change throughout the year.
	 @item
	 @uref{http://en.wikipedia.org/wiki/Dust_storm,Dust Storms} are common in arid and semi-arid regions. Dust Storms require additional filter inspections to make sure equipment will not be damaged from improper ventilation.
	 @item
	 An end-user is the best person to determine when to change a filter based upon the environmental conditions that may or may not change.
	 @end itemize

The Proliphix API only supports reading these alarms, not setting an alarm threshold or clearing an alarm event. The user must go to the web server of the Proliphix thermostat device for setting an alarm threshold or clearing an alarm event. Also, there is only a single alarm issued per alarm type until the alarm type event is cleared in the thermostat device. This logic combination means a threshold may be exceeded, go back within the threshold, and then be exceeded again. This example is an excellent illustration of the value gained by having a Remote Motoring Server watching your network, your devices, and anything else you can monitor.

Finally, since the thermostat device has a threshold of how many read events the unit can support per minute, we did not want to overwhelm the device. An example of this overwhelming of the device is:
	 @itemize @bullet
	 @item
	 Having a separate web page for viewing these alarms, after they are read from the thermostat device.
	 @item
	 Then, returning to index.php to see those alarms.....again.
	 @item
	 Then, going into the device to clear the alarm and/or adjust thresholds.
	 @item
	 Then, going back to index.php to see what an alarm reads.
	 @item
	 Then, going back into the separate to see what an alarm reads.
	 @end itemize

The API is quite distinct about this cautioning of too many read events per minute through the API. The combination of the web server of the thermostat device and index.php is a proper approach to use back and forth and not overwhelm the thermostat device.

@subsection Thermostat Plugin - check_ubicom
Please review the source code for each of these plugins to see detailed instruction for proper usage. The following is an outline of the detailed instruction.

This plugin will attempt to read temperature and humidity from an IP thermostat. Successful reads initially set the response to @code{STATE_OK}. If the temperature or  humidity falls outside the range set by the @code{warn-temperature} or the  @code{warn-humidity} arguments, then the response is upgraded to @code{STATE_WARNING}. If the temperature or humidity falls outside the range set by the @code{critical-temperature} or the @code{critical-humidity} arguments, then the response is further upgraded to @code{STATE_CRITICAL}. Failure to read both values (due to timeout or parsing failure) results in a @code{STATE_UNKNOWN} response.

Temperature and humidity arguments may specify a minimum, a maximum, or both. A ':' character must be used to follow a minimum or precede a maximum. For example.....


@subsubsection Syntax Example - IMPERIAL

@emph{check_ubicom -wt :70 -ct :90 -wh 10: -ch 5: -t 60 -I example.remote-mon.com -u /status.shtml}


@subsubsection Result Example - IMPERIAL

     @itemize @bullet
	 @item
	 Returns CRITICAL if temperature is above 90F or humidity is below 10%.
	 @item
	 Returns WARNING if temperature is above 70F or humidity is below 5.
	 @item
	 Returns OK if temperature is 70F or below.
	 @item
	 Returns UNKNOWN if no response received within 60 seconds.
	 @end itemize

@subsubsection Syntax Example - METRIC

@emph{check_ubicom -m -wt 0:30 --critical-temperature=-10:50 -I example.remote-mon.com -u /status.shtml}

@subsubsection Result Example - METRIC

     @itemize @bullet
	 @item
	 Returns CRITICAL if temperature is below -10C or above 50C.
	 @item
	 Returns WARNING if temperature is below 0C or above 30C.
	 @item
	 Returns OK if temperature is from 0C to 30C.
	 @item
	 Returns UNKNOWN if no response received within 10 seconds.
	 @end itemize

@subsubsection Syntax Example - Macro
define command@{

        command_name    check_ubicom_whatever
		
        command_line    $USER1$/check_ubicom -I 10.10.10.22 -p 8264
		
@}

@subsection Weather Plugin - check_weather
Please review the source code for each of these plugins to see detailed instruction for proper usage. The following is an outline of the detailed instruction.

The check_weather plugin checks the wind-chill, wind-speed, humidity, pressure, and temperature received from @uref{http://developer.yahoo.com/weather/,Yahoo! Weather RSS Feed} for a single station code. The return value is always OK or UNKNOWN.

You are certainly free to use any other RSS feed you prefer. Examples of this include @uref{http://portal.theweatherchannel.com/,The Weather Channel} and @uref{http://www.wunderground.com/weather/api/,Weather Underground}. All of these RSS feeds have free and paid options. Please carefully read their provisions if you select to use their RSS feed.

The performance values returned by the check_weather plugin, @strong{in order}, are:
@enumerate
@item
wind-chill (apparent temperature) in degrees F or degrees C
@item
wind-speed in m.p.h. or km.p.h.
@item
relative humidity in percent
@item
barometric pressure in in.Hg or mm.Hg
@item
current temperature in degrees F or degrees C
@end enumerate

@subsubsection Syntax Example - IMPERIAL
@emph{check_weather -z USTN0268}

@subsubsection Result Example - IMPERIAL
OK|52 8 88 29.68 52

@enumerate
@item
52 degrees Fahrenheit wind-chill
@item
8 mph wind-speed
@item
88% relative humidity
@item
29.7 in.Hg barometric pressure
@item
52 degrees Fahrenheit actual temperature
@end enumerate

@subsubsection Syntax Example - METRIC
@emph{check_weather -z USTN0268 -m}

@subsubsection Result Example - METRIC
OK|35 12.8748 88 753.872 35

@enumerate
@item
35 degrees Celsius wind-chill temperature
@item
12.8 km/h wind-speed
@item
88% relative humidity
@item
758.8 mm.Hg barometric pressure
@item
35 degrees Celsius actual temperature
@end enumerate

@subsubsection Syntax Example - Macro
define command@{

        command_name    check_weather_knox
		
        command_line    $USER1$/check_weather -z USTN0268
		
@}

These plugins are developed under the Nagios @uref{http://www.nagios.com/legal/,License}.

@section Email Server

@subsection Security Model
GNU remotecontrol is configured with the security necessary for any other @uref{http://en.wikipedia.org/wiki/Email_server,Email Server}. You are responsible for setting up your security on your Email Server.

@subsection Options
The email used in the GNU remotecontrol Architecture is for sending email from your Remote Monitoring Server to you, via your Email Server.

Options include either a @uref{http://en.wikipedia.org/wiki/Server_%28computing%29,Physical Server}, a @uref{http://en.wikipedia.org/wiki/Virtual_server,Virtual Server}, or an email service such as @uref{http://www.dyn.com/email/,DynDNS Email} or @uref{http://support.google.com/mail/bin/answer.py?hl=en&answer=13287,Google Mail} to achieve what is necessary for the Email Server of the GNU remotecontrol Architecture.

Managing email activity is a full-time job. Managing @uref{http://en.wikipedia.org/wiki/Email_account,Email Accounts}, managing @uref{http://en.wikipedia.org/wiki/Electronic_mailing_list,Electronic Mailing List} and @uref{http://en.wikipedia.org/wiki/Distribution_lists,Distribution list}, dealing with spam, viruses, and other security threats.....it really is a lot to juggle. Do yourself a big favor and become very clear on these 3 items:  
     @itemize @bullet
	 @item
	 @uref{http://en.wikipedia.org/wiki/Mail_Delivery_Agent,Mail Delivery Agent}
	 @item
	 @uref{http://en.wikipedia.org/wiki/Mail_transfer_agent,Mail Transfer Agent}
	 @item
	 @uref{http://en.wikipedia.org/wiki/Mail_user_agent,Mail User Agent}
	 @end itemize

Then, do yourself a @strong{very} big favor and become @strong{very} familiar with these 4 items:
     @itemize @bullet
	 @item
	 @uref{http://en.wikipedia.org/wiki/E-mail_authentication,Email Authentication}
	 @item
	 @uref{http://en.wikipedia.org/wiki/S/MIME,S/MIME}
	 @item
	 @uref{http://en.wikipedia.org/wiki/SMTP_Authentication,SMTP Authentication}
	 @item
	 @uref{http://en.wikipedia.org/wiki/Transport_Layer_Security,Transport Layer Security}
	 @end itemize
	 

Check out @uref{http://www.sendmail.org/m4/masquerading.html,Masquerading and Relaying} for mental expansion. The combinations of running email on a single server are almost limitless. Combining a Physical Server with a Virtual Server and different email services make for assuring email is achieved about as close to a certainty as possible.

@subsection Requirements
Follow the requirements stated by the Email application you so choose to use.

Please note that you do not need to get into @uref{http://en.wikipedia.org/wiki/Encrypted_email,encrypted email}, unless you want to. The big difference is encrypted email encrypts the file in your email client. The Email Authentication moves an un-encrypted email through an encrypted means of transporting the said email. Think of it as a paper letter in a paper envelope in a concrete hallway versus a paper letter in a strong box in the middle of a city sidewalk.

Now, having a familiarity understanding of these items will equip you to have a very successful talk with your Email Administrator, or your Internet Service Provider, or a Mail Relay Provider. That administrator will ask you several questions about how you want email handled for your GNU remotecontrol. Prepare beforehand for that discussion. The discussion will go much better if you are familiar with and understand these items.

@subsection Configuration
Follow the configuration stated by the Email application you so choose to use.

The email you most likely will want is to be notified of a condition occurring and you are notified by your Remote Monitoring Server. You do not need to keep the email, nor do you need to do any reporting on the emailing. All of the information you would ever need to report on lives in your Remote Monitoring Server as either log files or a database. The benefit of your email is to be notified when you need to look into something, and that is all. The benefit of that awareness is priceless. Combine that with managing those email notifications to you and others in the lists of email addresses, a list that can and often changes, makes email really valuable for managing the time of everyone involved.

@quotation Note:
Don't use an SMS address when sending email to cell phones. Use the cell phone's email address via the @uref{http://www.makeuseof.com/tag/email-to-sms/,Free Email To SMS Gateways}. Major United States Carriers offer this to both email and SMS users. Look for the same options of the cell phone provider's of the land in which you live. You will be much happier using the cell phone's email address, as you can easily track if the message went out or not, versus wondering about the SMS system.....in which knowing is often a mystery. Finally, it is 1 less system to work with.
@end quotation


@section Frequently Asked Questions
@subsection What is RMS?
RMS is the acronym of Remote Monitoring Server.

@subsection What is Remote Monitoring Server?
A Remote Monitoring Server regularly keeps track of your chosen networked device (computers, email servers, web servers, routers, IP thermostats, et cetera) and notifies you with alerts of any problems when they occur.

@subsection Why do I need RMS?
If you want to know the status of any IP addressable device, you need to monitor it. If you do not have the time/effort available to stand there and watch the device yourself, you need something to automatically monitor it and record the results for you to review at your leisure. Ideally, that Remote Monitoring Server will promptly notify you of anything occurring that you have defined as a problem. An automated technology that remotely monitors your equipment, commonly referred to as.....@emph{stuff}.....and alerts you when there is a problem. This is RMS.
	 
@subsection What will RMS do for me?
Watch your ``stuff'' and tell you when your ``stuff'' has a problem. It logs the results of the monitoring of your ``stuff'' for you to review in a web page based format. That will help you figure out very quickly if something is wrong and what is wrong with your ``stuff''.
	 
@subsection How do I use RMS?
Pretty easy, actually. Setup your Remote Monitoring Server and decide what network and devices you want monitored. From there, you receive an email and/or SMS message to your cell phone when there is a problem.
	 
@subsection Does a Remote Monitoring Server do graphing?
Oh yes, yes indeed!
	 
@subsection Mobile access for RMS?
Yes, but it depends on who you have for cell phone service, the type of cell phone you have, and the Internet browser on that phone.
	 
@subsection Is it difficult to use RMS?
No more difficult than receiving an email or SMS message. From there, looking at a web page to see the history of your monitoring activity, if you like.
	 
@subsection How many emails/SMS messages will I get?
More than enough for you to know if and when there is a problem. A notification system is almost limitless in how it can be configured for you. A good example is not receiving all SMS message in the middle of the night, but only the SMS messages you conclude you must have 'round the clock. When you receive a notification, how many times you receive a subsequent notification for the same failure, and who receives that notifications.....all set up as you want.
	 
@subsection How many different email addresses will you send me notifications to?
Often, there is a primary and a secondary person in a monitoring notification.Each person has an email address and an SMS address, receiving email and SMS notifications to each address.....as you prefer.  Or, it is sent to a Distribution List. The combination of options are plentiful to send email, rest assured.
	 
@subsection Can I use RMS to help Test & Balance my HVAC system?
Yes. RMS & GNU remotecontrol work together to help you do just this. Having recorded data for your system usage and outdoors weather information is priceless for testing & balancing. It offers considerable cost savings, in both time and effort, to review recorded data to optimize your system setup. Additionally, you can reduce the number of people necessary to do the testing and balancing down to 1 person.
	 
@subsection Do I need RMS?
Not to sound silly, but RMS prevents a mess. It is impossible to consciously improve anything without first measuring it. You may stumble upon a way to improve it, but is that a pro-active approach to managing anything? Of course not. To help improve things, RMS helps by monitoring the status your resources. The unknown things of life can crop in and cause problems. The faster you know about a problem, the faster you can stop any damage that problem may cause. RMS helps you take advantage of the opportunity to improve how you manage things, so the chance of a problem returning becomes less likely.
	 
@subsection Really, how do I know that I need RMS?
If you worry about your ``stuff'', and your ``stuff'' has an IP address, you need RMS.

@node Usage Instructions
@chapter Usage Instructions
It is our hope the preceding chapters have given you the opportunity to gain a high-level understanding of all the technologies associated with GNU remotecontrol. You are now ready to learn how to use GNU remotecontrol.

@uref{http://en.wikipedia.org/wiki/Tooltip,Tool Tips} are present on a few of the form controls in GNU remotecontrol. Most GUI web browsers require @uref{http://en.wikipedia.org/wiki/UTF-8,UTF-8} to display Tool Tips. The encoding of the GNU remotecontrol database is ISO-8859-1 (Latin 1). Therefore, some characters of some display languages may not properly render in the Tool Tips. There are 2 ways to resolve this problem.

@itemize @bullet
     @item
	 Change the word in the database for the said Tool Tip to either another word, an abbreviation of the word, or an acronym of the word.
     @item
	 Change the encoding of all of the GNU remotecontrol web pages and the GNU remotecontrol database to the encoding used by your GUI web browser.
	 @end itemize

Please see the section below for more information regarding @strong{Browser Selection}.

@section Browser Selection
GNU remotecontrol is designed for usage with either @uref{http://www.mozilla.org/,Mozilla Firefox}, or with @uref{http://www.konqueror.org/,Konqueror}. Microsoft @uref{http://en.wikipedia.org/wiki/Internet_Explorer,Internet Explorer} (IE), though one of the worlds first @uref{http://en.wikipedia.org/wiki/History_of_the_web_browser,graphical} options for a @uref{http://en.wikipedia.org/wiki/Web_browser,web browser} and is credited with helping to grow the Internet past @uref{http://en.wikipedia.org/wiki/Timeline_of_web_browsers,text browsing}, the application @uref{http://www.microsoft.com/ie,IE} simply changes too much and too often to deal with all of the inconsistencies of the browser not being compliant with @uref{http://www.w3.org/standards/agents/browsers,International Standards} of the World Wide Web. In addition, IE only runs on the Windows operating system whereas GNU remotecontrol runs on any server that can run @uref{http://php.net/downloads.php,PHP}.....of which there are many.

Please review the various @strong{Use Case Scenarios} prior to reading how to go about using GNU remotecontrol. These examples will greatly help you to see the value of using GNU remotecontrol.

@section Time
This section is quite important, perhaps the most important of all. The absence of all devices being set to the same time often results in many problems, problems which are often catastrophic in nature. We have written this section to try to eliminate @uref{http://en.wikipedia.org/wiki/Clock_synchronization,Clock Synchronization} errors from hindering the efficiency of your energy management strategy.

The definition of Time can mean many things to many people. We define @uref{http://en.wikipedia.org/wiki/Time,Time} as @emph{a dimension in which events can be ordered from the past through the present into the future, and the measure of durations of events and the intervals between them}. Date is a collection of time. @uref{http://en.wikipedia.org/wiki/Daylight_saving_time,Daylight Savings Time} is the most common occurrence of @uref{http://en.wikipedia.org/wiki/Time_change,Time Change}. @uref{http://en.wikipedia.org/wiki/Time_dilation,Time Dilation} is not a problem with HVAC operation, nor is the @uref{http://en.wikipedia.org/wiki/Hafele%E2%80%93Keating_experiment,Hafele Keating Effect}, as the facility is not traveling.

The biggest problem with having multiple clocks is @uref{http://en.wikipedia.org/wiki/Clock_drift,Clock Drift} and the necessary correction for @uref{http://en.wikipedia.org/wiki/Delta-T,Delta T} to account for @uref{http://en.wikipedia.org/wiki/Terrestrial_Time,Terrestrial Time}. This Clock Drift problem is globally resolved when Daylight Savings Time occurs. The time standard the majority of the world uses is @uref{http://en.wikipedia.org/wiki/Coordinated_Universal_Time,Coordinated Universal Time}, often referred to as @strong{UTC}. This time standard is achieved by the @uref{http://en.wikipedia.org/wiki/Atomic_clock,Atomic Clock} delivering @uref{http://en.wikipedia.org/wiki/International_Atomic_Time,International Atomic Time}.

Examples of how time differences can cause damage and harm people are in a @uref{http://en.wikipedia.org/wiki/Daylight_saving_time#Complexity,manufacturing facility} and while using @uref{http://www.fda.gov/MedicalDevices/Safety/AlertsandNotices/PublicHealthNotifications/ucm062068.htm,medical equipment}. Awareness during the Daylight Savings Time change is the easiest way to avert any unforeseen problems. Remember, even if you don't live in a location that observes Daylight Savings Time, there is still a time correction that occurs to resolve Delta T. Finally, you may have newly installed equipment that was incorrectly configured during installation and erroneously activates the hourly time change when Daylight Savings Time occurs.

We decided to align the time of the thermostat to the time of the GNU remotecontrol server, and have the @uref{http://en.wikipedia.org/wiki/Time_zone,Time Zone} of each thermostat as a required field in the thermostat profile. The Time Zone information lives in the @strong{timezoneoffset} table in the GNU remotecontrol database, as a @uref{http://en.wikipedia.org/wiki/Gmt,Greenwich Mean Time} (GMT) @uref{http://en.wikipedia.org/wiki/List_of_UTC_time_offsets,offset}. Please read the sections for @strong{index.php}, explaining the @strong{Time Zone Offset} field, and the section @strong{Write to a Thermostat - Date and Time} for more information about how we have accomplished this action. The capability to use Database Management to manage your thermostats is very much improved by having the Time Zone information as a field in your GNU remotecontrol database.

We originally developed code to enable setting each thermostat to a specifically different time, but decided against using that option. Setting each thermostat to a different time would defeat achieving Clock Synchronization, resulting in loads of confusion when comparing your HVAC logged data with logged data from other sources, such as Weather Services, other Building Automation technologies, and Network Security.

@strong{Reference Information}

@itemize @bullet
     @item
	 @uref{http://en.wikipedia.org/wiki/SNTP,Simple Network Time Protocol (SNTP)}
     @item
	 @uref{http://en.wikipedia.org/wiki/Network_Time_Protocol,Network Time Protocol (NTP)}
     @item
	 @uref{http://en.wikipedia.org/wiki/NTP_server_misuse_and_abuse,NTP Server Misuse and Abuse}
     @item
	 @uref{http://www.nist.gov/pml/div688/grp40/auth-ntp.cfm,NIST Authenticated NTP Service}
	 @end itemize

So, all you have to do is make certain the time on your GNU remotecontrol server is set to the time you prefer. Then, save yourself a lot of hassle and set the time on your devices every month by using GNU remotecontrol. Finally, use GNU remotecontrol to change any IP enabled thermostat during the Daylight Savings Time change. This will make certain all of your thermostats are correct and have all of your logged data match up properly when comparing by time.

@section admin.php
@subsection Purpose
This web page provides User Management in the GNU remotecontrol application.

@subsection Fields
     @itemize @bullet
	 @item
	 @strong{User Name} - The GNU remotecontrol user account.
	 @item
	 @strong{Max # Therms} - The maximum number of thermostats allowed for that user account.
	 @end itemize

@subsection Usage
Add user accounts with the @strong{exact same name} you setup the user accounts in your Web Server. Edit and Delete user accounts from this web page, as well. Security to access this web page is completely handled by the Web Server and the Operating System running your Web Server. You need to restrict access to this web page to only allow the user accounts you want to be able to add/edit/delete the other user accounts.

We added a management option to this web page, per a request received during our design of GNU remotecontrol. The demand for this feature is the desire to increase awareness of the need to also setup Remote Monitoring for a newly added thermostat. The intent of this feature is to provide a check and balance for all roles that use GNU remotecontrol. You set the total number of thermostats the user account can have to whatever you prefer.

@section index.php
@subsection Purpose
This web page provides the ability to manage your individual thermostats, all at one time.

@subsection Fields
     @itemize @bullet
	 @item
	 @strong{Display Language} - This form control selects the language you choose to display your GNU remotecontrol session for your GNU remotecontrol user account. The language option you choose to display GNU remotecontrol is saved in your GNU remotecontrol user account profile in the GNU remotecontrol database. This setting is saved for you so you do not have to choose a language option each time you use GNU remotecontrol. Selecting another language option to display GNU remote control will update this setting of your GNU remotecontrol user account in the GNU remotecontrol database. This display information lives in the @strong{language} table in the GNU remotecontrol database. You can edit this information to better suit your liking or add another language to the GNU remotecontrol database. Please see the section @strong{Usage Recommendations} for instruction to achieve either of these options.
	 @item
	 @strong{Device Name} - This object stores the device name of the thermostat. This object is controlled through the web interface on the General Settings web page of the thermostat.
	 @item
	 @strong{Site Name} - This object stores the device location of the thermostat. This object is controlled through the web interface on the General Settings web page of the thermostat.
	 @item
	 @strong{Model #} - This object stores the device model number. It is read-only, and resident in the thermostat device firmware.
	 @item
	 @strong{Custom Name} - This field is unique to GNU remotecontrol and not on the device. We added this field to supplement the @strong{Device Name} and @strong{Site Name} fields on the device. The intent of this field is to increase capability when you use your Database Management to separate out thermostats for management purposes currently unforeseen. It is always nice to have more capability than necessary. An example of how to use this field is to enter @uref{http://en.wikipedia.org/wiki/Gps,GPS} coordinates of where your thermostat is located or further define the @strong{Site Name} field.
	 @item
	 @strong{Description} - This field is unique to GNU remotecontrol and not on the device. We added this field to supplement the @strong{Device Name} and @strong{Site Name} fields on the device. The intent of this field is to increase capability when you use your Database Management to separate out thermostats for management purposes currently unforeseen. It is always nice to have more capability than necessary. An example of how to use this field is to enter @uref{http://en.wikipedia.org/wiki/Gps,GPS} coordinates of where your thermostat is located or further define the @strong{Site Name} field.
	 @item
	 @strong{Domain Name/IP} - This field is unique to GNU remotecontrol. You must setup your network to access your thermostat inside and/or outside of your local network. This entry is the address necessary for your GNU remotecontrol server to get to your thermostat device. Enter into this field whatever that address is, whether it is a private IP address, a public IP address, or a @uref{http://en.wikipedia.org/wiki/Fqdn,Fully Qualified Domain Name} address, as concluded through your @uref{http://en.wikipedia.org/wiki/Domain_Name_System,Domain Name System} resolution.
	 @item
	 @strong{Port} - This is the port your thermostat is set to use for the address it has been assigned. Please see the field @strong{Domain Name/IP} for understanding of how to populate this field. This object is controlled through the web interface on the Network Settings web page of the thermostat.
	 @item
	 @strong{Time Zone Offset} - This is the Time Zone of where the thermostat is located. This information lives in the @strong{timezoneoffset} table in the GNU remotecontrol database. You may want to use either the @strong{Custom Name} or @strong{Description} fields to record Time Zone as a reminder note to yourself. Also, you will most likely want to use Database Management to update this field in the GNU remotecontrol database when Daylight Savings Time occurs. Please read the section @strong{Time} for more information on this recommendation.
	 @item
	 @strong{Login } - This field contains the @strong{admin} user account of the thermostat. Click @strong{Set} after you have added the thermostat. You are prompted to enter and save the password for the admin user account of the thermostat. See the section @strong{Adding a Thermostat} below for more detailed information.
	 @end itemize

@subsection Usage
You are ready to use index.php web page after you have setup the admin.php user accounts. The detailed sections below address how to use each capability.

Loading index.php causes each attribute of each device to be read. Please see the section @strong{Adding a Thermostat} for more information. The thermostats entered in your GNU remotecontrol database will populate with the current values of the first device in the profile list upon the initial load of index.php. Click the hyperlink @emph{View Settings} to see the parameters currently set on the device. You only view the settings of a single thermostat device, one at a time. This is listed as @emph{Currently Viewing}, after clicking the hyperlink @emph{View Settings}. Please see the section @strong{View Settings} for more information.

The data from a thermostat device is not loaded if the thermostat device cannot be reached or if the thermostat device is unresponsive. Remember, index.php does not populate the values for this thermostat device if this thermostat device is first in your listing,

A status indicator appears next to each selected thermostat device when the submission is complete. This status indicator can render: @emph{Done}, @emph{NoTrans}, or @emph{Error}. A Tool Tip will appear with more information when hovering over this status indicator.

PHP errors are logged to your PHP logging, if you have this feature enabled in your PHP configuration. A logging mechanism for errors returned directly from a thermostat device writes that information to the @emph{errorlog} table in the GNU remotecontrol database. This logging will occur when the thermostat device is reachable and responsive, but something goes awry with the submission, or if there is something wrong with the device and the device returns an error.

Day in and day out, you will want to know the settings on the different IP enabled thermostats you are charged with caring for. Using GNU remotecontrol will help you see if anyone has changed the settings on an IP enabled thermostat, thereby altering and/or defeating your energy management strategy. Combing into the equation a Remote Monitoring Server with Email Server notification and you are on top of the game for energy management.

@strong{Reload} index.php at any time you prefer to poll each device and read the current parameters of the attributes for all device entries.

See @strong{Troubleshooting} for more information.

@subsubsection Adding a Thermostat
Highlighted fields are required.

You must have the password to the @strong{admin} user account for the device you want GNU remotecontrol to write to. This is to ensure that the user of GNU remotecontrol has administrative authority to the device. Mandating usage of the admin user account further assures that writing to the device occurs by a user with complete authority to that device. Complete the highlighted fields, click @strong{Add}, and click @strong{Set} to enter the admin user account password for that thermostat. You have now completely added your first thermostat to GNU remotecontrol.

Repeat the above paragraph for all remaining thermostats you wish to add to GNU remotecontrol.

@strong{Reload} index.php at any time you prefer to poll each device and read the current parameters of the attributes for all device entries.

See @strong{Troubleshooting} for more information.

@subsubsection View Settings
Click @emph{View Settings} to load the parameters of that specific thermostat into the @strong{HVAC Settings}, @strong{Setback Scheduling}, and @strong{Sensor Settings}. @emph{View Settings} will toggle to display as @strong{Currently Viewing}. This capability allows you to easily see what each thermostat is set to once you load index.php, versus having to go to each individual thermostat to review this information. This is a @strong{very} powerful time and bandwidth saving capability.

@strong{Reload} index.php at any time you prefer to poll each device and read the current parameters of the attributes for all device entries.

See @strong{Troubleshooting} for more information.

@subsubsection Write to a Thermostat - Date and Time
Our research during the development of GNU remotecontrol found users want 2 separate buttons to operate GNU remotecontrol. They want a button to set the time on a thermostat and another button to set the rest of the HVAC settings on the thermostat. Here are the steps when using GNU remotecontrol for writing Date and Time to any device:
	 @enumerate
	 @item
	 Select the device you want to write to by way of the check-box.
	 @item
	 Click @strong{Set Time on Selected Thermostats}.
	 @end enumerate

The Date and Time of the GNU remotecontrol server is displayed to the right of this button. The time of the GNU remotecontrol server is not necessarily the same time of the computer you are using. When you click @strong{Set Time on Selected Thermostats}, the following is achieved:
	 @enumerate
	 @item
	 The exact current Date and Time of Greenwich Mean Time is captured in a memory variable.
	 @item
	 The Date and Time for each selected thermostat is calculated in comparison to Greenwich Mean Time and the GMT offset stored in the profile of each thermostat.
	 @item
	 Writing that calculated Date and Time to each selected thermostat device.
	 @item
	 The Transaction Log is updated with the OLD and NEW Date and Time of each thermostat device.
	 @end enumerate

This capability enables you to then use transactionhistory.php and/or Database Management to see if any thermostat device is gaining or losing time, identifying if you need to investigate a particular thermostat device. Please review the section above called @strong{Time} for more information as to why this functionality has been designed.

@strong{Reload} index.php at any time you prefer to poll each device and read the current parameters of the attributes for all device entries.

See @strong{Troubleshooting} for more information.

@subsubsection Write to a Thermostat - HVAC Settings
Our research during the development of GNU remotecontrol found users want 2 separate buttons to operate GNU remotecontrol. They want a button to set the time on a thermostat and another button to set the rest of the HVAC settings on the thermostat. Here are the steps when using GNU remotecontrol for writing HVAC Settings to any device:
	 @enumerate
	 @item
	 Select the device you want to write to by way of the check-box.
	 @item
	 Change the attributes and parameters as you prefer.
	 @item
	 Click @strong{Submit}.
	 @end enumerate
	 
Once you click the @strong{Submit} button, GNU remotecontrol goes to each device, makes the changes, and populates the Transaction Log in the GNU remotecontrol database. This capability enables you to then use transactionhistory.php and/or Database Management to see if any thermostat device is changing settings, identifying if you need to investigate who is doing this or if the device is problematic. Finally, index.php is refreshed and @strong{only} the attributes that were changed are reflected with their new values. The benefit of this automation is the entire list of device attributes are not polled again. This is a very powerful time and bandwidth saving capability.

@strong{Reload} index.php at any time you prefer to poll each device and read the current parameters of the attributes for all device entries.

See @strong{Troubleshooting} for more information.

@subsubsection Object Parameters
The list of objects and parameters available for you to select is listed below.

@strong{--HVAC Settings--}

@strong{HVAC Mode:}
     @itemize @bullet
     @item
	 Off
     @item
	 Heat
     @item
	 Cool
     @item
	 Auto
	 @end itemize
	
@strong{Fan Mode:}
     @itemize @bullet
     @item
	 Auto
     @item
	 On
     @item
	 Schedule
	 @end itemize

@strong{Setback Status:}
     @itemize @bullet
     @item
	 Normal
     @item
	 Hold
     @item
	 Override
	 @end itemize

@strong{Setback Heat:}
     @itemize @bullet
     @item
	 Degree Setting
	 @end itemize

@strong{Setback Cool:}

     @itemize @bullet
     @item
	 Degree Setting
	 @end itemize

@strong{--Setback Scheduling--}

@strong{Period}
     @itemize @bullet
     @item
	 Morning
     @item
	 Day
     @item
	 Evening
     @item
	 Night
	 @end itemize

@strong{Time}
     @itemize @bullet
     @item
	 Hour
     @item
	 Minute
     @item
	 AM/PM
	 @end itemize

@strong{Day Class Schedules}
     @itemize @bullet
     @item
	 Occupied
     @item
	 Unoccupied
     @item
	 Other
	 @end itemize

@strong{Heat}
     @itemize @bullet
     @item
	 Degree Setting
	 @end itemize

@strong{Cool}
     @itemize @bullet
     @item
	 Degree Setting
	 @end itemize

@strong{Fan}
     @itemize @bullet
     @item
	 Off
     @item
	 On
     @item
	 15, 30, 45 minutes
	 @end itemize

@strong{Default Weekly Schedule - Days}
     @itemize @bullet
     @item
	 Sunday
     @item
	 Monday
     @item
	 Tuesday
     @item
	 Wednesday
     @item
	 Thursday
     @item
	 Friday
     @item
	 Saturday
	 @end itemize

@strong{Default Weekly Schedule - Setback Scheduling}
     @itemize @bullet
     @item
	 Occupied
     @item
	 Unoccupied
     @item
	 Other
	 @end itemize

@strong{--Sensor Settings--}

@strong{Local Sensor - State}
     @itemize @bullet
     @item
	 Disabled
     @item
	 Enabled
	 @end itemize

@strong{Local Sensor - Averaging}
     @itemize @bullet
     @item
	 Disabled
     @item
	 Enabled
	 @end itemize

@strong{Local Sensor - Correction}
     @itemize @bullet
     @item
	 Degree Setting Correction
	 @end itemize

@strong{Remote Sensor 1 - State}
     @itemize @bullet
     @item
	 Disabled
     @item
	 Enabled
	 @end itemize

@strong{Remote Sensor 1 - Averaging}
     @itemize @bullet
     @item
	 Disabled
     @item
	 Enabled
	 @end itemize

@strong{Remote Sensor 1 - Correction}
     @itemize @bullet
     @item
	 Degree Setting Correction
	 @end itemize

@strong{Remote Sensor 2 - State}
     @itemize @bullet
     @item
	 Disabled
     @item
	 Enabled
	 @end itemize

@strong{Remote Sensor 2 - Averaging}
     @itemize @bullet
     @item
	 Disabled
     @item
	 Enabled
	 @end itemize

@strong{Remote Sensor 2 - Correction}
     @itemize @bullet
     @item
	 Degree Setting Correction
	 @end itemize

@section transactionhistory.php
@subsection Purpose
This web page provides the Transaction Log in the GNU remotecontrol application. This web page is read-only, with search fields to quickly and easily find what you are looking for.

@subsection Fields
     @itemize @bullet
	 @item
	 @strong{Thermostat} - The thermostat that was changed.
	 @item
	 @strong{Field} - The device attribute that was changed.
	 @item
	 @strong{Old Value} - The previous parameter of the attribute that was changed.
	 @item
	 @strong{New Value} - The current parameter of the attribute that was changed.
	 @item
	 @strong{Timestamp} - The Date/Time the device attribute was changed.
     @end itemize

@subsection Usage
Enter search values in the respective fields to quickly filter and display the rows you are looking for.

The field headers of this web page are rendered in the display language you choose, but the field data of this web page is not translated into another display language. The field data is only rendered in English. This is because the Proliphix thermostat device only renders in English. This provides you confidence the information you are looking at transactionhistory.php can be easily compared to the information rendered in the web server of the Proliphix thermostat device.

@section Troubleshooting
     @itemize @bullet
	 @item
	 Go to your error log for your Web Server any time you find a problem where you are not receiving an error directly from GNU remotecontrol.
	 @item
	 Review the @emph{errorlog} table to read the information transmitted by the thermostat device to learn why the thermostat device failed to properly respond.
	 @item
	 If the IP enabled thermostat is not available because it is powered off or the data network that contains the IP enabled thermostat has problems, here is what is achieved:
		@enumerate
		@item
		During load of index.php, as it reads the device (IP enabled thermostat) list from the grid at the top to go and get their current settings, should any device be unavailable, GNU remotecontrol will proceed on after a few seconds of no response to look for the next device instead of halting the process.
		@item
		Look to the status indicator next to each selected thermostat device when the submission is complete. This status indicator can render: @emph{Done}, @emph{NoTrans}, or @emph{Error}. A Tool Tip will appear with more information when hovering over this status indicator.
		@end enumerate
     @end itemize

@node Usage Recommendations
@chapter Usage Recommendations

@section  Start Small
You can run GNU remotecontrol on a laptop, a desktop, even a hand-held computer.....as long as you can achieve setting up your Web Server and Database Server.

It will probably be much easier on you to setup a GNU remotecontrol system while using your existing Energy Management Control System. This will allow you to learn, test, try, think, try some more, all side-by-side with all of your existing systems. Then, when you are ready, switch over seamlessly to use GNU remotecontrol as your primary system, along with your (then) old Energy Management Control System, to make sure you are absolutely comfortable with your setup of your GNU remotecontrol system. Finally, once your are comfortable with your GNU remotecontrol, decommission your old Energy Management Control System.

Benefits of running GNU remotecontrol on a smaller hardware combination include:
     @itemize @bullet
	 @item
	 Getting GNU remotecontrol up and running for a Proof-of-Concept.
	 @item
	 Managing the HVAC systems of different sites without having to be at each of those sites.
	 @end itemize

@section Strongly Encouraged
     @itemize @bullet
	 @item
	 Restrict your data network to only allow a few network addresses to connect to the IP enabled thermostats. This makes sure the IP enabled thermostat does not get overloaded from too many users trying to access it where it fails to respond, possibly requiring the IP enabled thermostat to be power cycled. Use, instead, the logged data of by minute and by quarter hour to run your monitoring and reporting. (Please continue reading for more information to accomplish this recommendation.)
	 @item
	 Setup your Remote Monitoring Server to log sensor readings every minute. Do this for 15 concurrent minutes. Delete previous records so you only have the 15 readings in this record set at any given time. Then, you have a granular recording of data in combination with your Remote Monitoring Server recording the same information in 15-minute intervals. It takes about a minute for a change to register on a sensor, shy of an extreme combination of circumstances. This sensor reading approach provides you with all of the monitoring and reporting data you could ever hope for.
	 @item
	 Script setting the time on your IP enabled thermostats. Recommend setting the time every month, at a minimum. Clocks of all kinds are always gaining or losing a few seconds here and there, to the point that it adds up to a few minutes here and there. Setting the time on a regular monthly basis avoids the whole gaining and losing problem.
	 @item
	 Roaming @uref{http://en.wikipedia.org/wiki/Brownout_%28electricity%29,Brown Outs} and Natural Disasters in the vicinity of your thermostat devices cause for your thermostat devices to have all kinds of power supply problems. Your thermostat device may very well  have a weak on-board battery. That means the Date and Time on your thermostat has a poor chance of being correct and any Setback Scheduling on the device has little to no chance of being properly executed. Set the Date and Time every hour on your thermostat device, at the very minimum. The fact that a Natural Disaster has occurred means your energy management strategy will most likely not be able to occur, anyway. Plan some type of HVAC Settings for dealing with a Natural Disaster. Perhaps a plan for the Winter months and a plan for the Summer months. Perhaps turning on the fan for @uref{http://en.wikipedia.org/wiki/Ventilation_%28architecture%29,Architecture Ventilation} is the best course of action, promoting health and safety in the facility. Perhaps activating heating or cooling is also in the best course of action. Use scripting to help you meet this need.
	 @item
	 Use Database Management to change the Time Zone field in the thermostat profile when Daylight Savings Time occurs. For example, Database Management will convert North America Eastern Standard Time, with a GMT offset of -5, to North America Eastern Daylight Time, with a GMT offset of -4. Remember, there is Australian Eastern Time and North American Eastern Time, each with Daylight and Standard options. Clearly, Database management will help you keep all of your settings correct in your GNU remotecontrol database. Using Database Management will also save you the time and effort of using index.php to manually change each thermostat you have setup in GNU remotecontrol. Set it up as a SQL script to change the Time Zone entry in the thermostat profile. Run the script when Daylight Savings Time occurs.
	 @item
	 Script setting your heating/cooling/ventilation levels as a comparison of outdoors conditions. Say so many degrees difference between outside and inside, same for a difference in percentage of relative humidity.
	 @item
	 Use the Remote Monitoring of your location to change a @uref{http://css-tricks.com/using-weather-data-to-change-your-websites-apperance-through-php-and-css/,website appearance}.
	 @item
	 Use the Remote Monitoring of your location to build @uref{http://en.wikipedia.org/wiki/Software_widget,Software Widgets} and/or @uref{http://en.wikipedia.org/wiki/Web_widget,Web Widgets}.
	 @item
	 Setup a simple web page that will fit the temperature and humidity readings of both the thermostats and the weather conditions you care about onto the screen of your @uref{http://en.wikipedia.org/wiki/Microbrowser,cell phone}. You then can easily see, @uref{http://en.wikipedia.org/wiki/Mobile_Web,in a single viewing}, what you care to know.
	 @item
	 Editing of a Display Language in GNU remotecontrol mandates editing the contents of the @emph{language} table and the @emph{resource} table in the GNU remotecontrol database. Edit these tables with the entries you prefer. Reload index.php in your browser. The changes you made to the @emph{language} table and the @emph{resource} table in the GNU remotecontrol database are then displayed in all GNU remotecontrol user account sessions of GNU remotecontrol.
	 @item
	 Adding a Display Language to the GNU remotecontrol database mandates adding data to the @emph{language} table and the @emph{resource} table in the GNU remotecontrol database. Add the new fields and data with the entries you prefer. Reload index.php in your browser. The changes you made to the @emph{language} table and the @emph{resource} table in the GNU remotecontrol database are then displayed in all GNU remotecontrol user account sessions of GNU remotecontrol.
	 @end itemize

@section  Food for Thought
There are many different ways you can use the data you collect:
     @itemize @bullet
	 @item
	 @uref{http://en.wikipedia.org/wiki/Rss,Really Simple Syndication} (RSS)
	 @item
	 @uref{http://en.wikipedia.org/wiki/Atom_%28standard%29,Atom}
	 @item
	 @uref{http://en.wikipedia.org/wiki/Web_service,Web Service}
	 @item
	 @uref{http://en.wikipedia.org/wiki/Software_widget,Software Widget}
	 @item
	 @uref{http://en.wikipedia.org/wiki/Web_widget,Web Widget}
	 @end itemize

@node Use Case Scenarios
@chapter Use Case Scenarios
The following are very real examples, with abstract names, to illustrate how to put all of this technology together so it will work for you.

@section Scenario 1 - Building Maintenance
This person is overworked and underpaid at the @strong{ABC Corporation}. They have a boss that all the time wants to know if ``thus and so'' got done. This person needs a way to get things done faster and have automated documentation that it is complete.

This person uses GNU remotecontrol to help with setting the HVAC in this company, and does a screen shot of the Transaction Log for their boss to see, as their boss wants an email to see what happens.

@section Scenario 2 - Office Worker
This person is overworked and underpaid at @strong{Super-Duper Insurance Company}. They haves a boss that all the time wants to know if ``thus and so'' got done. They need a way to get things done faster and have automated documentation that it is complete.

They use GNU remotecontrol to help with setting the HVAC in this company, and does a screen shot of the Transaction Log for their boss to see, as their boss wants an email to see what happens.

@section Scenario 3 - Property Manager
This person is overworked and underpaid at @strong{Manage 4 You Property Management Corporation}. They have a boss that all the time wants to know if ``thus and so'' got done. This person needs a way to get things done faster and have automated documentation that it is complete.

This person uses GNU remotecontrol to help with setting the HVAC in the properties to achieve considerable savings on energy cost, and does a screen shot of the Transaction Log for their boss to see, as their boss wants an email to see what happens.

@section Scenario 4 - Restaurant Operations
This person is doing pretty well in life. This person owns several restaurants around town called @strong{Super Good Eats}. Each site has 2 different HVAC units. This person also setup an IP thermostat in their house. Later, they needed to care for their elderly mother, so they put an IP thermostat in the house of their mother. When this person sets the IP thermostat in their house, they set the house of their mother the same way. This way, this person knows pretty well how things are in the house of their mother, even though they are not there with their mother.

The corporate office is all of the time messing with the IP thermostat and there is a lot of inner-office politics from this problem. This person wanted that problem to go away, and to quit paying through the nose in electric bill to keep the air conditioning going. This person set's the corporate office the same as their home, so they know the climate in the office pretty is much the same as the climate in their home. The owner can now can shut down arguments often before they occur.

This person is saving so much money on energy costs they were able to buy a cabin in the mountains for when they and their family want to get away from the ocean front, where they live. This person remotely sets the temperature before they arrive at their cabin. The owner also makes sure that the temperature and humidity in their cabin is not too extreme when they are away, so pipes don't burst, and that there is not a mold/mildew problem.

@section Scenario 5 - Certified Energy Manager
The Certified Energy Manager (CEM) needs to manage multiple sites for multiple customers. The CEM needs to log data over a long time period. The CEM needs to adjust set-points on different HVAC equipment to work out the specific energy control measures for each customer. The CEM has multiple @uref{http://en.wikipedia.org/wiki/Direct_Digital_Control,Direct Digital Control} (DDC) points. The CEM needs to know a great deal of information from these DDC points. The CEM could very much benefit from having all of this information coming to them in a structured manner, all stored in a database, leveraging their already existing Information Technology to access and manage this collection of resources.

The CEM can setup GNU remotecontrol over different computers. The Web Server, Database Server, Email Server, and Remote Monitoring Server are all separate from the CEM laptop. The CEM is free to travel and access GNU remotecontrol as necessary to adjust set-points, while receiving notifications that something needs attention. The CEM is not bound to their office all day long.

@section Scenario 6 - Industrial Manufacturing Facility
This site has many different air-handling units, many different dampers, and several sources of heat. The facility has adequate staff to handle on-site maintenance. See the section above regarding the Certified Energy Manger to learn more about the aspect of accessing and managing Direct Digital Control (DDC) points.

The benefit here is using GNU remotecontrol to decrease reaction time when Remote Monitoring finds a temperature or humidity threshold is close to being reached and not interrupt manufacturing operations.

@section Scenario 7 - Facility Manager
This scenario is a refinement of the Industrial Manufacturing Facility illustration, but wider in scope than only manufacturing.

The Facility Manager often does not have a Certified Energy Manger to work with them. See the section above regarding the Certified Energy Manger to learn more about the aspect of accessing and managing Direct Digital Control (DDC) points.

This site has many different air-handling units, many different dampers, and several sources of heat. The facility has adequate staff to handle on-site maintenance. The benefit here is using GNU remotecontrol to decrease reaction time when Remote Monitoring finds a temperature or humidity threshold is close to being reached and not interrupt facility operations.

Examples of their daily maintenance routine includes:

@itemize @bullet
	@item
	Cleaning thermostats and sensors after they get a build up of dust, oil, or other pollutants on them, defeating their ability to operate well or at all.
	@item
	Assist with device calibrating efforts, as a hand-held thermostat and a networked sensor showing the same reading is always preferred.
	@item
	Justifying HVAC upgrades, as appropriate, to different areas of the facility. Examples of this include a fan, a compressor, a coil, or changing from constant air volume to a variable air volume terminal unit.
	@item
	Managing workers to achieve these tasks.
	@end itemize

There are loads of reasons to implement automation in this facility. Mostly, to help the staff accomplish their work in a timely manner, and assure they have a way to schedule vacation time for the staff.

@section Scenario 8 - External Information
See the @strong{Cautionary} paragraph in the @strong{Power over Ethernet} section. It is necessary to understand about powering a thermostat for this scenario to make sense. There are countless ways to bring external information sensors into your IP enabled thermostat and use your Remote Monitoring Server to get that data to you.

@section Scenario 9 - Financial Manager
The Financial Manager is the person that has spending authority over the facility. Month after month, they have high electric and fuel bills because their facility is running either too hot or too cold due to an inability to effectively operate the HVAC systems. They do not have separate meters to know what part of the facility is using however much electricity or fuel. They simply have to do something, as they cannot justify these high expense every month. They lead a @uref{http://en.wikipedia.org/wiki/Cost%E2%80%93benefit_analysis,Cost Benefit Analysis} for their facility, leveraging the staff that works at the facility, a Certified Energy Manager, off-site staff, and anyone else they need to complete their Cost Benefit Analysis. The end result is to know if GNU remotecontrol will help them lower their electric and fuel bills. Most likely, it will.

@section Scenario 10 - Automated Meter Reading
@uref{http://en.wikipedia.org/wiki/Automated_meter_reading,Automated Meter Reading} is not the same as @uref{http://en.wikipedia.org/wiki/Smart_meter,Smart Metering}. They are both part of @uref{http://en.wikipedia.org/wiki/Smart_meter#Advanced_metering_infrastructure,Advanced Metering Infrastructure}. Smart Metering has much more capability than Automated Meter Reading. Suffice it to say, if you are going to implement either of these technologies, it only makes sense to be able to do something with all of that data. Responding by changing your HVAC system, as appropriate, very much helps to increase the effectiveness of you energy management strategy. Connect your Remote Monitoring Server to the data coming in from your Automated Meter Reading or Smart Metering so you can compare that data to the rest of the data you are capturing. You will have a very clear picture of how much energy you are using to achieve your energy management strategy.

@section Scenario 11 - Smart Metering
@uref{http://en.wikipedia.org/wiki/Smart_meter,Smart Metering} is not the same as @uref{http://en.wikipedia.org/wiki/Automated_meter_reading,Automated Meter Reading}. They are both part of @uref{http://en.wikipedia.org/wiki/Smart_meter#Advanced_metering_infrastructure,Advanced Metering Infrastructure}. Smart Metering has much more capability than Automated Meter Reading. Suffice it to say, if you are going to implement either of these technologies, it only makes sense to be able to do something with all of that data. Responding by changing your HVAC system, as appropriate, very much helps to increase the effectiveness of you energy management strategy. Connect your Remote Monitoring Server to the data coming in from your Automated Meter Reading or Smart Metering so you can compare that data to the rest of the data you are capturing. You will have a very clear picture of how much energy you are using to achieve your energy management strategy.

@section Scenario 12 - Utility Providers
This provider has decided to offer an energy management service to their customer. They have thousands and thousands of customers. They need a way to help their customer manage their thermostat for generating heating and cooling, but also maintain air flow in their residential and commercial facilities. This provider also needs to improve their ability to monitor energy consumption, plan for energy manufacturing, and manage emergencies such as roaming @uref{http://en.wikipedia.org/wiki/Brownout_%28electricity%29,Brownouts} caused by storms and other catastrophic events. Please see the section @strong{Usage Recommendations} for more information.

Turning off all power to the HVAC system as a whole removes the ability of the HVAC fan to circulate air and maintain air flow. This defeats the energy management strategy, as circulating some amount of air necessary for a variety of reasons. Perhaps most importantly, @uref{http://en.wikipedia.org/wiki/Environmental_Health_and_Safety,Environmental Health and Safety} has different ventilation requirements for residential, commercial, and industrial facilities.

This provider has a 2 part offering to their customers. Part 1, the provider uses GNU remotecontrol to do more than just turn off the electricity, water, and/or fuel to the HVAC unit. They are now capable of providing either heating or cooling adjustments while having the HVAC fan circulate air, or only circulate air without a heating or cooling adjustment. This combination of options now available are much more than turning off the entire HVAC unit. Part 2, the provider also uses Smart Metering to connect HVAC usage with energy meter readings to log readings on an hourly basis. This combined offering provides for better control and usage of energy resources, HVAC resources, and visibility to understand customer energy usage. Energy usage as the billing cycle progresses and historically, of course. Imagine how happy the customer will be to be able to see that granular level of detailed billing.

@section Summary
There is no single reason to implement GNU remotecontrol. The reasoning is often multiple and overlapping. All of these reasons help to decrease your costs and increase your comfort level. Think locally and globally, and you will easily see there is more good reason to use GNU remotecontrol than ever considered before.

@node Implementation Cost
@chapter Implementation Cost
The GNU remotecontrol framework leverages already existing Information Technologies of a Data Network, Web Server with a complete Operating System, Database Server, Remote Monitoring Server, and Email Server. The cost to implement GNU remotecontrol is then reduced to the following ordered list:  

@enumerate
@item
Labor to obtain and prepare GNU remotecontrol.
@item
Labor to configure your already existing Information Technologies.
@item
Purchase cabling to run from your data network to your IP enabled thermostat.
@item
Labor to install cabling from your data network to your IP enabled thermostat.
@item
Purchase IP enabled thermostat.
@item
Purchase a power supply for IP enabled thermostat.
@item
Labor to install IP enabled thermostat.
@item
Labor to install power supply for IP enabled thermostat.
@item
Labor to configure IP enabled thermostat.
@end enumerate

@quotation Note:
It is highly recommended you choose external sensors for your IP enabled thermostat having pre-wired cabling long enough to reach where you need the external sensor to reside. Adding in more cable between a device and an external sensor is often problematic. Mixing different cable types, in either quality of cable or type of cable.....or both.....very often result with problems to having accurate sensor readings. This pre-wired cabling, per manufacturer design and intent of their sensor, decreases the likelihood of the sensor resulting with skewed metrics. Most external sensors are extremely touchy. This is a good thing, as it provides you with accurate metrics. However, proper cable selection of an external sensor is paramount to proper metrics. Go with the option of a manufacturer having enough cable as-built to meet your needs and not splicing on additional cable. Finally, consider the benefit of connecting your external sensor directly to your IP enabled thermostat, provided the IP enabled thermostat can accept it. The benefit of sensor averaging is highly valuable to improving system performance. A direct connection to the IP enabled thermostat also eliminates the need for another power supply to operate the external sensor.
@end quotation

The cost to implement GNU remotecontrol, in comparison with a lesser energy management strategy for any HVAC system, justifies the completion of a @uref{http://en.wikipedia.org/wiki/Cost%E2%80%93benefit_analysis,Cost Benefit Analysis} to determine if GNU remotecontrol is appropriate for your circumstances. Most likely, it is.

@node Roadmap
@chapter Roadmap

The GNU remotecontrol Road Map is planned for and limited by the following boundaries.

@section Interoperability
The Future of GNU remotecontrol is a commitment to International standards and protocols for Information Technology to provide availability, relevance, transparency, and maintenance of the GNU remotecontrol framework. The BACnet XML Working Group is an excellent example of these attributes. For more information, @xref{GNU remotecontrol & BACnet}.

@section HVAC Original Equipment Manufacturer - Feature Addition
OEM's have not added the feature of IP enablement in the past. The benefits for OEM's to add IP enablement to their thermostat product offering far outweigh any hindrance from remaining a standalone device. Examples of these benefits include interoperability, furthered energy management strategies, and increased customer satisfaction from the new capability of remote access to their thermostat.

@section HVAC Aftermarket Equipment Manufacturer - Feature Addition
AEM's have added the feature of IP enablement in the past with limited success. This is mostly due to the dependency on another piece of proprietary technology to handle translation of some proprietary technology to the data network for the thermostat. The proprietary aspect of the technology will often bottleneck the success of that technology. The success of the thermostat as a complimentary good is well proven. There are hundreds of different programmable thermostats for sale at both the local home supply stores and globally. Proper selection of any aftermarket product or service is critical to the success of the primary product being supplemented. A simple example of this is selecting the different parts to enhance an engine for an automobile, or a boat, or a snow mobile, et cetera. Aftermarket Equipment Manufacturers must demonstrate they have in their offering the capability to not damage the existing primary product. Specifically, a heating and cooling system. There must also be solid proof their offering enhances system performance by adding additional feature/benefit combinations. Finally, their offering must be constructed to meet manufacturing directives, such as @uref{http://en.wikipedia.org/wiki/ROHS,RoHS}.

@section Cost Benefit Analysis
The outcome of your @uref{http://en.wikipedia.org/wiki/Cost%E2%80%93benefit_analysis,Cost Benefit Analysis}  will help you see your @uref{http://en.wikipedia.org/wiki/Rate_of_return,Return on Investment} (ROI). This will most likely be the bottom line to the success of GNU remotecontrol for you. The @uref{http://sccmet.com/whatis.html,Retro Commission} (RCx) of any facility, small or large, is best evaluated by.....@strong{is it worth it}?  Even @uref{http://en.wikipedia.org/wiki/Testing_Adjusting_Balancing,Testing-Adjusting-Balancing} a system is well worth the time and effort, to make sure your system is setup as suitable for your needs and wants. The answer to this ROI question mandates completing several different calculations to make that determination. New construction does not require as many calculations to come to that determination, but often mandates different aspects to be evaluated and then calculated. Don't forget to add in the cost/saving of Information Technology. This list includes system design, capital expenditures, and system operation. Then, don't forget to add in your End User cost/saving for training and system operation.

Not every facility must have a complete set of calculations to know what you need to do for your energy management strategy. Consider simple advice on best practices offered by your @strong{qualifed} Decision Makers to help you select what is best for you. Regardless of what you choose for your energy management strategy, have a plan.....work the plan.....review and revise your plan, as appropriate.

The cost to implement GNU remotecontrol, in comparison with a lesser energy management strategy for any HVAC system, justifies the completion of a @uref{http://en.wikipedia.org/wiki/Cost%E2%80%93benefit_analysis,Cost Benefit Analysis} to determine if GNU remotecontrol is appropriate for your circumstances. Most likely, it is.

@node REFERENCE
@chapter REFERENCE

@section Cabling 101
@subsection  Introduction

The intent of this writing is @strong{not} to make you an expert in cabling. The intent is to provide you with the necessary reference information, tips, and recommendations for you to wisely use cabling. There is no, repeat.....no substitute for hands on experience with cabling.

Please carefully read all of this information before you attempt your cabling efforts. Experience is a great teacher, so don't be afraid or discouraged if you mix up wiring patterns or do not terminate a connection well enough through the proper amount of pressure on a wire connector in the beginning of your cabling efforts.

@subsection  Cable
@uref{http://en.wikipedia.org/wiki/Category_5_cable,Category 5 cable} is available in many forms. The cable is solid core 24-@uref{http://en.wikipedia.org/wiki/American_wire_gauge,AWG}. 8 separately jacketed wires, twisted in pairs, making 4 pairs all contained within a protective jacket. The jacket that wraps around that cable is either @uref{http://en.wikipedia.org/wiki/Plenum_cable,Plenum} or Non-Plenum. Plenum cable is rated for a fire hazard area. Category 5 cabling is often rated as @uref{http://en.wikipedia.org/wiki/Low_voltage,low-voltage}, meaning you do not need a license to install the cable. Please contact your local fire authority for more information. 

@subsection  Grounding
Proper cable grounding is essential for safety. The assumption that the cable carries a low amount of voltage is true, but it also carries enough capability to damage the equipment connected together via your cable and you.....the cabling person. The differences between @uref{http://en.wikipedia.org/wiki/Surge_suppression,surge-suppression} and @uref{http://en.wikipedia.org/wiki/Transient-voltage-suppression_diode,transient-voltage-suppression} cannot be stated enough. Please contact your local fire authority for more information.

@subsection  Installation
Category 5 cable is installed in either @uref{http://en.wikipedia.org/wiki/Electrical_conduit,electrical conduit}, @uref{http://en.wikipedia.org/wiki/Cable_tray,cable trays}, or @uref{https://www.google.com/search?q=j-hooks,J-Hooks}. Cable must, must, must be properly supported to prevent stretching the copper wire and cause for minor breaks in the wire. Minor wire breaks cause for performance issues in @uref{http://en.wikipedia.org/wiki/Quality_of_service,quality-of-service}, and lead to a breakage in one or more wires. Cable is laid out in a pattern of either a @uref{http://en.wikipedia.org/wiki/Main_distribution_frame,main distribution frame} or an @uref{http://en.wikipedia.org/wiki/Intermediate_distribution_frame,intermediate distribution frame}.

@subsection  Termination
Properly installed cable is then connected with some type of @uref{http://en.wikipedia.org/wiki/Registered_jack,registered jack/plug}. This end result is called a cable termination or a wire termination.

@subsection  Testing
All cabling must have @uref{http://en.wikipedia.org/wiki/Continuity_test,continuity} all of the time. A simple @uref{http://en.wikipedia.org/wiki/Cable_tester,cable tester} is probably the most manageable @uref{http://en.wikipedia.org/wiki/Continuity_tester,continuity tester} there is after cable has been terminated with a registered jack/plug to determine if you have continuity. If you have nothing else to test with, connecting 2 bare wires together with a @uref{http://en.wikipedia.org/wiki/Wire_nut,wire nut} on one end, then testing the other ends with a @uref{http://en.wikipedia.org/wiki/Multimeter,multi-meter} is always an option. This is quite valuable after cable has been laid in place and you want to know if it has continuity before terminating the cable.

@subsection  Usage Notes
	@itemize @bullet
	@item
	You have the probability of good @uref{http://en.wikipedia.org/wiki/Quality_of_service,quality-of-service} after cable is properly installed, but it is not guaranteed. Wise planning of your installation is paramount to not having problems related to cabling.
	@item
	Most cable installations go through some type of usage change during the lifecycle of the cable. Today, imagine you have 1 device connecting to 1 port on your data network switch. Tomorrow, you may need more devices to connect to the same port on that same data network switch. That means you need to put another data network switch into the picture. Where that additional data network switch will reside is the unknown. Moving more data across that same cable means the quality of that cable, and the quality of installing that cable, really does matter. Sure, you can always pull more cable. However, you still need more ports on a data network switch that lives somewhere to connect those additional devices. Wise choices for cable installation provides more options to choose from, options that can easily increase cost effectiveness for owning and operating your equipment.
	@item
	Your continuity tester will help you see when you have the proper wiring pattern and the proper amount of pressure on a wire termination.
	@item
	A majority of the cables manufacturers post a required a minimum bend radius for their cable of, "@emph{four times the diameter}" to avoid problems. A cable loop that is too small results in nothing more than broken cable. Minor wire breaks cause for performance issues in quality-of-service. It is not worth installing lesser quality cable that will cause you problems, nor is it worth installing good cable in a way that will cause you problems. Plan your installation and you will have years of satisfaction from your cable.
	@item
	Pull some extra cable, loop it in a circle, and wire tie the cable loop together. That provides for moving terminated cable a bit if necessary, and provides extra cable should you mix up things when you terminate the cable and need to correct the termination.
	@item
	The satisfaction from installing your own cable is great, indeed. The cost of installing your own cable is sometimes best paid for through a cabling company. Count the cost and choose either your own labor or labor from a cabling company that best suits you requirements.
	@item
	Remember, @uref{http://en.wikipedia.org/wiki/Quality_of_service,quality-of-service} is only possible after cable is properly installed.
	@end itemize

@subsection  Cautionary
Whatever you do, always install your cable as required by your fire authority and always, always, always properly support your cable with either electrical conduit, cable trays, or J-Hooks. Suffice it to say, cable that is not properly supported will eventually have small cracks in the wire, resulting in a @uref{http://en.wikipedia.org/wiki/Quality_of_service,quality-of-service} loss, progressing to intermittent continuity problems, and ultimately completely break the wire somewhere within the cable jacket.

@section Power over Ethernet (PoE) 101
@subsection Introduction
@uref{http://en.wikipedia.org/wiki/Power_over_Ethernet,Power over Ethernet} is quite possibly the best thing to come along to the Information Technology world of hardware since the 1980's. Literally, it is that wonderful!  The essence of PoE is you can use @uref{http://en.wikipedia.org/wiki/Category_5_cable,Category 5 cable,cable} that is rated as @uref{http://en.wikipedia.org/wiki/Low_voltage,low-voltage} to power a multitude of PoE hardware @uref{http://en.wikipedia.org/wiki/Power_over_Ethernet#Uses,devices}. The list of what is capable of PoE is constantly growing. Here are some common PoE terms to understand.

@subsection Power Sourcing Equipment (PSE)
The @uref{http://en.wikipedia.org/wiki/Power_over_Ethernet#Power_sourcing_equipment,PSE} is the network PoE element that inserts power onto a Category 5 cable. It may be an endspan device, such as a PoE-enabled data network switch, or a midspan device located between the data network switch and the Powered Device (PD).

@subsection Powered Device (PD)
A @uref{http://en.wikipedia.org/wiki/Power_over_Ethernet#Powered_device,PD} is the PoE capable device that receives power over Category 5 cable. It could be a PoE-enabled IP telephone, a Wireless Access Point, an IP enabled HVAC thermostat, any other IP device that needs electrical power.

@subsection Midspan
A midspan device is a PSE that inserts power onto the Category 5 cable. It is situated between the data network switch and the PD. Typically, midspan devices are added to existing networks to allow the use of PoE-enabled PD's.

@subsection Endspan
An endspan device is typically a data network switch that incorporates PoE capabilities. Endspan devices often are implemented when a new network is created, to avoid adding both midspan devices and a data network switch.

@subsection  Usage Notes
Now, should you need/want to move a device such as a Wireless Access Point, an IP telephone, or an HVAC sensor to another location.....image how nice it would be to not have to juggle the powering of that device. There are many @uref{http://en.wikipedia.org/wiki/Power_over_Ethernet#Powering_devices,combination} options available for PoE capable hardware.

Pressing onward, imagine a device is locked up and you need to power the device off and then turn it back on. Walking to that device could very well be a hassle, and could require opening a lot of access panels. Using PoE, you can turn off the power over your data network and then turn it back on.

The thing for you with PoE is you need to determine how much electrical power you need. That will tell you what specification you need to comply with. The manufacturer of the PoE device will tell you what standards they are compatible with. From there, buy the PoE supply. Your selection is either a simple single-port power injector (Midspan), or a @uref{http://www2.microsemi.com/PowerDsine/Products/Midspan/,rack-mounted} midspan power injector, or buy new data network switches that have PoE built-in as an integrated feature (Endspan). Count the cost and choose as best suits you.

The biggest benefit of PoE is you have the ability to have a better handle on your @uref{http://en.wikipedia.org/wiki/Surge_suppression,surge-suppression} and @uref{http://en.wikipedia.org/wiki/Transient-voltage-suppression_diode,transient-voltage-suppression} efforts. This is because you so chose to install your cabling as recommended. Running a wire as an extension off of an HVAC unit, or a wall outlet, to supply electricity to power the PoE capable hardware, without also providing proper protection for that PoE hardware, is absolutely and positively nothing but trouble. That trouble often shows up as electrical damage in the form of peculiar performance of the hardware, or even hardware failure.

@subsection  Cautionary
Here is a strong and very simple example of why powering your IP enabled thermostat from an HVAC unit is a bad idea. The drain line on the HVAC unit somehow gets blocked. This triggers the float switch to prevent flooding and that powers down the whole system. The thermostat has then been turned off due to the absence of power to the thermostat. The same is true if you power your IP enabled thermostat from your HVAC and not PoE. @strong{That means you will be unable to access your IP enabled thermostat from your data network}.

@quotation Note:
You can also hook your float switch to your IP enabled thermostat, as an external information sensor, and know when that float switch is activated via Remote Monitoring. Power over Ethernet is a really good idea.
@end quotation

Whatever you do, always use cable safely. Please contact your local fire authority for more information.

@node Contributors
@chapter Contributors
Stephen Dawson, Robert Tallent, Robert Vincent, Michael Jacoby, and a host of others too many to keep track of. Their contribution is well respected and greatly appreciated.

@node GNU Free Documentation License
@appendix GNU Free Documentation License
@c In order for the below `@include' command to work, the included file must be in the same directory as this file.
@include fdl.texi

@c Texinfo will populate the index automatically with the index entries you create using the `@cindex' command throughout the document. For more information, see Chapter 13 of the Texinfo manual.
@c @node Index
@c @chapter Index
@c @unnumbered Index
@c @printindex cp

@bye
