fritzbox-smarthome 0.7.0 → 0.8.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
2
  SHA256:
3
- metadata.gz: c4ed289626e1d8c8cacccb9f89eed39178c5b11c781c99a649b3872521a3d0d4
4
- data.tar.gz: 02b35061da61c6f1084b87192eefe55cc83113526addf7caff584240256997f7
3
+ metadata.gz: 528b676ec721f36ef9160187f1acc391b4d3b87c77cf20c85616276c023f8cfa
4
+ data.tar.gz: eb15ac3b83ed9b96b8c451661a6468513c751249fcece13bbc8198d4052de013
5
5
  SHA512:
6
- metadata.gz: d2840a781e1717f8e9b11fa1a18929b316c930e57ee3b5e57a24574ad2f065c1b44fa3837e85dc0e88367ff1f402826d5210d8bbf2b9a9079b48dbe655a9d1e8
7
- data.tar.gz: 02f972de29e194f5c42f7671c3caddfdfe046951e0fd91095f4614412c5afb76a1861ed71211f89d0e44b52ff909dd79df4f7e93d558d50e9903d217ab0e8be4
6
+ metadata.gz: 79cb9a87734ba4926de6425ab870434adf7542ae6410378bad51c79278913afde03e71fe587c2ac2c50a44657b635fe6e7c8595de0b40cf8c4b82eb9cf707d6a
7
+ data.tar.gz: 5900723f11a2479856eb8afc45ec792d19dbc8228001681176db7f3e582f9f92f25212e473719494aa2cdb1aa3864b66c276f0ed199a7984e9fe4f55447ca61b
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 3.2.0
1
+ 3.4.2
data/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # Changelog
2
2
 
3
+ ## v0.8.1
4
+
5
+ * fix: Support for Rails `8.0.x`
6
+
7
+ ## v0.8.0
8
+
9
+ * Use `ActiveModel::Attributes`
10
+ * Allow usage in Rails `7.1` and `7.2`
11
+ * Drop usage in Rails `< 7.0`
12
+
3
13
  ## v0.7.0
4
14
 
5
15
  * Measure HTTP request duration
@@ -20,8 +20,9 @@ Gem::Specification.new do |spec|
20
20
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
21
21
  spec.require_paths = ['lib']
22
22
 
23
- spec.add_dependency 'activesupport', '>= 5.1', '<= 7.1'
24
- spec.add_dependency 'activemodel', '>= 5.1', '<= 7.1'
23
+ spec.add_dependency 'activesupport', '>= 7.0', '< 8.1'
24
+ spec.add_dependency 'activemodel', '>= 7.0', '< 8.1'
25
+ spec.add_dependency 'csv', '~> 3.2' # For httparty to silence deprecation warning in ruby >= 3.3.0
25
26
  spec.add_dependency 'httparty', '~> 0.20'
26
27
  spec.add_dependency 'nori', '~> 2.6'
27
28
  spec.add_dependency 'nokogiri', '~> 1.13'
@@ -2,15 +2,15 @@ module Fritzbox
2
2
  module Smarthome
3
3
  class Actor < Resource
4
4
  include ActiveModel::Model
5
+ include ActiveModel::Attributes
5
6
 
6
- attr_accessor \
7
- :id,
8
- :type,
9
- :ain,
10
- :present,
11
- :name,
12
- :manufacturer,
13
- :group_members
7
+ attribute :id, :string
8
+ attribute :type #, :symbol
9
+ attribute :ain, :string
10
+ attribute :present, :string
11
+ attribute :name, :string
12
+ attribute :manufacturer, :string
13
+ attribute :group_members #, :string, array: true
14
14
 
15
15
  ResourceNotFound = Class.new(RuntimeError)
16
16
 
@@ -1,14 +1,12 @@
1
1
  module Fritzbox
2
2
  module Smarthome
3
3
  class Heater < Actor
4
-
5
- attr_accessor \
6
- :battery,
7
- :batterylow,
8
- :hkr_temp_is,
9
- :hkr_temp_set,
10
- :hkr_next_change_period,
11
- :hkr_next_change_temp
4
+ attribute :battery, :integer
5
+ attribute :batterylow, :integer
6
+ attribute :hkr_temp_is, :float
7
+ attribute :hkr_temp_set, :float
8
+ attribute :hkr_next_change_period, :time
9
+ attribute :hkr_next_change_temp, :float
12
10
 
13
11
  class << self
14
12
  def match?(data)
@@ -1,9 +1,6 @@
1
- # frozen_string_literal: true
2
-
3
1
  module Fritzbox
4
2
  module Smarthome
5
3
  class Lightbulb < Actor
6
-
7
4
  include Properties::SimpleOnOff
8
5
 
9
6
  class << self
@@ -1,5 +1,3 @@
1
- # frozen_string_literal: true
2
-
3
1
  module Fritzbox
4
2
  module Smarthome
5
3
  class NullLogger < Logger
@@ -9,20 +9,20 @@ module Fritzbox
9
9
  extend ActiveSupport::Concern
10
10
 
11
11
  included do
12
- attr_accessor :simpleonoff_state
12
+ attribute :simpleonoff_state, :integer
13
13
  end
14
14
 
15
15
  module ClassMethods
16
16
  def new_from_api(data)
17
17
  instance = defined?(super) ? super : new
18
- instance.simpleonoff_state = data.dig('simpleonoff', 'state').to_i
18
+ instance.simpleonoff_state = data.dig('simpleonoff', 'state')
19
19
  instance
20
20
  end
21
21
  end
22
22
 
23
23
  # @return [Boolean]
24
24
  def active?
25
- simpleonoff_state.to_s == "1"
25
+ simpleonoff_state == 1
26
26
  end
27
27
 
28
28
  # Makes a request to the Fritzbox and set the current instance's active state.
@@ -43,10 +43,9 @@ module Fritzbox
43
43
  def toggle!
44
44
  raise ArgumentError, "Attribute `ain` is missing on #{inspect}" unless respond_to?(:ain)
45
45
  value = active? ? 0 : 1
46
- response =
47
- Fritzbox::Smarthome::Resource.get(command: 'setsimpleonoff', ain: ain, onoff: value)
46
+ response = Fritzbox::Smarthome::Resource.get(command: 'setsimpleonoff', ain: ain, onoff: value)
48
47
 
49
- response.ok? && @simpleonoff_state = value
48
+ response.ok? && self.simpleonoff_state = value
50
49
  end
51
50
  end
52
51
  end
@@ -1,10 +1,7 @@
1
- # frozen_string_literal: true
2
-
3
1
  require 'fritzbox/smarthome/properties/simple_on_off'
4
2
 
5
3
  module Fritzbox
6
4
  module Smarthome
7
- module Properties
8
- end
5
+ module Properties; end
9
6
  end
10
7
  end
@@ -1,10 +1,8 @@
1
1
  module Fritzbox
2
2
  module Smarthome
3
3
  class SmokeDetector < Actor
4
-
5
- attr_accessor \
6
- :alert_state,
7
- :last_alert
4
+ attribute :alert_state, :integer
5
+ attribute :last_alert, :time
8
6
 
9
7
  class << self
10
8
  def match?(data)
@@ -1,19 +1,17 @@
1
1
  module Fritzbox
2
2
  module Smarthome
3
3
  class Switch < Actor
4
-
5
4
  include Properties::SimpleOnOff
6
5
 
7
- attr_accessor \
8
- :switch_state,
9
- :switch_mode,
10
- :switch_lock,
11
- :switch_devicelock,
12
- :powermeter_voltage,
13
- :powermeter_power,
14
- :powermeter_energy,
15
- :temperature_celsius,
16
- :temperature_offset
6
+ attribute :switch_state, :integer
7
+ attribute :switch_mode, :string
8
+ attribute :switch_lock, :integer
9
+ attribute :switch_devicelock, :integer
10
+ attribute :powermeter_voltage, :integer
11
+ attribute :powermeter_power, :integer
12
+ attribute :powermeter_energy, :integer
13
+ attribute :temperature_celsius, :integer
14
+ attribute :temperature_offset, :integer
17
15
 
18
16
  class << self
19
17
  def match?(data)
@@ -25,15 +23,15 @@ module Fritzbox
25
23
  super(data)
26
24
 
27
25
  assign_attributes(
28
- switch_state: data.dig('switch', 'state').to_i,
29
- switch_mode: data.dig('switch', 'mode').to_s,
30
- switch_lock: data.dig('switch', 'lock').to_i,
31
- switch_devicelock: data.dig('switch', 'devicelock').to_i,
32
- powermeter_voltage: data.dig('powermeter', 'voltage').to_i,
33
- powermeter_power: data.dig('powermeter', 'power').to_i,
34
- powermeter_energy: data.dig('powermeter', 'energy').to_i,
35
- temperature_celsius: data.dig('temperature', 'celsius').to_i,
36
- temperature_offset: data.dig('temperature', 'offset').to_i
26
+ switch_state: data.dig('switch', 'state'),
27
+ switch_mode: data.dig('switch', 'mode'),
28
+ switch_lock: data.dig('switch', 'lock'),
29
+ switch_devicelock: data.dig('switch', 'devicelock'),
30
+ powermeter_voltage: data.dig('powermeter', 'voltage'),
31
+ powermeter_power: data.dig('powermeter', 'power'),
32
+ powermeter_energy: data.dig('powermeter', 'energy'),
33
+ temperature_celsius: data.dig('temperature', 'celsius'),
34
+ temperature_offset: data.dig('temperature', 'offset')
37
35
  )
38
36
  end
39
37
  end
@@ -1,5 +1,5 @@
1
1
  module Fritzbox
2
2
  module Smarthome
3
- VERSION = '0.7.0'.freeze
3
+ VERSION = '0.8.1'.freeze
4
4
  end
5
5
  end
@@ -1,6 +1,7 @@
1
1
  require 'active_model'
2
2
  require 'active_support/all'
3
3
  require 'httparty'
4
+ require 'stringio'
4
5
  require 'nori'
5
6
 
6
7
  require 'fritzbox/smarthome/version'
@@ -18,13 +19,13 @@ module Fritzbox
18
19
  module Smarthome
19
20
  class Configuration
20
21
  include ActiveModel::Model
22
+ include ActiveModel::Attributes
21
23
 
22
- attr_accessor \
23
- :endpoint, \
24
- :username, \
25
- :password,
26
- :verify_ssl,
27
- :logger
24
+ attribute :endpoint, :string
25
+ attribute :username, :string
26
+ attribute :password, :string
27
+ attribute :verify_ssl, :boolean
28
+ attribute :logger
28
29
  end
29
30
 
30
31
  @config = Configuration.new.tap do |defaults|
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fritzbox-smarthome
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Klaus Meyer
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2022-12-28 00:00:00.000000000 Z
10
+ date: 2025-04-21 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: activesupport
@@ -16,40 +15,54 @@ dependencies:
16
15
  requirements:
17
16
  - - ">="
18
17
  - !ruby/object:Gem::Version
19
- version: '5.1'
20
- - - "<="
18
+ version: '7.0'
19
+ - - "<"
21
20
  - !ruby/object:Gem::Version
22
- version: '7.1'
21
+ version: '8.1'
23
22
  type: :runtime
24
23
  prerelease: false
25
24
  version_requirements: !ruby/object:Gem::Requirement
26
25
  requirements:
27
26
  - - ">="
28
27
  - !ruby/object:Gem::Version
29
- version: '5.1'
30
- - - "<="
28
+ version: '7.0'
29
+ - - "<"
31
30
  - !ruby/object:Gem::Version
32
- version: '7.1'
31
+ version: '8.1'
33
32
  - !ruby/object:Gem::Dependency
34
33
  name: activemodel
35
34
  requirement: !ruby/object:Gem::Requirement
36
35
  requirements:
37
36
  - - ">="
38
37
  - !ruby/object:Gem::Version
39
- version: '5.1'
40
- - - "<="
38
+ version: '7.0'
39
+ - - "<"
41
40
  - !ruby/object:Gem::Version
42
- version: '7.1'
41
+ version: '8.1'
43
42
  type: :runtime
44
43
  prerelease: false
45
44
  version_requirements: !ruby/object:Gem::Requirement
46
45
  requirements:
47
46
  - - ">="
48
47
  - !ruby/object:Gem::Version
49
- version: '5.1'
50
- - - "<="
48
+ version: '7.0'
49
+ - - "<"
51
50
  - !ruby/object:Gem::Version
52
- version: '7.1'
51
+ version: '8.1'
52
+ - !ruby/object:Gem::Dependency
53
+ name: csv
54
+ requirement: !ruby/object:Gem::Requirement
55
+ requirements:
56
+ - - "~>"
57
+ - !ruby/object:Gem::Version
58
+ version: '3.2'
59
+ type: :runtime
60
+ prerelease: false
61
+ version_requirements: !ruby/object:Gem::Requirement
62
+ requirements:
63
+ - - "~>"
64
+ - !ruby/object:Gem::Version
65
+ version: '3.2'
53
66
  - !ruby/object:Gem::Dependency
54
67
  name: httparty
55
68
  requirement: !ruby/object:Gem::Requirement
@@ -184,7 +197,6 @@ homepage: https://github.com/klausmeyer/fritzbox-smarthome
184
197
  licenses:
185
198
  - MIT
186
199
  metadata: {}
187
- post_install_message:
188
200
  rdoc_options: []
189
201
  require_paths:
190
202
  - lib
@@ -199,8 +211,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
199
211
  - !ruby/object:Gem::Version
200
212
  version: '0'
201
213
  requirements: []
202
- rubygems_version: 3.4.1
203
- signing_key:
214
+ rubygems_version: 3.6.2
204
215
  specification_version: 4
205
216
  summary: Client library to interface with Smarthome features of your FritzBox
206
217
  test_files: []