tinderfridge 0.1.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/lib/tinderfridge/device.rb +105 -0
  3. data/lib/tinderfridge/device_collection.rb +101 -4
  4. data/lib/tinderfridge/device_info.txt +2 -0
  5. data/lib/tinderfridge/devices/brick_hat/brick_hat.json +10 -0
  6. data/lib/tinderfridge/devices/brick_hat/brick_hat.rb +18 -0
  7. data/lib/tinderfridge/devices/brick_hat_zero/brick_hat_zero.json +10 -0
  8. data/lib/tinderfridge/devices/brick_hat_zero/brick_hat_zero.rb +14 -0
  9. data/lib/tinderfridge/devices/bricklet_air_quality/bricklet_air_quality.json +3 -0
  10. data/lib/tinderfridge/devices/bricklet_air_quality/bricklet_air_quality.rb +20 -0
  11. data/lib/tinderfridge/devices/bricklet_ambient_light_v3/bricklet_ambient_light_v3.json +3 -0
  12. data/lib/tinderfridge/devices/bricklet_ambient_light_v3/bricklet_ambient_light_v3.rb +19 -0
  13. data/lib/tinderfridge/devices/bricklet_color_v2/bricklet_color_v2.json +3 -0
  14. data/lib/tinderfridge/devices/bricklet_color_v2/bricklet_color_v2.rb +31 -0
  15. data/lib/tinderfridge/devices/bricklet_dmx/bricklet_dmx.json +3 -0
  16. data/lib/tinderfridge/devices/bricklet_dmx/bricklet_dmx.rb +18 -0
  17. data/lib/tinderfridge/devices/bricklet_gps_v2/bricklet_gps_v2.json +3 -0
  18. data/lib/tinderfridge/devices/bricklet_gps_v2/bricklet_gps_v2.rb +31 -0
  19. data/lib/tinderfridge/devices/bricklet_imu_v3/bricklet_imu_v3.json +3 -0
  20. data/lib/tinderfridge/devices/bricklet_industrial_dual_relay/bricklet_industrial_dual_relay.json +3 -0
  21. data/lib/tinderfridge/devices/bricklet_industrial_dual_relay/bricklet_industrial_dual_relay.rb +20 -0
  22. data/lib/tinderfridge/devices/bricklet_isolator/bricklet_isolator.json +3 -0
  23. data/lib/tinderfridge/devices/bricklet_isolator/bricklet_isolator.rb +17 -0
  24. data/lib/tinderfridge/devices/bricklet_joystick_v2/bricklet_joystick_v2.json +3 -0
  25. data/lib/tinderfridge/devices/bricklet_joystick_v2/bricklet_joystick_v2.rb +15 -0
  26. data/lib/tinderfridge/devices/bricklet_lcd_128x64/bricklet_lcd_128x64.json +3 -0
  27. data/lib/tinderfridge/devices/bricklet_lcd_128x64/bricklet_lcd_128x64.rb +31 -0
  28. data/lib/tinderfridge/devices/bricklet_led_strip_v2/bricklet_led_strip_v2.json +3 -0
  29. data/lib/tinderfridge/devices/bricklet_led_strip_v2/bricklet_led_strip_v2.rb +55 -0
  30. data/lib/tinderfridge/devices/bricklet_motion_detector_v2/bricklet_motion_detector_v2.json +3 -0
  31. data/lib/tinderfridge/devices/bricklet_motion_detector_v2/bricklet_motion_detector_v2.rb +22 -0
  32. data/lib/tinderfridge/devices/bricklet_motorized_linear_poti/bricklet_motorized_linear_poti.json +3 -0
  33. data/lib/tinderfridge/devices/bricklet_motorized_linear_poti/bricklet_motorized_linear_poti.rb +42 -0
  34. data/lib/tinderfridge/devices/bricklet_multi_touch_v2/bricklet_multi_touch_v2.json +3 -0
  35. data/lib/tinderfridge/devices/bricklet_multi_touch_v2/bricklet_multi_touch_v2.rb +16 -0
  36. data/lib/tinderfridge/devices/bricklet_nfc/bricklet_nfc.json +3 -0
  37. data/lib/tinderfridge/devices/bricklet_nfc/bricklet_nfc.rb +16 -0
  38. data/lib/tinderfridge/devices/bricklet_outdoor_weather/bricklet_outdoor_weather.json +3 -0
  39. data/lib/tinderfridge/devices/bricklet_outdoor_weather/bricklet_outdoor_weather.rb +19 -0
  40. data/lib/tinderfridge/devices/bricklet_performance_dc/bricklet_performance_dc.json +3 -0
  41. data/lib/tinderfridge/devices/bricklet_remote_switch_v2/bricklet_remote_switch_v2.json +3 -0
  42. data/lib/tinderfridge/devices/bricklet_remote_switch_v2/bricklet_remote_switch_v2.rb +15 -0
  43. data/lib/tinderfridge/devices/bricklet_rgb_led_button/bricklet_rgb_led_button.json +3 -0
  44. data/lib/tinderfridge/devices/bricklet_rgb_led_button/bricklet_rgb_led_button.rb +34 -0
  45. data/lib/tinderfridge/devices/bricklet_rgb_led_v2/bricklet_rgb_led_v2.json +3 -0
  46. data/lib/tinderfridge/devices/bricklet_rgb_led_v2/bricklet_rgb_led_v2.rb +32 -0
  47. data/lib/tinderfridge/devices/bricklet_rotary_encoder_v2/bricklet_rotary_encoder_v2.json +3 -0
  48. data/lib/tinderfridge/devices/bricklet_rotary_encoder_v2/bricklet_rotary_encoder_v2.rb +20 -0
  49. data/lib/tinderfridge/devices/bricklet_segment_display_4x7_v2/bricklet_segment_display_4x7_v2.json +3 -0
  50. data/lib/tinderfridge/devices/bricklet_segment_display_4x7_v2/bricklet_segment_display_4x7_v2.rb +128 -0
  51. data/lib/tinderfridge/devices/bricklet_servo_v2/bricklet_servo_v2.json +3 -0
  52. data/lib/tinderfridge/devices/bricklet_voltage_current_v2/bricklet_voltage_current_v2.json +3 -0
  53. data/lib/tinderfridge/devices/bricklet_voltage_current_v2/bricklet_voltage_current_v2.rb +18 -0
  54. data/lib/tinderfridge/ip_connection.rb +76 -21
  55. data/lib/tinderfridge/tinkerforge.rb +3 -0
  56. data/lib/tinderfridge/version.rb +1 -1
  57. metadata +59 -4
@@ -0,0 +1,3 @@
1
+ {
2
+ "documentation_en_url": "https://www.tinkerforge.com/en/doc/Hardware/Bricklets/RGB_LED_V2.html"
3
+ }
@@ -0,0 +1,32 @@
1
+ module Tinkerforge
2
+
3
+ class BrickletRGBLEDV2
4
+
5
+ # Returns the LED's current color as three values for red, green, and blue (integers in the range 0..255).
6
+ def rgb
7
+ get_rgb_value
8
+ end
9
+
10
+ # Sets the LED's color using three values for red, green, and blue (integers in the range 0..255).
11
+ #
12
+ # Values can be supplied as an array or as three separate values.
13
+ def rgb=(*rgb)
14
+ set_rgb_value *rgb.flatten
15
+ end
16
+
17
+ # Switches off the LED.
18
+ def blackout
19
+ self.rgb = 0, 0, 0
20
+ true
21
+ end
22
+
23
+ # Returns the device's state.
24
+ def state
25
+ super.merge(
26
+ 'color_rgb' => get_rgb_value,
27
+ )
28
+ end
29
+
30
+ end
31
+
32
+ end
@@ -0,0 +1,3 @@
1
+ {
2
+ "documentation_en_url": "https://www.tinkerforge.com/en/doc/Hardware/Bricklets/Rotary_Encoder_V2.html"
3
+ }
@@ -0,0 +1,20 @@
1
+ module Tinkerforge
2
+
3
+ class BrickletRotaryEncoderV2
4
+
5
+ # Returns the current count of the encoder.
6
+ def count
7
+ get_count(false)
8
+ end
9
+
10
+ # Returns the device's state.
11
+ def state
12
+ super.merge(
13
+ 'count' => count,
14
+ 'pressed' => is_pressed,
15
+ )
16
+ end
17
+
18
+ end
19
+
20
+ end
@@ -0,0 +1,3 @@
1
+ {
2
+ "documentation_en_url": "https://www.tinkerforge.com/en/doc/Hardware/Bricklets/Segment_Display_4x7_V2.html"
3
+ }
@@ -0,0 +1,128 @@
1
+ module Tinkerforge
2
+
3
+ class BrickletSegmentDisplay4x7V2
4
+
5
+ # Clears the display.
6
+ def clear
7
+ set_segments [false]*8, [false]*8, [false]*8, [false]*8, [false]*2, false
8
+ true
9
+ end
10
+
11
+ alias blackout clear
12
+
13
+ # Returns the state of all 35 segments.
14
+ def segments
15
+ send_request FUNCTION_GET_SEGMENTS, [], '', 14, '?35'
16
+ end
17
+
18
+ # Sets the state of all 35 segments.
19
+ def segments=(*segments)
20
+ segs = segments.flatten
21
+ set_segments segs[0,8], segs[8,8], segs[16,8], segs[24,8], segs[32,2], segs[34]
22
+ end
23
+
24
+ # Returns the state of all 35 segments as a string of 1s and 0s.
25
+ def segments_string
26
+ segments.map { |s| s ? '1' : '0' }.join
27
+ end
28
+
29
+ # Sets the state of all 35 segments using a string of 1s and 0s.
30
+ #
31
+ # For readability, the string may include spaces and underscores, which will be ignored.
32
+ # @example
33
+ # my_bricklet.segments_string = '10000110 11000110 11000110 00000110 00 0'
34
+ def segments_string=(segments)
35
+ self.segments = segments.gsub(/[ _]/, '').ljust(35, '0').chars.map { |s| s == '1' }
36
+ end
37
+
38
+ # Returns the device's state.
39
+ def state
40
+ super.merge( 'brightness' => get_brightness )
41
+ end
42
+
43
+ # Displays a string.
44
+ def print(text='')
45
+ out = ''
46
+ colon = false
47
+
48
+ text.to_s.chars.each do |c|
49
+ if glyphs.key? c
50
+ out << glyphs[c] << '0'
51
+ elsif c == '.' and out[-1] == '0'
52
+ out[-1] = '1'
53
+ elsif c == ':' and out.size == 16
54
+ colon = true
55
+ else
56
+ raise "Can not display '#{text}'"
57
+ end
58
+ end
59
+
60
+ self.segments_string = out[0,32].ljust(32,'0') + ( colon ? '110' : '000' )
61
+ nil
62
+ end
63
+
64
+ # Returns the definition of glyphs for Unicode chracters.
65
+ def glyphs
66
+ @@glyphs ||= {
67
+
68
+ '0' => '1111110',
69
+ '1' => '0110000',
70
+ '2' => '1101101',
71
+ '3' => '1111001',
72
+ '4' => '0110011',
73
+ '5' => '1011011',
74
+ '6' => '1011111',
75
+ '7' => '1110000',
76
+ '8' => '1111111',
77
+ '9' => '1111011',
78
+
79
+ 'A' => '1110111',
80
+ 'b' => '0011111',
81
+ 'c' => '0001101',
82
+ 'C' => '1001110',
83
+ 'd' => '0111101',
84
+ 'E' => '1001111',
85
+ 'F' => '1000111',
86
+ 'G' => '1011110',
87
+ 'H' => '0110111',
88
+ 'h' => '0010111',
89
+ 'I' => '0110000',
90
+ 'i' => '0010000',
91
+ 'J' => '0111000',
92
+ 'L' => '0001110',
93
+ 'l' => '0001100',
94
+ 'n' => '0010101',
95
+ 'O' => '1111110',
96
+ 'o' => '0011101',
97
+ 'P' => '1100111',
98
+ 'q' => '1110011',
99
+ 'r' => '0000101',
100
+ 'S' => '1011011',
101
+ 't' => '0001111',
102
+ 'U' => '0111110',
103
+ 'u' => '0011100',
104
+ 'V' => '0111110',
105
+ 'v' => '0011100',
106
+ 'y' => '0110011',
107
+
108
+ 'ö' => '1011101',
109
+ 'ü' => '1011100',
110
+
111
+ ' ' => '0000000',
112
+
113
+ '_' => '0001000',
114
+ '-' => '0000001',
115
+ '=' => '0001001',
116
+
117
+ '(' => '1001110',
118
+ ')' => '1111000',
119
+
120
+ '[' => '1001110',
121
+ ']' => '1111000',
122
+
123
+ }
124
+ end
125
+
126
+ end
127
+
128
+ end
@@ -0,0 +1,3 @@
1
+ {
2
+ "documentation_en_url": "https://www.tinkerforge.com/en/doc/Hardware/Bricklets/Servo_V2.html"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "documentation_en_url": "https://www.tinkerforge.com/en/doc/Hardware/Bricklets/Voltage_Current_V2.html"
3
+ }
@@ -0,0 +1,18 @@
1
+ module Tinkerforge
2
+
3
+ class BrickletVoltageCurrentV2
4
+
5
+ # Returns the device's state.
6
+ def state
7
+ super.merge(
8
+ 'voltage' => get_voltage,
9
+ 'current' => get_current,
10
+ 'power' => get_power,
11
+ 'configuration' => get_configuration,
12
+ 'calibration' => get_calibration,
13
+ )
14
+ end
15
+
16
+ end
17
+
18
+ end
@@ -4,10 +4,10 @@ module Tinkerforge
4
4
 
5
5
  class IPConnection
6
6
 
7
- # Returns the host for the IP Connection object.
7
+ # Returns the host for the IP Connection.
8
8
  attr_reader :host
9
9
 
10
- # Returns the port for the IP Connection object.
10
+ # Returns the port for the IP Connection.
11
11
  attr_reader :port
12
12
 
13
13
  # Returns a programmer-friendly representation of the object.
@@ -15,46 +15,101 @@ module Tinkerforge
15
15
  "%s (%s:%s)" % [self.class, host, port]
16
16
  end
17
17
 
18
- # Returns a Tinkerforge::DeviceCollection with devices discovered for this IP Connection.
19
- #
20
- # Discovery may take a few seconds, but will return a Tinkerforge::DeviceCollection immediately.
18
+ # Returns the state of the IP Connection.
19
+ def state
20
+ {
21
+ 'host' => host,
22
+ 'port' => port,
23
+ 'connection_state' => get_connection_state,
24
+ 'auto_reconnect' => get_auto_reconnect,
25
+ 'timeout' => get_timeout,
26
+ 'log_size' => log_size,
27
+ }
28
+ end
29
+
30
+ # Returns true if connected to localhost, false if connected via the network.
31
+ def localhost?
32
+ @localhost ||= %w(localhost 127.0.0.1 ::1).include? host
33
+ end
34
+
35
+ # Returns the size (in bytes) of the Brick Daemon log file, if connected to localhost. Nil if connected via the network.
36
+ def log_size
37
+ if local_log_path
38
+ if File.exist? local_log_path
39
+ File.size local_log_path
40
+ else
41
+ 0
42
+ end
43
+ else
44
+ nil
45
+ end
46
+ end
47
+
48
+ # Returns a Tinkerforge::DeviceCollection with devices discovered for this IP Connection. Discovery may take a few moments.
21
49
  #
22
- # It is therefore a good idea to store the result in a variable.
23
- # This variable will be filled with devices as they are found. See examples.
50
+ # Accepts an optional argument for the number of seconds to wait, otherwise returns immediately.
24
51
  #
52
+ # A good idea is to store the result in a variable, which will then be filled with devices as they are found.
25
53
  # @example Using Tinkerforge.connect
26
54
  # my_devices = Tinkerforge.connect.discover
27
55
  #
56
+ # @example Wait 1 second
57
+ # Tinkerforge.connect.discover(1).ls
58
+ #
28
59
  # @example Classic
29
60
  # ipcon = Tinkerforge::IPConnection.new
30
61
  # ipcon.connect 'localhost', 4223
31
62
  # my_devices = ipcon.discover
32
- def discover
63
+ def discover(seconds=nil)
33
64
  list = Tinkerforge::DeviceCollection.new
65
+
34
66
  self.register_callback(CALLBACK_ENUMERATE) do |*args|
35
67
  case args[6]
36
-
37
- when 0, 1 # Available or Connected
38
- info = Tinkerforge.device_info args[5]
39
- if info
40
- require File.join('tinkerforge', info[2][1] )
41
- list[args.first] = Tinkerforge.const_get( info[2][0] ).new args.first, self
42
- else # Device not in device_info
43
- list[args.first] = nil
68
+ when 0, 1
69
+ unless list.key?(args[0])
70
+ if dev = device_instance_from_enum_data(args)
71
+ list[args[0]] = dev
72
+ end
44
73
  end
45
-
46
- when 2 # Disconnected
47
- list[args.first] = nil
48
-
74
+ when 2
75
+ list.delete args[0]
49
76
  else
50
77
  raise "Unknown Enumeration Type: #{args[6]}"
51
-
52
78
  end
53
79
  end
80
+
54
81
  self.enumerate
82
+ sleep(seconds.to_f) if seconds
55
83
  list
56
84
  end
57
85
 
86
+ private
87
+
88
+ # The path for the Brick Daemon log file, if connected to Brickd on the same computer.
89
+ def local_log_path
90
+ @local_log_path ||=
91
+ if localhost?
92
+ if Gem.win_platform?
93
+ 'C:\ProgramData\Tinkerforge\Brickd\brickd.log'
94
+ else
95
+ '/var/log/brickd.log'
96
+ end
97
+ else
98
+ nil
99
+ end
100
+ end
101
+
102
+ # Takes the args supplied by an enumeration callback, and returns a device instance.
103
+ def device_instance_from_enum_data(enum_data)
104
+ if dev_info = Tinkerforge.device_info(enum_data[5])
105
+ require "tinkerforge/#{dev_info[2][1]}"
106
+ Tinkerforge.const_get(dev_info[2][0]).new enum_data[0], self
107
+ else
108
+ warn "Unknown Device Identifier: #{enum_data[5]} (UID: #{enum_data[0]})"
109
+ nil
110
+ end
111
+ end
112
+
58
113
  end
59
114
 
60
115
  # Creates an IP Connection object connected to the given host and port.
@@ -2,6 +2,9 @@ require 'tinkerforge/ip_connection'
2
2
 
3
3
  module Tinkerforge
4
4
 
5
+ ALL_VERSIONS_URL = 'https://download.tinkerforge.com/all_versions.txt'
6
+ LATEST_VERSIONS_URL = 'https://download.tinkerforge.com/latest_versions.txt'
7
+
5
8
  # Returns the directory where Tinkerforge bindings appear to be installed.
6
9
  def self.lib_dir
7
10
  File.dirname File.dirname Device.instance_method('uid').source_location.first
@@ -3,7 +3,7 @@ require 'tinkerforge/version'
3
3
  module Tinkerforge
4
4
 
5
5
  # Tinderfridge version.
6
- TINDERFRIDGE_VERSION = '0.1.0'
6
+ TINDERFRIDGE_VERSION = '0.6.0'
7
7
 
8
8
  # About Tinkerforge & Tinderfridge.
9
9
  def self.about
metadata CHANGED
@@ -1,27 +1,33 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tinderfridge
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - lllist.eu
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-12-09 00:00:00.000000000 Z
11
+ date: 2021-04-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: tinkerforge
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '='
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.1'
20
+ - - ">="
18
21
  - !ruby/object:Gem::Version
19
22
  version: 2.1.27
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
- - - '='
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '2.1'
30
+ - - ">="
25
31
  - !ruby/object:Gem::Version
26
32
  version: 2.1.27
27
33
  description:
@@ -35,6 +41,55 @@ files:
35
41
  - lib/tinderfridge/device_collection.rb
36
42
  - lib/tinderfridge/device_info.rb
37
43
  - lib/tinderfridge/device_info.txt
44
+ - lib/tinderfridge/devices/brick_hat/brick_hat.json
45
+ - lib/tinderfridge/devices/brick_hat/brick_hat.rb
46
+ - lib/tinderfridge/devices/brick_hat_zero/brick_hat_zero.json
47
+ - lib/tinderfridge/devices/brick_hat_zero/brick_hat_zero.rb
48
+ - lib/tinderfridge/devices/bricklet_air_quality/bricklet_air_quality.json
49
+ - lib/tinderfridge/devices/bricklet_air_quality/bricklet_air_quality.rb
50
+ - lib/tinderfridge/devices/bricklet_ambient_light_v3/bricklet_ambient_light_v3.json
51
+ - lib/tinderfridge/devices/bricklet_ambient_light_v3/bricklet_ambient_light_v3.rb
52
+ - lib/tinderfridge/devices/bricklet_color_v2/bricklet_color_v2.json
53
+ - lib/tinderfridge/devices/bricklet_color_v2/bricklet_color_v2.rb
54
+ - lib/tinderfridge/devices/bricklet_dmx/bricklet_dmx.json
55
+ - lib/tinderfridge/devices/bricklet_dmx/bricklet_dmx.rb
56
+ - lib/tinderfridge/devices/bricklet_gps_v2/bricklet_gps_v2.json
57
+ - lib/tinderfridge/devices/bricklet_gps_v2/bricklet_gps_v2.rb
58
+ - lib/tinderfridge/devices/bricklet_imu_v3/bricklet_imu_v3.json
59
+ - lib/tinderfridge/devices/bricklet_industrial_dual_relay/bricklet_industrial_dual_relay.json
60
+ - lib/tinderfridge/devices/bricklet_industrial_dual_relay/bricklet_industrial_dual_relay.rb
61
+ - lib/tinderfridge/devices/bricklet_isolator/bricklet_isolator.json
62
+ - lib/tinderfridge/devices/bricklet_isolator/bricklet_isolator.rb
63
+ - lib/tinderfridge/devices/bricklet_joystick_v2/bricklet_joystick_v2.json
64
+ - lib/tinderfridge/devices/bricklet_joystick_v2/bricklet_joystick_v2.rb
65
+ - lib/tinderfridge/devices/bricklet_lcd_128x64/bricklet_lcd_128x64.json
66
+ - lib/tinderfridge/devices/bricklet_lcd_128x64/bricklet_lcd_128x64.rb
67
+ - lib/tinderfridge/devices/bricklet_led_strip_v2/bricklet_led_strip_v2.json
68
+ - lib/tinderfridge/devices/bricklet_led_strip_v2/bricklet_led_strip_v2.rb
69
+ - lib/tinderfridge/devices/bricklet_motion_detector_v2/bricklet_motion_detector_v2.json
70
+ - lib/tinderfridge/devices/bricklet_motion_detector_v2/bricklet_motion_detector_v2.rb
71
+ - lib/tinderfridge/devices/bricklet_motorized_linear_poti/bricklet_motorized_linear_poti.json
72
+ - lib/tinderfridge/devices/bricklet_motorized_linear_poti/bricklet_motorized_linear_poti.rb
73
+ - lib/tinderfridge/devices/bricklet_multi_touch_v2/bricklet_multi_touch_v2.json
74
+ - lib/tinderfridge/devices/bricklet_multi_touch_v2/bricklet_multi_touch_v2.rb
75
+ - lib/tinderfridge/devices/bricklet_nfc/bricklet_nfc.json
76
+ - lib/tinderfridge/devices/bricklet_nfc/bricklet_nfc.rb
77
+ - lib/tinderfridge/devices/bricklet_outdoor_weather/bricklet_outdoor_weather.json
78
+ - lib/tinderfridge/devices/bricklet_outdoor_weather/bricklet_outdoor_weather.rb
79
+ - lib/tinderfridge/devices/bricklet_performance_dc/bricklet_performance_dc.json
80
+ - lib/tinderfridge/devices/bricklet_remote_switch_v2/bricklet_remote_switch_v2.json
81
+ - lib/tinderfridge/devices/bricklet_remote_switch_v2/bricklet_remote_switch_v2.rb
82
+ - lib/tinderfridge/devices/bricklet_rgb_led_button/bricklet_rgb_led_button.json
83
+ - lib/tinderfridge/devices/bricklet_rgb_led_button/bricklet_rgb_led_button.rb
84
+ - lib/tinderfridge/devices/bricklet_rgb_led_v2/bricklet_rgb_led_v2.json
85
+ - lib/tinderfridge/devices/bricklet_rgb_led_v2/bricklet_rgb_led_v2.rb
86
+ - lib/tinderfridge/devices/bricklet_rotary_encoder_v2/bricklet_rotary_encoder_v2.json
87
+ - lib/tinderfridge/devices/bricklet_rotary_encoder_v2/bricklet_rotary_encoder_v2.rb
88
+ - lib/tinderfridge/devices/bricklet_segment_display_4x7_v2/bricklet_segment_display_4x7_v2.json
89
+ - lib/tinderfridge/devices/bricklet_segment_display_4x7_v2/bricklet_segment_display_4x7_v2.rb
90
+ - lib/tinderfridge/devices/bricklet_servo_v2/bricklet_servo_v2.json
91
+ - lib/tinderfridge/devices/bricklet_voltage_current_v2/bricklet_voltage_current_v2.json
92
+ - lib/tinderfridge/devices/bricklet_voltage_current_v2/bricklet_voltage_current_v2.rb
38
93
  - lib/tinderfridge/ip_connection.rb
39
94
  - lib/tinderfridge/tinkerforge.rb
40
95
  - lib/tinderfridge/version.rb