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.
@@ -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
@@ -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
@@ -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: []