evok-to-mqtt 0.3.4 → 0.4.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 711e36e73ee487eecfab89bca07163da30c65f3876247b24a911ec8b576f9c92
4
- data.tar.gz: edccae5716f33bdd8a3d4fbd69ab8a93a2a966933398fedc40099f7098e3f736
3
+ metadata.gz: c6b0d14ff9b9c13c51d369f471067a9a55e527e3bec8232cc75389d3c8408570
4
+ data.tar.gz: e756161929840a194f62c5de8c9da7bbaf9a1df14073275e6b30a6e20c8c018d
5
5
  SHA512:
6
- metadata.gz: b3f7e1e6ef366f4a4821e627a6b87ee0d8538f8cfb500f237c9d8037bfb2a6bff2582e073c089a1dbc6c7ed165068b2c2bb455345d05679bf330a5ffe5e69d8a
7
- data.tar.gz: 11962e6c65f44144fd04e07aa026f67e7a2f77d4ce252da7e51e9e84336ba6ebf40aef4a3e89b8b556e854f53ce4ef578228b1344668ee09787857b1ebf73574
6
+ metadata.gz: 4ba5caff437265b5f7c63c36c5566be7bf573778403afd4f9abd7dbd1f60eafb0194e1f381eab9f4f24516e5576b5c89868be791cca606c75c297fba82816b48
7
+ data.tar.gz: 7f8dc6fae6d6c6448aada3182709d674962f020ec4216decb887ba446af211d053ca592b1086de2c7fe3429f2ea72873986e85d84c30e245b09af063766f7259
@@ -1,9 +1,10 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- evok-to-mqtt (0.3.3)
4
+ evok-to-mqtt (0.3.4)
5
5
  em-mqtt (~> 0.0.5)
6
6
  jsonrpc-client (~> 0.1.3)
7
+ slop (~> 4.7.0)
7
8
  websocket-eventmachine-client (~> 1.2)
8
9
 
9
10
  GEM
@@ -14,14 +15,14 @@ GEM
14
15
  eventmachine
15
16
  mqtt (>= 0.3.0)
16
17
  eventmachine (1.2.7)
17
- faraday (0.15.4)
18
+ faraday (0.16.2)
18
19
  multipart-post (>= 1.2, < 3)
19
20
  jsonrpc-client (0.1.3)
20
21
  faraday
21
22
  multi_json (>= 1.1.0)
22
23
  mqtt (0.5.0)
23
24
  multi_json (1.13.1)
24
- multipart-post (2.0.0)
25
+ multipart-post (2.1.1)
25
26
  rake (10.5.0)
26
27
  rspec (3.7.0)
27
28
  rspec-core (~> 3.7.0)
@@ -36,12 +37,13 @@ GEM
36
37
  diff-lcs (>= 1.2.0, < 2.0)
37
38
  rspec-support (~> 3.7.0)
38
39
  rspec-support (3.7.1)
40
+ slop (4.7.0)
39
41
  websocket (1.2.8)
40
42
  websocket-eventmachine-base (1.2.0)
41
43
  eventmachine (~> 1.0)
42
44
  websocket (~> 1.0)
43
45
  websocket-native (~> 1.0)
44
- websocket-eventmachine-client (1.2.0)
46
+ websocket-eventmachine-client (1.3.0)
45
47
  websocket-eventmachine-base (~> 1.0)
46
48
  websocket-native (1.0.0)
47
49
 
@@ -55,4 +57,4 @@ DEPENDENCIES
55
57
  rspec (~> 3.0)
56
58
 
57
59
  BUNDLED WITH
58
- 1.16.3
60
+ 1.17.2
data/README.md CHANGED
@@ -13,7 +13,7 @@ $ gem install evok-to-mqtt
13
13
  Prepare mapping config file ```evok-to-mqtt-mapping.yml``` from [evok-to-mqtt-mapping.yml.example](https://raw.githubusercontent.com/aufi/evok-to-mqtt/master/evok-to-mqtt-mapping.yml.example) and run following:
14
14
 
15
15
  ```bash
16
- $ evok-to-mqtt <evok_hostname> <mqtt_host>
16
+ $ evok-to-mqtt --config evok-to-mqtt-mapping.yml --evok-host localhost --mqtt-host localhost
17
17
  ```
18
18
 
19
19
  ## Development
@@ -1,9 +1,19 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  require "evok-to-mqtt"
4
+ require "slop"
4
5
 
5
- unless ARGV[0] || ARGV[1]
6
- raise "Usage: evok-to-mqtt <evok_host> <mqtt_host>"
6
+ opts = Slop.parse do |opt|
7
+ opt.string "-c", "--config", "Config/mapping file path", default: "./evok-to-mqtt-mapping.yml"
8
+ opt.string "--evok-host", "Hostname or IP where Evok API is running", default: "localhost"
9
+ opt.string "--mqtt-host", "Hostname or IP where MQTT server is running", default: "localhost"
10
+ opt.on "-h", "--help", "Show help" do
11
+ puts "Usage: evok-to-mqtt --config evok-to-mqtt-mapping.yml --evok-host localhost --mqtt-host localhost"
12
+ exit 0
13
+ end
7
14
  end
8
15
 
9
- EvokToMqtt.run(ARGV[0], ARGV[1])
16
+ puts "Starting evok-to-mqtt with options:"
17
+ p opts.to_hash
18
+
19
+ EvokToMqtt.run(opts)
@@ -23,6 +23,7 @@ Gem::Specification.new do |spec|
23
23
  spec.add_dependency "em-mqtt", "~> 0.0.5"
24
24
  spec.add_dependency "jsonrpc-client", "~> 0.1.3"
25
25
  spec.add_dependency "websocket-eventmachine-client", "~> 1.2"
26
+ spec.add_dependency "slop", "~> 4.7.0"
26
27
 
27
28
  spec.add_development_dependency "bundler", "~> 1.16"
28
29
  spec.add_development_dependency "rake", "~> 10.0"
@@ -4,9 +4,10 @@ require 'evok-to-mqtt/worker'
4
4
  require 'yaml'
5
5
 
6
6
  module EvokToMqtt
7
- def self.run(evok_host, mqtt_host, mapping_file_path = 'evok-to-mqtt-mapping.yml')
8
- mapping_config = YAML.load(File.read(mapping_file_path))
9
- app = EvokToMqtt::Worker.new(evok_host, mqtt_host, EvokToMqtt::Mappers::ToHaab.new(mapping_config))
7
+ def self.run(opts)
8
+ mapping_config = YAML.load(File.read(opts[:config]))
9
+ # TODO: add mapper switch raw/haab/..
10
+ app = EvokToMqtt::Worker.new(opts[:evok_host], opts[:mqtt_host], EvokToMqtt::Mappers::ToHaab.new(mapping_config))
10
11
  app.run
11
12
  end
12
13
  end
@@ -0,0 +1,28 @@
1
+ module EvokToMqtt
2
+ module Mappers
3
+ class Raw
4
+ def initialize(mapping)
5
+ @mapping_config = mapping
6
+ end
7
+
8
+ def process(mqtt, evok_event)
9
+ id = get_topic(evok_event["dev"], evok_event["circuit"])
10
+
11
+ puts "Target topic: #{id}"
12
+ mqtt.publish id, evok_event
13
+
14
+ puts
15
+ end
16
+
17
+ def circuit_reverse_lookup(full_topic)
18
+ return full_topic.split("/").last
19
+ end
20
+
21
+ private
22
+
23
+ def get_topic(dev, circuit)
24
+ return "evok/#{dev}/#{circuit}"
25
+ end
26
+ end
27
+ end
28
+ end
@@ -1,3 +1,3 @@
1
1
  module EvokToMqtt
2
- VERSION = "0.3.4"
2
+ VERSION = "0.4.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: evok-to-mqtt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.4
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marek Aufart
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir:
10
10
  - bin
11
11
  cert_chain: []
12
- date: 2019-03-31 00:00:00.000000000 Z
12
+ date: 2019-10-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: em-mqtt
@@ -53,6 +53,20 @@ dependencies:
53
53
  - - "~>"
54
54
  - !ruby/object:Gem::Version
55
55
  version: '1.2'
56
+ - !ruby/object:Gem::Dependency
57
+ name: slop
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: 4.7.0
63
+ type: :runtime
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: 4.7.0
56
70
  - !ruby/object:Gem::Dependency
57
71
  name: bundler
58
72
  requirement: !ruby/object:Gem::Requirement
@@ -117,6 +131,7 @@ files:
117
131
  - evok-to-mqtt-mapping.yml.example
118
132
  - evok-to-mqtt.gemspec
119
133
  - lib/evok-to-mqtt.rb
134
+ - lib/evok-to-mqtt/mappers/raw.rb
120
135
  - lib/evok-to-mqtt/mappers/to_haab.rb
121
136
  - lib/evok-to-mqtt/version.rb
122
137
  - lib/evok-to-mqtt/worker.rb
@@ -139,8 +154,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
139
154
  - !ruby/object:Gem::Version
140
155
  version: '0'
141
156
  requirements: []
142
- rubyforge_project:
143
- rubygems_version: 2.7.6
157
+ rubygems_version: 3.0.3
144
158
  signing_key:
145
159
  specification_version: 4
146
160
  summary: A bridge between Unipi EVOK and MQTT message bus