Packages
grizzly
0.17.3
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 :: :heating | :cooling | :furnace | :dry_air | :moist_air | :auto_changeover
@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(: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
@spec decode_type(any) :: {:ok, type} | {:error, Grizzly.ZWave.DecodeError.t()}
def decode_type(0x01), do: {:ok, :heating}
def decode_type(0x02), do: {:ok, :cooling}
def decode_type(0x07), do: {:ok, :furnace}
def decode_type(0x08), do: {:ok, :dry_air}
def decode_type(0x09), do: {:ok, :moist_air}
def decode_type(0x0A), do: {:ok, :auto_changeover}
def decode_type(byte),
do: {:error, %DecodeError{value: byte, param: :type, command: :thermostat_setpoint}}
@spec encode_scale(scale) :: byte
def encode_scale(:celcius), do: 0x00
def encode_scale(:fahrenheit), do: 0x01
@spec decode_scale(byte) :: {:ok, scale} | {:error, %DecodeError{}}
def decode_scale(0x00), do: {:ok, :celcius}
def decode_scale(0x01), do: {:ok, :fahrenheit}
def decode_scale(byte),
do: {:error, %DecodeError{value: byte, param: :type, command: :thermostat_setpoint}}
end