mqtt-homie 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.
@@ -1,26 +1,26 @@
1
- module MQTT
2
- module Homie
3
- class Node < HomieObject
4
- homie_id
5
- homie_attr :name, required: true
6
- homie_attr :type, required: true
7
- homie_attr :properties, datatype: Array, required: true, immutable: true
8
-
9
- def property(id)
10
- @properties.find { |i| i.id == id }
11
- end
12
-
13
- def homie_attributes
14
- data = super
15
-
16
- @properties.each do |p|
17
- p.homie_attributes.each do |k, v|
18
- data[p.topic + "/" + k] = v
19
- end
20
- data[p.topic] = p.value
21
- end
22
- data
23
- end
24
- end
25
- end
26
- end
1
+ module MQTT
2
+ module Homie
3
+ class Node < HomieObject
4
+ homie_id
5
+ homie_attr :name, required: true
6
+ homie_attr :type, required: true
7
+ homie_attr :properties, datatype: Array, required: true, immutable: true
8
+
9
+ def property(id)
10
+ @properties.find { |i| i.id == id }
11
+ end
12
+
13
+ def homie_attributes
14
+ data = super
15
+
16
+ @properties.each do |p|
17
+ p.homie_attributes.each do |k, v|
18
+ data[p.topic + "/" + k] = v
19
+ end
20
+ data[p.topic] = p.value
21
+ end
22
+ data
23
+ end
24
+ end
25
+ end
26
+ end
@@ -1,48 +1,48 @@
1
- require "observer"
2
-
3
- module MQTT
4
- module Homie
5
- class Property < HomieObject
6
- include Observable
7
-
8
- DATA_TYPES = [:integer, :float, :boolean, :string, :enum, :color]
9
-
10
- homie_id
11
- homie_attr :name, default: ""
12
- homie_attr :settable, default: false, datatype: :boolean
13
- homie_attr :retained, default: true, datatype: :boolean
14
- homie_attr :datatype, default: :string, enum: DATA_TYPES, datatype: Symbol
15
- homie_attr :unit, default: ""
16
- homie_attr :format, required: lambda { |i| [:enum, :color].include?(i.datatype) }
17
-
18
- attr_reader :value
19
-
20
- def initialize(options = {})
21
- options = options.dup
22
-
23
- # enum shortcut
24
- if enum = options.delete(:enum)
25
- options[:datatype] = :enum
26
- options[:format] = enum.collect { |i| i.to_s }.join(",")
27
- end
28
-
29
- super(options)
30
-
31
- @value = options[:value]
32
- end
33
-
34
- def value=(value)
35
- # TODO: check value conforms to expected datatype and format?
36
- if value != @value
37
- @value = value
38
- changed
39
- notify_observers(Time.now, self)
40
- end
41
- end
42
-
43
- def settable?
44
- @settable
45
- end
46
- end
47
- end
48
- end
1
+ require "observer"
2
+
3
+ module MQTT
4
+ module Homie
5
+ class Property < HomieObject
6
+ include Observable
7
+
8
+ DATA_TYPES = [:integer, :float, :boolean, :string, :enum, :color]
9
+
10
+ homie_id
11
+ homie_attr :name, default: ""
12
+ homie_attr :settable, default: false, datatype: :boolean
13
+ homie_attr :retained, default: true, datatype: :boolean
14
+ homie_attr :datatype, default: :string, enum: DATA_TYPES, datatype: Symbol
15
+ homie_attr :unit, default: ""
16
+ homie_attr :format, required: lambda { |i| [:enum, :color].include?(i.datatype) }
17
+
18
+ attr_reader :value
19
+
20
+ def initialize(options = {})
21
+ options = options.dup
22
+
23
+ # enum shortcut
24
+ if enum = options.delete(:enum)
25
+ options[:datatype] = :enum
26
+ options[:format] = enum.collect { |i| i.to_s }.join(",")
27
+ end
28
+
29
+ super(options)
30
+
31
+ @value = options[:value]
32
+ end
33
+
34
+ def value=(value)
35
+ # TODO: check value conforms to expected datatype and format?
36
+ if value != @value
37
+ @value = value
38
+ changed
39
+ notify_observers(Time.now, self)
40
+ end
41
+ end
42
+
43
+ def settable?
44
+ @settable
45
+ end
46
+ end
47
+ end
48
+ end
@@ -1,5 +1,5 @@
1
- module MQTT
2
- module Homie
3
- VERSION = "0.1.1"
4
- end
5
- end
1
+ module MQTT
2
+ module Homie
3
+ VERSION = "0.1.2"
4
+ end
5
+ end
data/lib/mqtt/homie.rb CHANGED
@@ -1,29 +1,29 @@
1
- require "mqtt"
2
- require "mqtt/homie/version"
3
-
4
- module MQTT
5
- module Homie
6
- class Error < StandardError; end
7
-
8
- class << self
9
- attr_accessor :logger
10
-
11
- def debug(message)
12
- logger.debug(message) if logger
13
- end
14
-
15
- def device_builder(options = {})
16
- MQTT::Homie::DeviceBuilder.new(options)
17
- end
18
- end
19
- end
20
- end
21
-
22
- require "mqtt/homie/homie_attribute"
23
- require "mqtt/homie/homie_object"
24
- require "mqtt/homie/network"
25
- require "mqtt/homie/property"
26
- require "mqtt/homie/node"
27
- require "mqtt/homie/device"
28
- require "mqtt/homie/client"
29
- require "mqtt/homie/device_builder"
1
+ require "mqtt"
2
+ require "mqtt/homie/version"
3
+
4
+ module MQTT
5
+ module Homie
6
+ class Error < StandardError; end
7
+
8
+ class << self
9
+ attr_accessor :logger
10
+
11
+ def debug(message)
12
+ logger.debug(message) if logger
13
+ end
14
+
15
+ def device_builder(options = {})
16
+ MQTT::Homie::DeviceBuilder.new(options)
17
+ end
18
+ end
19
+ end
20
+ end
21
+
22
+ require "mqtt/homie/homie_attribute"
23
+ require "mqtt/homie/homie_object"
24
+ require "mqtt/homie/network"
25
+ require "mqtt/homie/property"
26
+ require "mqtt/homie/node"
27
+ require "mqtt/homie/device"
28
+ require "mqtt/homie/client"
29
+ require "mqtt/homie/device_builder"
data/mqtt-homie.gemspec CHANGED
@@ -1,37 +1,36 @@
1
- lib = File.expand_path("lib", __dir__)
2
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
- require "mqtt/homie/version"
4
-
5
- Gem::Specification.new do |spec|
6
- spec.name = "mqtt-homie"
7
- spec.version = MQTT::Homie::VERSION
8
- spec.authors = ["Andrew Williams"]
9
- spec.email = ["sobakasu@gmail.com"]
10
-
11
- spec.summary = %q{A ruby interface for creating a device conforming to the MQTT Homie convention.}
12
- spec.homepage = "https://github.com/sobakasu/mqtt-homie"
13
- spec.license = "MIT"
14
-
15
- spec.metadata["allowed_push_host"] = "https://rubygems.org"
16
-
17
- spec.metadata["homepage_uri"] = spec.homepage
18
- spec.metadata["source_code_uri"] = "https://github.com/sobakasu/mqtt-homie"
19
- spec.metadata["changelog_uri"] = "https://github.com/sobakasu/mqtt-homie/CHANGELOG"
20
-
21
- # Specify which files should be added to the gem when it is released.
22
- # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
23
- spec.files = Dir.chdir(File.expand_path("..", __FILE__)) do
24
- `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
25
- end
26
- spec.bindir = "exe"
27
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
28
- spec.require_paths = ["lib"]
29
-
30
- spec.add_development_dependency "bundler", "~> 2.0"
31
- spec.add_development_dependency "rake", "~> 10.0"
32
- spec.add_development_dependency "rspec", "~> 3.0"
33
-
34
- spec.add_dependency "mqtt", "~> 0.5"
35
- spec.add_dependency "sys-uname", "~> 1.0"
36
- spec.add_dependency "macaddr", "~> 1.1"
37
- end
1
+ lib = File.expand_path("lib", __dir__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+ require "mqtt/homie/version"
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = "mqtt-homie"
7
+ spec.version = MQTT::Homie::VERSION
8
+ spec.authors = ["Andrew Williams"]
9
+ spec.email = ["sobakasu@gmail.com"]
10
+
11
+ spec.summary = %q{A ruby interface for creating a device conforming to the MQTT Homie convention.}
12
+ spec.homepage = "https://github.com/sobakasu/mqtt-homie"
13
+ spec.license = "MIT"
14
+
15
+ spec.metadata["allowed_push_host"] = "https://rubygems.org"
16
+
17
+ spec.metadata["homepage_uri"] = spec.homepage
18
+ spec.metadata["source_code_uri"] = "https://github.com/sobakasu/mqtt-homie"
19
+ spec.metadata["changelog_uri"] = "https://github.com/sobakasu/mqtt-homie/CHANGELOG"
20
+
21
+ # Specify which files should be added to the gem when it is released.
22
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
23
+ spec.files = Dir.chdir(File.expand_path("..", __FILE__)) do
24
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
25
+ end
26
+ spec.bindir = "exe"
27
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
28
+ spec.require_paths = ["lib"]
29
+
30
+ spec.add_development_dependency "rake"
31
+ spec.add_development_dependency "rspec"
32
+
33
+ spec.add_dependency "mqtt", "~> 0.6"
34
+ spec.add_dependency "sys-uname"
35
+ spec.add_dependency "macaddr"
36
+ end
metadata CHANGED
@@ -1,100 +1,86 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mqtt-homie
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
  - Andrew Williams
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-06-28 00:00:00.000000000 Z
11
+ date: 2025-06-14 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: bundler
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '2.0'
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '2.0'
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: rake
29
15
  requirement: !ruby/object:Gem::Requirement
30
16
  requirements:
31
- - - "~>"
17
+ - - ">="
32
18
  - !ruby/object:Gem::Version
33
- version: '10.0'
19
+ version: '0'
34
20
  type: :development
35
21
  prerelease: false
36
22
  version_requirements: !ruby/object:Gem::Requirement
37
23
  requirements:
38
- - - "~>"
24
+ - - ">="
39
25
  - !ruby/object:Gem::Version
40
- version: '10.0'
26
+ version: '0'
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: rspec
43
29
  requirement: !ruby/object:Gem::Requirement
44
30
  requirements:
45
- - - "~>"
31
+ - - ">="
46
32
  - !ruby/object:Gem::Version
47
- version: '3.0'
33
+ version: '0'
48
34
  type: :development
49
35
  prerelease: false
50
36
  version_requirements: !ruby/object:Gem::Requirement
51
37
  requirements:
52
- - - "~>"
38
+ - - ">="
53
39
  - !ruby/object:Gem::Version
54
- version: '3.0'
40
+ version: '0'
55
41
  - !ruby/object:Gem::Dependency
56
42
  name: mqtt
57
43
  requirement: !ruby/object:Gem::Requirement
58
44
  requirements:
59
45
  - - "~>"
60
46
  - !ruby/object:Gem::Version
61
- version: '0.5'
47
+ version: '0.6'
62
48
  type: :runtime
63
49
  prerelease: false
64
50
  version_requirements: !ruby/object:Gem::Requirement
65
51
  requirements:
66
52
  - - "~>"
67
53
  - !ruby/object:Gem::Version
68
- version: '0.5'
54
+ version: '0.6'
69
55
  - !ruby/object:Gem::Dependency
70
56
  name: sys-uname
71
57
  requirement: !ruby/object:Gem::Requirement
72
58
  requirements:
73
- - - "~>"
59
+ - - ">="
74
60
  - !ruby/object:Gem::Version
75
- version: '1.0'
61
+ version: '0'
76
62
  type: :runtime
77
63
  prerelease: false
78
64
  version_requirements: !ruby/object:Gem::Requirement
79
65
  requirements:
80
- - - "~>"
66
+ - - ">="
81
67
  - !ruby/object:Gem::Version
82
- version: '1.0'
68
+ version: '0'
83
69
  - !ruby/object:Gem::Dependency
84
70
  name: macaddr
85
71
  requirement: !ruby/object:Gem::Requirement
86
72
  requirements:
87
- - - "~>"
73
+ - - ">="
88
74
  - !ruby/object:Gem::Version
89
- version: '1.1'
75
+ version: '0'
90
76
  type: :runtime
91
77
  prerelease: false
92
78
  version_requirements: !ruby/object:Gem::Requirement
93
79
  requirements:
94
- - - "~>"
80
+ - - ">="
95
81
  - !ruby/object:Gem::Version
96
- version: '1.1'
97
- description:
82
+ version: '0'
83
+ description:
98
84
  email:
99
85
  - sobakasu@gmail.com
100
86
  executables: []
@@ -106,7 +92,6 @@ files:
106
92
  - ".travis.yml"
107
93
  - CODE_OF_CONDUCT.md
108
94
  - Gemfile
109
- - Gemfile.lock
110
95
  - LICENSE.txt
111
96
  - README.md
112
97
  - Rakefile
@@ -131,7 +116,7 @@ metadata:
131
116
  homepage_uri: https://github.com/sobakasu/mqtt-homie
132
117
  source_code_uri: https://github.com/sobakasu/mqtt-homie
133
118
  changelog_uri: https://github.com/sobakasu/mqtt-homie/CHANGELOG
134
- post_install_message:
119
+ post_install_message:
135
120
  rdoc_options: []
136
121
  require_paths:
137
122
  - lib
@@ -146,9 +131,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
146
131
  - !ruby/object:Gem::Version
147
132
  version: '0'
148
133
  requirements: []
149
- rubyforge_project:
150
- rubygems_version: 2.7.6.2
151
- signing_key:
134
+ rubygems_version: 3.3.15
135
+ signing_key:
152
136
  specification_version: 4
153
137
  summary: A ruby interface for creating a device conforming to the MQTT Homie convention.
154
138
  test_files: []
data/Gemfile.lock DELETED
@@ -1,45 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- mqtt-homie (0.1.0)
5
- macaddr (~> 1.1)
6
- mqtt (~> 0.5)
7
- sys-uname (~> 1.0)
8
-
9
- GEM
10
- remote: https://rubygems.org/
11
- specs:
12
- diff-lcs (1.3)
13
- ffi (1.11.1-x64-mingw32)
14
- macaddr (1.7.2)
15
- systemu (~> 2.6.5)
16
- mqtt (0.5.0)
17
- rake (10.5.0)
18
- rspec (3.8.0)
19
- rspec-core (~> 3.8.0)
20
- rspec-expectations (~> 3.8.0)
21
- rspec-mocks (~> 3.8.0)
22
- rspec-core (3.8.1)
23
- rspec-support (~> 3.8.0)
24
- rspec-expectations (3.8.4)
25
- diff-lcs (>= 1.2.0, < 2.0)
26
- rspec-support (~> 3.8.0)
27
- rspec-mocks (3.8.1)
28
- diff-lcs (>= 1.2.0, < 2.0)
29
- rspec-support (~> 3.8.0)
30
- rspec-support (3.8.2)
31
- sys-uname (1.0.4)
32
- ffi (>= 1.0.0)
33
- systemu (2.6.5)
34
-
35
- PLATFORMS
36
- x64-mingw32
37
-
38
- DEPENDENCIES
39
- bundler (~> 2.0)
40
- mqtt-homie!
41
- rake (~> 10.0)
42
- rspec (~> 3.0)
43
-
44
- BUNDLED WITH
45
- 2.0.2