Grizzly.ZWave.CommandClasses.Meter (grizzly v8.7.0)

View Source

"Meter" Command Class

The Meter Command Class is used to advertise instantaneous and accumulated numerical readings.

Summary

Functions

Decode meter scale

Decode meter type

Decode rate type

Decode supported scales bitmasks.

Encode meter type

Encode meter rate type

Encode supported meter scales as two bit masks. The first bitmask encodes "byte 1" scales and the second bitmask encodes "byte 2" scales. We assume that there is no byte 3, 4, encoding etc. A bit 1 indicates support.

Types

meter_rate_type()

@type meter_rate_type() :: :export | :import | :import_export | :default

meter_scale()

@type meter_scale() ::
  :a
  | :cubic_feet
  | :cubic_meters
  | :kvah
  | :kvar
  | :kvarh
  | :kwh
  | :power_factor
  | :pulse_count
  | :us_gallons
  | :v
  | :w

meter_type()

@type meter_type() :: :electric | :gas | :water | :heating | :cooling

Functions

decode_meter_scale(byte, arg2)

@spec decode_meter_scale(
  {byte(), byte()},
  meter_type() | non_neg_integer()
) :: {:ok, meter_scale()} | {:error, Grizzly.ZWave.DecodeError.t()}

Decode meter scale

decode_meter_type(byte)

@spec decode_meter_type(non_neg_integer()) ::
  {:ok, meter_type()} | {:error, Grizzly.ZWave.DecodeError.t()}

Decode meter type

decode_rate_type(v)

@spec decode_rate_type(non_neg_integer()) ::
  {:ok, meter_rate_type()} | {:error, Grizzly.ZWave.DecodeError.t()}

Decode rate type

decode_supported_scales_bitmasks(arg, meter_type)

@spec decode_supported_scales_bitmasks(
  {binary(), binary()},
  meter_type()
) :: {:ok, [meter_scale()]}

Decode supported scales bitmasks.

encode_meter_scale(atom)

@spec encode_meter_scale(meter_scale()) :: {0..7, 0..1}

encode_meter_scale(atom1, atom2)

@spec encode_meter_scale(meter_scale(), meter_type()) :: {0..7, 0..1}

encode_meter_type(atom)

@spec encode_meter_type(meter_type()) :: 1..5

Encode meter type

encode_rate_type(atom)

@spec encode_rate_type(meter_rate_type()) :: 0..3

Encode meter rate type

encode_supported_scales_bitmasks(supported_scales, meter_type)

@spec encode_supported_scales_bitmasks([meter_scale()], meter_type()) ::
  {byte(), byte()}

Encode supported meter scales as two bit masks. The first bitmask encodes "byte 1" scales and the second bitmask encodes "byte 2" scales. We assume that there is no byte 3, 4, encoding etc. A bit 1 indicates support.