Module: Tinkerforge
- Defined in:
- lib/tinderfridge/device.rb,
lib/tinderfridge/version.rb,
lib/tinderfridge/device_info.rb,
lib/tinderfridge/tinkerforge.rb,
lib/tinderfridge/ip_connection.rb,
lib/tinderfridge/shared/logger.rb,
lib/tinderfridge/device_collection.rb,
lib/tinderfridge/device/configuration.rb,
lib/tinderfridge/devices/brick_hat/brick_hat.rb,
lib/tinderfridge/shared/display_ibm437_encoding.rb,
lib/tinderfridge/devices/brick_esp32/brick_esp32.rb,
lib/tinderfridge/devices/brick_master/brick_master.rb,
lib/tinderfridge/devices/bricklet_dmx/bricklet_dmx.rb,
lib/tinderfridge/devices/bricklet_nfc/bricklet_nfc.rb,
lib/tinderfridge/devices/brick_hat_zero/brick_hat_zero.rb,
lib/tinderfridge/devices/bricklet_co2_v2/bricklet_co2_v2.rb,
lib/tinderfridge/devices/bricklet_gps_v2/bricklet_gps_v2.rb,
lib/tinderfridge/devices/bricklet_gps_v3/bricklet_gps_v3.rb,
lib/tinderfridge/devices/bricklet_color_v2/bricklet_color_v2.rb,
lib/tinderfridge/devices/bricklet_isolator/bricklet_isolator.rb,
lib/tinderfridge/devices/bricklet_lcd_128x64/bricklet_lcd_128x64.rb,
lib/tinderfridge/devices/bricklet_rgb_led_v2/bricklet_rgb_led_v2.rb,
lib/tinderfridge/devices/brick_esp32_ethernet/brick_esp32_ethernet.rb,
lib/tinderfridge/devices/bricklet_air_quality/bricklet_air_quality.rb,
lib/tinderfridge/devices/bricklet_joystick_v2/bricklet_joystick_v2.rb,
lib/tinderfridge/devices/bricklet_barometer_v2/bricklet_barometer_v2.rb,
lib/tinderfridge/devices/bricklet_led_strip_v2/bricklet_led_strip_v2.rb,
lib/tinderfridge/devices/bricklet_hall_effect_v2/bricklet_hall_effect_v2.rb,
lib/tinderfridge/devices/bricklet_multi_touch_v2/bricklet_multi_touch_v2.rb,
lib/tinderfridge/devices/bricklet_oled_128x64_v2/bricklet_oled_128x64_v2.rb,
lib/tinderfridge/devices/bricklet_rgb_led_button/bricklet_rgb_led_button.rb,
lib/tinderfridge/devices/bricklet_temperature_v2/bricklet_temperature_v2.rb,
lib/tinderfridge/devices/bricklet_outdoor_weather/bricklet_outdoor_weather.rb,
lib/tinderfridge/devices/bricklet_ambient_light_v3/bricklet_ambient_light_v3.rb,
lib/tinderfridge/devices/bricklet_piezo_speaker_v2/bricklet_piezo_speaker_v2.rb,
lib/tinderfridge/devices/bricklet_remote_switch_v2/bricklet_remote_switch_v2.rb,
lib/tinderfridge/devices/bricklet_rotary_encoder_v2/bricklet_rotary_encoder_v2.rb,
lib/tinderfridge/devices/bricklet_temperature_ir_v2/bricklet_temperature_ir_v2.rb,
lib/tinderfridge/devices/bricklet_motion_detector_v2/bricklet_motion_detector_v2.rb,
lib/tinderfridge/devices/bricklet_particulate_matter/bricklet_particulate_matter.rb,
lib/tinderfridge/devices/bricklet_voltage_current_v2/bricklet_voltage_current_v2.rb,
lib/tinderfridge/devices/bricklet_solid_state_relay_v2/bricklet_solid_state_relay_v2.rb,
lib/tinderfridge/devices/bricklet_sound_pressure_level/bricklet_sound_pressure_level.rb,
lib/tinderfridge/devices/bricklet_industrial_dual_relay/bricklet_industrial_dual_relay.rb,
lib/tinderfridge/devices/bricklet_motorized_linear_poti/bricklet_motorized_linear_poti.rb,
lib/tinderfridge/devices/bricklet_segment_display_4x7_v2/bricklet_segment_display_4x7_v2.rb
Defined Under Namespace
Modules: Shared Classes: BrickESP32, BrickESP32Ethernet, BrickHAT, BrickHATZero, BrickMaster, BrickletAirQuality, BrickletAmbientLightV3, BrickletBarometerV2, BrickletCO2V2, BrickletColorV2, BrickletDMX, BrickletGPSV2, BrickletGPSV3, BrickletHallEffectV2, BrickletIndustrialDualRelay, BrickletIsolator, BrickletJoystickV2, BrickletLCD128x64, BrickletLEDStripV2, BrickletMotionDetectorV2, BrickletMotorizedLinearPoti, BrickletMultiTouchV2, BrickletNFC, BrickletOLED128x64V2, BrickletOutdoorWeather, BrickletParticulateMatter, BrickletPiezoSpeakerV2, BrickletRGBLEDButton, BrickletRGBLEDV2, BrickletRemoteSwitchV2, BrickletRotaryEncoderV2, BrickletSegmentDisplay4x7V2, BrickletSolidStateRelayV2, BrickletSoundPressureLevel, BrickletTemperatureIRV2, BrickletTemperatureV2, BrickletVoltageCurrentV2, Device, DeviceCollection, IPConnection
Constant Summary collapse
- TINDERFRIDGE_VERSION =
Tinderfridge version.
'0.16.0'- ALL_VERSIONS_URL =
'https://download.tinkerforge.com/all_versions.txt'- LATEST_VERSIONS_URL =
'https://download.tinkerforge.com/latest_versions.txt'- @@logger =
nil
Class Method Summary collapse
-
.about ⇒ Object
About Tinkerforge & Tinderfridge.
-
.connect(host = nil, port = nil) ⇒ Object
Creates an IP Connection object connected to the given host and port.
-
.device_info(selector = nil) ⇒ Object
Returns information about device types.
-
.lib_dir ⇒ Object
Returns the directory where Tinkerforge bindings appear to be installed.
-
.local(port = 4223) ⇒ Object
Discovers local devices.
-
.logger ⇒ Object
Returns the Logger, or nil.
-
.logger=(logger) ⇒ Object
Assign a Logger object to enable logging of Tinkerforge events.
-
.require_everything ⇒ Object
Attempts to load all files that are part of Tinkerforge.
Class Method Details
.about ⇒ Object
About Tinkerforge & Tinderfridge.
9 10 11 |
# File 'lib/tinderfridge/version.rb', line 9 def self.about "Tinkerforge #{VERSION} (with Tinderfridge #{TINDERFRIDGE_VERSION})" end |
.connect(host = nil, port = nil) ⇒ Object
Creates an IP Connection object connected to the given host and port.
If no host and port are specified, uses the TINKERFORGE_HOST and TINKERFORGE_PORT environment variables, when defined. Otherwise defaults to ‘localhost’ and port 4223.
174 175 176 177 178 179 180 181 |
# File 'lib/tinderfridge/ip_connection.rb', line 174 def connect(host=nil, port=nil) ipcon = IPConnection.new ipcon.connect( ( host || ENV['TINKERFORGE_HOST'] || 'localhost' ), ( port || ENV['TINKERFORGE_PORT'] || 4223 ) ) ipcon end |
.device_info(selector = nil) ⇒ Object
Returns information about device types.
Device information is returned as array:
-
0 : Device Identifier
-
1 : Device Display Name
-
2 : Associated class name and source file
Optional selector argument can be:
-
Device Identifier
-
Device class
-
Device instance
-
Class name or Device Display Name (Regexp)
Selection by regular expression is case-insensitive by default, and returns an array of matches.
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/tinderfridge/device_info.rb', line 35 def device_info(selector=nil) @@device_info ||= load_device_info case selector when NilClass @@device_info when Integer @@device_info.select { |i| i[0] == selector }.first when Class klass = selector.to_s @@device_info.select { |i| i[2][0] == klass }.first when Regexp r = Regexp.new selector.source, Regexp::IGNORECASE @@device_info.select { |i| ( i[1] =~ r ) || ( i[2][0] =~ r ) } else if selector.class.ancestors.include? Tinkerforge::Device klass = selector.class.to_s @@device_info.select { |i| i[2][0] == klass }.first else raise ArgumentError, 'Unsupported selector' end end end |
.lib_dir ⇒ Object
Returns the directory where Tinkerforge bindings appear to be installed.
13 14 15 |
# File 'lib/tinderfridge/tinkerforge.rb', line 13 def lib_dir File.dirname File.dirname Device.instance_method('uid').source_location.first end |
.local(port = 4223) ⇒ Object
Discovers local devices.
Connects to ‘localhost’, and returns devices discovered there. If no port is specified, defaults to port 4223.
31 32 33 |
# File 'lib/tinderfridge/tinkerforge.rb', line 31 def local(port=4223) connect('localhost', port).discover(0.25) end |
.logger ⇒ Object
Returns the Logger, or nil
50 51 52 |
# File 'lib/tinderfridge/tinkerforge.rb', line 50 def logger @@logger end |
.logger=(logger) ⇒ Object
Assign a Logger object to enable logging of Tinkerforge events.
36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/tinderfridge/tinkerforge.rb', line 36 def logger=(logger) if logger if logger.respond_to? :debug @@logger = logger logger.debug(about) else raise ArgumentError, 'Invalid Logger' end else @@logger = nil end end |
.require_everything ⇒ Object
Attempts to load all files that are part of Tinkerforge. Returns a list of files loaded.
18 19 20 21 22 |
# File 'lib/tinderfridge/tinkerforge.rb', line 18 def require_everything Dir.glob(File.join lib_dir, 'tinkerforge', '*.rb').map do |file| require(file) ? file : nil end.compact end |