evok-to-mqtt 0.2.0 → 0.2.1

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
- SHA256:
3
- metadata.gz: 785d9c7a80a6d0f3f6542cdcb31948d2b953d1af846c759a7b7eb63dd2010b36
4
- data.tar.gz: 66b75d061bb64340a98c716adf2248195e56b7bb9f2ad5f21923122f261af01b
2
+ SHA1:
3
+ metadata.gz: 4a2c194985e49019a2edeca6e39df69d39ac5b39
4
+ data.tar.gz: 1fb2efdc0b342f542a053678ea6bf2c3d6a3e2e3
5
5
  SHA512:
6
- metadata.gz: 9533b2226a696eadde3e3332b80d393de5ddc0a3d8f0b29e7cd4585a4aa98f85655026981f1f8167a08c54be587093bc81e1c6368880342546e5c6dd4285e146
7
- data.tar.gz: 20332590c4b7a427fb5ebedce3eb5ced30049175c0b7d3675a99a2e36ab114f798dec55bb2c4fa9c5686a258b40805e223bdff920e52e2a714917c5e2d6ef806
6
+ metadata.gz: ebb6455312ca89750aa4e2067300553f7b848e3eeee4d32b8fdfe7e5b831ac84bfea27d1aaf3e30bc308c6dff7df61688a873fbb0bdeb5c0dce478ca70be4223
7
+ data.tar.gz: 4f3f2246a42544a91bf10caa85c60b3ad7c233cc1323a4d981b231f7efe209a756741618fb73499c822ca9d98ffe69daf396bc290d3eb7e2066df6c7974d1528
data/.gitignore CHANGED
@@ -9,3 +9,5 @@
9
9
 
10
10
  # rspec failure tracking
11
11
  .rspec_status
12
+
13
+ evok-to-mqtt-mapping.yml
data/README.md CHANGED
@@ -8,6 +8,8 @@ $ gem install evok-to-mqtt
8
8
 
9
9
  ## Usage
10
10
 
11
+ 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).
12
+
11
13
  ```bash
12
14
  $ evok-to-mqtt <evok_hostname> <mqtt_host>
13
15
  ```
@@ -0,0 +1,14 @@
1
+ # EXAMPLE
2
+ #
3
+ # mistnosti:
4
+ # obyvak, kuchyn, dolni_chodba, horni_chodba, pracovna, dolni_koupelna, tech_mistnost, loznice, horni_koupelna, zachod, detsky_pokoj_2, detsky_pokoj_honza
5
+ #
6
+
7
+ ---
8
+ relay:
9
+ 1_01: obyvak/svetlo
10
+ input:
11
+ 1_01: obyvak/tlacitko_dvere_l
12
+ 1_02: obyvak/tlacitko_dvere_p
13
+ ai:
14
+ 1_01: dum/svetlo_venku
data/evok-to-mqtt.gemspec CHANGED
@@ -9,8 +9,8 @@ Gem::Specification.new do |spec|
9
9
  spec.authors = ["Marek Aufart"]
10
10
  spec.email = ["aufi.cz@gmail.com"]
11
11
 
12
- spec.summary = %q{A bridge between Unipi's EVOK and MQTT message bus}
13
- spec.description = %q{A bridge between Unipi's EVOK and MQTT message bus as Ruby gem}
12
+ spec.summary = %q{A bridge between Unipi EVOK and MQTT message bus}
13
+ spec.description = %q{A bridge between Unipi EVOK and MQTT message bus as Ruby gem}
14
14
  spec.homepage = "https://github.com/aufi/evok-to-mqtt"
15
15
  spec.license = "Apache-2.0"
16
16
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
data/lib/evok-to-mqtt.rb CHANGED
@@ -1,10 +1,11 @@
1
1
  # load everything
2
2
  #Dir['./lib/**/*.rb'].each{ |f| require f }
3
- #require "pry"
3
+ require 'yaml'
4
4
 
5
5
  module EvokToMqtt
6
- def self.run(evok_host, mqtt_host)
7
- app = EvokToMqtt::Worker.new(evok_host, mqtt_host, EvokToMqtt::Mappers::ToHaab.new)
6
+ def self.run(evok_host, mqtt_host, mapping_file_path = 'evok-to-mqtt-mapping.yml')
7
+ mapping_config = YAML.load(File.read(mapping_file_path))
8
+ app = EvokToMqtt::Worker.new(evok_host, mqtt_host, EvokToMqtt::Mappers::ToHaab.new(mapping_config))
8
9
  app.run
9
10
  end
10
11
  end
@@ -1,14 +1,13 @@
1
1
  module EvokToMqtt
2
2
  module Mappers
3
3
  class ToHaab
4
- def initialize
4
+ def initialize(mapping)
5
+ @mapping = mapping
5
6
  @statuses = {}
6
7
  end
7
8
 
8
9
  def process(mqtt, evok_event)
9
- # puts "Statuses"
10
- # p @statuses
11
- id = "neuron/#{evok_event["dev"]}/#{evok_event["circuit"]}"
10
+ id = get_topic(evok_event["dev"], evok_event["circuit"])
12
11
  now = Time.now
13
12
  payload = evok_event
14
13
 
@@ -28,6 +27,17 @@ module EvokToMqtt
28
27
  mqtt.publish id, {action: 'down', data: payload}
29
28
  end
30
29
  end
30
+
31
+ private
32
+
33
+ def get_topic(dev, circuit)
34
+ begin
35
+ return @mapping[dev][circuit]
36
+ rescue KeyError => ex
37
+ puts "Warning: #{ex}, using raw topic"
38
+ return "neuron_raw/#{dev}/#{circuit}"
39
+ end
40
+ end
31
41
  end
32
42
  end
33
43
  end
@@ -1,3 +1,3 @@
1
1
  module EvokToMqtt
2
- VERSION = "0.2.0"
2
+ VERSION = "0.2.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: evok-to-mqtt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marek Aufart
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-09-01 00:00:00.000000000 Z
11
+ date: 2018-12-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: websocket-eventmachine-client
@@ -80,7 +80,7 @@ dependencies:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: '3.0'
83
- description: A bridge between Unipi's EVOK and MQTT message bus as Ruby gem
83
+ description: A bridge between Unipi EVOK and MQTT message bus as Ruby gem
84
84
  email:
85
85
  - aufi.cz@gmail.com
86
86
  executables: []
@@ -98,6 +98,7 @@ files:
98
98
  - bin/console
99
99
  - bin/evok-to-mqtt
100
100
  - bin/setup
101
+ - evok-to-mqtt-mapping.yml.example
101
102
  - evok-to-mqtt.gemspec
102
103
  - lib/evok-to-mqtt.rb
103
104
  - lib/evok-to-mqtt/mappers/to_haab.rb
@@ -123,8 +124,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
123
124
  version: '0'
124
125
  requirements: []
125
126
  rubyforge_project:
126
- rubygems_version: 2.7.6
127
+ rubygems_version: 2.4.5.1
127
128
  signing_key:
128
129
  specification_version: 4
129
- summary: A bridge between Unipi's EVOK and MQTT message bus
130
+ summary: A bridge between Unipi EVOK and MQTT message bus
130
131
  test_files: []