tinderfridge 0.9.0 → 0.10.0

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