sps_mqtt_bridge 0.1.0 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: a1864f9c68e0d8ae7272b83b28b8f34061582bef
4
- data.tar.gz: 3a4e97daf546828fcb2c13a6dde9f03f6e4f7e7e
2
+ SHA256:
3
+ metadata.gz: 0747d4b4cef89b81c6d4797a08b9988c86c27ecc9617be127403ae8fa9cef606
4
+ data.tar.gz: 7ed7899e435ec8f2def042d604cefef3d3ff7837ea385a5959d011223a477db7
5
5
  SHA512:
6
- metadata.gz: 5e6f4c8ec61e70764efb73915a2b3d39e042bec6339c92f7ab1bcee1e64d6b401f9079c8dc2e5c9b89fbe743c35274db8ba765efe501629343cc05410860b259
7
- data.tar.gz: 0ca07569337d1cea9e65f5686a46d28cbc32b94fde6f18347e07d50f900151081dfe336ecb90fb022dd570a1049f066acbc112f64685bed4be008c6766d231d2
6
+ metadata.gz: 2fb49b834a27f38aa89134b27d00ae4acba6e223641ab9e845cc66e8aade3a76f9a205be7b6fc0f33790d5303efad08e3774c0d944268ccf4ade078bd60b869d
7
+ data.tar.gz: 794bba6afae55bf49a648887747e377cf75dce4bdb6cc820b96383201e74c8796cdf630e9ec3e38ff007c5e0e943f60202d196ad017ca67ce7e2c4b1f8618921
checksums.yaml.gz.sig CHANGED
Binary file
@@ -3,15 +3,19 @@
3
3
  # file: sps_mqtt_bridge.rb
4
4
 
5
5
  require 'mqtt'
6
- require 'simplepubsub'
6
+ require 'sps-sub'
7
7
  require 'sps-pub'
8
+ require 'open-uri' # used sps_to_http
9
+ require 'timeout' # used sps_to_http
10
+
8
11
 
9
12
 
10
13
  class SpsMqttBridge
11
14
 
12
- def initialize(mqtt: {address: 'mqtt', port: '1883'},
13
- sps:{address: 'sps', port: '59000'})
14
- @mqtt, @sps = mqtt, sps
15
+ def initialize(mqtt: {address: 'mqtt', port: '1883'},
16
+ sps:{host: 'sps', address: host, port: '59000'},
17
+ sps2:{address: 'sps', port: '59000'})
18
+ @mqtt, @sps, @sps2 = mqtt, sps, sps2
15
19
  end
16
20
 
17
21
  def mqtt_to_sps(topic: '#')
@@ -19,7 +23,7 @@ class SpsMqttBridge
19
23
  MQTT::Client.connect(@mqtt[:address], @mqtt[:port]) do |client|
20
24
 
21
25
  client.get(topic) do |t, message|
22
- SPSPub.notice [t, message].join(': '),
26
+ SPSPub.notice [t, message].join(': '),
23
27
  address: @sps[:address], port: @sps[:port]
24
28
  end
25
29
  end
@@ -27,14 +31,56 @@ class SpsMqttBridge
27
31
 
28
32
  def sps_to_mqtt(topic: '#')
29
33
 
30
- SimplePubSub::Client.connect(@sps[:address], @sps[:port]) do |client|
34
+ SPSSub.new(host: @sps[:address], port: @sps[:port]).\
35
+ subscribe(topic: topic) do |message,t|
31
36
 
32
- client.get(topic) do |t, message|
37
+ MQTT::Client.connect(@mqtt[:address], @mqtt[:port]) do |client|
38
+ client.publish(t, message)
39
+ end
40
+
41
+ end
42
+ end
43
+
44
+ def sps_to_sps(topic: '#')
45
+
46
+ SPSSub.new(host: @sps[:address], port: @sps[:port]).\
47
+ subscribe(topic: topic) do |message,t|
48
+
49
+ SPSPub.notice [t, message].join(': '),
50
+ address: @sps2[:address], port: @sps2[:port]
51
+ end
52
+ end
53
+
54
+ def sps_to_http(topic: '#', url: '', timeout: 5, \
55
+ http_auth: ["user", "password"])
56
+
57
+ sps = SPSSub.new(host: @sps[:address], port: @sps[:port])
58
+
59
+ sps.subscribe(topic: topic) do |message,t|
60
+
61
+ begin
62
+
63
+ Timeout::timeout(timeout){
64
+
65
+ ipaddr = url[/https?:\/\/([^\/]+)/,1]
66
+ ip_address = block_given? ? yield(ipaddr) || ipaddr : ipaddr
67
+ full_url = url.sub(/(https?:\/\/)([^\/]+)/,'\1' + ip_address).\
68
+ sub('$topic', t).sub('$msg', message)
69
+
70
+ buffer = URI.open(full_url, read_timeout: timeout,\
71
+ http_basic_authentication: http_auth).read
72
+
73
+ }
74
+ rescue Timeout::Error => e
75
+
76
+ puts 'connection timed out'
77
+
78
+ rescue OpenURI::HTTPError => e
79
+
80
+ puts '400 bad request'
33
81
 
34
- MQTT::Client.connect(@mqtt[:address], @mqtt[:port]) do |client|
35
- client.publish(t, message)
36
- end
37
82
  end
83
+
38
84
  end
39
85
  end
40
86
  end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sps_mqtt_bridge
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -10,51 +10,55 @@ bindir: bin
10
10
  cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
- MIIDljCCAn6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBIMRIwEAYDVQQDDAlnZW1t
14
- YXN0ZXIxHjAcBgoJkiaJk/IsZAEZFg5qYW1lc3JvYmVydHNvbjESMBAGCgmSJomT
15
- 8ixkARkWAmV1MB4XDTE0MDgxNDEzMzM0M1oXDTE1MDgxNDEzMzM0M1owSDESMBAG
16
- A1UEAwwJZ2VtbWFzdGVyMR4wHAYKCZImiZPyLGQBGRYOamFtZXNyb2JlcnRzb24x
17
- EjAQBgoJkiaJk/IsZAEZFgJldTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
18
- ggEBAMeT1hv8afATASIUEXkVD9TUPO3a8dvkIXKidTjaKP1E880MYXkktCbpwxnD
19
- qiSIaNkxwepKBEWFUKpirfPDcI6snMblOtO7foRJh1djaiDo9bX3L7do1eI5CgCT
20
- Vpf2Tto6N8PxQ5QLeKQgdywnZTRexTQliZOBSfIef3Nq2t0IXNoli0LagpcM8bQ9
21
- OnWHHkpr1C3XrciGvXwN28oKKOOuUNykm9VzTuQW53YVIpqGmov7BAgIWBSyIC8D
22
- +Z79N5Qr+6bGLb8h59qhZtwMcWR/3fAm35PM056auXUTBOl/Sp8bTYOk3AV5kBWL
23
- opyTVw2+augwKL/GALUvaVlWNwECAwEAAaOBijCBhzAJBgNVHRMEAjAAMAsGA1Ud
24
- DwQEAwIEsDAdBgNVHQ4EFgQU1HWJxoOeuAc4z6My+Ya+vRaQFhEwJgYDVR0RBB8w
25
- HYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1h
26
- c3RlckBqYW1lc3JvYmVydHNvbi5ldTANBgkqhkiG9w0BAQUFAAOCAQEAQzR1nElp
27
- pG4aIBDp5O0ID5Ss/eAH3Bvl5Ft+zEqNj/y6ZQLnKf8BakoYcUI6rZVrIUIVmoKo
28
- qNRj0tidcPx/ykswMk04rMlJLWWgD85eq9Ae1nUNtCFMd4BXBezv1hn1B7gYnwUL
29
- NibcPRJQFB9GBF0BNr+rXb9zoRs+s+u3BgOn+n8nJfmKoAYCIMWhKYxaA4HR/vD0
30
- B2JyxCqq38KzRH/YMzOUzVmvXGU65NYBtna03N1W6b80r97Mq8MPj1ErM3b1gg/5
31
- pv2FNqIkZcucsIf5AU2N5Hdq5eWrQL48EQdmK4RQzwxGXSsO6exu1X9KFmXvEdqF
32
- 38OfUVxOcu8i6w==
13
+ MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
14
+ YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMjExMTE4MjA0NjE2WhcN
15
+ MjIxMTE4MjA0NjE2WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
+ cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQCuTdcc
17
+ cf1+jRFhxcDg78m15l693cpTneTq5zF9zrsxCzAE/vvq+jjaRzebYLyDQWUzPtVA
18
+ LWa2s/bA25xBa4JHs4PTe+mSGD0JNOuHZNobFElj+yVRBgpp2l7RJKcaBd+IcruI
19
+ D6bh85qvvmSmk9qQctXH+nA4hWlq8KxMJ+c32lErm/SOX0hvNVW19sLnqVVZe2Pj
20
+ Jt84X4Xt/djvb+/Kdqmuo9wid3MY+4vnGXNtzU6PTtqhzNsO7r8ZRX0tGYLzntfB
21
+ E+DgaDbBYbzJLqHAFsz7OephOS8vJhiIz6CtfZi2RDumDerhQlDTlQu7BtSfD3Is
22
+ GddjOOPRrwx23e6krgtnRlJ9sY9I0irAOK9tCQehK7QGBQ/HxxP1szoeX7IGLo6P
23
+ uOoNQdZM6bPzSOaj2GdxiUXmOjBNJws9wY1NqNZ6A8JNQ5PbxGXj3ghTO701wijO
24
+ QrM94Hlrdp8+r0c+O9O2doqhB1Q0fNIkkZRA6XmNMPd2ZxP+l+Ya3N0kfmMCAwEA
25
+ AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUzHOTbCBz
26
+ DQXZ6UweTdWSHoQUzdswJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
27
+ c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
28
+ BgkqhkiG9w0BAQsFAAOCAYEAM1WWSKlu74tXb3BeLBSX/WSO0/xbAnphcrS/SrW+
29
+ ecoCzjIPy04LzixFkYXpowgmNBUOc8yqCxLv5hzjwTc6bf1dmwObQjyg7eRno710
30
+ vEKDtZTQoLKQOLS4y+2Ki2waVZoI3c8CLSgSOcBDpDHcL7fgUe09uWWzfdrMBMeh
31
+ vwTdIO/n1KTmby4INpTHKqF4IMK85X67B8kwJ3kohnIDU1yeztmiICWtbwfyotB2
32
+ BXKNapPOfz9bBuwehAquXQgynTV9k+4rPWnLcmSsgceN4UzoMQXsoUvXXdmLscaV
33
+ cfm5RbVyjVIBDpqH8OHTTxjhtRZt6kSd/nDQTKed8NpCxSNu8SS2WQWs1noy/f7l
34
+ HX+swCcHIazEMrM1DzEdtOwEZnfK4eBGOYdmbh/HoxvhqIQJmjQS6kP90kDKmosj
35
+ okdUodn4ejgTAei7/kvAnfBUpBHEalVhTzh3FBjH6kJ39h+4TydJdq3IRQA/5EnY
36
+ oX//LQ2ozJLQqPJvDwZHjLYc
33
37
  -----END CERTIFICATE-----
34
- date: 2014-08-14 00:00:00.000000000 Z
38
+ date: 2021-11-18 00:00:00.000000000 Z
35
39
  dependencies:
36
40
  - !ruby/object:Gem::Dependency
37
- name: simplepubsub
41
+ name: sps-pub
38
42
  requirement: !ruby/object:Gem::Requirement
39
43
  requirements:
40
44
  - - "~>"
41
45
  - !ruby/object:Gem::Version
42
- version: '1.1'
46
+ version: '0.5'
43
47
  - - ">="
44
48
  - !ruby/object:Gem::Version
45
- version: 1.1.6
49
+ version: 0.5.5
46
50
  type: :runtime
47
51
  prerelease: false
48
52
  version_requirements: !ruby/object:Gem::Requirement
49
53
  requirements:
50
54
  - - "~>"
51
55
  - !ruby/object:Gem::Version
52
- version: '1.1'
56
+ version: '0.5'
53
57
  - - ">="
54
58
  - !ruby/object:Gem::Version
55
- version: 1.1.6
59
+ version: 0.5.5
56
60
  - !ruby/object:Gem::Dependency
57
- name: sps-pub
61
+ name: sps-sub
58
62
  requirement: !ruby/object:Gem::Requirement
59
63
  requirements:
60
64
  - - "~>"
@@ -62,7 +66,7 @@ dependencies:
62
66
  version: '0.3'
63
67
  - - ">="
64
68
  - !ruby/object:Gem::Version
65
- version: 0.3.0
69
+ version: 0.3.7
66
70
  type: :runtime
67
71
  prerelease: false
68
72
  version_requirements: !ruby/object:Gem::Requirement
@@ -72,29 +76,29 @@ dependencies:
72
76
  version: '0.3'
73
77
  - - ">="
74
78
  - !ruby/object:Gem::Version
75
- version: 0.3.0
79
+ version: 0.3.7
76
80
  - !ruby/object:Gem::Dependency
77
81
  name: mqtt
78
82
  requirement: !ruby/object:Gem::Requirement
79
83
  requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: '0.2'
83
84
  - - ">="
84
85
  - !ruby/object:Gem::Version
85
- version: 0.2.0
86
+ version: 0.5.0
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '0.5'
86
90
  type: :runtime
87
91
  prerelease: false
88
92
  version_requirements: !ruby/object:Gem::Requirement
89
93
  requirements:
90
- - - "~>"
91
- - !ruby/object:Gem::Version
92
- version: '0.2'
93
94
  - - ">="
94
95
  - !ruby/object:Gem::Version
95
- version: 0.2.0
96
+ version: 0.5.0
97
+ - - "~>"
98
+ - !ruby/object:Gem::Version
99
+ version: '0.5'
96
100
  description:
97
- email: james@r0bertson.co.uk
101
+ email: digital.robertson@gmail.com
98
102
  executables: []
99
103
  extensions: []
100
104
  extra_rdoc_files: []
@@ -120,10 +124,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
120
124
  version: '0'
121
125
  requirements: []
122
126
  rubyforge_project:
123
- rubygems_version: 2.2.2
127
+ rubygems_version: 2.7.10
124
128
  signing_key:
125
129
  specification_version: 4
126
- summary: Subscribes and re-publishes messages automatically from MQTT to SPS or vice
127
- versa
130
+ summary: Subscribes and re-publishes messages automatically from MQTT to SPS or to
131
+ HTTP.
128
132
  test_files: []
129
- has_rdoc:
metadata.gz.sig CHANGED
Binary file