Packages
grizzly
5.2.5
9.1.4
9.1.2
9.1.1
9.1.0
9.0.0
8.15.3
8.15.2
8.15.1
8.15.0
8.14.0
8.13.0
8.12.0
8.11.3
8.11.2
8.11.1
8.11.0
8.10.0
8.9.0
8.8.1
8.8.0
8.7.1
8.7.0
8.6.12
8.6.11
8.6.10
8.6.9
8.6.8
8.6.7
retired
8.6.6
8.6.5
8.6.4
8.6.3
8.6.2
8.6.1
8.6.0
8.5.3
8.5.2
8.5.1
8.5.0
8.4.0
8.3.0
8.2.3
8.2.2
8.2.1
8.2.0
8.1.0
8.0.1
8.0.0
7.4.3
7.4.2
7.4.1
7.4.0
7.3.0
7.2.0
7.1.4
7.1.3
7.1.2
7.1.1
7.1.0
7.0.4
7.0.3
7.0.2
7.0.1
7.0.0
6.8.8
6.8.7
6.8.6
6.8.5
6.8.4
6.8.3
6.8.2
6.8.1
6.8.0
6.7.1
6.7.0
6.6.1
6.6.0
6.5.1
6.5.0
6.4.0
6.3.0
6.2.0
6.1.1
6.1.0
6.0.1
6.0.0
5.4.1
5.4.0
5.3.0
5.2.8
5.2.7
5.2.6
5.2.5
5.2.4
5.2.3
5.2.2
5.2.1
5.2.0
5.1.2
5.1.1
5.1.0
5.0.2
5.0.1
5.0.0
4.0.1
4.0.0
3.0.0
2.1.0
2.0.0
1.0.1
1.0.0
0.22.7
0.22.6
0.22.5
0.22.4
0.22.3
0.22.2
0.22.1
0.22.0
0.21.1
0.21.0
0.20.2
0.20.1
0.20.0
0.19.1
0.19.0
0.18.3
0.18.2
0.18.1
0.18.0
0.17.7
0.17.6
0.17.5
0.17.4
0.17.3
0.17.2
0.17.1
0.17.0
0.16.2
0.16.1
0.16.0
0.15.11
0.15.10
0.15.9
0.15.8
0.15.7
0.15.6
0.15.5
0.15.4
0.15.3
0.15.2
0.15.1
0.15.0
0.14.8
0.14.7
0.14.6
0.14.5
0.14.4
0.14.3
0.14.2
0.14.1
0.14.0
0.13.0
0.12.3
0.12.2
0.12.1
0.12.0
0.11.0
0.10.3
0.10.2
0.10.1
0.10.0
0.9.0
0.9.0-rc.4
0.9.0-rc.3
0.9.0-rc.2
0.9.0-rc.1
0.9.0-rc.0
0.8.8
0.8.7
0.8.6
0.8.5
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.0
0.6.6
0.6.5
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.0
0.4.3
0.4.2
Elixir Z-Wave library
Current section
Files
Jump to
Current section
Files
lib/grizzly/zwave/command_classes/thermostat_setpoint.ex
defmodule Grizzly.ZWave.CommandClasses.ThermostatSetpoint do
@moduledoc """
"ThermostatSetpoint" Command Class
The Thermostat Setpoint Command Class is used to configure setpoints for the modes supported by a
thermostat.
What type of commands does this command class support?
"""
@type type ::
:na
| :heating
| :cooling
| :furnace
| :dry_air
| :moist_air
| :auto_changeover
| :energy_save_heating
| :energy_save_cooling
| :away_heating
| :away_cooling
| :full_power
@type scale :: :celsius | :fahrenheit
@behaviour Grizzly.ZWave.CommandClass
alias Grizzly.ZWave.DecodeError
@impl true
def byte(), do: 0x43
@impl true
def name(), do: :thermostat_setpoint
@spec encode_type(type) :: byte
def encode_type(:na), do: 0x00
def encode_type(:heating), do: 0x01
def encode_type(:cooling), do: 0x02
def encode_type(:furnace), do: 0x07
def encode_type(:dry_air), do: 0x08
def encode_type(:moist_air), do: 0x09
def encode_type(:auto_changeover), do: 0x0A
def encode_type(:energy_save_heating), do: 0x0B
def encode_type(:energy_save_cooling), do: 0x0C
def encode_type(:away_heating), do: 0x0D
def encode_type(:away_cooling), do: 0x0E
def encode_type(:full_power), do: 0x0F
@spec decode_type(byte()) :: type()
def decode_type(0x01), do: :heating
def decode_type(0x02), do: :cooling
def decode_type(0x07), do: :furnace
def decode_type(0x08), do: :dry_air
def decode_type(0x09), do: :moist_air
def decode_type(0x0A), do: :auto_changeover
def decode_type(0x0B), do: :energy_save_heating
def decode_type(0x0C), do: :energy_save_cooling
def decode_type(0x0D), do: :away_heating
def decode_type(0x0E), do: :away_cooling
def decode_type(0x0F), do: :full_power
def decode_type(_na_type), do: :na
@spec encode_scale(scale) :: byte
def encode_scale(:celsius), do: 0x00
def encode_scale(:fahrenheit), do: 0x01
@spec decode_scale(byte) :: {:ok, scale} | {:error, DecodeError.t()}
def decode_scale(0x00), do: {:ok, :celsius}
def decode_scale(0x01), do: {:ok, :fahrenheit}
def decode_scale(byte),
do: {:error, %DecodeError{value: byte, param: :type, command: :thermostat_setpoint}}
end