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

Class Method Details

.aboutObject

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.

Examples:

Select by Device Identifier

Tinkerforge.device_info 2103

Select by class

Tinkerforge.device_info Tinkerforge::BrickletLEDStripV2

Select by class name and Device Display Name

# All 'analog' devices
Tinkerforge.device_info /analog/

# Relays and switches
Tinkerforge.device_info /relay|switch/

No Selector

# All devices
Tinkerforge.device_info


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_dirObject

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.

Examples:

Tinkerforge.local.ls

Mac only

Tinkerforge.local.doc


31
32
33
# File 'lib/tinderfridge/tinkerforge.rb', line 31

def local(port=4223)
  connect('localhost', port).discover(0.25)
end

.loggerObject

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_everythingObject

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