tinderfridge 0.9.0 → 0.10.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 (42) hide show
  1. checksums.yaml +4 -4
  2. data/lib/tinderfridge/devices/bricklet_air_quality/bricklet_air_quality.rb +15 -0
  3. data/lib/tinderfridge/devices/bricklet_analog_in_v3/bricklet_analog_in_v3.json +2 -1
  4. data/lib/tinderfridge/devices/bricklet_distance_us_v2/bricklet_distance_us_v2.json +2 -1
  5. data/lib/tinderfridge/devices/bricklet_dmx/bricklet_dmx.json +2 -1
  6. data/lib/tinderfridge/devices/bricklet_e_paper_296x128/bricklet_e_paper_296x128.json +2 -1
  7. data/lib/tinderfridge/devices/bricklet_energy_monitor/bricklet_energy_monitor.json +2 -1
  8. data/lib/tinderfridge/devices/bricklet_gps_v2/bricklet_gps_v2.rb +7 -0
  9. data/lib/tinderfridge/devices/bricklet_hall_effect_v2/bricklet_hall_effect_v2.json +2 -1
  10. data/lib/tinderfridge/devices/bricklet_hall_effect_v2/bricklet_hall_effect_v2.rb +16 -0
  11. data/lib/tinderfridge/devices/bricklet_humidity_v2/bricklet_humidity_v2.json +2 -1
  12. data/lib/tinderfridge/devices/bricklet_imu_v3/bricklet_imu_v3.json +2 -1
  13. data/lib/tinderfridge/devices/bricklet_industrial_dual_relay/bricklet_industrial_dual_relay.json +2 -1
  14. data/lib/tinderfridge/devices/bricklet_isolator/bricklet_isolator.json +2 -1
  15. data/lib/tinderfridge/devices/bricklet_joystick_v2/bricklet_joystick_v2.json +2 -1
  16. data/lib/tinderfridge/devices/bricklet_laser_range_finder_v2/bricklet_laser_range_finder_v2.json +2 -1
  17. data/lib/tinderfridge/devices/bricklet_lcd_128x64/bricklet_lcd_128x64.json +2 -1
  18. data/lib/tinderfridge/devices/bricklet_lcd_128x64/bricklet_lcd_128x64.rb +46 -0
  19. data/lib/tinderfridge/devices/bricklet_linear_poti_v2/bricklet_linear_poti_v2.json +2 -1
  20. data/lib/tinderfridge/devices/bricklet_motorized_linear_poti/bricklet_motorized_linear_poti.json +2 -1
  21. data/lib/tinderfridge/devices/bricklet_nfc/bricklet_nfc.json +2 -1
  22. data/lib/tinderfridge/devices/bricklet_oled_128x64_v2/bricklet_oled_128x64_v2.rb +79 -0
  23. data/lib/tinderfridge/devices/bricklet_outdoor_weather/bricklet_outdoor_weather.json +2 -1
  24. data/lib/tinderfridge/devices/bricklet_piezo_speaker_v2/bricklet_piezo_speaker_v2.json +2 -1
  25. data/lib/tinderfridge/devices/bricklet_real_time_clock_v2/bricklet_real_time_clock_v2.json +2 -1
  26. data/lib/tinderfridge/devices/bricklet_rgb_led_button/bricklet_rgb_led_button.json +2 -1
  27. data/lib/tinderfridge/devices/bricklet_rgb_led_v2/bricklet_rgb_led_v2.json +2 -1
  28. data/lib/tinderfridge/devices/bricklet_rotary_encoder_v2/bricklet_rotary_encoder_v2.json +2 -1
  29. data/lib/tinderfridge/devices/bricklet_rotary_poti_v2/bricklet_rotary_poti_v2.json +2 -1
  30. data/lib/tinderfridge/devices/bricklet_temperature_ir_v2/bricklet_temperature_ir_v2.json +2 -1
  31. data/lib/tinderfridge/devices/bricklet_temperature_ir_v2/bricklet_temperature_ir_v2.rb +14 -0
  32. data/lib/tinderfridge/devices/bricklet_temperature_v2/bricklet_temperature_v2.json +2 -1
  33. data/lib/tinderfridge/devices/bricklet_thermal_imaging/bricklet_thermal_imaging.json +2 -1
  34. data/lib/tinderfridge/devices/bricklet_thermocouple_v2/bricklet_thermocouple_v2.json +2 -1
  35. data/lib/tinderfridge/devices/bricklet_uv_light_v2/bricklet_uv_light_v2.json +2 -1
  36. data/lib/tinderfridge/devices/bricklet_voltage_current_v2/bricklet_voltage_current_v2.json +2 -1
  37. data/lib/tinderfridge/devices/bricklet_xmc1400_breakout/bricklet_xmc1400_breakout.json +2 -1
  38. data/lib/tinderfridge/ip_connection.rb +19 -11
  39. data/lib/tinderfridge/shared/display_ibm437_encoding.rb +41 -0
  40. data/lib/tinderfridge/tinkerforge.rb +24 -9
  41. data/lib/tinderfridge/version.rb +1 -1
  42. metadata +6 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 26a171ddfc01502cca8300d445d498c960b8cfb1304e1b60fddc5d33ad0a68ba
4
- data.tar.gz: ebf5e97bd0fe072375c6a548615baff3e42ef77432b96373035571a41897ba8a
3
+ metadata.gz: a38ff1936a5557806bbd57e497dedda5b7d244b0e5cc4773d89d38265343affa
4
+ data.tar.gz: 45b04a762c008a25d5bfc02d61cc254b4b655eaacc460e9f99b7308c47734ea7
5
5
  SHA512:
6
- metadata.gz: e5a6e8d3f54c3955afbbce8d48c1ded48ea46535dd078cc6118d207bf988634c7e04fbcab178a5b440ea5ff55798287df53f94465a06e0971a5d0282876f532f
7
- data.tar.gz: 31d5cbea577e5b98279279193301e2a95062db29d7150149c3035ecb639f4301ce739854927f018fa922a9630bea7217c76dfb0329ccc5e88359b73f7c4fc7fe
6
+ metadata.gz: 2ab3a4497bfb859e8b4a82e37edbad2ebee17c1b9c830a5cda9030c206f7a4188987cef28f5420299555568b682e93ad48daec128d18190ec435b02b2a64a1d7
7
+ data.tar.gz: 7209808acb2f9bc4f7ef0ad9770f57f6e66837962f19480d88b91def64a15b3af6f19e761c47ed1623a38852efbb0de6aa5ad8348c5b08c65336f9e955e83a18
@@ -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
  }
@@ -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
  }
@@ -39,6 +39,13 @@ 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
+
42
49
  end
43
50
 
44
51
  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,44 @@ 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
+
29
75
  end
30
76
 
31
77
  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,79 @@
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
+ end
78
+
79
+ 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
  }
@@ -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": 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
  }
@@ -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.10.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.10.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-04-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: tinkerforge
@@ -72,6 +72,7 @@ files:
72
72
  - lib/tinderfridge/devices/bricklet_gps_v2/bricklet_gps_v2.json
73
73
  - lib/tinderfridge/devices/bricklet_gps_v2/bricklet_gps_v2.rb
74
74
  - lib/tinderfridge/devices/bricklet_hall_effect_v2/bricklet_hall_effect_v2.json
75
+ - lib/tinderfridge/devices/bricklet_hall_effect_v2/bricklet_hall_effect_v2.rb
75
76
  - lib/tinderfridge/devices/bricklet_humidity_v2/bricklet_humidity_v2.json
76
77
  - lib/tinderfridge/devices/bricklet_imu_v3/bricklet_imu_v3.json
77
78
  - lib/tinderfridge/devices/bricklet_industrial_analog_out_v2/bricklet_industrial_analog_out_v2.json
@@ -107,6 +108,7 @@ files:
107
108
  - lib/tinderfridge/devices/bricklet_nfc/bricklet_nfc.json
108
109
  - lib/tinderfridge/devices/bricklet_nfc/bricklet_nfc.rb
109
110
  - lib/tinderfridge/devices/bricklet_oled_128x64_v2/bricklet_oled_128x64_v2.json
111
+ - lib/tinderfridge/devices/bricklet_oled_128x64_v2/bricklet_oled_128x64_v2.rb
110
112
  - lib/tinderfridge/devices/bricklet_one_wire/bricklet_one_wire.json
111
113
  - lib/tinderfridge/devices/bricklet_outdoor_weather/bricklet_outdoor_weather.json
112
114
  - lib/tinderfridge/devices/bricklet_outdoor_weather/bricklet_outdoor_weather.rb
@@ -134,6 +136,7 @@ files:
134
136
  - lib/tinderfridge/devices/bricklet_sound_pressure_level/bricklet_sound_pressure_level.json
135
137
  - lib/tinderfridge/devices/bricklet_sound_pressure_level/bricklet_sound_pressure_level.rb
136
138
  - lib/tinderfridge/devices/bricklet_temperature_ir_v2/bricklet_temperature_ir_v2.json
139
+ - lib/tinderfridge/devices/bricklet_temperature_ir_v2/bricklet_temperature_ir_v2.rb
137
140
  - lib/tinderfridge/devices/bricklet_temperature_v2/bricklet_temperature_v2.json
138
141
  - lib/tinderfridge/devices/bricklet_thermal_imaging/bricklet_thermal_imaging.json
139
142
  - lib/tinderfridge/devices/bricklet_thermocouple_v2/bricklet_thermocouple_v2.json
@@ -142,6 +145,7 @@ files:
142
145
  - lib/tinderfridge/devices/bricklet_voltage_current_v2/bricklet_voltage_current_v2.rb
143
146
  - lib/tinderfridge/devices/bricklet_xmc1400_breakout/bricklet_xmc1400_breakout.json
144
147
  - lib/tinderfridge/ip_connection.rb
148
+ - lib/tinderfridge/shared/display_ibm437_encoding.rb
145
149
  - lib/tinderfridge/tinkerforge.rb
146
150
  - lib/tinderfridge/version.rb
147
151
  homepage: https://github.com/lllisteu/tinderfridge