tinderfridge 0.9.0 → 0.12.0

Sign up to get free protection for your applications and to get access to all the features.
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.