inels 0.1.1 → 0.1.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: d0e59a8313ac70f00adf21ed295128c975ec2b8e
4
- data.tar.gz: 6c6505df7c6afb530829417b31b95497b8a70dc5
2
+ SHA256:
3
+ metadata.gz: 2af4907ce4b2e187e22ce77e14ae26d6867cb26432ab6c823155c6714de7fdf9
4
+ data.tar.gz: 0fe65ab8365a368c4b20f26f7f20081098a92fd75bee7fce3d82bf63ed9884f0
5
5
  SHA512:
6
- metadata.gz: 941a3641a1e000330b22347e8da542ccd470de80e3c1302703596868f85969bab53fd54e1e37e3805b2a0b9b0c9c7bc120739734fc33dc28845b25c85245ce38
7
- data.tar.gz: 7630c8e91560fea3f479528c7d0202746f709591c5729e7e9d4735b48f859ad3e51211dcffc487122c619f812db9e31e8fa97bc098f644314fa4cc9ec5ab7f51
6
+ metadata.gz: 79f8a41c68da61c24226036e3ea9128953cfc42b79ce29ba6e311227992676b0515926d76cd8d9d71f7ca3b7af51fdff320251f748c661635b1d2950e35fb607
7
+ data.tar.gz: b84f8ef382774ad11ef52433c1e6fcab6c837fa9c023df811c0493873070999c00efccc7e51bc2c4b53d74449d338da2316365c3ea6e40f998e245072d78e5bb
@@ -0,0 +1,70 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'thor'
4
+ require 'inels'
5
+
6
+ IPS = %w(192.168.1.30 192.168.1.31 192.168.1.32)
7
+
8
+ class InelsCLI < Thor
9
+
10
+ desc 'list', 'List all devices'
11
+ def list
12
+ devices = Inels::Controller.new(IPS).list_devices
13
+ head = [
14
+ { name: 'ID', id: :id },
15
+ { name: 'Name', id: :name },
16
+ { name: 'Type', id: :product_type },
17
+ { name: 'Room name', id: :room_name },
18
+ { name: 'IP address', id: :ip },
19
+ ]
20
+ print_table(devices, head)
21
+ end
22
+
23
+ desc 'get-device', 'Gets device\'s information'
24
+ def get_device id
25
+ device = Inels::Controller.new(IPS).get_device(id)
26
+ device.each do |k,v|
27
+ puts k + ': ' + v.to_s
28
+ end
29
+ end
30
+
31
+ desc 'set-temperature', 'Sets device\'s correction'
32
+ def set_correction id, correction
33
+ Inels::Controller.new(IPS).set_correction(id, Integer(correction))
34
+ end
35
+
36
+ desc 'set-power', 'Sets device\'s power'
37
+ def set_power id, power
38
+ Inels::Controller.new(IPS).set_power(id, Integer(power))
39
+ end
40
+
41
+ no_commands do
42
+ def print_table(values, head)
43
+ head.each do |title|
44
+ title[:lenght] = (values.map{|value| value[title[:id]].to_s.length} + [title[:name].length]).max
45
+ end
46
+ print_line(head)
47
+ print_head(head)
48
+ print_line(head)
49
+ values.each{|row| print_row(head, row)}
50
+ print_line(head)
51
+
52
+ end
53
+
54
+ def print_line(head)
55
+ puts '-' * (head.map{|e| e[:lenght] + 3}.reduce(&:+) + 1)
56
+ end
57
+
58
+ def print_head(head)
59
+ columns = head.map{|e| e[:name].ljust(e[:lenght], ' ')}
60
+ puts '| ' + columns.join(' | ') + ' |'
61
+ end
62
+
63
+ def print_row(head, row)
64
+ columns = head.map{|e| row[e[:id]].to_s.ljust(e[:lenght], ' ')}
65
+ puts '| ' + columns.join(' | ') + ' |'
66
+ end
67
+ end
68
+ end
69
+
70
+ InelsCLI.start
@@ -56,6 +56,11 @@ module Inels
56
56
  client.api_post('temperature/schedules', schedule.result(binding))
57
57
  end
58
58
 
59
+ def set_correction id, correction, client: nil
60
+ client ||= multi_client.client_for_id('devices', id)
61
+ client.api_put("devices/#{id}", {correction: correction}.to_json)
62
+ end
63
+
59
64
  def set_power id, power, client: nil
60
65
  client ||= multi_client.client_for_id('devices', id)
61
66
  client.api_put("devices/#{id}", {power: power}.to_json)
@@ -4,19 +4,19 @@
4
4
  "label": "<%= schedule_id %>",
5
5
  "modes": {
6
6
  "1": {
7
- "min": <%= temperature %>,
7
+ "min": 20,
8
8
  "max": 35
9
9
  },
10
10
  "2": {
11
- "min": 20,
11
+ "min": 22,
12
12
  "max": 35
13
13
  },
14
14
  "3": {
15
- "min": 20,
15
+ "min": <%= temperature %>,
16
16
  "max": 35
17
17
  },
18
18
  "4": {
19
- "min": 28,
19
+ "min": 26,
20
20
  "max": 35
21
21
  }
22
22
  },
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: inels
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Zsolt Prontvai
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-12-02 00:00:00.000000000 Z
11
+ date: 2018-03-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client
@@ -16,21 +16,23 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.9.2
19
+ version: 1.7.3
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.9.2
26
+ version: 1.7.3
27
27
  description: Client library for the Inels eLAN-RF-003 home automation system
28
28
  email:
29
29
  - prozsolt@gmail.com
30
- executables: []
30
+ executables:
31
+ - inels
31
32
  extensions: []
32
33
  extra_rdoc_files: []
33
34
  files:
35
+ - bin/inels
34
36
  - lib/inels.rb
35
37
  - lib/inels/client.rb
36
38
  - lib/inels/controller.rb
@@ -55,7 +57,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
55
57
  version: '0'
56
58
  requirements: []
57
59
  rubyforge_project:
58
- rubygems_version: 2.6.11
60
+ rubygems_version: 2.7.3
59
61
  signing_key:
60
62
  specification_version: 4
61
63
  summary: Inels client library