tinderfridge 0.1.0
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 +7 -0
- data/lib/tinderfridge.rb +19 -0
- data/lib/tinderfridge/device.rb +71 -0
- data/lib/tinderfridge/device_collection.rb +46 -0
- data/lib/tinderfridge/device_info.rb +72 -0
- data/lib/tinderfridge/device_info.txt +139 -0
- data/lib/tinderfridge/ip_connection.rb +73 -0
- data/lib/tinderfridge/tinkerforge.rb +17 -0
- data/lib/tinderfridge/version.rb +13 -0
- metadata +67 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 92034339759c82954498219a57e8070f6859b907e135a8d9a8df936abd58a01f
|
4
|
+
data.tar.gz: a222affea211a17b0e6b9fd0087ddb53830f5e2a0de7a63258ebc566d5e6bd7d
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: a450530444bcaeeed475e6476d12d7cfeedda25f02cb2619b4ccdd62951f9f16f9a1f03f874c6807fef6efddbe7fe3b06825c5ca120ca6828ef1e332844cceb3
|
7
|
+
data.tar.gz: a7c84f3fd084e655a81f79d58a3bbf1173f31ca0b0fafd5a66041c3aefd689f5a04d18045599a645073ccae693b13a07c6af0f51d668eb0ab8bd0954dbf6f1e9
|
data/lib/tinderfridge.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
if defined? Tinkerforge
|
2
|
+
raise 'Tinkerforge was already loaded, so Tinderfridge can not reliably extend it!'
|
3
|
+
end
|
4
|
+
|
5
|
+
%w(
|
6
|
+
|
7
|
+
version
|
8
|
+
|
9
|
+
ip_connection
|
10
|
+
|
11
|
+
device
|
12
|
+
|
13
|
+
tinkerforge
|
14
|
+
|
15
|
+
device_info
|
16
|
+
|
17
|
+
device_collection
|
18
|
+
|
19
|
+
).each { |m| require "tinderfridge/#{m}" }
|
@@ -0,0 +1,71 @@
|
|
1
|
+
require 'tinkerforge/ip_connection'
|
2
|
+
|
3
|
+
module Tinkerforge
|
4
|
+
class Device
|
5
|
+
|
6
|
+
#----------------------------------------------------------------------#
|
7
|
+
# Class Methods #
|
8
|
+
#----------------------------------------------------------------------#
|
9
|
+
|
10
|
+
class << self
|
11
|
+
|
12
|
+
# Returns all currently defined classes that inherited from this class.
|
13
|
+
#
|
14
|
+
# With help from:
|
15
|
+
# - https://stackoverflow.com/questions/2393697
|
16
|
+
def descendants
|
17
|
+
ObjectSpace.each_object(Class).select { |klass| klass < self }
|
18
|
+
end
|
19
|
+
|
20
|
+
# Returns a map of currently defined device classes.
|
21
|
+
def class_map
|
22
|
+
descendants.map do |klass|
|
23
|
+
if klass.const_defined? 'DEVICE_IDENTIFIER'
|
24
|
+
[
|
25
|
+
klass.const_get('DEVICE_IDENTIFIER'),
|
26
|
+
klass.const_get('DEVICE_DISPLAY_NAME'),
|
27
|
+
klass,
|
28
|
+
File.basename(klass.instance_method('initialize').source_location.first, '.rb')
|
29
|
+
]
|
30
|
+
else
|
31
|
+
nil
|
32
|
+
end
|
33
|
+
end.compact.sort_by { |i| i[0] }
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
|
38
|
+
#----------------------------------------------------------------------#
|
39
|
+
# Instance Methods #
|
40
|
+
#----------------------------------------------------------------------#
|
41
|
+
|
42
|
+
# Returns the device's IPConnection object.
|
43
|
+
attr_reader :ipcon
|
44
|
+
|
45
|
+
# Returns a programmer-friendly representation of the device.
|
46
|
+
def inspect
|
47
|
+
"%s (%s@%s:%s)" % [self.class, @uid_string, ipcon.host, ipcon.port]
|
48
|
+
end
|
49
|
+
|
50
|
+
# Identifies a Tinkerforge device by blinking its status led.
|
51
|
+
#
|
52
|
+
# Supports recent devices. When invoked on older devices, does nothing.
|
53
|
+
def identify(seconds=10)
|
54
|
+
if (respond_to? 'get_status_led_config') and (respond_to? 'set_status_led_config')
|
55
|
+
seconds = seconds.to_i
|
56
|
+
state = get_status_led_config
|
57
|
+
|
58
|
+
(seconds*2).times do |n|
|
59
|
+
set_status_led_config n.remainder(2)
|
60
|
+
sleep 0.5
|
61
|
+
end
|
62
|
+
|
63
|
+
set_status_led_config state
|
64
|
+
seconds
|
65
|
+
else
|
66
|
+
false
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
end
|
71
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
module Tinkerforge
|
2
|
+
|
3
|
+
class DeviceCollection < Hash
|
4
|
+
|
5
|
+
# Returns the temperatures as measured inside the microcontrollers of devices in the collection.
|
6
|
+
#
|
7
|
+
# Nil for devices that do not support the get_chip_temperature method.
|
8
|
+
def get_chip_temperature
|
9
|
+
map { |k,d| [ k, d.respond_to?('get_chip_temperature' ) ? d.get_chip_temperature : nil ] }.to_h
|
10
|
+
end
|
11
|
+
|
12
|
+
# Returns the error counts for devices in the collection.
|
13
|
+
#
|
14
|
+
# Nil for devices that do not support the get_spitfp_error_count method.
|
15
|
+
def get_spitfp_error_count
|
16
|
+
map { |k,d| [ k, d.respond_to?('get_spitfp_error_count' ) ? d.get_spitfp_error_count : nil ] }.to_h
|
17
|
+
end
|
18
|
+
|
19
|
+
# Returns the status LED configuration for devices in the collection.
|
20
|
+
#
|
21
|
+
# Nil for devices that do not support the get_status_led_config method.
|
22
|
+
def get_status_led_config
|
23
|
+
map { |k,d| [ k, d.respond_to?('get_status_led_config') ? d.get_status_led_config : nil ] }.to_h
|
24
|
+
end
|
25
|
+
|
26
|
+
# Sets the status LED configuration for devices in the collection.
|
27
|
+
#
|
28
|
+
# Ignores devices that do not support the set_status_led_config method.
|
29
|
+
#
|
30
|
+
# Argument can be an Integer (e.g. 0=off, 1=on), or a Hash (as returned by #get_status_led_config).
|
31
|
+
def set_status_led_config(state)
|
32
|
+
case state
|
33
|
+
when Integer
|
34
|
+
map { |k,d| d.respond_to?('set_status_led_config') ? d : nil}.compact.each { |d| d.set_status_led_config(state) }.size
|
35
|
+
when Hash
|
36
|
+
state.keys.select { |k| self[k].respond_to?('set_status_led_config') }.each do |k|
|
37
|
+
self[k].set_status_led_config(state[k])
|
38
|
+
end.size
|
39
|
+
else
|
40
|
+
raise ArgumentError, 'Unknown state'
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
module Tinkerforge
|
2
|
+
|
3
|
+
class << self
|
4
|
+
|
5
|
+
# Returns information about device types.
|
6
|
+
#
|
7
|
+
# Device information is returned as array:
|
8
|
+
# - 0 : Device Identifier
|
9
|
+
# - 1 : Device Display Name
|
10
|
+
# - 2 : Associated class name and source file
|
11
|
+
#
|
12
|
+
# Optional selector argument can be:
|
13
|
+
# - Device Identifier
|
14
|
+
# - Device class
|
15
|
+
# - Device instance
|
16
|
+
# - Class name or Device Display Name (Regexp)
|
17
|
+
# Selection by regular expression is case-insensitive by default, and returns an array of matches.
|
18
|
+
#
|
19
|
+
# @example Select by Device Identifier
|
20
|
+
# Tinkerforge.device_info 2103
|
21
|
+
#
|
22
|
+
# @example Select by class
|
23
|
+
# Tinkerforge.device_info Tinkerforge::BrickletLEDStripV2
|
24
|
+
#
|
25
|
+
# @example Select by class name and Device Display Name
|
26
|
+
# # All 'analog' devices
|
27
|
+
# Tinkerforge.device_info /analog/
|
28
|
+
#
|
29
|
+
# # Relays and switches
|
30
|
+
# Tinkerforge.device_info /relay|switch/
|
31
|
+
#
|
32
|
+
# @example No Selector
|
33
|
+
# # All devices
|
34
|
+
# Tinkerforge.device_info
|
35
|
+
def device_info(selector=nil)
|
36
|
+
@@device_info ||= load_device_info
|
37
|
+
case selector
|
38
|
+
when NilClass
|
39
|
+
@@device_info
|
40
|
+
when Integer
|
41
|
+
@@device_info.select { |i| i[0] == selector }.first
|
42
|
+
when Class
|
43
|
+
klass = selector.to_s
|
44
|
+
@@device_info.select { |i| i[2][0] == klass }.first
|
45
|
+
when Regexp
|
46
|
+
r = Regexp.new selector.source, Regexp::IGNORECASE
|
47
|
+
@@device_info.select { |i| ( i[1] =~ r ) || ( i[2][0] =~ r ) }
|
48
|
+
else
|
49
|
+
if selector.class.ancestors.include? Tinkerforge::Device
|
50
|
+
klass = selector.class.to_s
|
51
|
+
@@device_info.select { |i| i[2][0] == klass }.first
|
52
|
+
else
|
53
|
+
raise ArgumentError, 'Unsupported selector'
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
private
|
59
|
+
|
60
|
+
# Load device info from file.
|
61
|
+
def load_device_info
|
62
|
+
File.readlines( File.join( File.dirname(__FILE__), 'device_info.txt' ) ).map do |l|
|
63
|
+
a = l.chomp.split("\t")
|
64
|
+
a[0] = a[0].to_i
|
65
|
+
a[2,2] = a[2,2], nil
|
66
|
+
a.compact
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
end
|
71
|
+
|
72
|
+
end
|
@@ -0,0 +1,139 @@
|
|
1
|
+
11 DC Brick Tinkerforge::BrickDC brick_dc
|
2
|
+
13 Master Brick Tinkerforge::BrickMaster brick_master
|
3
|
+
14 Servo Brick Tinkerforge::BrickServo brick_servo
|
4
|
+
15 Stepper Brick Tinkerforge::BrickStepper brick_stepper
|
5
|
+
16 IMU Brick Tinkerforge::BrickIMU brick_imu
|
6
|
+
17 RED Brick Tinkerforge::BrickRED brick_red
|
7
|
+
18 IMU Brick 2.0 Tinkerforge::BrickIMUV2 brick_imu_v2
|
8
|
+
19 Silent Stepper Brick Tinkerforge::BrickSilentStepper brick_silent_stepper
|
9
|
+
21 Ambient Light Bricklet Tinkerforge::BrickletAmbientLight bricklet_ambient_light
|
10
|
+
23 Current12 Bricklet Tinkerforge::BrickletCurrent12 bricklet_current12
|
11
|
+
24 Current25 Bricklet Tinkerforge::BrickletCurrent25 bricklet_current25
|
12
|
+
25 Distance IR Bricklet Tinkerforge::BrickletDistanceIR bricklet_distance_ir
|
13
|
+
26 Dual Relay Bricklet Tinkerforge::BrickletDualRelay bricklet_dual_relay
|
14
|
+
27 Humidity Bricklet Tinkerforge::BrickletHumidity bricklet_humidity
|
15
|
+
28 IO-16 Bricklet Tinkerforge::BrickletIO16 bricklet_io16
|
16
|
+
29 IO-4 Bricklet Tinkerforge::BrickletIO4 bricklet_io4
|
17
|
+
111 HAT Brick Tinkerforge::BrickHAT brick_hat
|
18
|
+
112 HAT Zero Brick Tinkerforge::BrickHATZero brick_hat_zero
|
19
|
+
210 Joystick Bricklet Tinkerforge::BrickletJoystick bricklet_joystick
|
20
|
+
211 LCD 16x2 Bricklet Tinkerforge::BrickletLCD16x2 bricklet_lcd_16x2
|
21
|
+
212 LCD 20x4 Bricklet Tinkerforge::BrickletLCD20x4 bricklet_lcd_20x4
|
22
|
+
213 Linear Poti Bricklet Tinkerforge::BrickletLinearPoti bricklet_linear_poti
|
23
|
+
214 Piezo Buzzer Bricklet Tinkerforge::BrickletPiezoBuzzer bricklet_piezo_buzzer
|
24
|
+
215 Rotary Poti Bricklet Tinkerforge::BrickletRotaryPoti bricklet_rotary_poti
|
25
|
+
216 Temperature Bricklet Tinkerforge::BrickletTemperature bricklet_temperature
|
26
|
+
217 Temperature IR Bricklet Tinkerforge::BrickletTemperatureIR bricklet_temperature_ir
|
27
|
+
218 Voltage Bricklet Tinkerforge::BrickletVoltage bricklet_voltage
|
28
|
+
219 Analog In Bricklet Tinkerforge::BrickletAnalogIn bricklet_analog_in
|
29
|
+
220 Analog Out Bricklet Tinkerforge::BrickletAnalogOut bricklet_analog_out
|
30
|
+
221 Barometer Bricklet Tinkerforge::BrickletBarometer bricklet_barometer
|
31
|
+
222 GPS Bricklet Tinkerforge::BrickletGPS bricklet_gps
|
32
|
+
223 Industrial Digital In 4 Bricklet Tinkerforge::BrickletIndustrialDigitalIn4 bricklet_industrial_digital_in_4
|
33
|
+
224 Industrial Digital Out 4 Bricklet Tinkerforge::BrickletIndustrialDigitalOut4 bricklet_industrial_digital_out_4
|
34
|
+
225 Industrial Quad Relay Bricklet Tinkerforge::BrickletIndustrialQuadRelay bricklet_industrial_quad_relay
|
35
|
+
226 PTC Bricklet Tinkerforge::BrickletPTC bricklet_ptc
|
36
|
+
227 Voltage/Current Bricklet Tinkerforge::BrickletVoltageCurrent bricklet_voltage_current
|
37
|
+
228 Industrial Dual 0-20mA Bricklet Tinkerforge::BrickletIndustrialDual020mA bricklet_industrial_dual_0_20ma
|
38
|
+
229 Distance US Bricklet Tinkerforge::BrickletDistanceUS bricklet_distance_us
|
39
|
+
230 Dual Button Bricklet Tinkerforge::BrickletDualButton bricklet_dual_button
|
40
|
+
231 LED Strip Bricklet Tinkerforge::BrickletLEDStrip bricklet_led_strip
|
41
|
+
232 Moisture Bricklet Tinkerforge::BrickletMoisture bricklet_moisture
|
42
|
+
233 Motion Detector Bricklet Tinkerforge::BrickletMotionDetector bricklet_motion_detector
|
43
|
+
234 Multi Touch Bricklet Tinkerforge::BrickletMultiTouch bricklet_multi_touch
|
44
|
+
235 Remote Switch Bricklet Tinkerforge::BrickletRemoteSwitch bricklet_remote_switch
|
45
|
+
236 Rotary Encoder Bricklet Tinkerforge::BrickletRotaryEncoder bricklet_rotary_encoder
|
46
|
+
237 Segment Display 4x7 Bricklet Tinkerforge::BrickletSegmentDisplay4x7 bricklet_segment_display_4x7
|
47
|
+
238 Sound Intensity Bricklet Tinkerforge::BrickletSoundIntensity bricklet_sound_intensity
|
48
|
+
239 Tilt Bricklet Tinkerforge::BrickletTilt bricklet_tilt
|
49
|
+
240 Hall Effect Bricklet Tinkerforge::BrickletHallEffect bricklet_hall_effect
|
50
|
+
241 Line Bricklet Tinkerforge::BrickletLine bricklet_line
|
51
|
+
242 Piezo Speaker Bricklet Tinkerforge::BrickletPiezoSpeaker bricklet_piezo_speaker
|
52
|
+
243 Color Bricklet Tinkerforge::BrickletColor bricklet_color
|
53
|
+
244 Solid State Relay Bricklet Tinkerforge::BrickletSolidStateRelay bricklet_solid_state_relay
|
54
|
+
246 NFC/RFID Bricklet Tinkerforge::BrickletNFCRFID bricklet_nfc_rfid
|
55
|
+
249 Industrial Dual Analog In Bricklet Tinkerforge::BrickletIndustrialDualAnalogIn bricklet_industrial_dual_analog_in
|
56
|
+
250 Accelerometer Bricklet Tinkerforge::BrickletAccelerometer bricklet_accelerometer
|
57
|
+
251 Analog In Bricklet 2.0 Tinkerforge::BrickletAnalogInV2 bricklet_analog_in_v2
|
58
|
+
253 Load Cell Bricklet Tinkerforge::BrickletLoadCell bricklet_load_cell
|
59
|
+
254 RS232 Bricklet Tinkerforge::BrickletRS232 bricklet_rs232
|
60
|
+
255 Laser Range Finder Bricklet Tinkerforge::BrickletLaserRangeFinder bricklet_laser_range_finder
|
61
|
+
256 Analog Out Bricklet 2.0 Tinkerforge::BrickletAnalogOutV2 bricklet_analog_out_v2
|
62
|
+
258 Industrial Analog Out Bricklet Tinkerforge::BrickletIndustrialAnalogOut bricklet_industrial_analog_out
|
63
|
+
259 Ambient Light Bricklet 2.0 Tinkerforge::BrickletAmbientLightV2 bricklet_ambient_light_v2
|
64
|
+
260 Dust Detector Bricklet Tinkerforge::BrickletDustDetector bricklet_dust_detector
|
65
|
+
262 CO2 Bricklet Tinkerforge::BrickletCO2 bricklet_co2
|
66
|
+
263 OLED 128x64 Bricklet Tinkerforge::BrickletOLED128x64 bricklet_oled_128x64
|
67
|
+
264 OLED 64x48 Bricklet Tinkerforge::BrickletOLED64x48 bricklet_oled_64x48
|
68
|
+
265 UV Light Bricklet Tinkerforge::BrickletUVLight bricklet_uv_light
|
69
|
+
266 Thermocouple Bricklet Tinkerforge::BrickletThermocouple bricklet_thermocouple
|
70
|
+
267 Motorized Linear Poti Bricklet Tinkerforge::BrickletMotorizedLinearPoti bricklet_motorized_linear_poti
|
71
|
+
268 Real-Time Clock Bricklet Tinkerforge::BrickletRealTimeClock bricklet_real_time_clock
|
72
|
+
270 CAN Bricklet Tinkerforge::BrickletCAN bricklet_can
|
73
|
+
271 RGB LED Bricklet Tinkerforge::BrickletRGBLED bricklet_rgb_led
|
74
|
+
272 RGB LED Matrix Bricklet Tinkerforge::BrickletRGBLEDMatrix bricklet_rgb_led_matrix
|
75
|
+
276 GPS Bricklet 2.0 Tinkerforge::BrickletGPSV2 bricklet_gps_v2
|
76
|
+
277 RS485 Bricklet Tinkerforge::BrickletRS485 bricklet_rs485
|
77
|
+
278 Thermal Imaging Bricklet Tinkerforge::BrickletThermalImaging bricklet_thermal_imaging
|
78
|
+
279 XMC1400 Breakout Bricklet Tinkerforge::BrickletXMC1400Breakout bricklet_xmc1400_breakout
|
79
|
+
282 RGB LED Button Bricklet Tinkerforge::BrickletRGBLEDButton bricklet_rgb_led_button
|
80
|
+
283 Humidity Bricklet 2.0 Tinkerforge::BrickletHumidityV2 bricklet_humidity_v2
|
81
|
+
284 Industrial Dual Relay Bricklet Tinkerforge::BrickletIndustrialDualRelay bricklet_industrial_dual_relay
|
82
|
+
285 DMX Bricklet Tinkerforge::BrickletDMX bricklet_dmx
|
83
|
+
286 NFC Bricklet Tinkerforge::BrickletNFC bricklet_nfc
|
84
|
+
288 Outdoor Weather Bricklet Tinkerforge::BrickletOutdoorWeather bricklet_outdoor_weather
|
85
|
+
289 Remote Switch Bricklet 2.0 Tinkerforge::BrickletRemoteSwitchV2 bricklet_remote_switch_v2
|
86
|
+
290 Sound Pressure Level Bricklet Tinkerforge::BrickletSoundPressureLevel bricklet_sound_pressure_level
|
87
|
+
291 Temperature IR Bricklet 2.0 Tinkerforge::BrickletTemperatureIRV2 bricklet_temperature_ir_v2
|
88
|
+
292 Motion Detector Bricklet 2.0 Tinkerforge::BrickletMotionDetectorV2 bricklet_motion_detector_v2
|
89
|
+
293 Industrial Counter Bricklet Tinkerforge::BrickletIndustrialCounter bricklet_industrial_counter
|
90
|
+
294 Rotary Encoder Bricklet 2.0 Tinkerforge::BrickletRotaryEncoderV2 bricklet_rotary_encoder_v2
|
91
|
+
295 Analog In Bricklet 3.0 Tinkerforge::BrickletAnalogInV3 bricklet_analog_in_v3
|
92
|
+
296 Solid State Relay Bricklet 2.0 Tinkerforge::BrickletSolidStateRelayV2 bricklet_solid_state_relay_v2
|
93
|
+
297 Air Quality Bricklet Tinkerforge::BrickletAirQuality bricklet_air_quality
|
94
|
+
298 LCD 128x64 Bricklet Tinkerforge::BrickletLCD128x64 bricklet_lcd_128x64
|
95
|
+
299 Distance US Bricklet 2.0 Tinkerforge::BrickletDistanceUSV2 bricklet_distance_us_v2
|
96
|
+
2100 Industrial Digital In 4 Bricklet 2.0 Tinkerforge::BrickletIndustrialDigitalIn4V2 bricklet_industrial_digital_in_4_v2
|
97
|
+
2101 PTC Bricklet 2.0 Tinkerforge::BrickletPTCV2 bricklet_ptc_v2
|
98
|
+
2102 Industrial Quad Relay Bricklet 2.0 Tinkerforge::BrickletIndustrialQuadRelayV2 bricklet_industrial_quad_relay_v2
|
99
|
+
2103 LED Strip Bricklet 2.0 Tinkerforge::BrickletLEDStripV2 bricklet_led_strip_v2
|
100
|
+
2104 Load Cell Bricklet 2.0 Tinkerforge::BrickletLoadCellV2 bricklet_load_cell_v2
|
101
|
+
2105 Voltage/Current Bricklet 2.0 Tinkerforge::BrickletVoltageCurrentV2 bricklet_voltage_current_v2
|
102
|
+
2106 Real-Time Clock Bricklet 2.0 Tinkerforge::BrickletRealTimeClockV2 bricklet_real_time_clock_v2
|
103
|
+
2107 CAN Bricklet 2.0 Tinkerforge::BrickletCANV2 bricklet_can_v2
|
104
|
+
2108 RS232 Bricklet 2.0 Tinkerforge::BrickletRS232V2 bricklet_rs232_v2
|
105
|
+
2109 Thermocouple Bricklet 2.0 Tinkerforge::BrickletThermocoupleV2 bricklet_thermocouple_v2
|
106
|
+
2110 Particulate Matter Bricklet Tinkerforge::BrickletParticulateMatter bricklet_particulate_matter
|
107
|
+
2111 IO-4 Bricklet 2.0 Tinkerforge::BrickletIO4V2 bricklet_io4_v2
|
108
|
+
2112 OLED 128x64 Bricklet 2.0 Tinkerforge::BrickletOLED128x64V2 bricklet_oled_128x64_v2
|
109
|
+
2113 Temperature Bricklet 2.0 Tinkerforge::BrickletTemperatureV2 bricklet_temperature_v2
|
110
|
+
2114 IO-16 Bricklet 2.0 Tinkerforge::BrickletIO16V2 bricklet_io16_v2
|
111
|
+
2115 Analog Out Bricklet 3.0 Tinkerforge::BrickletAnalogOutV3 bricklet_analog_out_v3
|
112
|
+
2116 Industrial Analog Out Bricklet 2.0 Tinkerforge::BrickletIndustrialAnalogOutV2 bricklet_industrial_analog_out_v2
|
113
|
+
2117 Barometer Bricklet 2.0 Tinkerforge::BrickletBarometerV2 bricklet_barometer_v2
|
114
|
+
2118 UV Light Bricklet 2.0 Tinkerforge::BrickletUVLightV2 bricklet_uv_light_v2
|
115
|
+
2119 Dual Button Bricklet 2.0 Tinkerforge::BrickletDualButtonV2 bricklet_dual_button_v2
|
116
|
+
2120 Industrial Dual 0-20mA Bricklet 2.0 Tinkerforge::BrickletIndustrialDual020mAV2 bricklet_industrial_dual_0_20ma_v2
|
117
|
+
2121 Industrial Dual Analog In Bricklet 2.0 Tinkerforge::BrickletIndustrialDualAnalogInV2 bricklet_industrial_dual_analog_in_v2
|
118
|
+
2122 Isolator Bricklet Tinkerforge::BrickletIsolator bricklet_isolator
|
119
|
+
2123 One Wire Bricklet Tinkerforge::BrickletOneWire bricklet_one_wire
|
120
|
+
2124 Industrial Digital Out 4 Bricklet 2.0 Tinkerforge::BrickletIndustrialDigitalOut4V2 bricklet_industrial_digital_out_4_v2
|
121
|
+
2125 Distance IR Bricklet 2.0 Tinkerforge::BrickletDistanceIRV2 bricklet_distance_ir_v2
|
122
|
+
2127 RGB LED Bricklet 2.0 Tinkerforge::BrickletRGBLEDV2 bricklet_rgb_led_v2
|
123
|
+
2128 Color Bricklet 2.0 Tinkerforge::BrickletColorV2 bricklet_color_v2
|
124
|
+
2129 Multi Touch Bricklet 2.0 Tinkerforge::BrickletMultiTouchV2 bricklet_multi_touch_v2
|
125
|
+
2130 Accelerometer Bricklet 2.0 Tinkerforge::BrickletAccelerometerV2 bricklet_accelerometer_v2
|
126
|
+
2131 Ambient Light Bricklet 3.0 Tinkerforge::BrickletAmbientLightV3 bricklet_ambient_light_v3
|
127
|
+
2132 Hall Effect Bricklet 2.0 Tinkerforge::BrickletHallEffectV2 bricklet_hall_effect_v2
|
128
|
+
2137 Segment Display 4x7 Bricklet 2.0 Tinkerforge::BrickletSegmentDisplay4x7V2 bricklet_segment_display_4x7_v2
|
129
|
+
2138 Joystick Bricklet 2.0 Tinkerforge::BrickletJoystickV2 bricklet_joystick_v2
|
130
|
+
2139 Linear Poti Bricklet 2.0 Tinkerforge::BrickletLinearPotiV2 bricklet_linear_poti_v2
|
131
|
+
2140 Rotary Poti Bricklet 2.0 Tinkerforge::BrickletRotaryPotiV2 bricklet_rotary_poti_v2
|
132
|
+
2144 Laser Range Finder Bricklet 2.0 Tinkerforge::BrickletLaserRangeFinderV2 bricklet_laser_range_finder_v2
|
133
|
+
2145 Piezo Speaker Bricklet 2.0 Tinkerforge::BrickletPiezoSpeakerV2 bricklet_piezo_speaker_v2
|
134
|
+
2146 E-Paper 296x128 Bricklet Tinkerforge::BrickletEPaper296x128 bricklet_e_paper_296x128
|
135
|
+
2147 CO2 Bricklet 2.0 Tinkerforge::BrickletCO2V2 bricklet_co2_v2
|
136
|
+
2152 Energy Monitor Bricklet Tinkerforge::BrickletEnergyMonitor bricklet_energy_monitor
|
137
|
+
2153 Compass Bricklet Tinkerforge::BrickletCompass bricklet_compass
|
138
|
+
2161 IMU Bricklet 3.0 Tinkerforge::BrickletIMUV3 bricklet_imu_v3
|
139
|
+
2162 Industrial Dual AC Relay Bricklet Tinkerforge::BrickletIndustrialDualACRelay bricklet_industrial_dual_ac_relay
|
@@ -0,0 +1,73 @@
|
|
1
|
+
require 'tinkerforge/ip_connection'
|
2
|
+
|
3
|
+
module Tinkerforge
|
4
|
+
|
5
|
+
class IPConnection
|
6
|
+
|
7
|
+
# Returns the host for the IP Connection object.
|
8
|
+
attr_reader :host
|
9
|
+
|
10
|
+
# Returns the port for the IP Connection object.
|
11
|
+
attr_reader :port
|
12
|
+
|
13
|
+
# Returns a programmer-friendly representation of the object.
|
14
|
+
def inspect
|
15
|
+
"%s (%s:%s)" % [self.class, host, port]
|
16
|
+
end
|
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.
|
21
|
+
#
|
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.
|
24
|
+
#
|
25
|
+
# @example Using Tinkerforge.connect
|
26
|
+
# my_devices = Tinkerforge.connect.discover
|
27
|
+
#
|
28
|
+
# @example Classic
|
29
|
+
# ipcon = Tinkerforge::IPConnection.new
|
30
|
+
# ipcon.connect 'localhost', 4223
|
31
|
+
# my_devices = ipcon.discover
|
32
|
+
def discover
|
33
|
+
list = Tinkerforge::DeviceCollection.new
|
34
|
+
self.register_callback(CALLBACK_ENUMERATE) do |*args|
|
35
|
+
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
|
44
|
+
end
|
45
|
+
|
46
|
+
when 2 # Disconnected
|
47
|
+
list[args.first] = nil
|
48
|
+
|
49
|
+
else
|
50
|
+
raise "Unknown Enumeration Type: #{args[6]}"
|
51
|
+
|
52
|
+
end
|
53
|
+
end
|
54
|
+
self.enumerate
|
55
|
+
list
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
59
|
+
|
60
|
+
# Creates an IP Connection object connected to the given host and port.
|
61
|
+
#
|
62
|
+
# If no host and port are specified, uses the TINKERFORGE_HOST and TINKERFORGE_PORT environment variables, when defined.
|
63
|
+
# Otherwise defaults to 'localhost' and port 4223.
|
64
|
+
def self.connect(host=nil, port=nil)
|
65
|
+
ipcon = IPConnection.new
|
66
|
+
ipcon.connect(
|
67
|
+
( host || ENV['TINKERFORGE_HOST'] || 'localhost' ),
|
68
|
+
( port || ENV['TINKERFORGE_PORT'] || 4223 )
|
69
|
+
)
|
70
|
+
ipcon
|
71
|
+
end
|
72
|
+
|
73
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'tinkerforge/ip_connection'
|
2
|
+
|
3
|
+
module Tinkerforge
|
4
|
+
|
5
|
+
# Returns the directory where Tinkerforge bindings appear to be installed.
|
6
|
+
def self.lib_dir
|
7
|
+
File.dirname File.dirname Device.instance_method('uid').source_location.first
|
8
|
+
end
|
9
|
+
|
10
|
+
# Attempts to load all files that are part of Tinkerforge. Returns a list of files loaded.
|
11
|
+
def self.require_everything
|
12
|
+
Dir.glob(File.join lib_dir, 'tinkerforge', '*.rb').map do |file|
|
13
|
+
require(file) ? file : nil
|
14
|
+
end.compact
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'tinkerforge/version'
|
2
|
+
|
3
|
+
module Tinkerforge
|
4
|
+
|
5
|
+
# Tinderfridge version.
|
6
|
+
TINDERFRIDGE_VERSION = '0.1.0'
|
7
|
+
|
8
|
+
# About Tinkerforge & Tinderfridge.
|
9
|
+
def self.about
|
10
|
+
"Tinkerforge #{VERSION} (with Tinderfridge #{TINDERFRIDGE_VERSION})"
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
metadata
ADDED
@@ -0,0 +1,67 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: tinderfridge
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- lllist.eu
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2020-12-09 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: tinkerforge
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 2.1.27
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 2.1.27
|
27
|
+
description:
|
28
|
+
email:
|
29
|
+
executables: []
|
30
|
+
extensions: []
|
31
|
+
extra_rdoc_files: []
|
32
|
+
files:
|
33
|
+
- lib/tinderfridge.rb
|
34
|
+
- lib/tinderfridge/device.rb
|
35
|
+
- lib/tinderfridge/device_collection.rb
|
36
|
+
- lib/tinderfridge/device_info.rb
|
37
|
+
- lib/tinderfridge/device_info.txt
|
38
|
+
- lib/tinderfridge/ip_connection.rb
|
39
|
+
- lib/tinderfridge/tinkerforge.rb
|
40
|
+
- lib/tinderfridge/version.rb
|
41
|
+
homepage: https://github.com/lllisteu/tinderfridge
|
42
|
+
licenses:
|
43
|
+
- CC0-1.0
|
44
|
+
metadata:
|
45
|
+
homepage_uri: https://github.com/lllisteu/tinderfridge
|
46
|
+
changelog_uri: https://github.com/lllisteu/tinderfridge/blob/master/History.md
|
47
|
+
documentation_uri: https://www.rubydoc.info/gems/tinderfridge
|
48
|
+
post_install_message:
|
49
|
+
rdoc_options: []
|
50
|
+
require_paths:
|
51
|
+
- lib
|
52
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
53
|
+
requirements:
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: 2.5.0
|
57
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
requirements: []
|
63
|
+
rubygems_version: 3.1.2
|
64
|
+
signing_key:
|
65
|
+
specification_version: 4
|
66
|
+
summary: Extending Tinkerforge in fun and useful ways.
|
67
|
+
test_files: []
|