Aython-Houttekier-thermostat-exercise 0.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (7) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +67 -0
  3. data/app.rb +36 -0
  4. data/lib/led.rb +28 -0
  5. data/lib/thermostat.rb +31 -0
  6. data/lib/unit.rb +65 -0
  7. metadata +48 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 4df78f198a8f52650a16663437ef4574f428058d
4
+ data.tar.gz: b3224e90e7f0bd7531186a52dee6a8f1b781af25
5
+ SHA512:
6
+ metadata.gz: 0c6dd42bfbfbab1d45b15982da0cd27d352fbaa776f4152ba5caa5ad51d622ee8f83ec15042ab0886c60d67cf535051c54f57f42d5d776bebd53e3aae19cc091
7
+ data.tar.gz: b84bcbb959786956f26da42dab2776262f16573d37185687cdbbd117eb505bcc8d635f73ad0b916a0b3fa8158e52197f61265304f9d7a642983e73559b7445f6
@@ -0,0 +1,67 @@
1
+ ## Opdracht 1
2
+
3
+ ![hello](/img/thermostat.jpg);
4
+
5
+ ## Opdracht 2
6
+
7
+ **0.0.1** -> versie 1 (opdracht 1)
8
+
9
+ **0.0.2** -> output led
10
+
11
+ te koud => blauw
12
+ ok => groen
13
+ te warm => rood
14
+
15
+ **0.0.3** -> input unit
16
+
17
+ celsius
18
+ fahrenheit
19
+ kelvin
20
+
21
+ **0.0.4** -> waarden meegeven met commandline
22
+ ruby app.rb _ _ _ _
23
+ current wanted range unit
24
+
25
+ -> README.md
26
+ -> Lisence
27
+ -> GEM
28
+
29
+ **0.0.5** -> units
30
+ inputs met http url
31
+
32
+ ``currentTemp = URI(https://labict.be/software-engineering/temperature/api/temperature/fake).read``
33
+
34
+ outputs met library optparse
35
+
36
+
37
+ ### uitvoering app
38
+
39
+ om de app op een correcte werkende manier uit te voeren geef je het commando:
40
+
41
+ ``ruby app.rb 24 20 0.5 C``
42
+
43
+ 24 -> current value
44
+
45
+ 20 -> wanted value
46
+
47
+ 0.5 -> range
48
+
49
+ C -> is de unit (je kunt kiezen tussen C,F,K)
50
+
51
+ als je een argument vergeten bent dan zal er een melding komen dat het programma exact 4 argumenten nodig heeft.
52
+
53
+ ![melding](/img/melding.jpg)
54
+
55
+ als je andere unit ingeeft dan C,F of K dan zal het programma melden dat deze unit niet bestaat maar het zal wel de waarden die je meegaf weergeven.
56
+
57
+ ![unitbestaatniet](/img/wrongunit.jpg)
58
+
59
+ Wanneer het programma correct wordt uitgevoerd dan krijg je de volgende output
60
+
61
+ ![hello](/img/output.jpg)
62
+
63
+
64
+
65
+
66
+
67
+
data/app.rb ADDED
@@ -0,0 +1,36 @@
1
+ require_relative('lib/thermostat.rb')
2
+ require_relative('lib/led.rb')
3
+ require_relative('lib/unit.rb')
4
+
5
+ class ThermostatApplication
6
+
7
+ def initialize
8
+
9
+ thermostat = Thermostat.new(ARGV[0],ARGV[1],ARGV[2])
10
+ led = Led.new(ARGV[0],ARGV[1],ARGV[2])
11
+ unit = Unitconverter.new(ARGV[0], ARGV[1], ARGV[2], ARGV[3])
12
+
13
+ if ARGV.length != 4
14
+ puts "We need exactly four arguments"
15
+ exit
16
+ end
17
+
18
+ puts "current temp: " + ARGV[0] + "°" + ARGV[3]
19
+ puts "wanted temp: " + ARGV[1] + "°" + ARGV[3]
20
+ puts "range: " + ARGV[2] + "°" + ARGV[3]
21
+
22
+
23
+ #cooling and heating true or false
24
+ puts "cooling: #{thermostat.cooling?}"
25
+ puts "heating: #{thermostat.heating?}"
26
+
27
+ #color of led
28
+ puts "The led is: #{led.colorled}"
29
+
30
+ #unitconverter units
31
+ puts "#{unit.convertingunit}"
32
+ end
33
+
34
+ ThermostatApplication.new
35
+
36
+ end
@@ -0,0 +1,28 @@
1
+ require_relative('thermostat.rb')
2
+
3
+ class Led
4
+
5
+ def initialize (currentValue, wantedValue, range = 0.5)
6
+
7
+ @currentValue = currentValue
8
+ @wantedValue = wantedValue
9
+ @range = range
10
+
11
+ @red = "RGB(255,0,0)"
12
+ @green = "RGB(0,255,0)"
13
+ @blue = "RGB(0,0,255)"
14
+
15
+ end
16
+
17
+ def colorled
18
+ @curAndRange = @currentValue + @range
19
+
20
+ if @curAndRange > @wantedValue
21
+ @red
22
+ elsif @curAndRange = @wantedValue
23
+ @blue
24
+ else
25
+ @green
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,31 @@
1
+ class Thermostat
2
+
3
+
4
+ def initialize (currentValue, wantedValue, range = 0.5)
5
+
6
+ @currentValue = currentValue
7
+ @wantedValue = wantedValue
8
+ @range = range
9
+
10
+ end
11
+
12
+ def current
13
+ @currentValue
14
+ end
15
+
16
+ def wanted
17
+ @wantedValue
18
+ end
19
+
20
+ def range
21
+ @range
22
+ end
23
+
24
+ def heating?
25
+ @wantedValue > (@currentValue + @range)
26
+ end
27
+
28
+ def cooling?
29
+ @wantedValue < (@currentValue + @range)
30
+ end
31
+ end
@@ -0,0 +1,65 @@
1
+ require_relative('thermostat.rb')
2
+
3
+ class Unitconverter
4
+
5
+ TOFAHRENHEITFACTOR1 = 1.8
6
+ TOFAHRENHEITFACTOR2 = 32
7
+
8
+ TOKELVIN1 = 273.15
9
+ TOKELVIN2 = 459.67
10
+ TOKELVIN3 = 0.55555555
11
+
12
+ DECIMALS = 2
13
+
14
+ def initialize (currentValue, wantedValue, range = 0.5, unit)
15
+
16
+ @currentValue = currentValue.to_i
17
+ @wantedValue = wantedValue.to_i
18
+ @range = range.to_i
19
+ @unit = unit
20
+ end
21
+
22
+
23
+ def convertingunit
24
+ if @unit == "C"
25
+ currentfahrenheit = (@currentValue + @range) * TOFAHRENHEITFACTOR1 + TOFAHRENHEITFACTOR2
26
+ wantedfahrenheit = @wantedValue * TOFAHRENHEITFACTOR1 + TOFAHRENHEITFACTOR2
27
+
28
+ currentkelvin = (@currentValue + @range) + TOKELVIN1
29
+ wantedkelvin = @wantedValue + TOKELVIN1
30
+
31
+ print "Current Temp Fahrenheit = ", currentfahrenheit.round(DECIMALS), " °F", "\n"
32
+ print "Wanted Temp Fahrenheit = ", wantedfahrenheit.round(DECIMALS), " °F", "\n"
33
+ print "Current Temp Kelvin = ", currentkelvin.round(DECIMALS), " K", "\n"
34
+ print "wanted Temp Kelvin = ", wantedkelvin.round(DECIMALS), " K", "\n"
35
+
36
+ elsif @unit == "F"
37
+ currentcelsius = (@currentValue + @range - TOFAHRENHEITFACTOR2) / TOFAHRENHEITFACTOR1
38
+ wantedcelsius = (@wantedValue - TOFAHRENHEITFACTOR2) / TOFAHRENHEITFACTOR1
39
+
40
+ currentkelvin = (@currentValue + @range + TOKELVIN2) * TOKELVIN3
41
+ wantedkelvin = (@wantedValue + TOKELVIN2) * TOKELVIN3
42
+
43
+ print "Current Temp Celsius = ", currentcelsius.round(DECIMALS), " °C", "\n"
44
+ print "Wanted Temp Celsius = ", wantedcelsius.round(DECIMALS), " °C", "\n"
45
+ print "Current Temp Kelvin = ", currentkelvin.round(DECIMALS), " K", "\n"
46
+ print "Wanted Temp Kelvin = ", wantedkelvin.round(DECIMALS), " K", "\n"
47
+
48
+ elsif @unit == "K"
49
+ currentcelsius = @currentValue + @range - TOKELVIN1
50
+ wantedcelsius = @wantedValue - TOKELVIN1
51
+
52
+ curAndRange = @currentValue + @range
53
+ currentfahrenheit = (curAndRange / TOKELVIN3) - TOKELVIN2
54
+ wantedfahrenheit = (@wantedValue / TOKELVIN3) - TOKELVIN2
55
+
56
+ print "Current Temp Celsius = ", currentcelsius.round(DECIMALS), " °C", "\n"
57
+ print "Wanted Temp Celsius = ", wantedcelsius.round(DECIMALS), " °C", "\n"
58
+ print "Current Temp Fahrenheit = ", currentfahrenheit.round(DECIMALS), " °F", "\n"
59
+ print "Wanted Temp Fahrenheit = ", wantedfahrenheit.round(DECIMALS), " °F", "\n"
60
+
61
+ else
62
+ print "this unit doesn't exist!"
63
+ end
64
+ end
65
+ end
metadata ADDED
@@ -0,0 +1,48 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: Aython-Houttekier-thermostat-exercise
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Aython Houttekier
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-06-07 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: a ruby gem for a thermostat application
14
+ email: aython.houttekier@hotmail.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - README.md
20
+ - app.rb
21
+ - lib/led.rb
22
+ - lib/thermostat.rb
23
+ - lib/unit.rb
24
+ homepage: https://github.com/svl-softwareengineering-2018/thermostat-aythonhouttekier
25
+ licenses:
26
+ - MIT
27
+ metadata: {}
28
+ post_install_message:
29
+ rdoc_options: []
30
+ require_paths:
31
+ - lib
32
+ required_ruby_version: !ruby/object:Gem::Requirement
33
+ requirements:
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
36
+ version: '0'
37
+ required_rubygems_version: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ requirements: []
43
+ rubyforge_project:
44
+ rubygems_version: 2.5.2
45
+ signing_key:
46
+ specification_version: 4
47
+ summary: a thermostat application
48
+ test_files: []