evok-to-mqtt 0.3.1 → 0.3.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 +5 -5
- data/Gemfile.lock +9 -1
- data/evok-to-mqtt.gemspec +2 -1
- data/lib/evok-to-mqtt/mappers/to_haab.rb +13 -7
- data/lib/evok-to-mqtt/version.rb +1 -1
- data/lib/evok-to-mqtt/worker.rb +6 -3
- metadata +23 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 58769f3fe86f38a1962500db4462407dd29f3b904cbc22cdc90fbf325b7b6038
|
4
|
+
data.tar.gz: 5859defffc657b7cbff987b23608e83cea6b3c39ac5cc2b2113a380fcaf1211a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b69315edff6a40f7a93f5f3eaa2f3e1ec564dc7c8e17bd878e3db980cb723a527ece2545b261bdcf9bd895dda436833c1177073e7a93909b8990e3771a2b534c
|
7
|
+
data.tar.gz: 38d197cf9882273a929f403052be8b5638448c7a7015ea8deaf627b880f3c702a9a89e77be8de82be794c7f50ea9544379cf1319619c69295790f41040229b05
|
data/Gemfile.lock
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
evok-to-mqtt (0.
|
4
|
+
evok-to-mqtt (0.3.1)
|
5
5
|
em-mqtt (~> 0.0.5)
|
6
|
+
jsonrpc-client (~> 0.1.3)
|
6
7
|
websocket-eventmachine-client (~> 1.2)
|
7
8
|
|
8
9
|
GEM
|
@@ -13,7 +14,14 @@ GEM
|
|
13
14
|
eventmachine
|
14
15
|
mqtt (>= 0.3.0)
|
15
16
|
eventmachine (1.2.7)
|
17
|
+
faraday (0.15.4)
|
18
|
+
multipart-post (>= 1.2, < 3)
|
19
|
+
jsonrpc-client (0.1.3)
|
20
|
+
faraday
|
21
|
+
multi_json (>= 1.1.0)
|
16
22
|
mqtt (0.5.0)
|
23
|
+
multi_json (1.13.1)
|
24
|
+
multipart-post (2.0.0)
|
17
25
|
rake (10.5.0)
|
18
26
|
rspec (3.7.0)
|
19
27
|
rspec-core (~> 3.7.0)
|
data/evok-to-mqtt.gemspec
CHANGED
@@ -20,8 +20,9 @@ Gem::Specification.new do |spec|
|
|
20
20
|
spec.executables = ["evok-to-mqtt"]
|
21
21
|
spec.require_paths = ["lib"]
|
22
22
|
|
23
|
-
spec.add_dependency "websocket-eventmachine-client", "~> 1.2"
|
24
23
|
spec.add_dependency "em-mqtt", "~> 0.0.5"
|
24
|
+
spec.add_dependency "jsonrpc-client", "~> 0.1.3"
|
25
|
+
spec.add_dependency "websocket-eventmachine-client", "~> 1.2"
|
25
26
|
|
26
27
|
spec.add_development_dependency "bundler", "~> 1.16"
|
27
28
|
spec.add_development_dependency "rake", "~> 10.0"
|
@@ -16,28 +16,34 @@ module EvokToMqtt
|
|
16
16
|
# Neuron input is assumed for now
|
17
17
|
if @statuses[id]
|
18
18
|
if @statuses[id][:value] == 0 && evok_event['value'] == 1
|
19
|
-
mqtt.publish id, {action: 'down', data: payload}
|
19
|
+
#mqtt.publish id, {action: 'down', data: payload}
|
20
20
|
elsif @statuses[id][:value] == 1 && evok_event['value'] == 0
|
21
|
-
mqtt.publish id, {action: 'up', data: payload}
|
22
|
-
|
23
|
-
|
21
|
+
#mqtt.publish id, {action: 'up', data: payload}
|
22
|
+
if now - @statuses[id][:changed_at] < 2 # seconds
|
23
|
+
mqtt.publish id, {action: 'click', data: payload}
|
24
|
+
puts "### click"
|
25
|
+
else
|
26
|
+
mqtt.publish id, {action: 'long_click', data: payload}
|
27
|
+
puts "### long_click"
|
28
|
+
end
|
24
29
|
end
|
25
30
|
@statuses[id][:value] = evok_event['value']
|
26
31
|
@statuses[id][:changed_at] = now
|
27
32
|
else
|
28
33
|
@statuses[id] = {value: evok_event['value'], changed_at: now}
|
29
|
-
mqtt.publish id, {action: 'down', data: payload}
|
34
|
+
#mqtt.publish id, {action: 'down', data: payload} unless evok_event['value'] == 0 # ignore initial states received in batch
|
30
35
|
end
|
36
|
+
puts
|
31
37
|
end
|
32
38
|
|
33
39
|
private
|
34
40
|
|
35
41
|
def get_topic(dev, circuit)
|
36
42
|
begin
|
37
|
-
return @mapping[dev][circuit] || "
|
43
|
+
return @mapping[dev][circuit] || "evok/#{dev}/#{circuit}" # missing circuit
|
38
44
|
rescue => ex
|
39
45
|
puts "Warning: #{ex}, using raw topic"
|
40
|
-
return "
|
46
|
+
return "evok/#{dev}/#{circuit}" # missing section (dev)
|
41
47
|
end
|
42
48
|
end
|
43
49
|
end
|
data/lib/evok-to-mqtt/version.rb
CHANGED
data/lib/evok-to-mqtt/worker.rb
CHANGED
@@ -16,16 +16,19 @@ module EvokToMqtt
|
|
16
16
|
EM.run do
|
17
17
|
@evok = WebSocket::EventMachine::Client.connect(:uri => "ws://#{@evok_host}:8080/ws")
|
18
18
|
@mqtt = EventMachine::MQTT::ClientConnection.connect(@mqtt_host)
|
19
|
+
#@evok_rpc = JSONRPC::Client.new(evok_host)
|
19
20
|
|
20
21
|
@evok.onmessage do |msg|
|
21
|
-
JSON.parse(msg)
|
22
|
-
|
22
|
+
data = JSON.parse(msg)
|
23
|
+
data = [data] if data.is_a? Hash # temp is not in array in evok messages, but in hash..
|
24
|
+
data.each do |event|
|
25
|
+
next if !event.is_a?(Hash) || %w(wd ai ao relay).include?(event['dev']) # want just input and temp, skip the rest for now
|
23
26
|
puts "Recieved message: #{event}"
|
24
27
|
@mapper.process(@mqtt, event)
|
25
28
|
end
|
26
29
|
end
|
27
30
|
|
28
|
-
@mqtt.subscribe('neuron/
|
31
|
+
@mqtt.subscribe('neuron/relay/#')
|
29
32
|
@mqtt.receive_callback do |msg|
|
30
33
|
# WS set did not work, using REST for now
|
31
34
|
data = JSON.parse(msg.payload)
|
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
|
+
version: 0.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Marek Aufart
|
@@ -9,36 +9,50 @@ autorequire:
|
|
9
9
|
bindir:
|
10
10
|
- bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2019-03-30 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
-
name:
|
15
|
+
name: em-mqtt
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
18
|
- - "~>"
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version:
|
20
|
+
version: 0.0.5
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
25
|
- - "~>"
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version:
|
27
|
+
version: 0.0.5
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
|
-
name:
|
29
|
+
name: jsonrpc-client
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
31
31
|
requirements:
|
32
32
|
- - "~>"
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: 0.
|
34
|
+
version: 0.1.3
|
35
35
|
type: :runtime
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
39
|
- - "~>"
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version: 0.
|
41
|
+
version: 0.1.3
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: websocket-eventmachine-client
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - "~>"
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '1.2'
|
49
|
+
type: :runtime
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - "~>"
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '1.2'
|
42
56
|
- !ruby/object:Gem::Dependency
|
43
57
|
name: bundler
|
44
58
|
requirement: !ruby/object:Gem::Requirement
|
@@ -126,7 +140,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
126
140
|
version: '0'
|
127
141
|
requirements: []
|
128
142
|
rubyforge_project:
|
129
|
-
rubygems_version: 2.
|
143
|
+
rubygems_version: 2.7.6
|
130
144
|
signing_key:
|
131
145
|
specification_version: 4
|
132
146
|
summary: A bridge between Unipi EVOK and MQTT message bus
|