tinderfridge 0.8.0 → 0.11.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (69) hide show
  1. checksums.yaml +4 -4
  2. data/lib/tinderfridge/device.rb +45 -4
  3. data/lib/tinderfridge/device_collection.rb +3 -1
  4. data/lib/tinderfridge/device_info.txt +3 -0
  5. data/lib/tinderfridge/devices/brick_esp32/brick_esp32.json +11 -0
  6. data/lib/tinderfridge/devices/brick_esp32/brick_esp32.rb +13 -0
  7. data/lib/tinderfridge/devices/brick_esp32_ethernet/brick_esp32_ethernet.json +11 -0
  8. data/lib/tinderfridge/devices/brick_esp32_ethernet/brick_esp32_ethernet.rb +13 -0
  9. data/lib/tinderfridge/devices/brick_hat/brick_hat.rb +12 -0
  10. data/lib/tinderfridge/devices/brick_hat_zero/brick_hat_zero.rb +10 -0
  11. data/lib/tinderfridge/devices/brick_master/brick_master.json +11 -0
  12. data/lib/tinderfridge/devices/brick_master/brick_master.rb +11 -0
  13. data/lib/tinderfridge/devices/bricklet_air_quality/bricklet_air_quality.rb +15 -0
  14. data/lib/tinderfridge/devices/bricklet_ambient_light_v3/bricklet_ambient_light_v3.json +2 -1
  15. data/lib/tinderfridge/devices/bricklet_analog_in_v3/bricklet_analog_in_v3.json +2 -1
  16. data/lib/tinderfridge/devices/bricklet_barometer_v2/bricklet_barometer_v2.rb +30 -0
  17. data/lib/tinderfridge/devices/bricklet_co2_v2/bricklet_co2_v2.json +2 -1
  18. data/lib/tinderfridge/devices/bricklet_co2_v2/bricklet_co2_v2.rb +29 -0
  19. data/lib/tinderfridge/devices/bricklet_color_v2/bricklet_color_v2.json +2 -1
  20. data/lib/tinderfridge/devices/bricklet_compass/bricklet_compass.json +2 -1
  21. data/lib/tinderfridge/devices/bricklet_distance_us_v2/bricklet_distance_us_v2.json +2 -1
  22. data/lib/tinderfridge/devices/bricklet_dmx/bricklet_dmx.json +2 -1
  23. data/lib/tinderfridge/devices/bricklet_e_paper_296x128/bricklet_e_paper_296x128.json +2 -1
  24. data/lib/tinderfridge/devices/bricklet_energy_monitor/bricklet_energy_monitor.json +2 -1
  25. data/lib/tinderfridge/devices/bricklet_gps_v2/bricklet_gps_v2.json +2 -1
  26. data/lib/tinderfridge/devices/bricklet_gps_v2/bricklet_gps_v2.rb +28 -1
  27. data/lib/tinderfridge/devices/bricklet_gps_v3/bricklet_gps_v3.json +4 -0
  28. data/lib/tinderfridge/devices/bricklet_hall_effect_v2/bricklet_hall_effect_v2.json +2 -1
  29. data/lib/tinderfridge/devices/bricklet_hall_effect_v2/bricklet_hall_effect_v2.rb +16 -0
  30. data/lib/tinderfridge/devices/bricklet_humidity_v2/bricklet_humidity_v2.json +2 -1
  31. data/lib/tinderfridge/devices/bricklet_imu_v3/bricklet_imu_v3.json +2 -1
  32. data/lib/tinderfridge/devices/bricklet_industrial_dual_relay/bricklet_industrial_dual_relay.json +2 -1
  33. data/lib/tinderfridge/devices/bricklet_isolator/bricklet_isolator.json +2 -1
  34. data/lib/tinderfridge/devices/bricklet_joystick_v2/bricklet_joystick_v2.json +2 -1
  35. data/lib/tinderfridge/devices/bricklet_laser_range_finder_v2/bricklet_laser_range_finder_v2.json +2 -1
  36. data/lib/tinderfridge/devices/bricklet_lcd_128x64/bricklet_lcd_128x64.json +2 -1
  37. data/lib/tinderfridge/devices/bricklet_lcd_128x64/bricklet_lcd_128x64.rb +83 -0
  38. data/lib/tinderfridge/devices/bricklet_linear_poti_v2/bricklet_linear_poti_v2.json +2 -1
  39. data/lib/tinderfridge/devices/bricklet_motion_detector_v2/bricklet_motion_detector_v2.json +2 -1
  40. data/lib/tinderfridge/devices/bricklet_motorized_linear_poti/bricklet_motorized_linear_poti.json +2 -1
  41. data/lib/tinderfridge/devices/bricklet_multi_touch_v2/bricklet_multi_touch_v2.json +2 -1
  42. data/lib/tinderfridge/devices/bricklet_nfc/bricklet_nfc.json +2 -1
  43. data/lib/tinderfridge/devices/bricklet_oled_128x64_v2/bricklet_oled_128x64_v2.rb +94 -0
  44. data/lib/tinderfridge/devices/bricklet_outdoor_weather/bricklet_outdoor_weather.json +2 -1
  45. data/lib/tinderfridge/devices/bricklet_outdoor_weather/bricklet_outdoor_weather.rb +9 -0
  46. data/lib/tinderfridge/devices/bricklet_piezo_speaker_v2/bricklet_piezo_speaker_v2.json +2 -1
  47. data/lib/tinderfridge/devices/bricklet_real_time_clock_v2/bricklet_real_time_clock_v2.json +2 -1
  48. data/lib/tinderfridge/devices/bricklet_remote_switch_v2/bricklet_remote_switch_v2.json +2 -1
  49. data/lib/tinderfridge/devices/bricklet_rgb_led_button/bricklet_rgb_led_button.json +2 -1
  50. data/lib/tinderfridge/devices/bricklet_rgb_led_v2/bricklet_rgb_led_v2.json +2 -1
  51. data/lib/tinderfridge/devices/bricklet_rotary_encoder_v2/bricklet_rotary_encoder_v2.json +2 -1
  52. data/lib/tinderfridge/devices/bricklet_rotary_poti_v2/bricklet_rotary_poti_v2.json +2 -1
  53. data/lib/tinderfridge/devices/bricklet_segment_display_4x7_v2/bricklet_segment_display_4x7_v2.rb +2 -0
  54. data/lib/tinderfridge/devices/bricklet_sound_pressure_level/bricklet_sound_pressure_level.json +2 -1
  55. data/lib/tinderfridge/devices/bricklet_sound_pressure_level/bricklet_sound_pressure_level.rb +20 -0
  56. data/lib/tinderfridge/devices/bricklet_temperature_ir_v2/bricklet_temperature_ir_v2.json +2 -1
  57. data/lib/tinderfridge/devices/bricklet_temperature_ir_v2/bricklet_temperature_ir_v2.rb +14 -0
  58. data/lib/tinderfridge/devices/bricklet_temperature_v2/bricklet_temperature_v2.json +2 -1
  59. data/lib/tinderfridge/devices/bricklet_temperature_v2/bricklet_temperature_v2.rb +27 -0
  60. data/lib/tinderfridge/devices/bricklet_thermal_imaging/bricklet_thermal_imaging.json +2 -1
  61. data/lib/tinderfridge/devices/bricklet_thermocouple_v2/bricklet_thermocouple_v2.json +2 -1
  62. data/lib/tinderfridge/devices/bricklet_uv_light_v2/bricklet_uv_light_v2.json +2 -1
  63. data/lib/tinderfridge/devices/bricklet_voltage_current_v2/bricklet_voltage_current_v2.json +2 -1
  64. data/lib/tinderfridge/devices/bricklet_xmc1400_breakout/bricklet_xmc1400_breakout.json +2 -1
  65. data/lib/tinderfridge/ip_connection.rb +19 -11
  66. data/lib/tinderfridge/shared/display_ibm437_encoding.rb +41 -0
  67. data/lib/tinderfridge/tinkerforge.rb +24 -9
  68. data/lib/tinderfridge/version.rb +1 -1
  69. metadata +18 -3
@@ -6,5 +6,6 @@
6
6
  ],
7
7
  "weight": 14,
8
8
  "documentation_en_url": "https://www.tinkerforge.com/en/doc/Hardware/Bricklets/Linear_Poti_V2.html",
9
- "versions_identifier": "bricklets:linear_poti_v2"
9
+ "versions_identifier": "bricklets:linear_poti_v2",
10
+ "released": "2019-05-20"
10
11
  }
@@ -6,5 +6,6 @@
6
6
  ],
7
7
  "weight": 6,
8
8
  "documentation_en_url": "https://www.tinkerforge.com/en/doc/Hardware/Bricklets/Motion_Detector_V2.html",
9
- "versions_identifier": "bricklets:motion_detector_v2"
9
+ "versions_identifier": "bricklets:motion_detector_v2",
10
+ "released": "2018-02-26"
10
11
  }
@@ -6,5 +6,6 @@
6
6
  ],
7
7
  "weight": 67,
8
8
  "documentation_en_url": "https://www.tinkerforge.com/en/doc/Hardware/Bricklets/Motorized_Linear_Poti.html",
9
- "versions_identifier": "bricklets:motorized_linear_poti"
9
+ "versions_identifier": "bricklets:motorized_linear_poti",
10
+ "released": "2017-11-17"
10
11
  }
@@ -6,5 +6,6 @@
6
6
  ],
7
7
  "weight": 4,
8
8
  "documentation_en_url": "https://www.tinkerforge.com/en/doc/Hardware/Bricklets/Multi_Touch_V2.html",
9
- "versions_identifier": "bricklets:multi_touch_v2"
9
+ "versions_identifier": "bricklets:multi_touch_v2",
10
+ "released": "2019-08-22"
10
11
  }
@@ -6,5 +6,6 @@
6
6
  ],
7
7
  "weight": 18,
8
8
  "documentation_en_url": "https://www.tinkerforge.com/en/doc/Hardware/Bricklets/NFC.html",
9
- "versions_identifier": "bricklets:nfc"
9
+ "versions_identifier": "bricklets:nfc",
10
+ "released": "2018-02-26"
10
11
  }
@@ -0,0 +1,94 @@
1
+ require 'tinderfridge/shared/display_ibm437_encoding'
2
+
3
+ module Tinkerforge
4
+
5
+ class BrickletOLED128x64V2
6
+
7
+ include Tinkerforge::Shared::IBM437_encoding
8
+
9
+ # Encodes a string in the IBM437 character set used by some displays.
10
+ #
11
+ # Characters that can not be encoded are replaced with '?'.
12
+ #
13
+ # See:
14
+ # - https://en.wikipedia.org/wiki/Code_page_437
15
+ def encode(string)
16
+ ibm437_encode(string)
17
+ end
18
+
19
+ # Turns the display all black.
20
+ def blackout
21
+ c = get_display_configuration
22
+
23
+ if c[1] # inverted
24
+ set_display_configuration c[0], false, c[2]
25
+ end
26
+
27
+ clear_display
28
+
29
+ if ! c[2] # buffered
30
+ draw_buffered_frame(true)
31
+ end
32
+
33
+ true
34
+ end
35
+
36
+ # Returns true if automatic draw is set to false.
37
+ def buffered?
38
+ ! get_display_configuration[2]
39
+ end
40
+
41
+ # Draws the currently buffered frame.
42
+ def redraw(force_complete_redraw=false)
43
+ draw_buffered_frame force_complete_redraw
44
+ end
45
+
46
+ alias flush redraw
47
+
48
+ # Returns the device's state.
49
+ def state
50
+ super.merge(
51
+ 'display_configuration' => get_display_configuration,
52
+ )
53
+ end
54
+
55
+ # Clears the display and prints upto 8 lines of text.
56
+ #
57
+ # Text may contain newline characters to separate lines.
58
+ # Lines longer than 21 characters will be wrapped.
59
+ #
60
+ # Text is automatically encoded in the IBM437 character set.
61
+ # @example
62
+ # my_oled.put_screen "Hello, World!\n\nRuby #{RUBY_VERSION}"
63
+ def put_screen(text='', test: false)
64
+ lines = text.split("\n")
65
+ lines = lines.map { |s| s.empty? ? '' : s.scan(/.{1,21}/) }.flatten
66
+ lines = lines[0,8].map { |l| encode l }
67
+
68
+ return lines if test
69
+
70
+ clear_display
71
+ lines.each_with_index do |s,l|
72
+ write_line l, 0, s
73
+ end
74
+ nil
75
+ end
76
+
77
+ # Shows an object.
78
+ def show(object)
79
+ if object.respond_to?( :_view_21x8, true)
80
+ put_screen ( object.send(:_view_21x8) rescue "21x8 view error\n\n#{object.class.to_s}" )
81
+ elsif
82
+ put_screen object.inspect[0,168]
83
+ end
84
+ end
85
+
86
+ private
87
+
88
+ def _view_21x8
89
+ "OLED #{uid_string.rjust 8}"
90
+ end
91
+
92
+ end
93
+
94
+ end
@@ -6,5 +6,6 @@
6
6
  ],
7
7
  "weight": 10,
8
8
  "documentation_en_url": "https://www.tinkerforge.com/en/doc/Hardware/Bricklets/Outdoor_Weather.html",
9
- "versions_identifier": "bricklets:outdoor_weather"
9
+ "versions_identifier": "bricklets:outdoor_weather",
10
+ "released": "2018-02-26"
10
11
  }
@@ -14,6 +14,15 @@ module Tinkerforge
14
14
  end.to_h
15
15
  end
16
16
 
17
+ private
18
+
19
+ def _view_21x8
20
+ "Weather #{uid_string.rjust 8}\n\n" +
21
+ sensors.first(6).map do |k,v|
22
+ %Q(#{v[2] > 100 ? '?' : ' '} %3d %4.1f °C %2d %%\n) % [k,v].flatten
23
+ end.join
24
+ end
25
+
17
26
  end
18
27
 
19
28
  end
@@ -6,5 +6,6 @@
6
6
  ],
7
7
  "weight": 20,
8
8
  "documentation_en_url": "https://www.tinkerforge.com/en/doc/Hardware/Bricklets/Piezo_Speaker_V2.html",
9
- "versions_identifier": "bricklets:piezo_speaker_v2"
9
+ "versions_identifier": "bricklets:piezo_speaker_v2",
10
+ "released": "2019-05-20"
10
11
  }
@@ -6,5 +6,6 @@
6
6
  ],
7
7
  "weight": 3,
8
8
  "documentation_en_url": "https://www.tinkerforge.com/en/doc/Hardware/Bricklets/RealTime_Clock_V2.html",
9
- "versions_identifier": "bricklets:real_time_clock_v2"
9
+ "versions_identifier": "bricklets:real_time_clock_v2",
10
+ "released": "2018-06-07"
10
11
  }
@@ -6,5 +6,6 @@
6
6
  ],
7
7
  "weight": 8,
8
8
  "documentation_en_url": "https://www.tinkerforge.com/en/doc/Hardware/Bricklets/Remote_Switch_V2.html",
9
- "versions_identifier": "bricklets:remote_switch_v2"
9
+ "versions_identifier": "bricklets:remote_switch_v2",
10
+ "released": "2018-02-26"
10
11
  }
@@ -6,5 +6,6 @@
6
6
  ],
7
7
  "weight": 7,
8
8
  "documentation_en_url": "https://www.tinkerforge.com/en/doc/Hardware/Bricklets/RGB_LED_Button.html",
9
- "versions_identifier": "bricklets:rgb_led_button"
9
+ "versions_identifier": "bricklets:rgb_led_button",
10
+ "released": "2017-11-17"
10
11
  }
@@ -6,5 +6,6 @@
6
6
  ],
7
7
  "weight": 3,
8
8
  "documentation_en_url": "https://www.tinkerforge.com/en/doc/Hardware/Bricklets/RGB_LED_V2.html",
9
- "versions_identifier": "bricklets:rgb_led_v2"
9
+ "versions_identifier": "bricklets:rgb_led_v2",
10
+ "released": "2019-05-20"
10
11
  }
@@ -6,5 +6,6 @@
6
6
  ],
7
7
  "weight": 6,
8
8
  "documentation_en_url": "https://www.tinkerforge.com/en/doc/Hardware/Bricklets/Rotary_Encoder_V2.html",
9
- "versions_identifier": "bricklets:rotary_encoder_v2"
9
+ "versions_identifier": "bricklets:rotary_encoder_v2",
10
+ "released": "2018-02-26"
10
11
  }
@@ -6,5 +6,6 @@
6
6
  ],
7
7
  "weight": 7,
8
8
  "documentation_en_url": "https://www.tinkerforge.com/en/doc/Hardware/Bricklets/Rotary_Poti_V2.html",
9
- "versions_identifier": "bricklets:rotary_poti_v2"
9
+ "versions_identifier": "bricklets:rotary_poti_v2",
10
+ "released": "2019-08-22"
10
11
  }
@@ -120,6 +120,8 @@ module Tinkerforge
120
120
  '[' => '1001110',
121
121
  ']' => '1111000',
122
122
 
123
+ '°' => '1100011',
124
+
123
125
  }
124
126
  end
125
127
 
@@ -6,5 +6,6 @@
6
6
  ],
7
7
  "weight": 2.6,
8
8
  "documentation_en_url": "https://www.tinkerforge.com/en/doc/Hardware/Bricklets/Sound_Pressure_Level.html",
9
- "versions_identifier": "bricklets:sound_pressure_level"
9
+ "versions_identifier": "bricklets:sound_pressure_level",
10
+ "released": "2018-06-07"
10
11
  }
@@ -0,0 +1,20 @@
1
+ module Tinkerforge
2
+
3
+ class BrickletSoundPressureLevel
4
+
5
+ WEIGHTINGS = [ 'dB(A)', 'dB(B)','dB(C)', 'dB(D)', 'dB(Z)', 'ITU-R 468']
6
+
7
+ # Returns the device's state.
8
+ def state
9
+ super.merge(
10
+ 'configuration' => conf = get_configuration,
11
+ 'weighting' => WEIGHTINGS[ conf[1] ],
12
+ 'sampling_rate' => 2 ** (3 - conf[0]) * 10,
13
+ 'bin_size' => 2 ** (3 - conf[0]) * 40,
14
+ 'sound_pressure' => get_decibel,
15
+ )
16
+ end
17
+
18
+ end
19
+
20
+ end
@@ -6,5 +6,6 @@
6
6
  ],
7
7
  "weight": 3,
8
8
  "documentation_en_url": "https://www.tinkerforge.com/en/doc/Hardware/Bricklets/Temperature_IR_V2.html",
9
- "versions_identifier": "bricklets:temperature_ir_v2"
9
+ "versions_identifier": "bricklets:temperature_ir_v2",
10
+ "released": "2018-02-26"
10
11
  }
@@ -0,0 +1,14 @@
1
+ module Tinkerforge
2
+
3
+ class BrickletTemperatureIRV2
4
+
5
+ # Returns the device's state.
6
+ def state
7
+ super.merge(
8
+ 'emissivity' => get_emissivity,
9
+ )
10
+ end
11
+
12
+ end
13
+
14
+ end
@@ -6,5 +6,6 @@
6
6
  ],
7
7
  "weight": 2,
8
8
  "documentation_en_url": "https://www.tinkerforge.com/en/doc/Hardware/Bricklets/Temperature_V2.html",
9
- "versions_identifier": "bricklets:temperature_v2"
9
+ "versions_identifier": "bricklets:temperature_v2",
10
+ "released": "2018-09-27"
10
11
  }
@@ -0,0 +1,27 @@
1
+ module Tinkerforge
2
+
3
+ class BrickletTemperatureV2
4
+
5
+ # Returns the device's state.
6
+ def state
7
+ super.merge(
8
+ 'temperature' => get_temperature,
9
+ 'heater_configuration' => get_heater_configuration,
10
+ )
11
+ end
12
+
13
+ private
14
+
15
+ def _view_21x8
16
+ <<~ET
17
+ Temp #{uid_string.rjust 8}
18
+
19
+ #{'%6.2f °C' % [get_temperature*0.01]}
20
+
21
+ #{get_heater_configuration == 1 ? 'HEATER' : ''}
22
+ ET
23
+ end
24
+
25
+ end
26
+
27
+ end
@@ -6,5 +6,6 @@
6
6
  ],
7
7
  "weight": 8,
8
8
  "documentation_en_url": "https://www.tinkerforge.com/en/doc/Hardware/Bricklets/Thermal_Imaging.html",
9
- "versions_identifier": "bricklets:thermal_imaging"
9
+ "versions_identifier": "bricklets:thermal_imaging",
10
+ "released": "2017-11-17"
10
11
  }
@@ -6,5 +6,6 @@
6
6
  ],
7
7
  "weight": 9,
8
8
  "documentation_en_url": "https://www.tinkerforge.com/en/doc/Hardware/Bricklets/Thermocouple_V2.html",
9
- "versions_identifier": "bricklets:thermocouple_v2"
9
+ "versions_identifier": "bricklets:thermocouple_v2",
10
+ "released": "2018-06-07"
10
11
  }
@@ -6,5 +6,6 @@
6
6
  ],
7
7
  "weight": 2.1,
8
8
  "documentation_en_url": "https://www.tinkerforge.com/en/doc/Hardware/Bricklets/UV_Light_V2.html",
9
- "versions_identifier": "bricklets:uv_light_v2"
9
+ "versions_identifier": "bricklets:uv_light_v2",
10
+ "released": "2018-09-27"
10
11
  }
@@ -6,5 +6,6 @@
6
6
  ],
7
7
  "weight": 10,
8
8
  "documentation_en_url": "https://www.tinkerforge.com/en/doc/Hardware/Bricklets/Voltage_Current_V2.html",
9
- "versions_identifier": "bricklets:voltage_current_v2"
9
+ "versions_identifier": "bricklets:voltage_current_v2",
10
+ "released": "2018-06-07"
10
11
  }
@@ -6,5 +6,6 @@
6
6
  ],
7
7
  "weight": 12,
8
8
  "documentation_en_url": "https://www.tinkerforge.com/en/doc/Hardware/Bricklets/XMC1400_Breakout.html",
9
- "versions_identifier": "bricklets:xmc1400_breakout"
9
+ "versions_identifier": "bricklets:xmc1400_breakout",
10
+ "released": "2019-08-22"
10
11
  }
@@ -10,6 +10,9 @@ module Tinkerforge
10
10
  # Returns the port for the IP Connection.
11
11
  attr_reader :port
12
12
 
13
+ # Returns the network socket used by the IP Connection.
14
+ attr_reader :socket
15
+
13
16
  # Returns a programmer-friendly representation of the object.
14
17
  def inspect
15
18
  "%s (%s:%s)" % [self.class, host, port]
@@ -117,17 +120,22 @@ module Tinkerforge
117
120
 
118
121
  end
119
122
 
120
- # Creates an IP Connection object connected to the given host and port.
121
- #
122
- # If no host and port are specified, uses the TINKERFORGE_HOST and TINKERFORGE_PORT environment variables, when defined.
123
- # Otherwise defaults to 'localhost' and port 4223.
124
- def self.connect(host=nil, port=nil)
125
- ipcon = IPConnection.new
126
- ipcon.connect(
127
- ( host || ENV['TINKERFORGE_HOST'] || 'localhost' ),
128
- ( port || ENV['TINKERFORGE_PORT'] || 4223 )
129
- )
130
- ipcon
123
+
124
+ class << self
125
+
126
+ # Creates an IP Connection object connected to the given host and port.
127
+ #
128
+ # If no host and port are specified, uses the TINKERFORGE_HOST and TINKERFORGE_PORT environment variables, when defined.
129
+ # Otherwise defaults to 'localhost' and port 4223.
130
+ def connect(host=nil, port=nil)
131
+ ipcon = IPConnection.new
132
+ ipcon.connect(
133
+ ( host || ENV['TINKERFORGE_HOST'] || 'localhost' ),
134
+ ( port || ENV['TINKERFORGE_PORT'] || 4223 )
135
+ )
136
+ ipcon
137
+ end
138
+
131
139
  end
132
140
 
133
141
  end
@@ -0,0 +1,41 @@
1
+ module Tinkerforge
2
+
3
+ module Shared
4
+
5
+ module IBM437_encoding
6
+
7
+ private
8
+
9
+ # Encodes a string in the IBM437 character set used by some displays.
10
+ #
11
+ # Characters that can not be encoded are replaced with '?'.
12
+ #
13
+ # See:
14
+ # - https://en.wikipedia.org/wiki/Code_page_437
15
+ def ibm437_encode(string)
16
+ string.encode('IBM437', fallback: ibm437_encoding_fallback_table)
17
+ end
18
+
19
+ # Ruby's IBM437 encoding does not include codepoints 0..31 and 127.
20
+ # This fallback table defines those, minus 0,
21
+ # and defines '?' as default for undefined characters.
22
+ def ibm437_encoding_fallback_table
23
+ @@ibm437_encoding_fallback_table ||= Hash.new('?').merge(
24
+ {
25
+ '☺'=> "\x01", '☻'=> "\x02", '♥'=> "\x03", '♦'=> "\x04",
26
+ '♣'=> "\x05", '♠'=> "\x06", '•'=> "\x07", '◘'=> "\x08",
27
+ '○'=> "\x09", '◙'=> "\x0a", '♂'=> "\x0b", '♀'=> "\x0c",
28
+ '♪'=> "\x0d", '♫'=> "\x0e", '☼'=> "\x0f", '►'=> "\x10",
29
+ '◄'=> "\x11", '↕'=> "\x12", '‼'=> "\x13", '¶'=> "\x14",
30
+ '§'=> "\x15", '▬'=> "\x16", '↨'=> "\x17", '↑'=> "\x18",
31
+ '↓'=> "\x19", '→'=> "\x1a", '←'=> "\x1b", '∟'=> "\x1c",
32
+ '↔'=> "\x1d", '▲'=> "\x1e", '▼'=> "\x1f", '⌂'=> "\x7f"
33
+ }
34
+ )
35
+ end
36
+
37
+ end
38
+
39
+ end
40
+
41
+ end
@@ -5,16 +5,31 @@ module Tinkerforge
5
5
  ALL_VERSIONS_URL = 'https://download.tinkerforge.com/all_versions.txt'
6
6
  LATEST_VERSIONS_URL = 'https://download.tinkerforge.com/latest_versions.txt'
7
7
 
8
- # Returns the directory where Tinkerforge bindings appear to be installed.
9
- def self.lib_dir
10
- File.dirname File.dirname Device.instance_method('uid').source_location.first
11
- end
8
+ class << self
9
+
10
+ # Returns the directory where Tinkerforge bindings appear to be installed.
11
+ def lib_dir
12
+ File.dirname File.dirname Device.instance_method('uid').source_location.first
13
+ end
14
+
15
+ # Attempts to load all files that are part of Tinkerforge. Returns a list of files loaded.
16
+ def require_everything
17
+ Dir.glob(File.join lib_dir, 'tinkerforge', '*.rb').map do |file|
18
+ require(file) ? file : nil
19
+ end.compact
20
+ end
21
+
22
+ # Discovers local devices.
23
+ #
24
+ # Connects to 'localhost', and returns devices discovered there. If no port is specified, defaults to port 4223.
25
+ # @example
26
+ # Tinkerforge.local.ls
27
+ # @example Mac only
28
+ # Tinkerforge.local.doc
29
+ def local(port=4223)
30
+ connect('localhost', port).discover(0.25)
31
+ end
12
32
 
13
- # Attempts to load all files that are part of Tinkerforge. Returns a list of files loaded.
14
- def self.require_everything
15
- Dir.glob(File.join lib_dir, 'tinkerforge', '*.rb').map do |file|
16
- require(file) ? file : nil
17
- end.compact
18
33
  end
19
34
 
20
35
  end
@@ -3,7 +3,7 @@ require 'tinkerforge/version'
3
3
  module Tinkerforge
4
4
 
5
5
  # Tinderfridge version.
6
- TINDERFRIDGE_VERSION = '0.8.0'
6
+ TINDERFRIDGE_VERSION = '0.11.0'
7
7
 
8
8
  # About Tinkerforge & Tinderfridge.
9
9
  def self.about
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.8.0
4
+ version: 0.11.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-08-17 00:00:00.000000000 Z
11
+ date: 2022-05-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: tinkerforge
@@ -41,10 +41,16 @@ files:
41
41
  - lib/tinderfridge/device_collection.rb
42
42
  - lib/tinderfridge/device_info.rb
43
43
  - lib/tinderfridge/device_info.txt
44
+ - lib/tinderfridge/devices/brick_esp32/brick_esp32.json
45
+ - lib/tinderfridge/devices/brick_esp32/brick_esp32.rb
46
+ - lib/tinderfridge/devices/brick_esp32_ethernet/brick_esp32_ethernet.json
47
+ - lib/tinderfridge/devices/brick_esp32_ethernet/brick_esp32_ethernet.rb
44
48
  - lib/tinderfridge/devices/brick_hat/brick_hat.json
45
49
  - lib/tinderfridge/devices/brick_hat/brick_hat.rb
46
50
  - lib/tinderfridge/devices/brick_hat_zero/brick_hat_zero.json
47
51
  - lib/tinderfridge/devices/brick_hat_zero/brick_hat_zero.rb
52
+ - lib/tinderfridge/devices/brick_master/brick_master.json
53
+ - lib/tinderfridge/devices/brick_master/brick_master.rb
48
54
  - lib/tinderfridge/devices/bricklet_accelerometer_v2/bricklet_accelerometer_v2.json
49
55
  - lib/tinderfridge/devices/bricklet_air_quality/bricklet_air_quality.json
50
56
  - lib/tinderfridge/devices/bricklet_air_quality/bricklet_air_quality.rb
@@ -53,8 +59,10 @@ files:
53
59
  - lib/tinderfridge/devices/bricklet_analog_in_v3/bricklet_analog_in_v3.json
54
60
  - lib/tinderfridge/devices/bricklet_analog_out_v3/bricklet_analog_out_v3.json
55
61
  - lib/tinderfridge/devices/bricklet_barometer_v2/bricklet_barometer_v2.json
62
+ - lib/tinderfridge/devices/bricklet_barometer_v2/bricklet_barometer_v2.rb
56
63
  - lib/tinderfridge/devices/bricklet_can_v2/bricklet_can_v2.json
57
64
  - lib/tinderfridge/devices/bricklet_co2_v2/bricklet_co2_v2.json
65
+ - lib/tinderfridge/devices/bricklet_co2_v2/bricklet_co2_v2.rb
58
66
  - lib/tinderfridge/devices/bricklet_color_v2/bricklet_color_v2.json
59
67
  - lib/tinderfridge/devices/bricklet_color_v2/bricklet_color_v2.rb
60
68
  - lib/tinderfridge/devices/bricklet_compass/bricklet_compass.json
@@ -68,7 +76,9 @@ files:
68
76
  - lib/tinderfridge/devices/bricklet_energy_monitor/bricklet_energy_monitor.json
69
77
  - lib/tinderfridge/devices/bricklet_gps_v2/bricklet_gps_v2.json
70
78
  - lib/tinderfridge/devices/bricklet_gps_v2/bricklet_gps_v2.rb
79
+ - lib/tinderfridge/devices/bricklet_gps_v3/bricklet_gps_v3.json
71
80
  - lib/tinderfridge/devices/bricklet_hall_effect_v2/bricklet_hall_effect_v2.json
81
+ - lib/tinderfridge/devices/bricklet_hall_effect_v2/bricklet_hall_effect_v2.rb
72
82
  - lib/tinderfridge/devices/bricklet_humidity_v2/bricklet_humidity_v2.json
73
83
  - lib/tinderfridge/devices/bricklet_imu_v3/bricklet_imu_v3.json
74
84
  - lib/tinderfridge/devices/bricklet_industrial_analog_out_v2/bricklet_industrial_analog_out_v2.json
@@ -104,6 +114,7 @@ files:
104
114
  - lib/tinderfridge/devices/bricklet_nfc/bricklet_nfc.json
105
115
  - lib/tinderfridge/devices/bricklet_nfc/bricklet_nfc.rb
106
116
  - lib/tinderfridge/devices/bricklet_oled_128x64_v2/bricklet_oled_128x64_v2.json
117
+ - lib/tinderfridge/devices/bricklet_oled_128x64_v2/bricklet_oled_128x64_v2.rb
107
118
  - lib/tinderfridge/devices/bricklet_one_wire/bricklet_one_wire.json
108
119
  - lib/tinderfridge/devices/bricklet_outdoor_weather/bricklet_outdoor_weather.json
109
120
  - lib/tinderfridge/devices/bricklet_outdoor_weather/bricklet_outdoor_weather.rb
@@ -129,8 +140,11 @@ files:
129
140
  - lib/tinderfridge/devices/bricklet_silent_stepper_v2/bricklet_silent_stepper_v2.json
130
141
  - lib/tinderfridge/devices/bricklet_solid_state_relay_v2/bricklet_solid_state_relay_v2.json
131
142
  - lib/tinderfridge/devices/bricklet_sound_pressure_level/bricklet_sound_pressure_level.json
143
+ - lib/tinderfridge/devices/bricklet_sound_pressure_level/bricklet_sound_pressure_level.rb
132
144
  - lib/tinderfridge/devices/bricklet_temperature_ir_v2/bricklet_temperature_ir_v2.json
145
+ - lib/tinderfridge/devices/bricklet_temperature_ir_v2/bricklet_temperature_ir_v2.rb
133
146
  - lib/tinderfridge/devices/bricklet_temperature_v2/bricklet_temperature_v2.json
147
+ - lib/tinderfridge/devices/bricklet_temperature_v2/bricklet_temperature_v2.rb
134
148
  - lib/tinderfridge/devices/bricklet_thermal_imaging/bricklet_thermal_imaging.json
135
149
  - lib/tinderfridge/devices/bricklet_thermocouple_v2/bricklet_thermocouple_v2.json
136
150
  - lib/tinderfridge/devices/bricklet_uv_light_v2/bricklet_uv_light_v2.json
@@ -138,6 +152,7 @@ files:
138
152
  - lib/tinderfridge/devices/bricklet_voltage_current_v2/bricklet_voltage_current_v2.rb
139
153
  - lib/tinderfridge/devices/bricklet_xmc1400_breakout/bricklet_xmc1400_breakout.json
140
154
  - lib/tinderfridge/ip_connection.rb
155
+ - lib/tinderfridge/shared/display_ibm437_encoding.rb
141
156
  - lib/tinderfridge/tinkerforge.rb
142
157
  - lib/tinderfridge/version.rb
143
158
  homepage: https://github.com/lllisteu/tinderfridge
@@ -162,7 +177,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
162
177
  - !ruby/object:Gem::Version
163
178
  version: '0'
164
179
  requirements: []
165
- rubygems_version: 3.1.4
180
+ rubygems_version: 3.3.11
166
181
  signing_key:
167
182
  specification_version: 4
168
183
  summary: Extending Tinkerforge in fun and useful ways.