thermostat_jelle_db 0.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/lib/converter.rb +27 -0
- data/lib/json_thermostat.rb +60 -0
- data/lib/thermostat.rb +11 -0
- metadata +45 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: d167c91adcec613e39492f0d58e3edafb6b53fdd8e57fee54f8cf16bab817099
|
4
|
+
data.tar.gz: 0d4deb4e04759cfc46572d335ff73a5304a871c59774ccc85de9f07c3ab0a2ad
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: f4809166b0f9ff3998871f52c239811981c0df6ab92c24c394c0332f8be3a13b3317e7ebae161aed23b15f754496f8d20e031a99d171e0a10cc2e1529ca0e916
|
7
|
+
data.tar.gz: caabc494f1a47dfffe19491b76d27f4f2ac05adbf06f92aa63e6af20e66b4550e60b4c23e17b7c9fa48cbde312a0553bf09185f437e709f1017b4a99b4d49c10
|
data/lib/converter.rb
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
class Converter
|
2
|
+
def initialize; end
|
3
|
+
|
4
|
+
def ktoc(kelvinvalue)
|
5
|
+
kelvinvalue - 273
|
6
|
+
end
|
7
|
+
|
8
|
+
def ctok(celsiusvalue)
|
9
|
+
celsiusvalue + 273
|
10
|
+
end
|
11
|
+
|
12
|
+
def ftoc(fahrvalue)
|
13
|
+
(fahrvalue - 32) / 1.8
|
14
|
+
end
|
15
|
+
|
16
|
+
def ctof(celsiusvalue)
|
17
|
+
(celsiusvalue * 1.8) + 32
|
18
|
+
end
|
19
|
+
|
20
|
+
def ktof(kelvinvalue)
|
21
|
+
(kelvinvalue * (9 / 5)) - 459.67
|
22
|
+
end
|
23
|
+
|
24
|
+
def ftok(fahrvalue)
|
25
|
+
(fahrvalue + 459.67) * (5 / 9)
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
require 'json'
|
2
|
+
require 'converter'
|
3
|
+
require 'thermostat'
|
4
|
+
|
5
|
+
class JSONThermostat
|
6
|
+
attr_reader :temperature, :range, :unit, :unit_m, :update
|
7
|
+
|
8
|
+
def initialize(settings)
|
9
|
+
@temperature = JSON.parse(settings)['temperature']
|
10
|
+
@unit = JSON.parse(settings)['unit']
|
11
|
+
@range = JSON.parse(settings)['range'] / 2
|
12
|
+
end
|
13
|
+
|
14
|
+
def update(measurement)
|
15
|
+
@temperature_m = JSON.parse(measurement)['temperature']
|
16
|
+
@unit_m = JSON.parse(measurement)['unit']
|
17
|
+
unit_check
|
18
|
+
|
19
|
+
heat_or_cool
|
20
|
+
end
|
21
|
+
|
22
|
+
def heat_or_cool
|
23
|
+
thermo = { cooling: false, heating: false }
|
24
|
+
|
25
|
+
if Thermostat.new.airco_temperature(@temperature_m, temperature, range)
|
26
|
+
thermo[:cooling] = true
|
27
|
+
end
|
28
|
+
if Thermostat.new.heating_temperature(@temperature_m, temperature, range)
|
29
|
+
thermo[:heating] = true
|
30
|
+
end
|
31
|
+
|
32
|
+
JSON.generate(thermo)
|
33
|
+
end
|
34
|
+
|
35
|
+
def unit_check
|
36
|
+
if (unit == 'celsius' || unit.to_s.empty?) && unit_m == 'kelvin'
|
37
|
+
@temperature_m = Converter.new.ktoc(@temperature_m)
|
38
|
+
end
|
39
|
+
|
40
|
+
if (unit == 'celsius' || unit.to_s.empty?) && unit_m == 'fahrenheit'
|
41
|
+
@temperature_m = Converter.new.ftoc(@temperature_m)
|
42
|
+
end
|
43
|
+
|
44
|
+
if unit == 'kelvin' && (unit_m == 'celsius' || unit_m.to_s.empty?)
|
45
|
+
@temperature_m = Converter.new.ctok(@temperature_m)
|
46
|
+
end
|
47
|
+
|
48
|
+
if unit == 'kelvin' && unit_m == 'fahrenheit'
|
49
|
+
@temperature_m = Converter.new.ftok(@temperature_m)
|
50
|
+
end
|
51
|
+
|
52
|
+
if unit == 'fahrenheit' && unit_m == 'kelvin'
|
53
|
+
@temperature_m = Converter.new.ktof(@temperature_m)
|
54
|
+
end
|
55
|
+
|
56
|
+
if unit == 'fahrenheit' && (unit_m == 'celsius' || unit_m.to_s.empty?)
|
57
|
+
@temperature_m = Converter.new.ctof(@temperature_m)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
data/lib/thermostat.rb
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
class Thermostat
|
2
|
+
def initialize; end
|
3
|
+
|
4
|
+
def heating_temperature(temperature_m, temperature, range)
|
5
|
+
temperature_m <= temperature - range
|
6
|
+
end
|
7
|
+
|
8
|
+
def airco_temperature(temperature_m, temperature, range)
|
9
|
+
temperature_m >= temperature + range
|
10
|
+
end
|
11
|
+
end
|
metadata
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: thermostat_jelle_db
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Jelle De Buyzere
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2019-05-03 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: Thermostat gem
|
14
|
+
email: jelle.debuyzere@student.vives.be
|
15
|
+
executables: []
|
16
|
+
extensions: []
|
17
|
+
extra_rdoc_files: []
|
18
|
+
files:
|
19
|
+
- lib/converter.rb
|
20
|
+
- lib/json_thermostat.rb
|
21
|
+
- lib/thermostat.rb
|
22
|
+
homepage: http://rubygems.org/gems/thermostat_jelle_db
|
23
|
+
licenses:
|
24
|
+
- Apache-2.0
|
25
|
+
metadata: {}
|
26
|
+
post_install_message:
|
27
|
+
rdoc_options: []
|
28
|
+
require_paths:
|
29
|
+
- lib
|
30
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - ">="
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '0'
|
35
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - ">="
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '0'
|
40
|
+
requirements: []
|
41
|
+
rubygems_version: 3.0.1
|
42
|
+
signing_key:
|
43
|
+
specification_version: 4
|
44
|
+
summary: Thermostat!
|
45
|
+
test_files: []
|