raspberry_pi_iot 0.0.8 → 0.1.3
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.
- checksums.yaml +5 -5
- data/doc/IoT.html +8 -6
- data/doc/{Bus.html → RaspberryPiIoT.html} +21 -26
- data/doc/_index.html +84 -77
- data/doc/class_list.html +1 -1
- data/doc/file.LICENSE.html +92 -0
- data/doc/file.README.html +63 -29
- data/doc/file_list.html +5 -0
- data/doc/frames.html +1 -1
- data/doc/index.html +63 -29
- data/doc/method_list.html +170 -202
- data/doc/top-level-namespace.html +4 -6
- data/lib/bus.rb +0 -2
- data/lib/iot.rb +4 -2
- data/lib/iot/actuator.rb +7 -0
- data/lib/iot/bh1750.rb +54 -0
- data/lib/iot/binary_actuator.rb +7 -0
- data/lib/iot/binary_effector.rb +11 -0
- data/lib/iot/binary_receptor.rb +20 -0
- data/lib/iot/binary_sensor.rb +7 -0
- data/lib/iot/bmx_sensor.rb +73 -0
- data/lib/iot/button.rb +100 -0
- data/lib/iot/dht_sensor.rb +41 -0
- data/lib/iot/digital_actuator.rb +7 -0
- data/lib/iot/digital_effector.rb +67 -0
- data/lib/iot/digital_receptor.rb +17 -0
- data/lib/iot/digital_sensor.rb +7 -0
- data/lib/iot/ds18b20.rb +25 -0
- data/lib/iot/effector.rb +32 -0
- data/lib/iot/hcsr501.rb +8 -0
- data/lib/iot/humiture_sensor.rb +27 -0
- data/lib/iot/led.rb +64 -0
- data/lib/iot/led_pwm.rb +8 -0
- data/lib/iot/led_rgb.rb +86 -0
- data/lib/iot/max44009.rb +84 -0
- data/lib/iot/receptor.rb +38 -0
- data/lib/iot/sensor.rb +8 -0
- data/lib/iot/temperature_sensor.rb +51 -0
- data/lib/raspberry_pi.rb +46 -1
- data/lib/raspberry_pi_iot.rb +9 -3
- data/lib/raspberry_pi_iot/version.rb +3 -0
- data/lib/thermal_sensor.rb +2 -3
- data/test/test.sh +17 -0
- data/test/test.txt +173 -0
- data/test/test_Raspberry_Pi_IoT.rb +10 -0
- data/test/test_bh1750.rb +9 -4
- data/test/{standalone_test_bmp280.rb → test_bme280.rb} +24 -19
- data/test/test_bmp280.rb +52 -0
- data/test/test_button.rb +25 -14
- data/test/test_dht11.rb +3 -3
- data/test/test_dht22.rb +35 -0
- data/test/test_ds18b20.rb +4 -3
- data/test/test_helper.rb +6 -0
- data/test/test_info.rb +24 -3
- data/test/test_ky008.rb +41 -0
- data/test/test_led.rb +9 -9
- data/test/test_led_rgb.rb +28 -5
- data/test/test_max44009_gy49.rb +4 -4
- data/test/test_thermal.rb +27 -0
- metadata +103 -59
- data/doc/Actuator.html +0 -145
- data/doc/BH1750.html +0 -541
- data/doc/BME280.html +0 -276
- data/doc/BMP280.html +0 -276
- data/doc/BMxSensor.html +0 -557
- data/doc/BinaryActuator.html +0 -177
- data/doc/BinaryEffector.html +0 -246
- data/doc/BinaryReceptor.html +0 -387
- data/doc/BinarySensor.html +0 -168
- data/doc/Button.html +0 -986
- data/doc/DHT11.html +0 -287
- data/doc/DHT22.html +0 -287
- data/doc/DHTxxSensor.html +0 -361
- data/doc/DS18B20.html +0 -339
- data/doc/DigitalActuator.html +0 -164
- data/doc/DigitalEffector.html +0 -636
- data/doc/DigitalReceptor.html +0 -242
- data/doc/DigitalSensor.html +0 -162
- data/doc/Effector.html +0 -257
- data/doc/HCSR501.html +0 -172
- data/doc/HumitureSensor.html +0 -453
- data/doc/LED.html +0 -784
- data/doc/MAX44009.html +0 -830
- data/doc/RaspberryPi.html +0 -317
- data/doc/Receptor.html +0 -257
- data/doc/Sensor.html +0 -145
- data/doc/TemperatureSensor.html +0 -644
- data/lib/bh1750.rb +0 -46
- data/lib/binary_actuator.rb +0 -5
- data/lib/binary_effector.rb +0 -12
- data/lib/binary_receptor.rb +0 -19
- data/lib/binary_sensor.rb +0 -5
- data/lib/bmx_sensor.rb +0 -85
- data/lib/button.rb +0 -70
- data/lib/dht_sensor.rb +0 -36
- data/lib/digital_actuator.rb +0 -5
- data/lib/digital_effector.rb +0 -69
- data/lib/digital_receptor.rb +0 -16
- data/lib/digital_sensor.rb +0 -5
- data/lib/ds18b20.rb +0 -24
- data/lib/effector.rb +0 -32
- data/lib/hcsr501.rb +0 -7
- data/lib/humiture_sensor.rb +0 -26
- data/lib/led.rb +0 -58
- data/lib/led_pwm.rb +0 -6
- data/lib/led_rgb.rb +0 -101
- data/lib/max44009.rb +0 -77
- data/lib/receptor.rb +0 -33
- data/lib/temperature_sensor.rb +0 -49
data/lib/bh1750.rb
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
require 'bus'
|
|
2
|
-
|
|
3
|
-
# BH1750 - ambient light sensor
|
|
4
|
-
class BH1750
|
|
5
|
-
DEVICE = 0x23 # I2C sensor address
|
|
6
|
-
POWER_DOWN = 0x00 # off state
|
|
7
|
-
POWER_ON = 0x01 # on state
|
|
8
|
-
RESET = 0x07 # reset state: POWER_DOWN = 0x00
|
|
9
|
-
|
|
10
|
-
CONTINUOUS_LOW_RES_MODE = 0x13 # Measure with resolution 4.0 lx and timing ~16 ms
|
|
11
|
-
CONTINUOUS_HIGH_RES_MODE_1 = 0x10 # Measure with resolution 1.0 lx and timing ~120 ms
|
|
12
|
-
CONTINUOUS_HIGH_RES_MODE_2 = 0x11 # Measure with resolution 0.5 lx and timing ~120 ms
|
|
13
|
-
ONE_TIME_LOW_RES_MODE = 0x23 # Measure with resolution 4.0 lx, POWER DOWN after measuring
|
|
14
|
-
ONE_TIME_HIGH_RES_MODE_1 = 0x20 # Measure with resolution 1.0 lx, POWER DOWN after measuring
|
|
15
|
-
ONE_TIME_HIGH_RES_MODE_2 = 0x21 # Measure with resolution 0.5 lx, POWER DOWN after measuring
|
|
16
|
-
|
|
17
|
-
def initialize(device_address=DEVICE, bus_number=1)
|
|
18
|
-
@sensor_name = 'BH1750'
|
|
19
|
-
Bus::I2C.bus_number = bus_number
|
|
20
|
-
@device_address = device_address
|
|
21
|
-
|
|
22
|
-
@i2c_bus = Bus::I2C.bus
|
|
23
|
-
@device = I2CDevice.new(address: DEVICE, driver: I2CDevice::Driver::I2CDev.new(@i2c_bus))
|
|
24
|
-
@resolution = ONE_TIME_HIGH_RES_MODE_1
|
|
25
|
-
@length = 2
|
|
26
|
-
@value = read_sensor
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
# Read raw data from sensor and convert it to numeric
|
|
30
|
-
def read_sensor
|
|
31
|
-
data = @device.i2cget(@resolution, @length)
|
|
32
|
-
@value = to_f(data)
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
# Return value in Lux
|
|
36
|
-
def lux
|
|
37
|
-
read_sensor
|
|
38
|
-
@value
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
private
|
|
42
|
-
# Convert 2 bytes of sensor data to a float number
|
|
43
|
-
def to_f(data)
|
|
44
|
-
return ((data[1].ord + (256 * data[0].ord)) / 1.2)
|
|
45
|
-
end
|
|
46
|
-
end
|
data/lib/binary_actuator.rb
DELETED
data/lib/binary_effector.rb
DELETED
data/lib/binary_receptor.rb
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
require 'receptor'
|
|
2
|
-
|
|
3
|
-
# BinaryReceptor - receptor/actuator with binary logic
|
|
4
|
-
class BinaryReceptor < Receptor
|
|
5
|
-
@pin = nil # pin
|
|
6
|
-
|
|
7
|
-
def initialize(pin=21, pull=:up)
|
|
8
|
-
@pin = pin
|
|
9
|
-
RPi::GPIO.setup pin, :as => :input, :pull => pull
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def high?
|
|
13
|
-
RPi::GPIO.high? @pin
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def low?
|
|
17
|
-
RPi::GPIO.low? @pin
|
|
18
|
-
end
|
|
19
|
-
end
|
data/lib/binary_sensor.rb
DELETED
data/lib/bmx_sensor.rb
DELETED
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
gem 'i2c'
|
|
2
|
-
require 'i2c'
|
|
3
|
-
gem 'i2c-bme280'
|
|
4
|
-
require 'i2c/bme280'
|
|
5
|
-
require 'humiture_sensor'
|
|
6
|
-
|
|
7
|
-
# BMP/BME humidity, temperature & atmospheric pressure sensor family
|
|
8
|
-
class BMxSensor < HumitureSensor
|
|
9
|
-
|
|
10
|
-
def initialize(sensor_name, bus=1)
|
|
11
|
-
@sensor_name = sensor_name
|
|
12
|
-
@sensor = I2C::Driver::BME280.new(device: bus)
|
|
13
|
-
@temperature, @humidity, @pressure = read_data
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def read_data
|
|
17
|
-
data = @sensor.all
|
|
18
|
-
@temperature = data[:t]
|
|
19
|
-
@pressure = data[:p]
|
|
20
|
-
@humidity = data[:h]
|
|
21
|
-
[@temperature, @humidity, @pressure]
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
# standard atmospheric pressure @ sea level = 1.01325 bar = 1013.25 mbar = 101.325 kPa
|
|
25
|
-
def hPa
|
|
26
|
-
@pressure
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def pressure(mode=:hPa)
|
|
30
|
-
case mode
|
|
31
|
-
when :hPa # 1 hPa = 100 Pa = 1 mbar = 1 hPa = 0.750062 mmHg [@ 0°C]
|
|
32
|
-
hPa
|
|
33
|
-
when :kPa # 1 kPa = 1000 Pa = 10 hPa
|
|
34
|
-
hPa / 10.0
|
|
35
|
-
when :Pa # 1 Pa = 0.01 hPa = 0.001 kPa
|
|
36
|
-
hPa * 100.0
|
|
37
|
-
when :mmHg # 1 mmHg = 1.3332236842105263 hPa = 133.322387415 Pa = 1.000000142466321... Torr
|
|
38
|
-
hPa / (1013.25 / 760) # 760 mmHg = 101.3250144354 kPa
|
|
39
|
-
when :atm # 1 atm = 101325 Pa = 101.325 kPa
|
|
40
|
-
hPa / 1013.25
|
|
41
|
-
when :bar # 1 bar ≡ 100000 Pa = 1000 hPa = 0.987 atm = 750.06 mmHg = 750.06 Torr
|
|
42
|
-
hPa / 1000.0
|
|
43
|
-
when :mbar # 1 mbar = 0.001 bar
|
|
44
|
-
bar * 1000.0
|
|
45
|
-
when :Torr # 1 Torr = 1/760 atm = 101325/760 Pa = 0.999999857533699... mmHg
|
|
46
|
-
(hPa / 1013.25) / 760
|
|
47
|
-
else
|
|
48
|
-
hPa
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
def to_s
|
|
53
|
-
sprintf "%5.2f°C, %5.2f %%, %5.2f mmHg", @temperature, @humidity, pressure(:mmHg)
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
# OLD implementation with 'i2c-devices.gem'
|
|
57
|
-
#require 'bus'
|
|
58
|
-
#require 'i2c/device/bme280'
|
|
59
|
-
|
|
60
|
-
# BMP/BME humidity, temperature & atmospheric pressure sensor family
|
|
61
|
-
# def initialize(sensor_name)
|
|
62
|
-
# @sensor_name = sensor_name
|
|
63
|
-
# @sensor = I2CDevice::Bme280.new
|
|
64
|
-
# @temperature, @humidity, @pressure = read_data
|
|
65
|
-
# end
|
|
66
|
-
# def read_data
|
|
67
|
-
# data = @sensor.calc_sensor_data
|
|
68
|
-
# @temperature = data[:temp]
|
|
69
|
-
# @pressure = data[:pressure]
|
|
70
|
-
# @humidity = data[:hum]
|
|
71
|
-
# [@temperature, @humidity, @pressure]
|
|
72
|
-
# end
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
class BMP280 < BMxSensor
|
|
76
|
-
def initialize
|
|
77
|
-
super('BMP280')
|
|
78
|
-
end
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
class BME280 < BMxSensor
|
|
82
|
-
def initialize
|
|
83
|
-
super('BME280')
|
|
84
|
-
end
|
|
85
|
-
end
|
data/lib/button.rb
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
require 'binary_receptor'
|
|
2
|
-
|
|
3
|
-
# Button - simple push button
|
|
4
|
-
class Button < BinaryReceptor
|
|
5
|
-
attr_writer :measure_pause
|
|
6
|
-
|
|
7
|
-
def initialize(pin)
|
|
8
|
-
receptor_name = 'BUTTON'
|
|
9
|
-
super(pin)
|
|
10
|
-
@measure_pause = 0.01
|
|
11
|
-
@long_click = 1.0
|
|
12
|
-
@short_interval = 0.2
|
|
13
|
-
@intervals = []
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
# Is button pressed?
|
|
17
|
-
def pressed?
|
|
18
|
-
low?
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
# Is button not pressed?
|
|
22
|
-
def not_pressed?
|
|
23
|
-
high?
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
# Wait for the 1st pressing of button
|
|
27
|
-
def wait_for_press
|
|
28
|
-
wait_for_presses(1)
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
# Wait for several sequential presses
|
|
32
|
-
def wait_for_presses(attempts=2)
|
|
33
|
-
@intervals = []
|
|
34
|
-
attempts.times do
|
|
35
|
-
interval = []
|
|
36
|
-
timer = Time.now
|
|
37
|
-
while not_pressed? do
|
|
38
|
-
sleep @measure_pause
|
|
39
|
-
end
|
|
40
|
-
interval << Time.now-timer
|
|
41
|
-
timer = Time.now
|
|
42
|
-
while pressed? do
|
|
43
|
-
sleep @measure_pause
|
|
44
|
-
end
|
|
45
|
-
interval << Time.now-timer
|
|
46
|
-
@intervals << interval
|
|
47
|
-
end
|
|
48
|
-
@intervals
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
# Was the button pressed once?
|
|
52
|
-
def single_press?(intervals=@intervals)
|
|
53
|
-
intervals.size == 1
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
# Was the button pressed twice?
|
|
57
|
-
def double_press?(intervals=@intervals)
|
|
58
|
-
intervals.size == 2 && intervals[1][0] <= @short_interval
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
# Was the button pressed 3 times?
|
|
62
|
-
def triple_press?(intervals=@intervals)
|
|
63
|
-
intervals.size == 3
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
# Was the button pressed for more than @long_click?
|
|
67
|
-
def long_press?(intervals=@intervals)
|
|
68
|
-
intervals.size == 1 && intervals[0][1] >= @long_click
|
|
69
|
-
end
|
|
70
|
-
end
|
data/lib/dht_sensor.rb
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
require 'humiture_sensor'
|
|
2
|
-
require 'dht-sensor-ffi'
|
|
3
|
-
|
|
4
|
-
# DHT11/22 humidity & temperature sensor family
|
|
5
|
-
class DHTxxSensor < HumitureSensor
|
|
6
|
-
|
|
7
|
-
def initialize(pin, sensor_model)
|
|
8
|
-
@pin = pin
|
|
9
|
-
@sensor_name = 'DHT'+sensor_model.to_s
|
|
10
|
-
@sensor_model = sensor_model.to_i
|
|
11
|
-
@temperature, @humidity = read_data
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
# Read values by 'DhtSensor.read' from 'dht-sensor-ffi'
|
|
15
|
-
def read_data
|
|
16
|
-
sensor_data = DhtSensor.read(@pin, @sensor_model)
|
|
17
|
-
@temperature = sensor_data.temp
|
|
18
|
-
@humidity = sensor_data.humidity
|
|
19
|
-
[@temperature, @humidity]
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
# DHT11 - junior model, lower presicion
|
|
25
|
-
class DHT11 < DHTxxSensor
|
|
26
|
-
def initialize(pin)
|
|
27
|
-
super(pin, 11)
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
# DHT11 - senior model, higher presicion
|
|
32
|
-
class DHT22 < DHTxxSensor
|
|
33
|
-
def initialize(pin)
|
|
34
|
-
super(pin, 22)
|
|
35
|
-
end
|
|
36
|
-
end
|
data/lib/digital_actuator.rb
DELETED
data/lib/digital_effector.rb
DELETED
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
require 'effector'
|
|
2
|
-
|
|
3
|
-
RPi::GPIO.set_warnings(false)
|
|
4
|
-
RPi::GPIO.set_numbering :bcm
|
|
5
|
-
|
|
6
|
-
# DigitalEffector - effector/actuator with digitized control
|
|
7
|
-
class DigitalEffector < Effector
|
|
8
|
-
@pin = nil
|
|
9
|
-
@pins = {} # GPIO pins
|
|
10
|
-
|
|
11
|
-
def initialize(pins, state=:low)
|
|
12
|
-
@states = {}
|
|
13
|
-
@pins = pins
|
|
14
|
-
@pins.each_value do |pin|
|
|
15
|
-
RPi::GPIO.setup pin, :as => :output, :initialize => state
|
|
16
|
-
@states[pin] = (state == :high)
|
|
17
|
-
end
|
|
18
|
-
@pin = pins.values[0]
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def self.on(pin=@pin)
|
|
22
|
-
RPi::GPIO.set_high pin
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
def self.off(pin=@pin)
|
|
26
|
-
RPi::GPIO.set_low pin
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def on(pin=@pin)
|
|
30
|
-
BinaryEffector.on @pin
|
|
31
|
-
@states[pin] = true
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
def off(pin=@pin)
|
|
35
|
-
BinaryEffector.off @pin
|
|
36
|
-
@states[pin] = false
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
def on?(pin=@pin)
|
|
40
|
-
state = nil
|
|
41
|
-
if pin.class.name == 'Fixnum' # by number
|
|
42
|
-
state = @states[pin]
|
|
43
|
-
elsif @pins[pin] # by name
|
|
44
|
-
state = @states[@pins[pin]]
|
|
45
|
-
end
|
|
46
|
-
state
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
def off?(pin=@pin)
|
|
50
|
-
!on?(pin)
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
private
|
|
54
|
-
def pin_number(pin)
|
|
55
|
-
if pin.class.name == 'Fixnum' # by number
|
|
56
|
-
pin
|
|
57
|
-
elsif @pins[pin] # by name
|
|
58
|
-
@pins[pin]
|
|
59
|
-
end
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
def high?(pin=@pin)
|
|
63
|
-
RPi::GPIO.high? pin
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
def low?(pin=@pin)
|
|
67
|
-
RPi::GPIO.low? pin
|
|
68
|
-
end
|
|
69
|
-
end
|
data/lib/digital_receptor.rb
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
require 'receptor'
|
|
2
|
-
|
|
3
|
-
# DigitalReceptor - receptor with digitized values
|
|
4
|
-
class DigitalReceptor < Receptor
|
|
5
|
-
@@one_wire_bus = '/sys/bus/w1/devices'
|
|
6
|
-
@sensor_file = nil
|
|
7
|
-
|
|
8
|
-
def self.one_wire_file(prefix='28*', device='w1_slave')
|
|
9
|
-
files = Dir[@@one_wire_bus+'/'+prefix]
|
|
10
|
-
if files.size > 0 then
|
|
11
|
-
@sensor_file = files[0]+'/'+device
|
|
12
|
-
end
|
|
13
|
-
@sensor_file
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
end
|
data/lib/digital_sensor.rb
DELETED
data/lib/ds18b20.rb
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
require 'temperature_sensor'
|
|
2
|
-
|
|
3
|
-
# DS18B20 - high precision temperature sensor with 1-wire interface
|
|
4
|
-
class DS18B20 < TemperatureSensor
|
|
5
|
-
|
|
6
|
-
def initialize(device='w1_slave')
|
|
7
|
-
self.name = 'DS18B20'
|
|
8
|
-
@sensor_file = DigitalReceptor.one_wire_file('28*', device)
|
|
9
|
-
if @sensor_file
|
|
10
|
-
@temperature = read_data
|
|
11
|
-
else
|
|
12
|
-
raise "#{self.name} - Sensor NOT FOUND!"
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def read_data
|
|
17
|
-
File.open(@sensor_file, 'r') do |f|
|
|
18
|
-
value = f.read
|
|
19
|
-
@temperature = value.scan(/t=(\d+)/).flatten[0].to_i/1000.0
|
|
20
|
-
end
|
|
21
|
-
@temperature
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
|
data/lib/effector.rb
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
# https://github.com/ClockVapor/rpi_gpio
|
|
2
|
-
require 'rpi_gpio'
|
|
3
|
-
|
|
4
|
-
RPi::GPIO.set_warnings(false)
|
|
5
|
-
RPi::GPIO.set_numbering :bcm
|
|
6
|
-
|
|
7
|
-
# Effector - a controlled physical device that performs some (useful) action
|
|
8
|
-
class Effector
|
|
9
|
-
@model = 'N/A'
|
|
10
|
-
@name = 'N/A'
|
|
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
|
-
# Actuator - a synonym for Effector
|
|
31
|
-
class Actuator < Effector
|
|
32
|
-
end
|