class BWA::Messages::Status
Constants
- MESSAGE_LENGTH
additional features have been added in later versions
- MESSAGE_TYPE
Attributes
aux[RW]
blower[RW]
circ_pump[RW]
current_temperature[RW]
filter[RW]
heating[RW]
heating_mode[RW]
hour[RW]
lights[RW]
minute[RW]
mister[RW]
priming[RW]
pumps[RW]
set_temperature[RW]
temperature_range[RW]
temperature_scale[RW]
twenty_four_hour_time[RW]
Public Class Methods
new()
click to toggle source
# File lib/bwa/messages/status.rb, line 24 def initialize @src = 0xff self.priming = false self.heating_mode = :ready @temperature_scale = :fahrenheit self.twenty_four_hour_time = false self.filter = Array.new(2, false) self.heating = false self.temperature_range = :high self.hour = self.minute = 0 self.circ_pump = false self.pumps = Array.new(6, 0) self.lights = Array.new(2, false) self.mister = false self.aux = Array.new(2, false) self.set_temperature = 100 end
Public Instance Methods
inspect()
click to toggle source
# File lib/bwa/messages/status.rb, line 153 def inspect result = "#<BWA::Messages::Status " items = [] items << "priming" if priming items << self.class.format_time(hour, minute, twenty_four_hour_time) items << "#{current_temperature || '--'}/#{set_temperature}ยบ#{temperature_scale.to_s[0].upcase}" items << "filter=#{filter.inspect}" items << heating_mode items << "heating" if heating items << temperature_range items << "circ_pump" if circ_pump items << "blower" if blower items << "pumps=#{pumps.inspect}" items << "lights=#{lights.inspect}" items << "aux=#{aux.inspect}" items << "mister" if mister result << items.join(' ') << ">" end
parse(data)
click to toggle source
# File lib/bwa/messages/status.rb, line 42 def parse(data) flags = data[1].ord self.priming = (flags & 0x01 == 0x01) flags = data[5].ord self.heating_mode = case flags & 0x03 when 0x00; :ready when 0x01; :rest when 0x02; :ready_in_rest end flags = data[9].ord self.temperature_scale = (flags & 0x01 == 0x01) ? :celsius : :fahrenheit self.twenty_four_hour_time = (flags & 0x02 == 0x02) filter[0] = (flags & 0x04 != 0) filter[1] = (flags & 0x08 != 0) flags = data[10].ord self.heating = (flags & 0x30 != 0) self.temperature_range = (flags & 0x04 == 0x04) ? :high : :low flags = data[11].ord pumps[0] = flags & 0x03 pumps[1] = (flags >> 2) & 0x03 pumps[2] = (flags >> 4) & 0x03 pumps[3] = (flags >> 6) & 0x03 flags = data[12].ord pumps[4] = flags & 0x03 pumps[5] = (flags >> 2) & 0x03 flags = data[13].ord self.circ_pump = (flags & 0x02 == 0x02) self.blower = (flags & 0x0C == 0x0C) flags = data[14].ord lights[0] = (flags & 0x03 != 0) lights[1] = ((flags >> 2) & 0x03 != 0) flags = data[15].ord self.mister = (flags & 0x01 == 0x01) aux[0] = (flags & 0x08 != 0) aux[1] = (flags & 0x10 != 0) self.hour = data[3].ord self.minute = data[4].ord self.current_temperature = data[2].ord self.current_temperature = nil if self.current_temperature == 0xff self.set_temperature = data[20].ord if temperature_scale == :celsius self.current_temperature /= 2.0 if self.current_temperature self.set_temperature /= 2.0 if self.set_temperature end end
serialize()
click to toggle source
Calls superclass method
BWA::Message#serialize
# File lib/bwa/messages/status.rb, line 89 def serialize data = "\x00" * 24 data[1] = (priming ? 0x01 : 0x00).chr data[5] = (case heating_mode when :ready; 0x00 when :rest; 0x01 when :ready_in_rest; 0x02 end).chr flags = 0 flags |= 0x01 if temperature_scale == :celsius flags |= 0x02 if twenty_four_hour_time data[9] = flags.chr flags = 0 flags |= 0x30 if heating flags |= 0x04 if temperature_range == :high data[10] = flags.chr flags = 0 flags |= pump1 flags |= pump2 * 4 data[11] = flags.chr flags = 0 flags |= 0x02 if circ_pump data[13] = flags.chr flags = 0 flags |= 0x03 if light1 data[14] = flags.chr data[3] = hour.chr data[4] = minute.chr if temperature_scale == :celsius data[2] = (current_temperature ? (current_temperature * 2).to_i : 0xff).chr data[20] = (set_temperature * 2).to_i.chr else data[2] = (current_temperature&.to_i || 0xff).chr data[20] = set_temperature.to_i.chr end super(data) end
temperature_scale=(value)
click to toggle source
# File lib/bwa/messages/status.rb, line 128 def temperature_scale=(value) if value != @temperature_scale if value == :fahrenheit if current_temperature self.current_temperature *= 9.0/5 self.current_temperature += 32 self.current_temperature = current_temperature.round end self.set_temperature *= 9.0/5 self.set_temperature += 32 self.set_temperature = set_temperature.round else if current_temperature self.current_temperature -= 32 self.current_temperature *= 5.0/90 self.current_temperature = (current_temperature * 2).round / 2.0 end self.set_temperature -= 32 self.set_temperature *= 5.0/9 self.set_temperature = (set_temperature * 2).round / 2.0 end end @temperature_scale = value end