tinderfridge 0.9.0 → 0.12.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.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/lib/tinderfridge/device.rb +2 -1
  3. data/lib/tinderfridge/device_info.txt +3 -0
  4. data/lib/tinderfridge/devices/brick_esp32/brick_esp32.json +11 -0
  5. data/lib/tinderfridge/devices/brick_esp32/brick_esp32.rb +13 -0
  6. data/lib/tinderfridge/devices/brick_esp32_ethernet/brick_esp32_ethernet.json +11 -0
  7. data/lib/tinderfridge/devices/brick_esp32_ethernet/brick_esp32_ethernet.rb +13 -0
  8. data/lib/tinderfridge/devices/brick_hat/brick_hat.rb +12 -0
  9. data/lib/tinderfridge/devices/brick_hat_zero/brick_hat_zero.rb +10 -0
  10. data/lib/tinderfridge/devices/bricklet_air_quality/bricklet_air_quality.rb +15 -0
  11. data/lib/tinderfridge/devices/bricklet_analog_in_v3/bricklet_analog_in_v3.json +2 -1
  12. data/lib/tinderfridge/devices/bricklet_barometer_v2/bricklet_barometer_v2.rb +30 -0
  13. data/lib/tinderfridge/devices/bricklet_co2_v2/bricklet_co2_v2.rb +10 -0
  14. data/lib/tinderfridge/devices/bricklet_distance_us_v2/bricklet_distance_us_v2.json +2 -1
  15. data/lib/tinderfridge/devices/bricklet_dmx/bricklet_dmx.json +2 -1
  16. data/lib/tinderfridge/devices/bricklet_e_paper_296x128/bricklet_e_paper_296x128.json +2 -1
  17. data/lib/tinderfridge/devices/bricklet_energy_monitor/bricklet_energy_monitor.json +2 -1
  18. data/lib/tinderfridge/devices/bricklet_gps_v2/bricklet_gps_v2.json +1 -1
  19. data/lib/tinderfridge/devices/bricklet_gps_v2/bricklet_gps_v2.rb +14 -0
  20. data/lib/tinderfridge/devices/bricklet_gps_v3/bricklet_gps_v3.json +11 -0
  21. data/lib/tinderfridge/devices/bricklet_gps_v3/bricklet_gps_v3.rb +58 -0
  22. data/lib/tinderfridge/devices/bricklet_hall_effect_v2/bricklet_hall_effect_v2.json +2 -1
  23. data/lib/tinderfridge/devices/bricklet_hall_effect_v2/bricklet_hall_effect_v2.rb +16 -0
  24. data/lib/tinderfridge/devices/bricklet_humidity_v2/bricklet_humidity_v2.json +2 -1
  25. data/lib/tinderfridge/devices/bricklet_imu_v3/bricklet_imu_v3.json +2 -1
  26. data/lib/tinderfridge/devices/bricklet_industrial_dual_relay/bricklet_industrial_dual_relay.json +2 -1
  27. data/lib/tinderfridge/devices/bricklet_isolator/bricklet_isolator.json +2 -1
  28. data/lib/tinderfridge/devices/bricklet_joystick_v2/bricklet_joystick_v2.json +2 -1
  29. data/lib/tinderfridge/devices/bricklet_laser_range_finder_v2/bricklet_laser_range_finder_v2.json +2 -1
  30. data/lib/tinderfridge/devices/bricklet_lcd_128x64/bricklet_lcd_128x64.json +2 -1
  31. data/lib/tinderfridge/devices/bricklet_lcd_128x64/bricklet_lcd_128x64.rb +83 -0
  32. data/lib/tinderfridge/devices/bricklet_linear_poti_v2/bricklet_linear_poti_v2.json +2 -1
  33. data/lib/tinderfridge/devices/bricklet_motorized_linear_poti/bricklet_motorized_linear_poti.json +2 -1
  34. data/lib/tinderfridge/devices/bricklet_nfc/bricklet_nfc.json +2 -1
  35. data/lib/tinderfridge/devices/bricklet_oled_128x64_v2/bricklet_oled_128x64_v2.rb +94 -0
  36. data/lib/tinderfridge/devices/bricklet_outdoor_weather/bricklet_outdoor_weather.json +2 -1
  37. data/lib/tinderfridge/devices/bricklet_outdoor_weather/bricklet_outdoor_weather.rb +16 -0
  38. data/lib/tinderfridge/devices/bricklet_piezo_speaker_v2/bricklet_piezo_speaker_v2.json +2 -1
  39. data/lib/tinderfridge/devices/bricklet_piezo_speaker_v2/bricklet_piezo_speaker_v2.rb +14 -0
  40. data/lib/tinderfridge/devices/bricklet_real_time_clock_v2/bricklet_real_time_clock_v2.json +2 -1
  41. data/lib/tinderfridge/devices/bricklet_rgb_led_button/bricklet_rgb_led_button.json +2 -1
  42. data/lib/tinderfridge/devices/bricklet_rgb_led_v2/bricklet_rgb_led_v2.json +2 -1
  43. data/lib/tinderfridge/devices/bricklet_rotary_encoder_v2/bricklet_rotary_encoder_v2.json +2 -1
  44. data/lib/tinderfridge/devices/bricklet_rotary_poti_v2/bricklet_rotary_poti_v2.json +2 -1
  45. data/lib/tinderfridge/devices/bricklet_temperature_ir_v2/bricklet_temperature_ir_v2.json +2 -1
  46. data/lib/tinderfridge/devices/bricklet_temperature_ir_v2/bricklet_temperature_ir_v2.rb +14 -0
  47. data/lib/tinderfridge/devices/bricklet_temperature_v2/bricklet_temperature_v2.json +2 -1
  48. data/lib/tinderfridge/devices/bricklet_temperature_v2/bricklet_temperature_v2.rb +27 -0
  49. data/lib/tinderfridge/devices/bricklet_thermal_imaging/bricklet_thermal_imaging.json +2 -1
  50. data/lib/tinderfridge/devices/bricklet_thermocouple_v2/bricklet_thermocouple_v2.json +2 -1
  51. data/lib/tinderfridge/devices/bricklet_uv_light_v2/bricklet_uv_light_v2.json +2 -1
  52. data/lib/tinderfridge/devices/bricklet_voltage_current_v2/bricklet_voltage_current_v2.json +2 -1
  53. data/lib/tinderfridge/devices/bricklet_xmc1400_breakout/bricklet_xmc1400_breakout.json +2 -1
  54. data/lib/tinderfridge/ip_connection.rb +19 -11
  55. data/lib/tinderfridge/shared/display_ibm437_encoding.rb +41 -0
  56. data/lib/tinderfridge/tinkerforge.rb +24 -9
  57. data/lib/tinderfridge/version.rb +1 -1
  58. metadata +16 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 26a171ddfc01502cca8300d445d498c960b8cfb1304e1b60fddc5d33ad0a68ba
4
- data.tar.gz: ebf5e97bd0fe072375c6a548615baff3e42ef77432b96373035571a41897ba8a
3
+ metadata.gz: 11aec071db2201e67dee0935c5a37ba2f801d2337cf0dc938ea465a9c0435bd3
4
+ data.tar.gz: ad2faa18ff3320c9320ded930b47f54c38e9471eba0bb52e2aa23cb48da3d108
5
5
  SHA512:
6
- metadata.gz: e5a6e8d3f54c3955afbbce8d48c1ded48ea46535dd078cc6118d207bf988634c7e04fbcab178a5b440ea5ff55798287df53f94465a06e0971a5d0282876f532f
7
- data.tar.gz: 31d5cbea577e5b98279279193301e2a95062db29d7150149c3035ecb639f4301ce739854927f018fa922a9630bea7217c76dfb0329ccc5e88359b73f7c4fc7fe
6
+ metadata.gz: 440adf1b54a1787963688f4392fe686e07b898eae1361d3f245526a244f6e677b5a29a7cd84f2f3aa0221ef4300372dcbae18b55200cef2b96d6fa7206a0c7d0
7
+ data.tar.gz: 8204e15a1106392bbde997f2e65704b2cfd176c4e18066685f26e8a50a6cd62e3002b10e8fd6224f16540d946c94c66f66e96f6941b90c7255beec4e4c545a60
@@ -15,6 +15,7 @@ module Tinkerforge
15
15
  # With help from:
16
16
  # - https://stackoverflow.com/questions/2393697
17
17
  def descendants
18
+ # NOTE: Ruby 3.1 has Class#subclasses
18
19
  ObjectSpace.each_object(Class).select { |klass| klass < self }
19
20
  end
20
21
 
@@ -79,7 +80,7 @@ module Tinkerforge
79
80
 
80
81
  # Returns a programmer-friendly representation of the device.
81
82
  def inspect
82
- "%s (%s@%s:%s)" % [self.class, @uid_string, ipcon.host, ipcon.port]
83
+ "%s (%s@%s:%s)" % [self.class, uid_string, ipcon.host, ipcon.port]
83
84
  end
84
85
 
85
86
  # Returns the device's properties.
@@ -16,6 +16,8 @@
16
16
  29 IO-4 Bricklet Tinkerforge::BrickletIO4 bricklet_io4
17
17
  111 HAT Brick Tinkerforge::BrickHAT brick_hat
18
18
  112 HAT Zero Brick Tinkerforge::BrickHATZero brick_hat_zero
19
+ 113 ESP32 Brick Tinkerforge::BrickESP32 brick_esp32
20
+ 115 ESP32 Ethernet Brick Tinkerforge::BrickESP32Ethernet brick_esp32_ethernet
19
21
  210 Joystick Bricklet Tinkerforge::BrickletJoystick bricklet_joystick
20
22
  211 LCD 16x2 Bricklet Tinkerforge::BrickletLCD16x2 bricklet_lcd_16x2
21
23
  212 LCD 20x4 Bricklet Tinkerforge::BrickletLCD20x4 bricklet_lcd_20x4
@@ -142,3 +144,4 @@
142
144
  2164 Industrial PTC Bricklet Tinkerforge::BrickletIndustrialPTC bricklet_industrial_ptc
143
145
  2165 DC Bricklet 2.0 Tinkerforge::BrickletDCV2 bricklet_dc_v2
144
146
  2166 Silent Stepper Bricklet 2.0 Tinkerforge::BrickletSilentStepperV2 bricklet_silent_stepper_v2
147
+ 2171 GPS Bricklet 3.0 Tinkerforge::BrickletGPSV3 bricklet_gps_v3
@@ -0,0 +1,11 @@
1
+ {
2
+ "dimensions": [
3
+ 66,
4
+ 40,
5
+ 9
6
+ ],
7
+ "weight": 14,
8
+ "documentation_en_url": "https://www.tinkerforge.com/en/doc/Hardware/Bricks/ESP32_Brick.html",
9
+ "versions_identifier": "bricks:esp32",
10
+ "released": "2022-04-29"
11
+ }
@@ -0,0 +1,13 @@
1
+ module Tinkerforge
2
+
3
+ class BrickESP32
4
+
5
+ private
6
+
7
+ def _view_21x8
8
+ "ESP32 #{uid_string.rjust 8}"
9
+ end
10
+
11
+ end
12
+
13
+ end
@@ -0,0 +1,11 @@
1
+ {
2
+ "dimensions": [
3
+ 88,
4
+ 45,
5
+ 12
6
+ ],
7
+ "weight": 20,
8
+ "documentation_en_url": "https://www.tinkerforge.com/en/doc/Hardware/Bricks/ESP32_Ethernet_Brick.html",
9
+ "versions_identifier": "bricks:esp32_ethernet",
10
+ "released": "2022-04-29"
11
+ }
@@ -0,0 +1,13 @@
1
+ module Tinkerforge
2
+
3
+ class BrickESP32Ethernet
4
+
5
+ private
6
+
7
+ def _view_21x8
8
+ "ESP32 Eth #{uid_string.rjust 8}"
9
+ end
10
+
11
+ end
12
+
13
+ end
@@ -13,6 +13,18 @@ module Tinkerforge
13
13
  )
14
14
  end
15
15
 
16
+ private
17
+
18
+ def _view_21x8
19
+ volts = get_voltages
20
+ <<~ET
21
+ HAT #{uid_string.rjust 8}
22
+
23
+ USB #{'%5.2f V' % [volts[0]*0.001]}
24
+ DC #{'%5.2f V' % [volts[1]*0.001]}
25
+ ET
26
+ end
27
+
16
28
  end
17
29
 
18
30
  end
@@ -9,6 +9,16 @@ module Tinkerforge
9
9
  )
10
10
  end
11
11
 
12
+ private
13
+
14
+ def _view_21x8
15
+ <<~ET
16
+ HAT Zero #{uid_string.rjust 8}
17
+
18
+ USB #{'%5.2f V' % [get_usb_voltage*0.001]}
19
+ ET
20
+ end
21
+
12
22
  end
13
23
 
14
24
  end
@@ -15,6 +15,21 @@ module Tinkerforge
15
15
  )
16
16
  end
17
17
 
18
+ # Returns the derived air pressure at sea level.
19
+ #
20
+ # Air pressure is derived from:
21
+ # - air pressure as measured by the Bricklet itself
22
+ # - temperature as measured by the Bricklet itself
23
+ # - altitude of the Bricklet's location (meter)
24
+ #
25
+ # With help from:
26
+ # - https://www.tinkerforge.com/en/doc/Hardware/Bricklets/Barometer_V2.html
27
+ # - https://keisan.casio.com/exec/system/1224575267
28
+ def qff(altitude)
29
+ # QFE / [1 - Tg * H / (273.15 + Tfe + Tg * H)] ^ (0.034163 / Tg)
30
+ (get_air_pressure / (1 - 0.0065 * altitude / (273.15 + (get_temperature * 0.01) + 0.0065 * altitude)) ** (0.034163 / 0.0065)).round
31
+ end
32
+
18
33
  end
19
34
 
20
35
  end
@@ -6,5 +6,6 @@
6
6
  ],
7
7
  "weight": 8,
8
8
  "documentation_en_url": "https://www.tinkerforge.com/en/doc/Hardware/Bricklets/Analog_In_V3.html",
9
- "versions_identifier": "bricklets:analog_in_v3"
9
+ "versions_identifier": "bricklets:analog_in_v3",
10
+ "released": "2018-02-26"
10
11
  }
@@ -0,0 +1,30 @@
1
+ module Tinkerforge
2
+
3
+ class BrickletBarometerV2
4
+
5
+ # Returns the device's state.
6
+ def state
7
+ super.merge(
8
+ 'air_pressure' => get_air_pressure,
9
+ 'calibration' => get_calibration,
10
+ 'altitude' => get_altitude,
11
+ 'reference_air_pressure' => get_reference_air_pressure,
12
+ 'temperature' => get_temperature,
13
+ 'moving_average_configuration' => get_moving_average_configuration,
14
+ 'sensor_configuration' => get_sensor_configuration,
15
+ )
16
+ end
17
+
18
+ private
19
+
20
+ def _view_21x8
21
+ <<~ET
22
+ Baro #{uid_string.rjust 8}
23
+
24
+ #{'%7.2f hPa' % [get_air_pressure*0.001]}
25
+ ET
26
+ end
27
+
28
+ end
29
+
30
+ end
@@ -14,6 +14,16 @@ module Tinkerforge
14
14
  )
15
15
  end
16
16
 
17
+ private
18
+
19
+ def _view_21x8
20
+ <<~ET
21
+ CO2 #{uid_string.rjust 8}
22
+
23
+ #{'%5d PPM' % get_co2_concentration}
24
+ ET
25
+ end
26
+
17
27
  end
18
28
 
19
29
  end
@@ -6,5 +6,6 @@
6
6
  ],
7
7
  "weight": 9,
8
8
  "documentation_en_url": "https://www.tinkerforge.com/en/doc/Hardware/Bricklets/Distance_US_V2.html",
9
- "versions_identifier": "bricklets:distance_us_v2"
9
+ "versions_identifier": "bricklets:distance_us_v2",
10
+ "released": "2019-08-22"
10
11
  }
@@ -6,5 +6,6 @@
6
6
  ],
7
7
  "weight": 30,
8
8
  "documentation_en_url": "https://www.tinkerforge.com/en/doc/Hardware/Bricklets/DMX.html",
9
- "versions_identifier": "bricklets:dmx"
9
+ "versions_identifier": "bricklets:dmx",
10
+ "released": "2017-11-17"
10
11
  }
@@ -6,5 +6,6 @@
6
6
  ],
7
7
  "weight": 20,
8
8
  "documentation_en_url": "https://www.tinkerforge.com/en/doc/Hardware/Bricklets/EPaper_296x128.html",
9
- "versions_identifier": "bricklets:e_paper_296x128"
9
+ "versions_identifier": "bricklets:e_paper_296x128",
10
+ "released": "2019-05-20"
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/Energy_Monitor.html",
9
- "versions_identifier": "bricklets:energy_monitor"
9
+ "versions_identifier": "bricklets:energy_monitor",
10
+ "released": "2019-08-22"
10
11
  }
@@ -4,7 +4,7 @@
4
4
  35,
5
5
  12
6
6
  ],
7
- "weight": 20,
7
+ "weight": 16,
8
8
  "documentation_en_url": "https://www.tinkerforge.com/en/doc/Hardware/Bricklets/GPS_V2.html",
9
9
  "versions_identifier": "bricklets:gps_v2",
10
10
  "released": "2017-05-11"
@@ -39,6 +39,20 @@ module Tinkerforge
39
39
  Time.gm *dt.map(&:to_i)
40
40
  end
41
41
 
42
+ # Returns a URL for viewing the current coordinates on OpenStreetMap.
43
+ def openstreetmap_marker_url(zoom=12)
44
+ if c = coordinates
45
+ "https://www.openstreetmap.org/?mlat=%f&mlon=%f&zoom=%d" % [c, zoom].flatten
46
+ end
47
+ end
48
+
49
+ private
50
+
51
+ def _view_21x8
52
+ "GPSv2 #{uid_string.rjust 8}\n\n" +
53
+ ((c = coordinates) ? (" Lat %10.5f\n Lon %10.5f" % c) : ' no fix')
54
+ end
55
+
42
56
  end
43
57
 
44
58
  end
@@ -0,0 +1,11 @@
1
+ {
2
+ "dimensions": [
3
+ 40,
4
+ 40,
5
+ 12
6
+ ],
7
+ "weight": 12,
8
+ "documentation_en_url": "https://www.tinkerforge.com/en/doc/Hardware/Bricklets/GPS_V3.html",
9
+ "versions_identifier": "bricklets:gps_v3",
10
+ "released": "2022-05-09"
11
+ }
@@ -0,0 +1,58 @@
1
+ module Tinkerforge
2
+
3
+ class BrickletGPSV3
4
+
5
+ # Returns the device's state.
6
+ def state
7
+ super.merge(
8
+ 'fix_led_config' => get_fix_led_config,
9
+ 'fix' => fix?,
10
+ )
11
+ end
12
+
13
+ # Returns true if a fix is available.
14
+ def fix?
15
+ get_status[0]
16
+ end
17
+
18
+ # Returns latitude and longitude as reported by the GPS Bricklet.
19
+ #
20
+ # Nil when there is no fix (position not determined).
21
+ def coordinates
22
+ if fix?
23
+ c = get_coordinates
24
+ [
25
+ c[0] / (c[1] == 'N' ? 1000000.0 : -1000000.0),
26
+ c[2] / (c[3] == 'E' ? 1000000.0 : -1000000.0)
27
+ ]
28
+ else
29
+ nil
30
+ end
31
+ end
32
+
33
+ # Returns a Time object representing the time as reported by the GPS Bricklet.
34
+ def time
35
+ # FIXME: This will not work after 31-Dec-2099.
36
+ dt = get_date_time.map &:to_s
37
+ dt = dt[0].rjust(6,'0').unpack('a2a2a2').reverse + dt[1].rjust(9,'0').concat('000').unpack('a2a2a2a6')
38
+ dt[0].prepend '20'
39
+ Time.gm *dt.map(&:to_i)
40
+ end
41
+
42
+ # Returns a URL for viewing the current coordinates on OpenStreetMap.
43
+ def openstreetmap_marker_url(zoom=12)
44
+ if c = coordinates
45
+ "https://www.openstreetmap.org/?mlat=%f&mlon=%f&zoom=%d" % [c, zoom].flatten
46
+ end
47
+ end
48
+
49
+ private
50
+
51
+ def _view_21x8
52
+ "GPSv3 #{uid_string.rjust 8}\n\n" +
53
+ ((c = coordinates) ? (" Lat %10.5f\n Lon %10.5f" % c) : ' no fix')
54
+ end
55
+
56
+ end
57
+
58
+ end
@@ -6,5 +6,6 @@
6
6
  ],
7
7
  "weight": 2,
8
8
  "documentation_en_url": "https://www.tinkerforge.com/en/doc/Hardware/Bricklets/Hall_Effect_V2.html",
9
- "versions_identifier": "bricklets:hall_effect_v2"
9
+ "versions_identifier": "bricklets:hall_effect_v2",
10
+ "released": "2019-05-20"
10
11
  }
@@ -0,0 +1,16 @@
1
+ module Tinkerforge
2
+
3
+ class BrickletHallEffectV2
4
+
5
+ # Returns the device's state.
6
+ def state
7
+ super.merge(
8
+ 'magnetic_flux_density' => get_magnetic_flux_density,
9
+ 'counter' => get_counter(false),
10
+ 'counter_config' => get_counter_config,
11
+ )
12
+ end
13
+
14
+ end
15
+
16
+ end
@@ -6,5 +6,6 @@
6
6
  ],
7
7
  "weight": 3,
8
8
  "documentation_en_url": "https://www.tinkerforge.com/en/doc/Hardware/Bricklets/Humidity_V2.html",
9
- "versions_identifier": "bricklets:humidity_v2"
9
+ "versions_identifier": "bricklets:humidity_v2",
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/IMU_V3.html",
9
- "versions_identifier": "bricklets:imu_v3"
9
+ "versions_identifier": "bricklets:imu_v3",
10
+ "released": "2020-10-27"
10
11
  }
@@ -6,5 +6,6 @@
6
6
  ],
7
7
  "weight": 29.4,
8
8
  "documentation_en_url": "https://www.tinkerforge.com/en/doc/Hardware/Bricklets/Industrial_Dual_Relay.html",
9
- "versions_identifier": "bricklets:industrial_dual_relay"
9
+ "versions_identifier": "bricklets:industrial_dual_relay",
10
+ "released": "2018-06-07"
10
11
  }
@@ -6,5 +6,6 @@
6
6
  ],
7
7
  "weight": 7.1,
8
8
  "documentation_en_url": "https://www.tinkerforge.com/en/doc/Hardware/Bricklets/Isolator.html",
9
- "versions_identifier": "bricklets:isolator"
9
+ "versions_identifier": "bricklets:isolator",
10
+ "released": "2018-09-10"
10
11
  }
@@ -6,5 +6,6 @@
6
6
  ],
7
7
  "weight": 15,
8
8
  "documentation_en_url": "https://www.tinkerforge.com/en/doc/Hardware/Bricklets/Joystick_V2.html",
9
- "versions_identifier": "bricklets:joystick_v2"
9
+ "versions_identifier": "bricklets:joystick_v2",
10
+ "released": "2019-05-20"
10
11
  }
@@ -6,5 +6,6 @@
6
6
  ],
7
7
  "weight": 30,
8
8
  "documentation_en_url": "https://www.tinkerforge.com/en/doc/Hardware/Bricklets/Laser_Range_Finder_V2.html",
9
- "versions_identifier": "bricklets:laser_range_finder_v2"
9
+ "versions_identifier": "bricklets:laser_range_finder_v2",
10
+ "released": "2019-05-20"
10
11
  }
@@ -6,5 +6,6 @@
6
6
  ],
7
7
  "weight": 55,
8
8
  "documentation_en_url": "https://www.tinkerforge.com/en/doc/Hardware/Bricklets/LCD_128x64.html",
9
- "versions_identifier": "bricklets:lcd_128x64"
9
+ "versions_identifier": "bricklets:lcd_128x64",
10
+ "released": "2018-09-27"
10
11
  }
@@ -1,7 +1,21 @@
1
+ require 'tinderfridge/shared/display_ibm437_encoding'
2
+
1
3
  module Tinkerforge
2
4
 
3
5
  class BrickletLCD128x64
4
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
+
5
19
  # Returns the current setting for the backlight (0..100).
6
20
  def backlight
7
21
  get_display_configuration[1]
@@ -20,12 +34,81 @@ module Tinkerforge
20
34
  true
21
35
  end
22
36
 
37
+ # Returns the current contrast setting (0..63).
38
+ def contrast
39
+ get_display_configuration[0]
40
+ end
41
+
42
+ # Sets the contrast (0..63).
43
+ def contrast=(value)
44
+ state = get_display_configuration
45
+ state[0] = value.to_i
46
+ set_display_configuration *state
47
+ end
48
+
23
49
  # Clears the display, including the GUI.
24
50
  def clear
25
51
  clear_display
26
52
  remove_all_gui
27
53
  end
28
54
 
55
+ # Returns true if automatic draw is set to false.
56
+ def buffered?
57
+ ! get_display_configuration[3]
58
+ end
59
+
60
+ # Draws the currently buffered frame.
61
+ def redraw(force_complete_redraw=false)
62
+ draw_buffered_frame force_complete_redraw
63
+ end
64
+
65
+ alias flush redraw
66
+
67
+ # Returns the device's state.
68
+ def state
69
+ super.merge(
70
+ 'touch_led_config' => get_touch_led_config,
71
+ 'display_configuration' => get_display_configuration,
72
+ )
73
+ end
74
+
75
+ # Clears the display and prints upto 8 lines of text.
76
+ #
77
+ # Text may contain newline characters to separate lines.
78
+ # Lines longer than 21 characters will be wrapped.
79
+ #
80
+ # Text is automatically encoded in the IBM437 character set.
81
+ # @example
82
+ # my_lcd.put_screen "Hello, World!\n\nRuby #{RUBY_VERSION}"
83
+ def put_screen(text='', test: false)
84
+ lines = text.split("\n")
85
+ lines = lines.map { |s| s.empty? ? '' : s.scan(/.{1,21}/) }.flatten
86
+ lines = lines[0,8].map { |l| encode l }
87
+
88
+ return lines if test
89
+
90
+ clear
91
+ lines.each_with_index do |s,l|
92
+ write_line l, 0, s
93
+ end
94
+ nil
95
+ end
96
+
97
+ # Shows an object.
98
+ def show(object)
99
+ if object.respond_to?( :_view_21x8, true)
100
+ put_screen ( object.send(:_view_21x8) rescue "21x8 view error\n\n#{object.class.to_s}" )
101
+ elsif
102
+ put_screen object.inspect[0,168]
103
+ end
104
+ end
105
+
106
+ private
107
+
108
+ def _view_21x8
109
+ "LCD #{uid_string.rjust 8}"
110
+ end
111
+
29
112
  end
30
113
 
31
114
  end
@@ -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": 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": 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
  }
@@ -2,6 +2,13 @@ module Tinkerforge
2
2
 
3
3
  class BrickletOutdoorWeather
4
4
 
5
+ # Returns the device's state.
6
+ def state
7
+ super.merge(
8
+ 'sensor_data' => sensors,
9
+ )
10
+ end
11
+
5
12
  # Returns the last measured data for all sensors.
6
13
  #
7
14
  # The result is a Hash, with sensor identifiers as the keys. Values per sensor are:
@@ -14,6 +21,15 @@ module Tinkerforge
14
21
  end.to_h
15
22
  end
16
23
 
24
+ private
25
+
26
+ def _view_21x8
27
+ "Weather #{uid_string.rjust 8}\n\n" +
28
+ sensors.first(6).map do |k,v|
29
+ %Q(#{v[2] > 100 ? '?' : ' '} %3d %4.1f °C %2d %%\n) % [k,v].flatten
30
+ end.join
31
+ end
32
+
17
33
  end
18
34
 
19
35
  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
  }
@@ -0,0 +1,14 @@
1
+ module Tinkerforge
2
+
3
+ class BrickletPiezoSpeakerV2
4
+
5
+ # Beeps briefly.
6
+ #
7
+ # Volume (0..10) defaults to 0.
8
+ def blip(volume=0)
9
+ set_beep(600, volume, 80)
10
+ end
11
+
12
+ end
13
+
14
+ end
@@ -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": 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
  }
@@ -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.9.0'
6
+ TINDERFRIDGE_VERSION = '0.12.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.9.0
4
+ version: 0.12.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: 2022-01-26 00:00:00.000000000 Z
11
+ date: 2022-07-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: tinkerforge
@@ -41,6 +41,10 @@ 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
@@ -55,6 +59,7 @@ files:
55
59
  - lib/tinderfridge/devices/bricklet_analog_in_v3/bricklet_analog_in_v3.json
56
60
  - lib/tinderfridge/devices/bricklet_analog_out_v3/bricklet_analog_out_v3.json
57
61
  - lib/tinderfridge/devices/bricklet_barometer_v2/bricklet_barometer_v2.json
62
+ - lib/tinderfridge/devices/bricklet_barometer_v2/bricklet_barometer_v2.rb
58
63
  - lib/tinderfridge/devices/bricklet_can_v2/bricklet_can_v2.json
59
64
  - lib/tinderfridge/devices/bricklet_co2_v2/bricklet_co2_v2.json
60
65
  - lib/tinderfridge/devices/bricklet_co2_v2/bricklet_co2_v2.rb
@@ -71,7 +76,10 @@ files:
71
76
  - lib/tinderfridge/devices/bricklet_energy_monitor/bricklet_energy_monitor.json
72
77
  - lib/tinderfridge/devices/bricklet_gps_v2/bricklet_gps_v2.json
73
78
  - lib/tinderfridge/devices/bricklet_gps_v2/bricklet_gps_v2.rb
79
+ - lib/tinderfridge/devices/bricklet_gps_v3/bricklet_gps_v3.json
80
+ - lib/tinderfridge/devices/bricklet_gps_v3/bricklet_gps_v3.rb
74
81
  - lib/tinderfridge/devices/bricklet_hall_effect_v2/bricklet_hall_effect_v2.json
82
+ - lib/tinderfridge/devices/bricklet_hall_effect_v2/bricklet_hall_effect_v2.rb
75
83
  - lib/tinderfridge/devices/bricklet_humidity_v2/bricklet_humidity_v2.json
76
84
  - lib/tinderfridge/devices/bricklet_imu_v3/bricklet_imu_v3.json
77
85
  - lib/tinderfridge/devices/bricklet_industrial_analog_out_v2/bricklet_industrial_analog_out_v2.json
@@ -107,12 +115,14 @@ files:
107
115
  - lib/tinderfridge/devices/bricklet_nfc/bricklet_nfc.json
108
116
  - lib/tinderfridge/devices/bricklet_nfc/bricklet_nfc.rb
109
117
  - lib/tinderfridge/devices/bricklet_oled_128x64_v2/bricklet_oled_128x64_v2.json
118
+ - lib/tinderfridge/devices/bricklet_oled_128x64_v2/bricklet_oled_128x64_v2.rb
110
119
  - lib/tinderfridge/devices/bricklet_one_wire/bricklet_one_wire.json
111
120
  - lib/tinderfridge/devices/bricklet_outdoor_weather/bricklet_outdoor_weather.json
112
121
  - lib/tinderfridge/devices/bricklet_outdoor_weather/bricklet_outdoor_weather.rb
113
122
  - lib/tinderfridge/devices/bricklet_particulate_matter/bricklet_particulate_matter.json
114
123
  - lib/tinderfridge/devices/bricklet_performance_dc/bricklet_performance_dc.json
115
124
  - lib/tinderfridge/devices/bricklet_piezo_speaker_v2/bricklet_piezo_speaker_v2.json
125
+ - lib/tinderfridge/devices/bricklet_piezo_speaker_v2/bricklet_piezo_speaker_v2.rb
116
126
  - lib/tinderfridge/devices/bricklet_ptc_v2/bricklet_ptc_v2.json
117
127
  - lib/tinderfridge/devices/bricklet_real_time_clock_v2/bricklet_real_time_clock_v2.json
118
128
  - lib/tinderfridge/devices/bricklet_remote_switch_v2/bricklet_remote_switch_v2.json
@@ -134,7 +144,9 @@ files:
134
144
  - lib/tinderfridge/devices/bricklet_sound_pressure_level/bricklet_sound_pressure_level.json
135
145
  - lib/tinderfridge/devices/bricklet_sound_pressure_level/bricklet_sound_pressure_level.rb
136
146
  - lib/tinderfridge/devices/bricklet_temperature_ir_v2/bricklet_temperature_ir_v2.json
147
+ - lib/tinderfridge/devices/bricklet_temperature_ir_v2/bricklet_temperature_ir_v2.rb
137
148
  - lib/tinderfridge/devices/bricklet_temperature_v2/bricklet_temperature_v2.json
149
+ - lib/tinderfridge/devices/bricklet_temperature_v2/bricklet_temperature_v2.rb
138
150
  - lib/tinderfridge/devices/bricklet_thermal_imaging/bricklet_thermal_imaging.json
139
151
  - lib/tinderfridge/devices/bricklet_thermocouple_v2/bricklet_thermocouple_v2.json
140
152
  - lib/tinderfridge/devices/bricklet_uv_light_v2/bricklet_uv_light_v2.json
@@ -142,6 +154,7 @@ files:
142
154
  - lib/tinderfridge/devices/bricklet_voltage_current_v2/bricklet_voltage_current_v2.rb
143
155
  - lib/tinderfridge/devices/bricklet_xmc1400_breakout/bricklet_xmc1400_breakout.json
144
156
  - lib/tinderfridge/ip_connection.rb
157
+ - lib/tinderfridge/shared/display_ibm437_encoding.rb
145
158
  - lib/tinderfridge/tinkerforge.rb
146
159
  - lib/tinderfridge/version.rb
147
160
  homepage: https://github.com/lllisteu/tinderfridge
@@ -166,7 +179,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
166
179
  - !ruby/object:Gem::Version
167
180
  version: '0'
168
181
  requirements: []
169
- rubygems_version: 3.2.32
182
+ rubygems_version: 3.3.11
170
183
  signing_key:
171
184
  specification_version: 4
172
185
  summary: Extending Tinkerforge in fun and useful ways.