mirror of
https://github.com/eclipse/upm.git
synced 2025-03-26 02:10:02 +03:00
156 lines
4.8 KiB
C++
156 lines
4.8 KiB
C++
![]() |
/*
|
||
|
* Author: Jon Trulson <jtrulson@ics.com>
|
||
|
* Copyright (c) 2016 Intel Corporation.
|
||
|
*
|
||
|
* Permission is hereby granted, free of charge, to any person obtaining
|
||
|
* a copy of this software and associated documentation files (the
|
||
|
* "Software"), to deal in the Software without restriction, including
|
||
|
* without limitation the rights to use, copy, modify, merge, publish,
|
||
|
* distribute, sublicense, and/or sell copies of the Software, and to
|
||
|
* permit persons to whom the Software is furnished to do so, subject to
|
||
|
* the following conditions:
|
||
|
*
|
||
|
* The above copyright notice and this permission notice shall be
|
||
|
* included in all copies or substantial portions of the Software.
|
||
|
*
|
||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||
|
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||
|
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||
|
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||
|
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||
|
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||
|
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||
|
*/
|
||
|
#pragma once
|
||
|
|
||
|
#include <string>
|
||
|
|
||
|
#include "ozwinterface.hpp"
|
||
|
|
||
|
namespace upm {
|
||
|
|
||
|
/**
|
||
|
* @library ozw
|
||
|
* @comname UPM API for the Trane TZEMT400 Z-Wave Thermostat.
|
||
|
* @con uart
|
||
|
*
|
||
|
* @brief UPM API for Trane TZEMT400 Z-Wave Thermostat
|
||
|
*
|
||
|
* This module allows for monitoring certain elements of a Trane
|
||
|
* TZEMT400 Z-Wave Thermostat. It was tested with a Trane
|
||
|
* TZEMT400BB32MAA variant.
|
||
|
*/
|
||
|
|
||
|
class TZEMT400 : public ozwInterface {
|
||
|
public:
|
||
|
|
||
|
/**
|
||
|
* These values correspond to the index values of the given node
|
||
|
*
|
||
|
*/
|
||
|
typedef enum : int {
|
||
|
INDEX_Temperature = 0,
|
||
|
INDEX_Mode = 1,
|
||
|
INDEX_Operating_State = 2,
|
||
|
INDEX_Heating_Point = 3,
|
||
|
INDEX_Cooling_Point = 4,
|
||
|
INDEX_Fan_Mode = 5,
|
||
|
INDEX_Fan_State = 6,
|
||
|
INDEX_FC_Units = 14 // F or C units
|
||
|
} INDEX_VALUES_T;
|
||
|
|
||
|
/**
|
||
|
* TZEMT400 constructor
|
||
|
*
|
||
|
* @param nodeID The ZWave node number of the device we are
|
||
|
* interested in. Use the ozwdump example to see what nodes you
|
||
|
* have available.
|
||
|
*/
|
||
|
TZEMT400(int nodeID);
|
||
|
|
||
|
/**
|
||
|
* TZEMT400 Destructor
|
||
|
*/
|
||
|
~TZEMT400();
|
||
|
|
||
|
/**
|
||
|
* Return the current measured temperature in Celcius or
|
||
|
* Fahrenheit.
|
||
|
*
|
||
|
* @param fahrenheit true to return data in Fahrenheit, false for
|
||
|
* Celicus. Celcius is the default.
|
||
|
* @return The temperature in degrees Celcius or Fahrenheit.
|
||
|
*/
|
||
|
float getTemperature(bool fahrenheit=false);
|
||
|
|
||
|
/**
|
||
|
* Return a string representing the current Mode. This is usually
|
||
|
* something like "Cool", "Heat", "Auto", etc.
|
||
|
*
|
||
|
* @return a string representing the current mode.
|
||
|
*/
|
||
|
std::string getMode();
|
||
|
|
||
|
/**
|
||
|
* Return a string representing the current Operating State. This
|
||
|
* is usually something like "Idle", or "Cooling".
|
||
|
*
|
||
|
* @return a string representing the current operating state.
|
||
|
*/
|
||
|
std::string getOperatingState();
|
||
|
|
||
|
/**
|
||
|
* Return the current Heating Point temperature in Celcius or
|
||
|
* Fahrenheit. This is the temperature at which the thermostat
|
||
|
* will want to engage Heat.
|
||
|
*
|
||
|
* @param fahrenheit true to return data in Fahrenheit, false for
|
||
|
* Celicus. Celcius is the default.
|
||
|
* @return The Heating Point temperature in degrees Celcius or
|
||
|
* Fahrenheit.
|
||
|
*/
|
||
|
float getHeatingPointTemperature(bool fahrenheit=false);
|
||
|
|
||
|
/**
|
||
|
* Return the current Cooling Point temperature in Celcius or
|
||
|
* Fahrenheit. This is the temperature at which the thermostat
|
||
|
* will want to engage Cooling.
|
||
|
*
|
||
|
* @param fahrenheit true to return data in Fahrenheit, false for
|
||
|
* Celicus. Celcius is the default.
|
||
|
* @return The Cooling Point temperature in degrees Celcius or
|
||
|
* Fahrenheit.
|
||
|
*/
|
||
|
float getCoolingPointTemperature(bool fahrenheit=false);
|
||
|
|
||
|
/**
|
||
|
* Return a string representing the current Fan Mode. This
|
||
|
* is usually something like "Auto Low".
|
||
|
*
|
||
|
* @return a string representing the Fan Mode.
|
||
|
*/
|
||
|
std::string getFanMode();
|
||
|
|
||
|
/*
|
||
|
* Return a string representing the current Fan State. This
|
||
|
* is usually something like "Idle".
|
||
|
*
|
||
|
* @return a string representing the Fan State.
|
||
|
*/
|
||
|
std::string getFanState();
|
||
|
|
||
|
/**
|
||
|
* Query the device and update internal state. Strictly speaking,
|
||
|
* this is not really neccessary -- a device may send this data on
|
||
|
* it's own at periodic intervals. This method causes OZW to
|
||
|
* specifically query the device for it's current information.
|
||
|
* The device may take some time to respond.
|
||
|
*/
|
||
|
void update();
|
||
|
|
||
|
|
||
|
protected:
|
||
|
private:
|
||
|
};
|
||
|
}
|