tinderfridge 0.4.0 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/tinderfridge/device.rb +10 -0
- data/lib/tinderfridge/device_collection.rb +36 -0
- data/lib/tinderfridge/devices/bricklet_air_quality.rb +20 -0
- data/lib/tinderfridge/devices/bricklet_ambient_light_v3.rb +19 -0
- data/lib/tinderfridge/devices/bricklet_joystick_v2.rb +15 -0
- data/lib/tinderfridge/devices/bricklet_motorized_linear_poti.rb +42 -0
- data/lib/tinderfridge/devices/bricklet_remote_switch_v2.rb +15 -0
- data/lib/tinderfridge/devices/bricklet_rgb_led_button.rb +9 -0
- data/lib/tinderfridge/devices/bricklet_rgb_led_v2.rb +7 -0
- data/lib/tinderfridge/devices/bricklet_rotary_encoder_v2.rb +20 -0
- data/lib/tinderfridge/ip_connection.rb +5 -0
- data/lib/tinderfridge/version.rb +1 -1
- metadata +8 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d7b851b2ea04d7ab8385d6ca4f11cece38721b4cb09dd7afbd449e84d9e4e2a7
|
4
|
+
data.tar.gz: 19e264699bc41886fe56fa954339d04b118994d39990cb0e834d7a8b5fb1f0e2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7694f3b62443011a1658034d015a50485f491cee038ce87f820b58e35bf017ce857a21a25a8aae33b92602164100e04a50fc5094679da1164a0592a845852b5b
|
7
|
+
data.tar.gz: fd7b21aac321ae3b25be1857da5e6c91cbc26d7f3bc839fd5934774de35dd9730a5bdfa13ed103f8d4d3bfb4f533d87a325f01f20ec6db30991a24511a0f6e7d
|
data/lib/tinderfridge/device.rb
CHANGED
@@ -66,6 +66,16 @@ module Tinkerforge
|
|
66
66
|
# Returns the device's IPConnection object.
|
67
67
|
attr_reader :ipcon
|
68
68
|
|
69
|
+
# Returns device information.
|
70
|
+
#
|
71
|
+
# Device information is an array:
|
72
|
+
# - 0 : Device Identifier
|
73
|
+
# - 1 : Device Display Name
|
74
|
+
# - 2 : Associated class name and source file
|
75
|
+
def device_info
|
76
|
+
Tinkerforge.device_info device_identifier
|
77
|
+
end
|
78
|
+
|
69
79
|
# Returns a programmer-friendly representation of the device.
|
70
80
|
def inspect
|
71
81
|
"%s (%s@%s:%s)" % [self.class, @uid_string, ipcon.host, ipcon.port]
|
@@ -80,6 +80,42 @@ module Tinkerforge
|
|
80
80
|
smap('ipcon').values.compact.uniq
|
81
81
|
end
|
82
82
|
|
83
|
+
# Returns an array of devices in the collection matching the selector.
|
84
|
+
#
|
85
|
+
# Selector argument can be:
|
86
|
+
# - Device Identifier
|
87
|
+
# - Class name or Device Display Name (Regexp)
|
88
|
+
# Selection by regular expression is case-insensitive by default.
|
89
|
+
#
|
90
|
+
# @example Select by class name and Device Display Name
|
91
|
+
# # All 'analog' devices
|
92
|
+
# tf = Tinkerforge.connect.discover(1)
|
93
|
+
# tf.find_all /analog/
|
94
|
+
def find_all(selector)
|
95
|
+
case selector
|
96
|
+
when Integer
|
97
|
+
values.select { |v| v.device_identifier == selector}
|
98
|
+
when Regexp
|
99
|
+
r = Regexp.new selector.source, Regexp::IGNORECASE
|
100
|
+
values.select { |v| v.class.to_s.split('::').last =~ r || v.device_display_name =~ r }
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
# Returns the first device in the collection matching the selector.
|
105
|
+
#
|
106
|
+
# Selector argument can be:
|
107
|
+
# - Device Identifier
|
108
|
+
# - Class name or Device Display Name (Regexp)
|
109
|
+
# Selection by regular expression is case-insensitive by default.
|
110
|
+
#
|
111
|
+
# @example Select by Device Identifier
|
112
|
+
# # Remote Switch Bricklet 2.0
|
113
|
+
# tf = Tinkerforge.connect('myhost.local').discover(1)
|
114
|
+
# tf.find 289
|
115
|
+
def find(selector)
|
116
|
+
find_all(selector).first
|
117
|
+
end
|
118
|
+
|
83
119
|
private
|
84
120
|
|
85
121
|
def smap(m)
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Tinkerforge
|
2
|
+
|
3
|
+
class BrickletAirQuality
|
4
|
+
|
5
|
+
# Returns the device's state.
|
6
|
+
def state
|
7
|
+
av = get_all_values
|
8
|
+
super.merge(
|
9
|
+
'iaq_index' => av[0],
|
10
|
+
'iaq_index_accuracy' => av[1],
|
11
|
+
'temperature' => av[2],
|
12
|
+
'temperature_offset' => get_temperature_offset,
|
13
|
+
'humidity' => av[3],
|
14
|
+
'air_pressure' => av[4],
|
15
|
+
)
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Tinkerforge
|
2
|
+
|
3
|
+
class BrickletAmbientLightV3
|
4
|
+
|
5
|
+
ILLUMINANCE_RANGES = [ 64000, 32000, 16000, 8000, 1300, 600, 100000 ]
|
6
|
+
|
7
|
+
# Returns the device's state.
|
8
|
+
def state
|
9
|
+
super.merge(
|
10
|
+
'configuration' => conf = get_configuration,
|
11
|
+
'illuminance_range' => ILLUMINANCE_RANGES[ conf[0] ],
|
12
|
+
'integration_time' => 50 + conf[1] * 50,
|
13
|
+
'illuminance_raw' => get_illuminance,
|
14
|
+
)
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
module Tinkerforge
|
2
|
+
|
3
|
+
class BrickletMotorizedLinearPoti
|
4
|
+
|
5
|
+
# Returns the position of the potentiometer (an integer in the range 0..100).
|
6
|
+
def position
|
7
|
+
get_position
|
8
|
+
end
|
9
|
+
|
10
|
+
# Moves the potentiometer to the given position.
|
11
|
+
#
|
12
|
+
# If the potentiometer was locked before, it will be locked at the new position.
|
13
|
+
# The drive mode (speed) will be the same as the last time the position was set.
|
14
|
+
def position=(position)
|
15
|
+
set_motor_position( position, *get_motor_position[1,2] )
|
16
|
+
end
|
17
|
+
|
18
|
+
alias move_to position=
|
19
|
+
|
20
|
+
# Locks the position of the potentiometer. If a position is given, moves to that position first.
|
21
|
+
def lock(position=nil)
|
22
|
+
set_motor_position( position || get_position, get_motor_position[1], true )
|
23
|
+
end
|
24
|
+
|
25
|
+
alias hold lock
|
26
|
+
|
27
|
+
# Releases the potentiometer, so its position can be changed by hand. If a position is given, moves to that position first.
|
28
|
+
def release(position=nil)
|
29
|
+
set_motor_position( position || get_position, get_motor_position[1], false )
|
30
|
+
end
|
31
|
+
|
32
|
+
# Returns the device's state.
|
33
|
+
def state
|
34
|
+
super.merge(
|
35
|
+
'position' => get_position,
|
36
|
+
'motor_position' => get_motor_position,
|
37
|
+
)
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
@@ -20,6 +20,15 @@ module Tinkerforge
|
|
20
20
|
true
|
21
21
|
end
|
22
22
|
|
23
|
+
# Returns the device's state.
|
24
|
+
def state
|
25
|
+
super.merge(
|
26
|
+
'color_rgb' => get_color,
|
27
|
+
'color_calibration' => get_color_calibration,
|
28
|
+
'pressed' => ( get_button_state == 0 ) ? true : false,
|
29
|
+
)
|
30
|
+
end
|
31
|
+
|
23
32
|
end
|
24
33
|
|
25
34
|
end
|
@@ -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
|
@@ -15,6 +15,11 @@ module Tinkerforge
|
|
15
15
|
"%s (%s:%s)" % [self.class, host, port]
|
16
16
|
end
|
17
17
|
|
18
|
+
# Returns true if connected to localhost, false if connected via the network.
|
19
|
+
def localhost?
|
20
|
+
@localhost ||= %w(localhost 127.0.0.1 ::1).include? host
|
21
|
+
end
|
22
|
+
|
18
23
|
# Returns a Tinkerforge::DeviceCollection with devices discovered for this IP Connection. Discovery may take a few moments.
|
19
24
|
#
|
20
25
|
# Accepts an optional argument for the number of seconds to wait, otherwise returns immediately.
|
data/lib/tinderfridge/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tinderfridge
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.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: 2021-
|
11
|
+
date: 2021-03-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: tinkerforge
|
@@ -43,16 +43,22 @@ files:
|
|
43
43
|
- lib/tinderfridge/device_info.txt
|
44
44
|
- lib/tinderfridge/devices/brick_hat.rb
|
45
45
|
- lib/tinderfridge/devices/brick_hat_zero.rb
|
46
|
+
- lib/tinderfridge/devices/bricklet_air_quality.rb
|
47
|
+
- lib/tinderfridge/devices/bricklet_ambient_light_v3.rb
|
46
48
|
- lib/tinderfridge/devices/bricklet_dmx.rb
|
47
49
|
- lib/tinderfridge/devices/bricklet_gps_v2.rb
|
48
50
|
- lib/tinderfridge/devices/bricklet_industrial_dual_relay.rb
|
51
|
+
- lib/tinderfridge/devices/bricklet_joystick_v2.rb
|
49
52
|
- lib/tinderfridge/devices/bricklet_lcd_128x64.rb
|
50
53
|
- lib/tinderfridge/devices/bricklet_led_strip_v2.rb
|
54
|
+
- lib/tinderfridge/devices/bricklet_motorized_linear_poti.rb
|
51
55
|
- lib/tinderfridge/devices/bricklet_multi_touch_v2.rb
|
52
56
|
- lib/tinderfridge/devices/bricklet_nfc.rb
|
53
57
|
- lib/tinderfridge/devices/bricklet_outdoor_weather.rb
|
58
|
+
- lib/tinderfridge/devices/bricklet_remote_switch_v2.rb
|
54
59
|
- lib/tinderfridge/devices/bricklet_rgb_led_button.rb
|
55
60
|
- lib/tinderfridge/devices/bricklet_rgb_led_v2.rb
|
61
|
+
- lib/tinderfridge/devices/bricklet_rotary_encoder_v2.rb
|
56
62
|
- lib/tinderfridge/devices/bricklet_segment_display_4x7_v2.rb
|
57
63
|
- lib/tinderfridge/ip_connection.rb
|
58
64
|
- lib/tinderfridge/tinkerforge.rb
|