raspberry_pi_iot 0.0.6

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 (61) hide show
  1. checksums.yaml +7 -0
  2. data/doc/Actuator.html +145 -0
  3. data/doc/BH1750.html +535 -0
  4. data/doc/BME280.html +276 -0
  5. data/doc/BMP280.html +276 -0
  6. data/doc/BMxSensor.html +559 -0
  7. data/doc/BinaryActuator.html +177 -0
  8. data/doc/BinaryEffector.html +246 -0
  9. data/doc/BinaryReceptor.html +387 -0
  10. data/doc/BinarySensor.html +168 -0
  11. data/doc/Bus.html +126 -0
  12. data/doc/Button.html +986 -0
  13. data/doc/DHT11.html +287 -0
  14. data/doc/DHT22.html +287 -0
  15. data/doc/DHTxxSensor.html +361 -0
  16. data/doc/DS18B20.html +339 -0
  17. data/doc/DigitalActuator.html +164 -0
  18. data/doc/DigitalEffector.html +636 -0
  19. data/doc/DigitalReceptor.html +242 -0
  20. data/doc/DigitalSensor.html +162 -0
  21. data/doc/Effector.html +257 -0
  22. data/doc/HCSR501.html +172 -0
  23. data/doc/HumitureSensor.html +453 -0
  24. data/doc/IoT.html +116 -0
  25. data/doc/LED.html +784 -0
  26. data/doc/MAX44009.html +830 -0
  27. data/doc/RaspberryPi.html +309 -0
  28. data/doc/Receptor.html +257 -0
  29. data/doc/Sensor.html +145 -0
  30. data/doc/TemperatureSensor.html +644 -0
  31. data/doc/_index.html +379 -0
  32. data/doc/class_list.html +51 -0
  33. data/doc/file_list.html +51 -0
  34. data/doc/frames.html +17 -0
  35. data/doc/index.html +379 -0
  36. data/doc/method_list.html +715 -0
  37. data/doc/top-level-namespace.html +112 -0
  38. data/lib/bh1750.rb +43 -0
  39. data/lib/binary_effector.rb +16 -0
  40. data/lib/binary_receptor.rb +23 -0
  41. data/lib/bmx_sensor.rb +86 -0
  42. data/lib/bus.rb +26 -0
  43. data/lib/button.rb +70 -0
  44. data/lib/dht_sensor.rb +36 -0
  45. data/lib/digital_effector.rb +56 -0
  46. data/lib/digital_receptor.rb +20 -0
  47. data/lib/ds18b20.rb +24 -0
  48. data/lib/effector.rb +32 -0
  49. data/lib/hcsr501.rb +7 -0
  50. data/lib/humiture_sensor.rb +26 -0
  51. data/lib/iot.rb +4 -0
  52. data/lib/led.rb +58 -0
  53. data/lib/led_pwm.rb +6 -0
  54. data/lib/led_rgb.rb +100 -0
  55. data/lib/max44009.rb +77 -0
  56. data/lib/raspberry_pi.rb +41 -0
  57. data/lib/raspberry_pi_iot.rb +3 -0
  58. data/lib/receptor.rb +33 -0
  59. data/lib/temperature_sensor.rb +49 -0
  60. data/lib/thermal_sensor.rb +22 -0
  61. metadata +203 -0
data/lib/led_rgb.rb ADDED
@@ -0,0 +1,100 @@
1
+ require 'led'
2
+
3
+ class LED
4
+ class RGB < DigitalEffector
5
+ @red = nil # GPIO pins
6
+ @green = nil #
7
+ @blue = nil #
8
+
9
+ def initialize(red = 17, green = 27, blue = 22)
10
+ super({:red => red, :green => green, :blue => blue}, :low)
11
+ @red = red
12
+ @green = green
13
+ @blue = blue
14
+ end
15
+
16
+ def red_on
17
+ DigitalEffector.on @red
18
+ end
19
+
20
+ def red_off
21
+ DigitalEffector.off @red
22
+ end
23
+
24
+ def green_on
25
+ DigitalEffector.on @green
26
+ end
27
+
28
+ def green_off
29
+ DigitalEffector.off @green
30
+ end
31
+
32
+ def blue_on
33
+ DigitalEffector.on @blue
34
+ end
35
+
36
+ def blue_off
37
+ DigitalEffector.off @blue
38
+ end
39
+
40
+ def on(color)
41
+ color = :aoi if color == :aqua
42
+ case color
43
+ when :red
44
+ red_on
45
+ when :green
46
+ green_on
47
+ when :blue
48
+ blue_on
49
+ when :yellow
50
+ red_on
51
+ green_on
52
+ when :aoi
53
+ blue_on
54
+ green_on
55
+ else
56
+ end
57
+ end
58
+
59
+ def off(color=:all)
60
+ color = :aoi if color == :aqua
61
+ case color
62
+ when :red
63
+ red_off
64
+ when :green
65
+ green_off
66
+ when :blue
67
+ blue_off
68
+ when :yellow
69
+ red_off
70
+ green_off
71
+ when :aoi
72
+ blue_off
73
+ green_off
74
+ when :all
75
+ all_off
76
+ else
77
+ all_off
78
+ end
79
+ end
80
+
81
+ def all_off
82
+ red_off
83
+ green_off
84
+ blue_off
85
+ end
86
+
87
+
88
+ def blink(list = :all, repeat=3, switched_on=0.25, switched_off=0.5)
89
+ colors = (list == :all) ? [:red, :green, :blue] : (list.class == Array ? list : [list])
90
+ repeat.times do |n|
91
+ colors.each do |color|
92
+ on color
93
+ sleep switched_on
94
+ off color
95
+ sleep switched_off
96
+ end
97
+ end
98
+ end
99
+ end
100
+ end
data/lib/max44009.rb ADDED
@@ -0,0 +1,77 @@
1
+ require 'bus'
2
+
3
+ # MAX44009 - low-power ambient Light Sensor
4
+ # Output: digital, Bus: I²C, Range: 0.045..188,000 Lux, VCC: 1.7..3.6V, Operating Current: 0.65µA
5
+ # https://datasheets.maximintegrated.com/en/ds/MAX44009.pdf
6
+ class MAX44009
7
+ MAX44009_DEFAULT_ADDRESS = 0x4A
8
+ # MAX44009 Register Map
9
+ MAX44009_REG_INTR_STATUS = 0x00 # Interrupt Status Register
10
+ MAX44009_REG_INTR_ENABLE = 0x01 # Interrupt Enable Register
11
+ MAX44009_REG_CONFIG = 0x02 # Configuration Register
12
+ MAX44009_REG_LUX_HIGH = 0x03 # Lux High Byte
13
+ MAX44009_REG_LUX_LOW = 0x04 # Lux Low Byte
14
+ MAX44009_REG_THRES_UP_HI = 0x05 # Upper Threshold High Byte
15
+ MAX44009_REG_THRES_LO_HI = 0x06 # Upper Threshold Low Byte
16
+ MAX44009_REG_THRES_TIMER = 0x07 # Threshold Timer
17
+ # MAX44009 INTERRUPT ENABLE REGISTER
18
+ MAX44009_REG_INTR_ENABLE_NO_ASSRT = 0x00 # The INT pin and the INTS bit are not asserted even if an interrupt event has occurred
19
+ MAX44009_REG_INTR_ENABLE_TRIGGER = 0x01 # Detection of an interrupt event triggers a hardware interrupt
20
+ # MAX44009 CONFIGURATION REGISTER
21
+ MAX44009_REG_CONFIG_CONTMODE_DEFAULT = 0x00 # Default mode
22
+ MAX44009_REG_CONFIG_CONTMODE_CONTIN = 0x80 # Continuous mode
23
+ MAX44009_REG_CONFIG_MANUAL_DEFAULT = 0x00 # Default mode of configuration is used for the IC
24
+ MAX44009_REG_CONFIG_MANUAL_MODEON = 0x40 # Manual mode of configuration is used for the IC
25
+ MAX44009_REG_CONFIG_CDR_NODIVIDED = 0x00 # Current not divided. All of the photodiode current goes to the ADC
26
+ MAX44009_REG_CONFIG_CDR_DIVIDED = 0x08 # Current divided by 8
27
+ MAX44009_REG_CONFIG_INTRTIMER_800 = 0x00 # Integration Time = 800ms, This is a preferred mode for boosting low-light sensitivity
28
+ MAX44009_REG_CONFIG_INTRTIMER_400 = 0x01 # Integration Time = 400ms
29
+ MAX44009_REG_CONFIG_INTRTIMER_200 = 0x02 # Integration Time = 200ms
30
+ MAX44009_REG_CONFIG_INTRTIMER_100 = 0x03 # Integration Time = 100ms, This is a preferred mode for high-brightness applications
31
+ MAX44009_REG_CONFIG_INTRTIMER_50 = 0x04 # Integration Time = 50ms, Manual Mode only
32
+ MAX44009_REG_CONFIG_INTRTIMER_25 = 0x05 # Integration Time = 25ms, Manual Mode only
33
+ MAX44009_REG_CONFIG_INTRTIMER_12_5 = 0x06 # Integration Time = 12.5ms, Manual Mode only
34
+ MAX44009_REG_CONFIG_INTRTIMER_6_25 = 0x07 # Integration Time = 6.25ms, Manual Mode only
35
+
36
+ DEVICE = MAX44009_DEFAULT_ADDRESS # I2C sensor address
37
+
38
+ def initialize(i2c_bus='/dev/i2c-1')
39
+ @sensor_name = 'MAX44009'
40
+ @i2c_bus = i2c_bus
41
+ @device = I2CDevice.new(address: DEVICE, driver: I2CDevice::Driver::I2CDev.new(@i2c_bus))
42
+ write_config()
43
+ @length = 2
44
+ @value = read_sensor
45
+ end
46
+
47
+ def write_config()
48
+ # Select the configuration register data from the given provided values
49
+ config = (MAX44009_REG_CONFIG_CONTMODE_CONTIN | MAX44009_REG_CONFIG_MANUAL_MODEON | MAX44009_REG_CONFIG_CDR_NODIVIDED | MAX44009_REG_CONFIG_INTRTIMER_800)
50
+ @device.i2cset(MAX44009_REG_CONFIG, config)
51
+ end
52
+
53
+ def read_sensor
54
+ # Read data back from MAX44009_REG_LUX_HIGH(0x03), 2 bytes, luminance MSB, luminance LSB
55
+ data = @device.i2cget(MAX44009_REG_LUX_HIGH, 2)
56
+ @value = data_to_lux(data)
57
+ end
58
+
59
+ # Return
60
+ def lux
61
+ read_sensor
62
+ @value
63
+ end
64
+
65
+ private
66
+ # Convert the data to lux
67
+ def data_to_lux(data)
68
+ exponent = (data[0].ord & 0xF0) >> 4
69
+ mantissa = ((data[0].ord & 0x0F) << 4) | (data[1].ord & 0x0F)
70
+ luminance = ((2 ** exponent) * mantissa) * 0.045
71
+ end
72
+
73
+ # convert sensor data to a float number
74
+ def to_f(data)
75
+ return ((data[1].ord + (256 * data[0].ord)) / 1.2)
76
+ end
77
+ end
@@ -0,0 +1,41 @@
1
+ module RaspberryPi
2
+ # https://www.raspberrypi-spy.co.uk/2012/09/checking-your-raspberry-pi-board-version/
3
+
4
+ # Pi Model 3B V1.2
5
+ def self.pi_model_old
6
+ info = `pinout | grep -Eo "Pi Model[^|]+"`
7
+ info.strip
8
+ end
9
+
10
+ def self.pi_model
11
+ info = `cat /proc/device-tree/model`
12
+ info.strip
13
+ end
14
+
15
+ # Revision : a22082
16
+ # SoC : BCM2837
17
+ # RAM : 1024Mb
18
+ # Storage : MicroSD
19
+ # USB ports : 4 (excluding power)
20
+ # Ethernet ports : 1
21
+ # Wi-fi : True
22
+ # Bluetooth : True
23
+ # Camera ports (CSI) : 1
24
+ # Display ports (DSI): 1
25
+ def self.hardware_info
26
+ info = {}
27
+ lines = ` pinout | grep ': '`
28
+ lines << `cat /proc/cpuinfo | grep ': '`
29
+ lines.split("\n").each do |line|
30
+ key, value = line.split(':')
31
+ key.strip!
32
+ if key == 'processor'
33
+ value = (value.to_i+1).to_s
34
+ key = 'Cores'
35
+ end
36
+ key = 'CPU name' if key == 'model name'
37
+ info[key] = value.strip
38
+ end
39
+ info
40
+ end
41
+ end
@@ -0,0 +1,3 @@
1
+ require 'raspberry_pi'
2
+ require 'receptor'
3
+ require 'effector'
data/lib/receptor.rb ADDED
@@ -0,0 +1,33 @@
1
+ require 'rpi_gpio'
2
+
3
+ RPi::GPIO.set_warnings(false)
4
+ RPi::GPIO.set_numbering :bcm
5
+
6
+ # Receptor - physical device that can provide info about real world
7
+ class Receptor
8
+ @model = 'N/A'
9
+ @name = 'N/A'
10
+ @value = nil
11
+
12
+ def name
13
+ @name
14
+ end
15
+
16
+ def model_name
17
+ @model
18
+ end
19
+
20
+ protected
21
+ def name=(name)
22
+ @name = name
23
+ end
24
+
25
+ def model_name=(name)
26
+ @model_name = name
27
+ end
28
+ end
29
+
30
+ # Sensor - a synonym for Receptor
31
+ class Sensor < Receptor
32
+
33
+ end
@@ -0,0 +1,49 @@
1
+ require 'digital_receptor'
2
+
3
+ # TemperatureSensor - temperature sensing receptor
4
+ class TemperatureSensor < DigitalSensor
5
+ @temperature = 0.0
6
+
7
+ def initialize
8
+ @temperature = read_data
9
+ end
10
+
11
+ def read_data
12
+ @temperature
13
+ end
14
+ def celsius
15
+ @temperature
16
+ end
17
+
18
+ def fahrenheit
19
+ @temperature * 9.0 / 5.0 + 32
20
+ end
21
+
22
+ def kelvin
23
+ @temperature + 273.15
24
+ end
25
+
26
+ def reaumur
27
+ @temperature * 0.8
28
+ end
29
+
30
+ def to_s
31
+ sprintf "%5.2f°C", @temperature
32
+ end
33
+
34
+ def temperature(mode=:celsius)
35
+ case mode
36
+ when :celsius
37
+ celsius
38
+ when :fahrenheit
39
+ fahrenheit
40
+ when :kelvin
41
+ kelvin
42
+ when :reaumur
43
+ reaumur
44
+ else
45
+ celsius
46
+ end
47
+ end
48
+ end
49
+
@@ -0,0 +1,22 @@
1
+ require 'temperature_sensor'
2
+
3
+ # ThermalSensor - Raspberry Pi internal SoC temperature sensor
4
+ module RaspberryPi
5
+ class ThermalSensor < TemperatureSensor
6
+
7
+ def initialize
8
+ @sensor_name = 'DS18B20'
9
+ super
10
+ end
11
+
12
+ def read_data
13
+ @sensor_file = '/sys/class/thermal/thermal_zone0/temp'
14
+ File.open(@sensor_file, 'r') do |f|
15
+ value = f.read
16
+ @temperature = value.to_i / 1000.00
17
+ end
18
+ @temperature
19
+ end
20
+ end
21
+ end
22
+
metadata ADDED
@@ -0,0 +1,203 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: raspberry_pi_iot
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.6
5
+ platform: ruby
6
+ authors:
7
+ - Mike Shock (Mikhail V. Shokhirev)
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-12-13 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rpi_gpio
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.3.3
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 0.3.3
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: 0.3.3
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 0.3.3
33
+ - !ruby/object:Gem::Dependency
34
+ name: i2c-devices
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: 0.0.6
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 0.0.6
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: 0.0.6
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 0.0.6
53
+ - !ruby/object:Gem::Dependency
54
+ name: i2c
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: 0.4.2
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: 0.4.2
63
+ type: :runtime
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: 0.4.2
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: 0.4.2
73
+ - !ruby/object:Gem::Dependency
74
+ name: i2c-bme280
75
+ requirement: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - "~>"
78
+ - !ruby/object:Gem::Version
79
+ version: 0.1.2
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: 0.1.2
83
+ type: :runtime
84
+ prerelease: false
85
+ version_requirements: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 0.1.2
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ version: 0.1.2
93
+ - !ruby/object:Gem::Dependency
94
+ name: dht-sensor-ffi
95
+ requirement: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - "~>"
98
+ - !ruby/object:Gem::Version
99
+ version: 0.2.0
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: 0.2.0
103
+ type: :runtime
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: 0.2.0
110
+ - - ">="
111
+ - !ruby/object:Gem::Version
112
+ version: 0.2.0
113
+ description: A set of classes for IoT (Inrternet of Things) / physical computing with
114
+ Raspberry Pi
115
+ email: mshock25@gmail.com
116
+ executables: []
117
+ extensions: []
118
+ extra_rdoc_files: []
119
+ files:
120
+ - doc/Actuator.html
121
+ - doc/BH1750.html
122
+ - doc/BME280.html
123
+ - doc/BMP280.html
124
+ - doc/BMxSensor.html
125
+ - doc/BinaryActuator.html
126
+ - doc/BinaryEffector.html
127
+ - doc/BinaryReceptor.html
128
+ - doc/BinarySensor.html
129
+ - doc/Bus.html
130
+ - doc/Button.html
131
+ - doc/DHT11.html
132
+ - doc/DHT22.html
133
+ - doc/DHTxxSensor.html
134
+ - doc/DS18B20.html
135
+ - doc/DigitalActuator.html
136
+ - doc/DigitalEffector.html
137
+ - doc/DigitalReceptor.html
138
+ - doc/DigitalSensor.html
139
+ - doc/Effector.html
140
+ - doc/HCSR501.html
141
+ - doc/HumitureSensor.html
142
+ - doc/IoT.html
143
+ - doc/LED.html
144
+ - doc/MAX44009.html
145
+ - doc/RaspberryPi.html
146
+ - doc/Receptor.html
147
+ - doc/Sensor.html
148
+ - doc/TemperatureSensor.html
149
+ - doc/_index.html
150
+ - doc/class_list.html
151
+ - doc/file_list.html
152
+ - doc/frames.html
153
+ - doc/index.html
154
+ - doc/method_list.html
155
+ - doc/top-level-namespace.html
156
+ - lib/bh1750.rb
157
+ - lib/binary_effector.rb
158
+ - lib/binary_receptor.rb
159
+ - lib/bmx_sensor.rb
160
+ - lib/bus.rb
161
+ - lib/button.rb
162
+ - lib/dht_sensor.rb
163
+ - lib/digital_effector.rb
164
+ - lib/digital_receptor.rb
165
+ - lib/ds18b20.rb
166
+ - lib/effector.rb
167
+ - lib/hcsr501.rb
168
+ - lib/humiture_sensor.rb
169
+ - lib/iot.rb
170
+ - lib/led.rb
171
+ - lib/led_pwm.rb
172
+ - lib/led_rgb.rb
173
+ - lib/max44009.rb
174
+ - lib/raspberry_pi.rb
175
+ - lib/raspberry_pi_iot.rb
176
+ - lib/receptor.rb
177
+ - lib/temperature_sensor.rb
178
+ - lib/thermal_sensor.rb
179
+ homepage: https://github.com/mike-shock/Ruby-Raspberry_Pi_IoT/
180
+ licenses:
181
+ - MIT
182
+ metadata: {}
183
+ post_install_message:
184
+ rdoc_options: []
185
+ require_paths:
186
+ - lib
187
+ required_ruby_version: !ruby/object:Gem::Requirement
188
+ requirements:
189
+ - - ">="
190
+ - !ruby/object:Gem::Version
191
+ version: '0'
192
+ required_rubygems_version: !ruby/object:Gem::Requirement
193
+ requirements:
194
+ - - ">="
195
+ - !ruby/object:Gem::Version
196
+ version: '0'
197
+ requirements: []
198
+ rubyforge_project:
199
+ rubygems_version: 2.5.2.1
200
+ signing_key:
201
+ specification_version: 4
202
+ summary: IoT library for Raspberry Pi projects in Ruby
203
+ test_files: []