IRremoteESP8266: IRPanasonicAc Class Reference

IRremoteESP8266

Public Member Functions | Static Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
IRPanasonicAc Class Reference

Class for handling detailed Panasonic A/C messages. More...

`#include <ir_Panasonic.h>`

Collaboration diagram for IRPanasonicAc:
[legend]

## Public Member Functions

| IRPanasonicAc (const uint16_t pin, const bool inverted=false, const bool use_modulation=true)
| Class constructor. More...
void | stateReset (void)
| Reset the state of the remote to a known good state/sequence. More...
void | send (const uint16_t repeat=kPanasonicAcDefaultRepeat)
| Send the current internal state as an IR message. More...
int8_t | calibrate (void)
| Run the calibration to calculate uSec timing offsets for this platform. More...
void | begin (void)
| Set up hardware to be able to send a message. More...
void | on (void)
| Change the power setting to On. More...
void | off (void)
| Change the power setting to Off. More...
void | setPower (const bool on)
| Control the power state of the A/C unit. More...
bool | getPower (void)
| Get the A/C power state of the remote. More...
void | setTemp (const uint8_t temp, const bool remember=true)
| Set the temperature. More...
uint8_t | getTemp (void)
| Get the current temperature setting. More...
void | setFan (const uint8_t fan)
| Set the speed of the fan. More...
uint8_t | getFan (void)
| Get the current fan speed setting. More...
void | setMode (const uint8_t mode)
| Set the operating mode of the A/C. More...
uint8_t | getMode (void)
| Get the operating mode setting of the A/C. More...
void | setRaw (const uint8_t state[])
| Set the internal state from a valid code for this protocol. More...
uint8_t * | getRaw (void)
| Get a PTR to the internal state/code for this protocol. More...
void | setQuiet (const bool on)
| Set the Quiet setting of the A/C. More...
bool | getQuiet (void)
| Get the Quiet setting of the A/C. More...
void | setPowerful (const bool on)
| Set the Powerful (Turbo) setting of the A/C. More...
bool | getPowerful (void)
| Get the Powerful (Turbo) setting of the A/C. More...
void | setIon (const bool on)
| Set the Ion (filter) setting of the A/C. More...
bool | getIon (void)
| Get the Ion (filter) setting of the A/C. More...
void | setModel (const panasonic_ac_remote_model_t model)
| Set the model of the A/C to emulate. More...
panasonic_ac_remote_model_t | getModel (void)
| Get/Detect the model of the A/C. More...
void | setSwingVertical (const uint8_t elevation)
| Control the vertical swing setting. More...
uint8_t | getSwingVertical (void)
| Get the current vertical swing setting. More...
void | setSwingHorizontal (const uint8_t direction)
| Control the horizontal swing setting. More...
uint8_t | getSwingHorizontal (void)
| Get the current horizontal swing setting. More...
uint16_t | getClock (void)
| Get the current clock time value. More...
void | setClock (const uint16_t mins_since_midnight)
| Set the current clock time value. More...
uint16_t | getOnTimer (void)
| Get the On Timer time value. More...
void | setOnTimer (const uint16_t mins_since_midnight, const bool enable=true)
| Set/Enable the On Timer. More...
void | cancelOnTimer (void)
| Cancel the On Timer. More...
bool | isOnTimerEnabled (void)
| Check if the On Timer is Enabled. More...
uint16_t | getOffTimer (void)
| Get the Off Timer time value. More...
void | setOffTimer (const uint16_t mins_since_midnight, const bool enable=true)
| Set/Enable the Off Timer. More...
void | cancelOffTimer (void)
| Cancel the Off Timer. More...
bool | isOffTimerEnabled (void)
| Check if the Off Timer is Enabled. More...
stdAc::state_t | toCommon (void)
| Convert the current internal state into its stdAc::state_t equivalent. More...
String | toString (void)
| Convert the internal state into a human readable string. More...

## Static Public Member Functions

static bool | validChecksum (const uint8_t *state, const uint16_t length=kPanasonicAcStateLength)
| Verify the checksum is valid for a given state. More...
static uint8_t | calcChecksum (const uint8_t *state, const uint16_t length=kPanasonicAcStateLength)
| Calculate the checksum for a given state. More...
static uint16_t | encodeTime (const uint8_t hours, const uint8_t mins)
| Convert standard (military/24hr) time to nr. of minutes since midnight. More...
static uint8_t | convertMode (const stdAc::opmode_t mode)
| Convert a stdAc::opmode_t enum into its native mode. More...
static uint8_t | convertFan (const stdAc::fanspeed_t speed)
| Convert a stdAc::fanspeed_t enum into it's native speed. More...
static uint8_t | convertSwingV (const stdAc::swingv_t position)
| Convert a standard A/C vertical swing into its native setting. More...
static uint8_t | convertSwingH (const stdAc::swingh_t position)
| Convert a standard A/C horizontal swing into its native setting. More...
static stdAc::opmode_t | toCommonMode (const uint8_t mode)
| Convert a native mode into its stdAc equivalent. More...
static stdAc::fanspeed_t | toCommonFanSpeed (const uint8_t speed)
| Convert a native fan speed into its stdAc equivalent. More...
static stdAc::swingv_t | toCommonSwingV (const uint8_t pos)
| Convert a native vertical swing postion to it's common equivalent. More...
static stdAc::swingh_t | toCommonSwingH (const uint8_t pos)
| Convert a native horizontal swing postion to it's common equivalent. More...

## Private Member Functions

void | fixChecksum (const uint16_t length=kPanasonicAcStateLength)
| Calculate and set the checksum values for the internal state. More...

## Static Private Member Functions

static uint16_t | _getTime (const uint8_t ptr[])
| Get the time from a given pointer location. More...
static void | _setTime (uint8_t *const ptr, const uint16_t mins_since_midnight, const bool round_down)
| Set the time at a given pointer location. More...

## Private Attributes

IRsend | _irsend
| Instance of the IR send class. More...
uint8_t | remote_state [kPanasonicAcStateLength]
| The state in code form. More...
uint8_t | _swingh
uint8_t | _temp

## Detailed Description

Class for handling detailed Panasonic A/C messages.

## Constructor & Destructor Documentation

## ◆ IRPanasonicAc()

IRPanasonicAc::IRPanasonicAc | ( | const uint16_t | pin,
|  | const bool | inverted = `false`,
|  | const bool | use_modulation = `true`
| ) |  |

explicit

Class constructor.

Parameters

  [in] | pin | GPIO to be used when sending.
  [in] | inverted | Is the output signal to be inverted?
  [in] | use_modulation | Is frequency modulation to be used?

## Member Function Documentation

## ◆ _getTime()

uint16_t IRPanasonicAc::_getTime | ( | const uint8_t | ptr[] | ) |

staticprivate

Get the time from a given pointer location.

Parameters

  [in] | ptr | A pointer to a time location in a state.

Returns
  The time expressed as nr. of minutes past midnight.

Note
  Internal use only.

## ◆ _setTime()

void IRPanasonicAc::_setTime | ( | uint8_t *const | ptr,
|  | const uint16_t | mins_since_midnight,
|  | const bool | round_down
| ) |  |

staticprivate

Set the time at a given pointer location.

Parameters

  [in,out] | ptr | A pointer to a time location in a state.
  [in] | mins_since_midnight | The time as nr. of minutes past midnight.
  [in] | round_down | Do we round to the nearest 10 minute mark?

Note
  Internal use only.

## ◆ begin()

void IRPanasonicAc::begin | ( | void |  | ) |

Set up hardware to be able to send a message.

## ◆ calcChecksum()

uint8_t IRPanasonicAc::calcChecksum | ( | const uint8_t * | state,
|  | const uint16_t | length = `kPanasonicAcStateLength`
| ) |  |

static

Calculate the checksum for a given state.

Parameters

  [in] | state | The value to calc the checksum of.
  [in] | length | The size/length of the state.

Returns
  The calculated checksum value.

## ◆ calibrate()

int8_t IRPanasonicAc::calibrate | ( | void |  | ) |

inline

Run the calibration to calculate uSec timing offsets for this platform.

Returns
  The uSec timing offset needed per modulation of the IR Led.

Note
  This will produce a 65ms IR signal pulse at 38kHz. Only ever needs to be run once per object instantiation, if at all.

## ◆ cancelOffTimer()

void IRPanasonicAc::cancelOffTimer | ( | void |  | ) |

Cancel the Off Timer.

## ◆ cancelOnTimer()

void IRPanasonicAc::cancelOnTimer | ( | void |  | ) |

Cancel the On Timer.

## ◆ convertFan()

uint8_t IRPanasonicAc::convertFan | ( | const stdAc::fanspeed_t | speed | ) |

static

Convert a stdAc::fanspeed_t enum into it's native speed.

Parameters

  [in] | speed | The enum to be converted.

Returns
  The native equivalent of the enum.

## ◆ convertMode()

uint8_t IRPanasonicAc::convertMode | ( | const stdAc::opmode_t | mode | ) |

static

Convert a stdAc::opmode_t enum into its native mode.

Parameters

  [in] | mode | The enum to be converted.

Returns
  The native equivalent of the enum.

## ◆ convertSwingH()

uint8_t IRPanasonicAc::convertSwingH | ( | const stdAc::swingh_t | position | ) |

static

Convert a standard A/C horizontal swing into its native setting.

Parameters

  [in] | position | A stdAc::swingh_t position to convert.

Returns
  The equivalent native horizontal swing position.

## ◆ convertSwingV()

uint8_t IRPanasonicAc::convertSwingV | ( | const stdAc::swingv_t | position | ) |

static

Convert a standard A/C vertical swing into its native setting.

Parameters

  [in] | position | A stdAc::swingv_t position to convert.

Returns
  The equivalent native horizontal swing position.

## ◆ encodeTime()

uint16_t IRPanasonicAc::encodeTime | ( | const uint8_t | hours,
|  | const uint8_t | mins
| ) |  |

static

Convert standard (military/24hr) time to nr. of minutes since midnight.

Parameters

  [in] | hours | The hours component of the time.
  [in] | mins | The minutes component of the time.

Returns
  The nr of minutes since midnight.

## ◆ fixChecksum()

void IRPanasonicAc::fixChecksum | ( | const uint16_t | length = `kPanasonicAcStateLength` | ) |

private

Calculate and set the checksum values for the internal state.

Parameters

  [in] | length | The size/length of the state.

## ◆ getClock()

uint16_t IRPanasonicAc::getClock | ( | void |  | ) |

Get the current clock time value.

Returns
  The time expressed as nr. of minutes past midnight.

## ◆ getFan()

uint8_t IRPanasonicAc::getFan | ( | void |  | ) |

Get the current fan speed setting.

Returns
  The current fan speed.

## ◆ getIon()

bool IRPanasonicAc::getIon | ( | void |  | ) |

Get the Ion (filter) setting of the A/C.

Returns
  true, the setting is on. false, the setting is off.

## ◆ getMode()

uint8_t IRPanasonicAc::getMode | ( | void |  | ) |

Get the operating mode setting of the A/C.

Returns
  The current operating mode setting.

## ◆ getModel()

panasonic_ac_remote_model_t IRPanasonicAc::getModel | ( | void |  | ) |

Get/Detect the model of the A/C.

Returns
  The enum of the compatible model.

## ◆ getOffTimer()

uint16_t IRPanasonicAc::getOffTimer | ( | void |  | ) |

Get the Off Timer time value.

Returns
  The time expressed as nr. of minutes past midnight.

## ◆ getOnTimer()

uint16_t IRPanasonicAc::getOnTimer | ( | void |  | ) |

Get the On Timer time value.

Returns
  The time expressed as nr. of minutes past midnight.

## ◆ getPower()

bool IRPanasonicAc::getPower | ( | void |  | ) |

Get the A/C power state of the remote.

Returns
  true, the setting is on. false, the setting is off.

Warning
  Except for CKP models, where it returns if the power state will be toggled on the A/C unit when the next message is sent.

## ◆ getPowerful()

bool IRPanasonicAc::getPowerful | ( | void |  | ) |

Get the Powerful (Turbo) setting of the A/C.

Returns
  true, the setting is on. false, the setting is off.

## ◆ getQuiet()

bool IRPanasonicAc::getQuiet | ( | void |  | ) |

Get the Quiet setting of the A/C.

Returns
  true, the setting is on. false, the setting is off.

## ◆ getRaw()

uint8_t * IRPanasonicAc::getRaw | ( | void |  | ) |

Get a PTR to the internal state/code for this protocol.

Returns
  PTR to a code for this protocol based on the current internal state.

## ◆ getSwingHorizontal()

uint8_t IRPanasonicAc::getSwingHorizontal | ( | void |  | ) |

Get the current horizontal swing setting.

Returns
  The current position it is set to.

## ◆ getSwingVertical()

uint8_t IRPanasonicAc::getSwingVertical | ( | void |  | ) |

Get the current vertical swing setting.

Returns
  The current position it is set to.

## ◆ getTemp()

uint8_t IRPanasonicAc::getTemp | ( | void |  | ) |

Get the current temperature setting.

Returns
  The current setting for temp. in degrees celsius.

## ◆ isOffTimerEnabled()

bool IRPanasonicAc::isOffTimerEnabled | ( | void |  | ) |

Check if the Off Timer is Enabled.

Returns
  true, the setting is on. false, the setting is off.

## ◆ isOnTimerEnabled()

bool IRPanasonicAc::isOnTimerEnabled | ( | void |  | ) |

Check if the On Timer is Enabled.

Returns
  true, the setting is on. false, the setting is off.

## ◆ off()

void IRPanasonicAc::off | ( | void |  | ) |

Change the power setting to Off.

## ◆ on()

void IRPanasonicAc::on | ( | void |  | ) |

Change the power setting to On.

## ◆ send()

void IRPanasonicAc::send | ( | const uint16_t | repeat = `kPanasonicAcDefaultRepeat` | ) |

Send the current internal state as an IR message.

Parameters

  [in] | repeat | Nr. of times the message will be repeated.

## ◆ setClock()

void IRPanasonicAc::setClock | ( | const uint16_t | mins_since_midnight | ) |

Set the current clock time value.

Parameters

  [in] | mins_since_midnight | The time as nr. of minutes past midnight.

## ◆ setFan()

void IRPanasonicAc::setFan | ( | const uint8_t | speed | ) |

Set the speed of the fan.

Parameters

  [in] | speed | The desired setting.

## ◆ setIon()

void IRPanasonicAc::setIon | ( | const bool | on | ) |

Set the Ion (filter) setting of the A/C.

Parameters

  [in] | on | true, the setting is on. false, the setting is off.

## ◆ setMode()

void IRPanasonicAc::setMode | ( | const uint8_t | desired | ) |

Set the operating mode of the A/C.

Parameters

  [in] | desired | The desired operating mode.

## ◆ setModel()

void IRPanasonicAc::setModel | ( | const panasonic_ac_remote_model_t | model | ) |

Set the model of the A/C to emulate.

Parameters

  [in] | model | The enum of the appropriate model.

## ◆ setOffTimer()

void IRPanasonicAc::setOffTimer | ( | const uint16_t | mins_since_midnight,
|  | const bool | enable = `true`
| ) |  |

Set/Enable the Off Timer.

Parameters

  [in] | mins_since_midnight | The time as nr. of minutes past midnight.
  [in] | enable | Do we enable the timer or not?

## ◆ setOnTimer()

void IRPanasonicAc::setOnTimer | ( | const uint16_t | mins_since_midnight,
|  | const bool | enable = `true`
| ) |  |

Set/Enable the On Timer.

Parameters

  [in] | mins_since_midnight | The time as nr. of minutes past midnight.
  [in] | enable | Do we enable the timer or not?

## ◆ setPower()

void IRPanasonicAc::setPower | ( | const bool | on | ) |

Control the power state of the A/C unit.

Parameters

  [in] | on | true, the setting is on. false, the setting is off.

Warning
  For CKP models, the remote has no memory of the power state the A/C unit should be in. For those models setting this on/true will toggle the power state of the Panasonic A/C unit with the next message. e.g. If the A/C unit is already on, setPower(true) will turn it off. If the A/C unit is already off, setPower(true) will turn it on. `setPower(false)` will leave the A/C power state as it was. For all other models, setPower(true) should set the internal state to turn it on, and setPower(false) should turn it off.

## ◆ setPowerful()

void IRPanasonicAc::setPowerful | ( | const bool | on | ) |

Set the Powerful (Turbo) setting of the A/C.

Parameters

  [in] | on | true, the setting is on. false, the setting is off.

## ◆ setQuiet()

void IRPanasonicAc::setQuiet | ( | const bool | on | ) |

Set the Quiet setting of the A/C.

Parameters

  [in] | on | true, the setting is on. false, the setting is off.

## ◆ setRaw()

void IRPanasonicAc::setRaw | ( | const uint8_t | state[] | ) |

Set the internal state from a valid code for this protocol.

Parameters

  [in] | state | A valid code for this protocol.

## ◆ setSwingHorizontal()

void IRPanasonicAc::setSwingHorizontal | ( | const uint8_t | desired_direction | ) |

Control the horizontal swing setting.

Parameters

  [in] | desired_direction | The position to set the horizontal swing to.

## ◆ setSwingVertical()

void IRPanasonicAc::setSwingVertical | ( | const uint8_t | desired_elevation | ) |

Control the vertical swing setting.

Parameters

  [in] | desired_elevation | The position to set the vertical swing to.

## ◆ setTemp()

void IRPanasonicAc::setTemp | ( | const uint8_t | celsius,
|  | const bool | remember = `true`
| ) |  |

Set the temperature.

Parameters

  [in] | celsius | The temperature in degrees celsius.
  [in] | remember | A flag for the class to remember the temperature.

Note
  Automatically safely limits the temp to the operating range supported.

## ◆ stateReset()

void IRPanasonicAc::stateReset | ( | void |  | ) |

Reset the state of the remote to a known good state/sequence.

## ◆ toCommon()

stdAc::state_t IRPanasonicAc::toCommon | ( | void |  | ) |

Convert the current internal state into its stdAc::state_t equivalent.

Returns
  The stdAc equivalent of the native settings.

## ◆ toCommonFanSpeed()

stdAc::fanspeed_t IRPanasonicAc::toCommonFanSpeed | ( | const uint8_t | spd | ) |

static

Convert a native fan speed into its stdAc equivalent.

Parameters

  [in] | spd | The native setting to be converted.

Returns
  The stdAc equivalent of the native setting.

## ◆ toCommonMode()

stdAc::opmode_t IRPanasonicAc::toCommonMode | ( | const uint8_t | mode | ) |

static

Convert a native mode into its stdAc equivalent.

Parameters

  [in] | mode | The native setting to be converted.

Returns
  The stdAc equivalent of the native setting.

## ◆ toCommonSwingH()

stdAc::swingh_t IRPanasonicAc::toCommonSwingH | ( | const uint8_t | pos | ) |

static

Convert a native horizontal swing postion to it's common equivalent.

Parameters

  [in] | pos | A native position to convert.

Returns
  The common horizontal swing position.

## ◆ toCommonSwingV()

stdAc::swingv_t IRPanasonicAc::toCommonSwingV | ( | const uint8_t | pos | ) |

static

Convert a native vertical swing postion to it's common equivalent.

Parameters

  [in] | pos | A native position to convert.

Returns
  The common vertical swing position.

## ◆ toString()

String IRPanasonicAc::toString | ( | void |  | ) |

Convert the internal state into a human readable string.

Returns
  A string containing the settings in human-readable form.

## ◆ validChecksum()

bool IRPanasonicAc::validChecksum | ( | const uint8_t * | state,
|  | const uint16_t | length = `kPanasonicAcStateLength`
| ) |  |

static

Verify the checksum is valid for a given state.

Parameters

  [in] | state | The array to verify the checksum of.
  [in] | length | The length of the state array.

Returns
  true, if the state has a valid checksum. Otherwise, false.

## Member Data Documentation

## ◆ _irsend

IRsend IRPanasonicAc::_irsend

private

Instance of the IR send class.

## ◆ _swingh

uint8_t IRPanasonicAc::_swingh

private

## ◆ _temp

uint8_t IRPanasonicAc::_temp

private

## ◆ remote_state

uint8_t IRPanasonicAc::remote_state[kPanasonicAcStateLength]

private

The state in code form.

The documentation for this class was generated from the following files:

- src/ir_Panasonic.h
- src/ir_Panasonic.cpp