homie-mqtt 1.4.0 → 1.4.5

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: adb5e19afec9a2e2d3525ea4879992306f2cd56632139bbc4d691ccc1e2b6bbb
4
- data.tar.gz: ff164da43b91048841edef8488e654108d0c566dfe4e0b8150a1cff423b36214
3
+ metadata.gz: c95ecceb8af9d97949e7ee75cccf878f80270ff703c07ee957b9b276c96f6538
4
+ data.tar.gz: 0162763dce328e5c4a43045740ca5e907d0506de4e8fc05592c524763274e965
5
5
  SHA512:
6
- metadata.gz: b4cd79531f71ce7cc077b7f06acd181dd41694494eacab571323fb3930755a10aa57254b1d81dfec3d66ab880b39adc5b21af62ce8c66e84304ca52bf2021fc6
7
- data.tar.gz: a11b7bf36fdfb34677d9becdb733ddd4c53cf0ed64f51575b44d257e37b04bd7c07599b0ca6c37b0c7da70466d0b3389373b2d9795327947ba93dd2d14761528
6
+ metadata.gz: 53500d60691a22a98a46c81e0f5c6627bcc356503186f5275b4c643321254719ac6effbb094241f1f37800859f80f6ec4b9b5c2749e91f4169ec38e1073d9595
7
+ data.tar.gz: 4ee3a6ba42de0f71746c1211e4d9e543d3587d7f7d79524667e71b40a61e3a65a5a23ec90a8e09dc318399528b65345d863df423b3a5f5cd44cd3378e2cbcb9f
@@ -1,11 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'mqtt'
4
+ require 'ruby2_keywords'
4
5
 
5
6
  module MQTT
6
7
  module Homie
7
8
  class Device < Base
8
9
  attr_reader :root_topic, :state, :mqtt
10
+ attr_accessor :logger
11
+ attr_accessor :out_of_band_topic_proc
9
12
 
10
13
  def initialize(id, name, root_topic: nil, mqtt: nil, clear_topics: true, &block)
11
14
  super(id, name)
@@ -13,7 +16,7 @@ module MQTT
13
16
  @state = :init
14
17
  @nodes = {}
15
18
  @published = false
16
- @block = block
19
+ @out_of_band_topic_proc = block
17
20
  mqtt = MQTT::Client.new(mqtt) if mqtt.is_a?(String)
18
21
  @mqtt = mqtt || MQTT::Client.new
19
22
  @mqtt.set_will("#{topic}/$state", "lost", retain: true, qos: 1)
@@ -40,11 +43,11 @@ module MQTT
40
43
  "#{root_topic}/#{id}"
41
44
  end
42
45
 
43
- def node(id, *args, **kwargs)
46
+ ruby2_keywords def node(id, *args)
44
47
  raise ArgumentError, "Node '#{id}' already exists" if @nodes.key?(id)
45
48
 
46
49
  init do |prior_state|
47
- node = Node.new(self, id, *args, **kwargs)
50
+ node = Node.new(self, id, *args)
48
51
 
49
52
  @nodes[id] = node
50
53
  yield node if block_given?
@@ -87,12 +90,13 @@ module MQTT
87
90
  Thread.current.report_on_exception = false
88
91
 
89
92
  mqtt.get do |packet|
93
+ logger&.debug("received packet at #{packet.topic} with payload #{packet.payload.inspect}")
90
94
  match = packet.topic.match(topic_regex)
91
95
  node = @nodes[match[:node]] if match
92
96
  property = node[match[:property]] if node
93
97
 
94
98
  unless property&.settable?
95
- @block&.call(topic, packet.payload)
99
+ @out_of_band_topic_proc&.call(packet.topic, packet.payload)
96
100
  next
97
101
  end
98
102
 
@@ -17,9 +17,9 @@ module MQTT
17
17
  "#{device.topic}/#{id}"
18
18
  end
19
19
 
20
- def property(*args, **kwargs, &block)
20
+ ruby2_keywords def property(*args, &block)
21
21
  device.init do |prior_state|
22
- property = Property.new(self, *args, **kwargs, &block)
22
+ property = Property.new(self, *args, &block)
23
23
  raise ArgumentError, "Property '#{property.id}' already exists on '#{id}'" if @properties.key?(property.id)
24
24
  @properties[property.id] = property
25
25
  property.publish if prior_state == :ready
@@ -6,7 +6,7 @@ module MQTT
6
6
  attr_reader :node, :datatype, :format, :unit, :value
7
7
 
8
8
  def initialize(node, id, name, datatype, value = nil, format: nil, retained: true, unit: nil, &block)
9
- raise ArgumentError, "Invalid Homie datatype" unless %s{string integer float boolean enum color datetime duration}
9
+ raise ArgumentError, "Invalid Homie datatype" unless %i[string integer float boolean enum color datetime duration].include?(datatype)
10
10
  raise ArgumentError, "retained must be boolean" unless [true, false].include?(retained)
11
11
  format = format.join(",") if format.is_a?(Array) && datatype == :enum
12
12
  if %i{integer float}.include?(datatype) && format.is_a?(Range)
@@ -170,8 +170,10 @@ module MQTT
170
170
  def publish_value
171
171
  serialized = value
172
172
  serialized = serialized&.iso8601 if %i[datetime duration].include?(datatype)
173
+ serialized = serialized.to_s
173
174
 
174
- mqtt.publish(topic, serialized.to_s, retain: retained?, qos: 1)
175
+ node.device.logger&.debug("publishing #{serialized.inspect} to #{topic}")
176
+ mqtt.publish(topic, serialized, retain: retained?, qos: 1)
175
177
  end
176
178
  end
177
179
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module MQTT
4
4
  module Homie
5
- VERSION = '1.4.0'
5
+ VERSION = '1.4.5'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: homie-mqtt
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 1.4.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cody Cutrer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-07-30 00:00:00.000000000 Z
11
+ date: 2021-09-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mqtt-ccutrer
@@ -17,6 +17,9 @@ dependencies:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.0'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 1.0.1
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -24,6 +27,23 @@ dependencies:
24
27
  - - "~>"
25
28
  - !ruby/object:Gem::Version
26
29
  version: '1.0'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 1.0.1
33
+ - !ruby/object:Gem::Dependency
34
+ name: ruby2_keywords
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: 0.0.5
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: 0.0.5
27
47
  - !ruby/object:Gem::Dependency
28
48
  name: byebug
29
49
  requirement: !ruby/object:Gem::Requirement