Giter Club home page Giter Club logo

pi_piper's People

Contributors

alphaone avatar bguest avatar dddd1919 avatar jwhitehorn avatar kernelsmith avatar leucos avatar mtparet avatar sparkboxx avatar telnicky avatar v0dro avatar wakkow avatar zsyed91 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pi_piper's Issues

BeagleBone Support

I'm going to take a look to see if I can get PiPiper to cooperate with the BeagleBoneBlack. Do you have any suggestions or prior experience (good/ bad) or do you know of big gotcha's?

Output pin turns back on after exit

I was testing out the functionalities of the library with some LEDs and I noticed that even if it is explicitly turned off, when the program exits, the pin turns back on at a slightly lower power.

Running the current develop branch on wheezy from raspberrypi.org does fail with ffi error

I tried running the current develop branch on my Pi (I need the resistor pull-up). This does not work, it fails loading libbcm2835.img with the message: 'only ET_DYN and ET_EXEC can be loaded'. Reverting libbcm2835.img to the previous version makes everything run again.

Thanks for the great gem! It's really useful! If you need more information, please ask.

Pin.on?/.off? notworking ?

Hello maybe I am missing something but it seems like Pin.on? and Pin.off? methods are not working.
I am playing around with ruby and Rpi and I made following code:
Its just a simple program when I input 11 led is glowing and when i insert 1 led should go off. I would like to make it more "intelligent" like this: when I input 1 led switches its state. I was thinking about this code
pin.off? ? pin.on : pin.off but somehow this line does not work

thank you for help

PS: I am using RPi 2 model B with raspbian jessie lite

OK . pin.read is the key :) 👍

`require 'pi_piper'
include PiPiper

pin = PiPiper::Pin.new(:pin => 17, :direction => :out)

puts "pin is off: #{pin.off?}"
puts "pin is on: #{pin.on?}"

begin
x = gets.chomp

    case x.to_i
    when 1
            #puts "pin is off #{pin.off?}"
            #puts "pin is on #{pin.on?}"
            pin.off
            puts "Pin is now off"
    when 11
            pin.on
            puts "pin is now on"
    end
            puts "pin is off: #{pin.off?}"
            puts "pin is on: #{pin.on?}"

end until x == "e"`

output looks like this

pi@raspberrypi:~ $ sudo ruby pin ---- starting program
pin is off: true ---- lookigin good
pin is on: false
11
pin is now on ---- pin is on and LED is glowing
pin is off: true ----- hm here it should be false now
pin is on: false ------ and this should be true now
1
Pin is now off ----- LED turned off OK
pin is off: true
pin is on: false

Update libbcm2835.img

We can see at http://www.airspayce.com/mikem/bcm2835/ the librairy is quite often updated, even more now with Rpi2 support.

I was willing to update the image embeded in the gem but I'm not able to build the correct image, I'm stuck with the library libbcm2835.a

What is the correct procedure ? would it possible to build a rake task on it (I can do it and send a PR) ?

thx for the help.

Event every x number of time?

Would it be possible to add a feature so we can enter an event loop and beforehand setup functions that would run every x milliseconds? This way we can concurrently check for different sensors. I know I could do this with event machine but it seems that would defeat the purpose of this library if its supposed to be event driven.

UART Support

Would you be able to implement UART support?

Using Pi_Piper I've used all other pins and need to communicate with an Ardinuo. Thanks for a great Gem!

Seg fault

Hi, thanks for nice ruby tools for RPi, I have built some home security securyPi
It works fine, but some time (probably once in couple of days) I receive segmentation fault.
What do you think where should I start looking ?
Maybe the problem is low memory (512MB) and I use big gems like: aws-sdk and mail.

/home/pi/.rvm/gems/ruby-2.3.0/gems/pi_piper-2.0.0/lib/pi_piper/pwm.rb:66: [BUG] Segmentation fault at 0x000013
ruby 2.3.0p0 (2015-12-25 revision 53290) [armv6l-linux-eabihf]

-- Control frame information -----------------------------------------------
c:0010 p:---- s:0036 e:000035 CFUNC  :pwm_data
c:0009 p:0058 s:0031 e:000030 METHOD /home/pi/.rvm/gems/ruby-2.3.0/gems/pi_piper-2.0.0/lib/pi_piper/pwm.rb:66
c:0008 p:0025 s:0027 e:000026 METHOD sound.rb:12
c:0007 p:0130 s:0022 e:000021 BLOCK  /home/pi/securiPi/watcher.rb:53 [FINISH]
c:0006 p:---- s:0019 e:000018 CFUNC  :times
c:0005 p:0276 s:0016 e:000015 BLOCK  /home/pi/securiPi/watcher.rb:43 [FINISH]
c:0004 p:0034 s:0010 e:000009 BLOCK  /home/pi/.rvm/gems/ruby-2.3.0/gems/pi_piper-2.0.0/lib/pi_piper.rb:19 [FINISH]
c:0003 p:---- s:0008 e:000007 CFUNC  :loop
c:0002 p:0027 s:0005 e:000004 BLOCK  /home/pi/.rvm/gems/ruby-2.3.0/gems/pi_piper-2.0.0/lib/pi_piper.rb:16 [FINISH]
c:0001 p:---- s:0002 e:000001 (none) [FINISH]

-- Ruby level backtrace information ----------------------------------------
/home/pi/.rvm/gems/ruby-2.3.0/gems/pi_piper-2.0.0/lib/pi_piper.rb:16:in `block in watch'
/home/pi/.rvm/gems/ruby-2.3.0/gems/pi_piper-2.0.0/lib/pi_piper.rb:16:in `loop'
/home/pi/.rvm/gems/ruby-2.3.0/gems/pi_piper-2.0.0/lib/pi_piper.rb:19:in `block (2 levels) in watch'
/home/pi/securiPi/watcher.rb:43:in `block in <main>'
/home/pi/securiPi/watcher.rb:43:in `times'
/home/pi/securiPi/watcher.rb:53:in `block (2 levels) in <main>'
sound.rb:12:in `beep'
/home/pi/.rvm/gems/ruby-2.3.0/gems/pi_piper-2.0.0/lib/pi_piper/pwm.rb:66:in `value='
/home/pi/.rvm/gems/ruby-2.3.0/gems/pi_piper-2.0.0/lib/pi_piper/pwm.rb:66:in `pwm_data'

-- Other runtime information -----------------------------------------------

* Loaded script: /home/pi/securiPi/watcher.rb

* Loaded features:

    0 enumerator.so
    1 thread.rb
    2 rational.so
    3 complex.so
    4 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/armv6l-linux-eabihf/enc/encdb.so
    5 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/armv6l-linux-eabihf/enc/trans/transdb.so
    6 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/unicode_normalize.rb
    7 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/armv6l-linux-eabihf/rbconfig.rb
    8 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/rubygems/compatibility.rb
    9 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/rubygems/defaults.rb
   10 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/rubygems/deprecate.rb
   11 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/rubygems/errors.rb
   12 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/rubygems/version.rb
   13 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/rubygems/requirement.rb
   14 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/rubygems/platform.rb
   15 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/rubygems/basic_specification.rb
   16 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/rubygems/stub_specification.rb
   17 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/rubygems/util/list.rb
   18 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/armv6l-linux-eabihf/stringio.so
   19 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/rubygems/specification.rb
   20 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/rubygems/exceptions.rb
   21 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/rubygems/core_ext/kernel_gem.rb
   22 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/monitor.rb
   23 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb
   24 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/rubygems.rb
   25 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/rubygems/path_support.rb
   26 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/rubygems/dependency.rb
   27 /home/pi/.rvm/gems/ruby-2.3.0@global/gems/did_you_mean-1.0.0/lib/did_you_mean/version.rb
   28 /home/pi/.rvm/gems/ruby-2.3.0@global/gems/did_you_mean-1.0.0/lib/did_you_mean/core_ext/name_error.rb
   29 /home/pi/.rvm/gems/ruby-2.3.0@global/gems/did_you_mean-1.0.0/lib/did_you_mean/levenshtein.rb
   30 /home/pi/.rvm/gems/ruby-2.3.0@global/gems/did_you_mean-1.0.0/lib/did_you_mean/jaro_winkler.rb
   31 /home/pi/.rvm/gems/ruby-2.3.0@global/gems/did_you_mean-1.0.0/lib/did_you_mean/spell_checkable.rb
   32 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/delegate.rb
   33 /home/pi/.rvm/gems/ruby-2.3.0@global/gems/did_you_mean-1.0.0/lib/did_you_mean/spell_checkers/name_error_checkers/class_name_checker.rb
   34 /home/pi/.rvm/gems/ruby-2.3.0@global/gems/did_you_mean-1.0.0/lib/did_you_mean/spell_checkers/name_error_checkers/variable_name_checker.rb
   35 /home/pi/.rvm/gems/ruby-2.3.0@global/gems/did_you_mean-1.0.0/lib/did_you_mean/spell_checkers/name_error_checkers.rb
   36 /home/pi/.rvm/gems/ruby-2.3.0@global/gems/did_you_mean-1.0.0/lib/did_you_mean/spell_checkers/method_name_checker.rb
   37 /home/pi/.rvm/gems/ruby-2.3.0@global/gems/did_you_mean-1.0.0/lib/did_you_mean/spell_checkers/null_checker.rb
   38 /home/pi/.rvm/gems/ruby-2.3.0@global/gems/did_you_mean-1.0.0/lib/did_you_mean/formatter.rb
   39 /home/pi/.rvm/gems/ruby-2.3.0@global/gems/did_you_mean-1.0.0/lib/did_you_mean.rb
   40 /home/pi/.rvm/gems/ruby-2.3.0/gems/eventmachine-1.0.9/lib/rubyeventmachine.so
   41 /home/pi/.rvm/gems/ruby-2.3.0/gems/eventmachine-1.0.9/lib/em/version.rb
   42 /home/pi/.rvm/gems/ruby-2.3.0/gems/eventmachine-1.0.9/lib/em/pool.rb
   43 /home/pi/.rvm/gems/ruby-2.3.0/gems/eventmachine-1.0.9/lib/em/deferrable.rb
   44 /home/pi/.rvm/gems/ruby-2.3.0/gems/eventmachine-1.0.9/lib/em/future.rb
   45 /home/pi/.rvm/gems/ruby-2.3.0/gems/eventmachine-1.0.9/lib/em/streamer.rb
   46 /home/pi/.rvm/gems/ruby-2.3.0/gems/eventmachine-1.0.9/lib/em/spawnable.rb
   47 /home/pi/.rvm/gems/ruby-2.3.0/gems/eventmachine-1.0.9/lib/em/processes.rb
   48 /home/pi/.rvm/gems/ruby-2.3.0/gems/eventmachine-1.0.9/lib/em/iterator.rb
   49 /home/pi/.rvm/gems/ruby-2.3.0/gems/eventmachine-1.0.9/lib/em/buftok.rb
   50 /home/pi/.rvm/gems/ruby-2.3.0/gems/eventmachine-1.0.9/lib/em/timers.rb
   51 /home/pi/.rvm/gems/ruby-2.3.0/gems/eventmachine-1.0.9/lib/em/protocols.rb
   52 /home/pi/.rvm/gems/ruby-2.3.0/gems/eventmachine-1.0.9/lib/em/connection.rb
   53 /home/pi/.rvm/gems/ruby-2.3.0/gems/eventmachine-1.0.9/lib/em/callback.rb
   54 /home/pi/.rvm/gems/ruby-2.3.0/gems/eventmachine-1.0.9/lib/em/queue.rb
   55 /home/pi/.rvm/gems/ruby-2.3.0/gems/eventmachine-1.0.9/lib/em/channel.rb
   56 /home/pi/.rvm/gems/ruby-2.3.0/gems/eventmachine-1.0.9/lib/em/file_watch.rb
   57 /home/pi/.rvm/gems/ruby-2.3.0/gems/eventmachine-1.0.9/lib/em/process_watch.rb
   58 /home/pi/.rvm/gems/ruby-2.3.0/gems/eventmachine-1.0.9/lib/em/tick_loop.rb
   59 /home/pi/.rvm/gems/ruby-2.3.0/gems/eventmachine-1.0.9/lib/em/resolver.rb
   60 /home/pi/.rvm/gems/ruby-2.3.0/gems/eventmachine-1.0.9/lib/em/completion.rb
   61 /home/pi/.rvm/gems/ruby-2.3.0/gems/eventmachine-1.0.9/lib/em/threaded_resource.rb
   62 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/shellwords.rb
   63 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/armv6l-linux-eabihf/socket.so
   64 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/armv6l-linux-eabihf/io/wait.so
   65 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/socket.rb
   66 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/timeout.rb
   67 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/armv6l-linux-eabihf/digest.so
   68 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/digest.rb
   69 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/armv6l-linux-eabihf/openssl.so
   70 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/openssl/bn.rb
   71 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/openssl/pkey.rb
   72 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/openssl/cipher.rb
   73 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/openssl/config.rb
   74 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/openssl/digest.rb
   75 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/openssl/x509.rb
   76 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/openssl/buffering.rb
   77 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/armv6l-linux-eabihf/io/nonblock.so
   78 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/openssl/ssl.rb
   79 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/openssl.rb
   80 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/securerandom.rb
   81 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/resolv.rb
   82 /home/pi/.rvm/gems/ruby-2.3.0/gems/eventmachine-1.0.9/lib/eventmachine.rb
   83 /home/pi/.rvm/gems/ruby-2.3.0/gems/pi_piper-2.0.0/lib/pi_piper/pin_values.rb
   84 /home/pi/.rvm/gems/ruby-2.3.0/gems/pi_piper-2.0.0/lib/pi_piper/pin.rb
   85 /home/pi/.rvm/gems/ruby-2.3.0/gems/pi_piper-2.0.0/lib/pi_piper/frequency.rb
   86 /home/pi/.rvm/gems/ruby-2.3.0/gems/pi_piper-2.0.0/lib/pi_piper/platform.rb
   87 /home/pi/.rvm/gems/ruby-2.3.0/gems/pi_piper-2.0.0/lib/pi_piper/pin_error.rb
   88 /home/pi/.rvm/gems/ruby-2.3.0/gems/pi_piper-2.0.0/lib/pi_piper/i2c.rb
   89 /home/pi/.rvm/gems/ruby-2.3.0/gems/pi_piper-2.0.0/lib/pi_piper/spi.rb
   90 /home/pi/.rvm/gems/ruby-2.3.0/gems/pi_piper-2.0.0/lib/pi_piper/version.rb
   91 /home/pi/.rvm/gems/ruby-2.3.0/gems/pi_piper-2.0.0/lib/pi_piper/stub_driver.rb
   92 /home/pi/.rvm/gems/ruby-2.3.0/gems/pi_piper-2.0.0/lib/pi_piper/pwm.rb
   93 /home/pi/.rvm/gems/ruby-2.3.0/gems/pi_piper-2.0.0/lib/pi_piper.rb
   94 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/ostruct.rb
   95 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/uri/rfc2396_parser.rb
   96 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/uri/rfc3986_parser.rb
   97 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/uri/common.rb
   98 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/uri/generic.rb
   99 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/uri/ftp.rb
  100 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/uri/http.rb
  101 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/uri/https.rb
  102 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/uri/ldap.rb
  103 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/uri/ldaps.rb
  104 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/uri/mailto.rb
  105 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/uri.rb
  106 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/net/protocol.rb
  107 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/armv6l-linux-eabihf/zlib.so
  108 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/net/http/exceptions.rb
  109 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/net/http/header.rb
  110 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/armv6l-linux-eabihf/enc/windows_31j.so
  111 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/net/http/generic_request.rb
  112 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/net/http/request.rb
  113 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/net/http/requests.rb
  114 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/net/http/response.rb
  115 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/net/http/responses.rb
  116 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/net/http/proxy_delta.rb
  117 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/net/http/backward.rb
  118 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/net/http.rb
  119 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/json/version.rb
  120 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/json/generic_object.rb
  121 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/json/common.rb
  122 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/armv6l-linux-eabihf/enc/utf_16be.so
  123 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/armv6l-linux-eabihf/enc/utf_16le.so
  124 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/armv6l-linux-eabihf/enc/utf_32be.so
  125 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/armv6l-linux-eabihf/enc/utf_32le.so
  126 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/armv6l-linux-eabihf/json/ext/parser.so
  127 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/armv6l-linux-eabihf/json/ext/generator.so
  128 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/json/ext.rb
  129 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/json.rb
  130 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/armv6l-linux-eabihf/pathname.so
  131 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/pathname.rb
  132 /home/pi/.rvm/gems/ruby-2.3.0/gems/jmespath-1.1.3/lib/jmespath.rb
  133 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/seahorse.rb
  134 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/cgi/core.rb
  135 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/armv6l-linux-eabihf/cgi/escape.so
  136 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/cgi/util.rb
  137 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/cgi/cookie.rb
  138 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/cgi.rb
  139 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/seahorse/util.rb
  140 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core.rb
  141 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-resources-2.2.28/lib/aws-sdk-resources.rb
  142 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-2.2.28/lib/aws-sdk.rb
  143 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/credentials.rb
  144 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/armv6l-linux-eabihf/date_core.so
  145 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/date.rb
  146 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/armv6l-linux-eabihf/digest/md5.so
  147 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/net/smtp.rb
  148 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/logger.rb
  149 /home/pi/.rvm/gems/ruby-2.3.0/gems/mime-types-2.99.1/lib/mime/types/logger.rb
  150 /home/pi/.rvm/gems/ruby-2.3.0/gems/mime-types-2.99.1/lib/mime/types/deprecations.rb
  151 /home/pi/.rvm/gems/ruby-2.3.0/gems/mime-types-2.99.1/lib/mime/type.rb
  152 /home/pi/.rvm/gems/ruby-2.3.0/gems/mime-types-2.99.1/lib/mime/types/cache.rb
  153 /home/pi/.rvm/gems/ruby-2.3.0/gems/mime-types-2.99.1/lib/mime/types/loader_path.rb
  154 /home/pi/.rvm/gems/ruby-2.3.0/gems/mime-types-2.99.1/lib/mime/types/loader.rb
  155 /home/pi/.rvm/gems/ruby-2.3.0/gems/mime-types-2.99.1/lib/mime/types.rb
  156 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/version_specific/ruby_1_9.rb
  157 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/version.rb
  158 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/core_extensions/nil.rb
  159 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/core_extensions/object.rb
  160 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/core_extensions/string.rb
  161 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/indifferent_hash.rb
  162 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/core_extensions/string/access.rb
  163 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/multibyte/exceptions.rb
  164 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/multibyte/chars.rb
  165 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/multibyte/unicode.rb
  166 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/multibyte/utils.rb
  167 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/multibyte.rb
  168 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/core_extensions/string/multibyte.rb
  169 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/constants.rb
  170 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/utilities.rb
  171 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/singleton.rb
  172 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/configuration.rb
  173 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/network/retriever_methods/base.rb
  174 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/network.rb
  175 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/psych/exception.rb
  176 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/psych/syntax_error.rb
  177 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/armv6l-linux-eabihf/psych.so
  178 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/psych/omap.rb
  179 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/psych/set.rb
  180 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/psych/class_loader.rb
  181 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/armv6l-linux-eabihf/strscan.so
  182 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/psych/scalar_scanner.rb
  183 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/psych/nodes/node.rb
  184 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/psych/nodes/stream.rb
  185 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/psych/nodes/document.rb
  186 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/psych/nodes/sequence.rb
  187 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/psych/nodes/scalar.rb
  188 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/psych/nodes/mapping.rb
  189 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/psych/nodes/alias.rb
  190 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/psych/nodes.rb
  191 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/psych/streaming.rb
  192 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/psych/visitors/visitor.rb
  193 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/psych/visitors/to_ruby.rb
  194 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/psych/visitors/emitter.rb
  195 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/psych/handler.rb
  196 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/psych/tree_builder.rb
  197 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/psych/visitors/yaml_tree.rb
  198 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/psych/json/ruby_events.rb
  199 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/psych/visitors/json_tree.rb
  200 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/psych/visitors/depth_first.rb
  201 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/psych/visitors.rb
  202 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/psych/parser.rb
  203 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/psych/coder.rb
  204 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/psych/core_ext.rb
  205 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/psych/deprecated.rb
  206 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/psych/stream.rb
  207 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/psych/json/yaml_events.rb
  208 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/psych/json/tree_builder.rb
  209 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/psych/json/stream.rb
  210 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/psych/handlers/document_stream.rb
  211 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/psych.rb
  212 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/yaml.rb
  213 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/message.rb
  214 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/part.rb
  215 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/header.rb
  216 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/parts_list.rb
  217 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/attachments_list.rb
  218 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/body.rb
  219 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/fields.rb
  220 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/fields/common/address_container.rb
  221 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/fields/common/common_address.rb
  222 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/fields/common/common_field.rb
  223 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/fields/structured_field.rb
  224 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/fields/to_field.rb
  225 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/fields/cc_field.rb
  226 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/fields/bcc_field.rb
  227 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/fields/common/common_message_id.rb
  228 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/fields/message_id_field.rb
  229 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/fields/in_reply_to_field.rb
  230 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/fields/references_field.rb
  231 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/fields/unstructured_field.rb
  232 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/fields/subject_field.rb
  233 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/fields/comments_field.rb
  234 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/fields/keywords_field.rb
  235 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/fields/common/common_date.rb
  236 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/fields/date_field.rb
  237 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/fields/from_field.rb
  238 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/fields/sender_field.rb
  239 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/fields/reply_to_field.rb
  240 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/fields/resent_date_field.rb
  241 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/fields/resent_from_field.rb
  242 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/fields/resent_sender_field.rb
  243 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/fields/resent_to_field.rb
  244 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/fields/resent_cc_field.rb
  245 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/fields/resent_bcc_field.rb
  246 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/fields/resent_message_id_field.rb
  247 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/fields/return_path_field.rb
  248 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/fields/received_field.rb
  249 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/fields/mime_version_field.rb
  250 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/fields/content_transfer_encoding_field.rb
  251 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/fields/content_description_field.rb
  252 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/fields/common/parameter_hash.rb
  253 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/fields/content_disposition_field.rb
  254 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/fields/content_type_field.rb
  255 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/fields/content_id_field.rb
  256 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/fields/content_location_field.rb
  257 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/field.rb
  258 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/field_list.rb
  259 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/envelope.rb
  260 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/elements.rb
  261 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/encodings.rb
  262 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/encodings/transfer_encoding.rb
  263 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/encodings/binary.rb
  264 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/encodings/8bit.rb
  265 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/encodings/7bit.rb
  266 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/encodings/base64.rb
  267 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/encodings/quoted_printable.rb
  268 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/encodings/unix_to_unix.rb
  269 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/matchers/has_sent_mail.rb
  270 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/mail.rb
  271 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail.rb
  272 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/check_delivery_params.rb
  273 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/network/delivery_methods/smtp.rb
  274 /home/pi/.rvm/gems/ruby-2.3.0/gems/ffi-1.9.10/lib/ffi_c.so
  275 /home/pi/.rvm/gems/ruby-2.3.0/gems/ffi-1.9.10/lib/ffi/platform.rb
  276 /home/pi/.rvm/gems/ruby-2.3.0/gems/ffi-1.9.10/lib/ffi/types.rb
  277 /home/pi/.rvm/gems/ruby-2.3.0/gems/ffi-1.9.10/lib/ffi/library.rb
  278 /home/pi/.rvm/gems/ruby-2.3.0/gems/ffi-1.9.10/lib/ffi/errno.rb
  279 /home/pi/.rvm/gems/ruby-2.3.0/gems/ffi-1.9.10/lib/ffi/pointer.rb
  280 /home/pi/.rvm/gems/ruby-2.3.0/gems/ffi-1.9.10/lib/ffi/memorypointer.rb
  281 /home/pi/.rvm/gems/ruby-2.3.0/gems/ffi-1.9.10/lib/ffi/struct_layout_builder.rb
  282 /home/pi/.rvm/gems/ruby-2.3.0/gems/ffi-1.9.10/lib/ffi/struct.rb
  283 /home/pi/.rvm/gems/ruby-2.3.0/gems/ffi-1.9.10/lib/ffi/union.rb
  284 /home/pi/.rvm/gems/ruby-2.3.0/gems/ffi-1.9.10/lib/ffi/managedstruct.rb
  285 /home/pi/.rvm/gems/ruby-2.3.0/gems/ffi-1.9.10/lib/ffi/callback.rb
  286 /home/pi/.rvm/gems/ruby-2.3.0/gems/ffi-1.9.10/lib/ffi/io.rb
  287 /home/pi/.rvm/gems/ruby-2.3.0/gems/ffi-1.9.10/lib/ffi/autopointer.rb
  288 /home/pi/.rvm/gems/ruby-2.3.0/gems/ffi-1.9.10/lib/ffi/variadic.rb
  289 /home/pi/.rvm/gems/ruby-2.3.0/gems/ffi-1.9.10/lib/ffi/enum.rb
  290 /home/pi/.rvm/gems/ruby-2.3.0/gems/ffi-1.9.10/lib/ffi/ffi.rb
  291 /home/pi/.rvm/gems/ruby-2.3.0/gems/ffi-1.9.10/lib/ffi.rb
  292 /home/pi/.rvm/gems/ruby-2.3.0/gems/pi_piper-2.0.0/lib/pi_piper/bcm2835.rb
  293 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/elements/content_type_element.rb
  294 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/parsers/ragel/parser_info.rb
  295 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/parsers/ragel/ruby/machines/address_lists_machine.rb
  296 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/parsers/ragel/ruby/machines/phrase_lists_machine.rb
  297 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/parsers/ragel/ruby/machines/date_time_machine.rb
  298 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/parsers/ragel/ruby/machines/received_machine.rb
  299 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/parsers/ragel/ruby/machines/message_ids_machine.rb
  300 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/parsers/ragel/ruby/machines/envelope_from_machine.rb
  301 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/parsers/ragel/ruby/machines/mime_version_machine.rb
  302 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/parsers/ragel/ruby/machines/content_type_machine.rb
  303 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/parsers/ragel/ruby/machines/content_disposition_machine.rb
  304 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/parsers/ragel/ruby/machines/content_transfer_encoding_machine.rb
  305 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/parsers/ragel/ruby/machines/content_location_machine.rb
  306 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/parsers/ragel/ruby.rb
  307 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/parsers/ragel.rb
  308 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/parsers/address_lists_parser.rb
  309 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/parsers/phrase_lists_parser.rb
  310 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/parsers/date_time_parser.rb
  311 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/parsers/received_parser.rb
  312 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/parsers/message_ids_parser.rb
  313 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/parsers/envelope_from_parser.rb
  314 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/parsers/mime_version_parser.rb
  315 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/parsers/content_type_parser.rb
  316 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/parsers/content_disposition_parser.rb
  317 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/parsers/content_transfer_encoding_parser.rb
  318 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/parsers/content_location_parser.rb
  319 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/parsers.rb
  320 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/elements/content_transfer_encoding_element.rb
  321 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/elements/address_list.rb
  322 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/elements/address.rb
  323 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/elements/content_disposition_element.rb
  324 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/elements/message_ids_element.rb
  325 /home/pi/.rvm/gems/ruby-2.3.0/gems/mail-2.6.3/lib/mail/elements/mime_version_element.rb
  326 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/service.rb
  327 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/type_builder.rb
  328 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/seahorse/client/handler_builder.rb
  329 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/set.rb
  330 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/seahorse/client/plugin_list.rb
  331 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/seahorse/client/plugin.rb
  332 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/seahorse/client/handler.rb
  333 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/seahorse/client/plugins/endpoint.rb
  334 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/net/https.rb
  335 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/seahorse/client/net_http/patches.rb
  336 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/seahorse/client/net_http/connection_pool.rb
  337 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/seahorse/client/net_http/handler.rb
  338 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/seahorse/client/handler_list.rb
  339 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/seahorse/client/handler_list_entry.rb
  340 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/seahorse/client/plugins/net_http.rb
  341 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/seahorse/client/plugins/raise_response_errors.rb
  342 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/seahorse/client/plugins/response_target.rb
  343 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/seahorse/client/base.rb
  344 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/client_stubs.rb
  345 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/client_waiters.rb
  346 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/client.rb
  347 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/api/builder.rb
  348 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/seahorse/model/api.rb
  349 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/json.rb
  350 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/api/customizations.rb
  351 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/api/docs/docstring_provider.rb
  352 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/seahorse/model/shapes.rb
  353 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/api/shape_map.rb
  354 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/seahorse/model/operation.rb
  355 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/structure.rb
  356 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/empty_structure.rb
  357 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/waiters/provider.rb
  358 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/waiters/poller.rb
  359 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/errors.rb
  360 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/pager.rb
  361 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-resources-2.2.28/lib/aws-sdk-resources/definition.rb
  362 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-resources-2.2.28/lib/aws-sdk-resources/operation_methods.rb
  363 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-resources-2.2.28/lib/aws-sdk-resources/resource.rb
  364 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-resources-2.2.28/lib/aws-sdk-resources/options.rb
  365 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-resources-2.2.28/lib/aws-sdk-resources/builder.rb
  366 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-resources-2.2.28/lib/aws-sdk-resources/builder_sources.rb
  367 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-resources-2.2.28/lib/aws-sdk-resources/operations.rb
  368 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-resources-2.2.28/lib/aws-sdk-resources/request.rb
  369 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-resources-2.2.28/lib/aws-sdk-resources/request_params.rb
  370 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-resources-2.2.28/lib/aws-sdk-resources/services/s3/bucket.rb
  371 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-resources-2.2.28/lib/aws-sdk-resources/services/s3/object.rb
  372 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-resources-2.2.28/lib/aws-sdk-resources/services/s3/object_summary.rb
  373 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-resources-2.2.28/lib/aws-sdk-resources/services/s3/multipart_upload.rb
  374 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-resources-2.2.28/lib/aws-sdk-resources/services/s3.rb
  375 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/s3/bucket_region_cache.rb
  376 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/s3.rb
  377 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/seahorse/client/plugins/content_length.rb
  378 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/plugins/logging.rb
  379 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/plugins/param_converter.rb
  380 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/plugins/param_validator.rb
  381 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/plugins/user_agent.rb
  382 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/plugins/retry_errors.rb
  383 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/plugins/global_configuration.rb
  384 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/plugins/regional_endpoint.rb
  385 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/time.rb
  386 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/signers/v4.rb
  387 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/base64.rb
  388 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/signers/base.rb
  389 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/signers/v3.rb
  390 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/signers/v2.rb
  391 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/armv6l-linux-eabihf/etc.so
  392 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/fileutils.rb
  393 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/tmpdir.rb
  394 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/tempfile.rb
  395 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/webrick/httputils.rb
  396 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/signers/s3.rb
  397 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/plugins/request_signer.rb
  398 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/plugins/response_paging.rb
  399 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/plugins/stub_responses.rb
  400 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/rest/handler.rb
  401 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/xml/error_handler.rb
  402 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/plugins/protocols/rest_xml.rb
  403 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/plugins/s3_bucket_dns.rb
  404 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/plugins/s3_expect_100_continue.rb
  405 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/plugins/s3_http_200_errors.rb
  406 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/plugins/s3_get_bucket_location_fix.rb
  407 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/plugins/s3_location_constraint.rb
  408 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/plugins/s3_md5s.rb
  409 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/plugins/s3_redirects.rb
  410 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/plugins/s3_sse_cpk.rb
  411 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/plugins/s3_url_encoded_keys.rb
  412 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/plugins/s3_request_signer.rb
  413 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/seahorse/client/configuration.rb
  414 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/endpoint_provider.rb
  415 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-resources-2.2.28/lib/aws-sdk-resources/services/s3/file_uploader.rb
  416 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/seahorse/client/request.rb
  417 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/seahorse/client/request_context.rb
  418 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/seahorse/client/http/request.rb
  419 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/seahorse/client/http/headers.rb
  420 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/seahorse/client/http/response.rb
  421 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/param_converter.rb
  422 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/param_validator.rb
  423 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/version.rb
  424 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/rest/request/builder.rb
  425 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/rest/request/endpoint.rb
  426 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/rest/request/headers.rb
  427 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/rest/request/body.rb
  428 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/xml/builder.rb
  429 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/seahorse/client/networking_error.rb
  430 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/seahorse/client/response.rb
  431 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/rest/response/parser.rb
  432 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/rest/response/status_code.rb
  433 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/rest/response/headers.rb
  434 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/rest/response/body.rb
  435 /home/pi/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/nokogiri.so
  436 /home/pi/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/version.rb
  437 /home/pi/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/syntax_error.rb
  438 /home/pi/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/xml/pp/node.rb
  439 /home/pi/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/xml/pp/character_data.rb
  440 /home/pi/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/xml/pp.rb
  441 /home/pi/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/xml/parse_options.rb
  442 /home/pi/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/xml/sax/document.rb
  443 /home/pi/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/xml/sax/parser_context.rb
  444 /home/pi/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/xml/sax/parser.rb
  445 /home/pi/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/xml/sax/push_parser.rb
  446 /home/pi/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/xml/sax.rb
  447 /home/pi/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/xml/searchable.rb
  448 /home/pi/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/xml/node/save_options.rb
  449 /home/pi/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/xml/node.rb
  450 /home/pi/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/xml/attribute_decl.rb
  451 /home/pi/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/xml/element_decl.rb
  452 /home/pi/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/xml/element_content.rb
  453 /home/pi/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/xml/character_data.rb
  454 /home/pi/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/xml/namespace.rb
  455 /home/pi/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/xml/attr.rb
  456 /home/pi/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/xml/dtd.rb
  457 /home/pi/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/xml/cdata.rb
  458 /home/pi/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/xml/text.rb
  459 /home/pi/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/xml/document.rb
  460 /home/pi/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/xml/document_fragment.rb
  461 /home/pi/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/xml/processing_instruction.rb
  462 /home/pi/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/xml/node_set.rb
  463 /home/pi/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/xml/syntax_error.rb
  464 /home/pi/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/xml/xpath/syntax_error.rb
  465 /home/pi/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/xml/xpath.rb
  466 /home/pi/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/xml/xpath_context.rb
  467 /home/pi/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/xml/builder.rb
  468 /home/pi/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/xml/reader.rb
  469 /home/pi/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/xml/notation.rb
  470 /home/pi/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/xml/entity_decl.rb
  471 /home/pi/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/xml/schema.rb
  472 /home/pi/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/xml/relax_ng.rb
  473 /home/pi/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/xml.rb
  474 /home/pi/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/xslt/stylesheet.rb
  475 /home/pi/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/xslt.rb
  476 /home/pi/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/html/entity_lookup.rb
  477 /home/pi/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/html/document.rb
  478 /home/pi/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/html/document_fragment.rb
  479 /home/pi/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/html/sax/parser_context.rb
  480 /home/pi/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/html/sax/parser.rb
  481 /home/pi/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/html/sax/push_parser.rb
  482 /home/pi/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/html/element_description.rb
  483 /home/pi/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/html/element_description_defaults.rb
  484 /home/pi/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/html.rb
  485 /home/pi/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/decorators/slop.rb
  486 /home/pi/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/css/node.rb
  487 /home/pi/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/css/xpath_visitor.rb
  488 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/armv6l-linux-eabihf/racc/cparse.so
  489 /home/pi/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/racc/parser.rb
  490 /home/pi/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/css/parser_extras.rb
  491 /home/pi/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/css/parser.rb
  492 /home/pi/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/css/tokenizer.rb
  493 /home/pi/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/css/syntax_error.rb
  494 /home/pi/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/css.rb
  495 /home/pi/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri/html/builder.rb
  496 /home/pi/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.7.2/lib/nokogiri.rb
  497 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/xml/parser/engines/nokogiri.rb
  498 /home/pi/.rvm/gems/ruby-2.3.0/gems/aws-sdk-core-2.2.28/lib/aws-sdk-core/xml/parser.rb

* Process memory map:

Trouble with Device or resource busy

Hi I am unable to get the pins to work on the latest version of noobs.

Running
File.open("/sys/class/gpio/export", "w") { |f| f.write("7") }

Error
Errno::EBUSY: Device or resource busy @ fptr_finalize - /sys/class/gpio/export

Using: https://github.com/robert2d/raspberry-pi-gpio-rails4-control

I have manually run the command via a rails console using rvmsudo bundle exec rails c. I have checked forums and other resources on google and cannot find a solution, so I was hoping somebody could point me(slash my pins 😄) in the right direction.

Also:
Running echo 7 >/sys/class/gpio/unexport seems to free up the pin again but re running the above twice causes the same error again.. (reference: http://squarism.com/2014/09/24/redis-595-timer-states/)

Thanks

.value always returns 0 in console

In Ruby 2.1.2 on the Raspberry Pi B model using the Pry console (tested in IRB as well)
Doing this: pin = PiPiper::Pin.new(:pin => 18, :direction => :out) correctly initialises the pin. pin.on / .off works correctly. But when calling pin.value it always returns 0. I've tried it using the update_value method instead of the on / off method, but the .value return is the same.

[3] pry(main)> pin = PiPiper::Pin.new(:pin => 18, :direction => :out)
=> #<PiPiper::Pin:0x1cdd648 @direction=:out, @invert=false, @last_value=nil, @pin=18, @pull=:off, @trigger=:both, @value=0>
[4] pry(main)> pin.value
=> 0
[5] pry(main)> pin.update_value(1)
=> 1
[6] pry(main)> pin.value
=> 0
[7] pry(main)>

Trying to connect RC522 through SPI

I am trying to use pi_piper to connect RC522 RFID reader through SPI, but I'm stuck right now, I think it's probably because I have only little knowledge of SPI, is there any tutorials or sample code I can refer to?

Is Pi_Piper ready for RPi 3 ?

I'm thinking to get a new RPi 3 because inboard wifi, but it is upgrade to bcm2387. I'm wondering is Pi_Piper can be use in Pi 3 ?

GPIO Initialization

I am struggling with successfully initializing button management code. I do something as follows:
def manage_buttons

  @@pin=PiPiper::Pin.new(:pin => 23, :pull => :up)
  @@led=PiPiper::Pin.new(:pin => 18, :direction => :out)
  @@led.on
  @@t=Time.now
  PiPiper.watch :pin => 23,:trigger => :falling , :pull => :up do
    #puts "Button pressed changed from #{last_value} to #{value}"
    #puts "."
    @@t=Time.now
  end

If I run the following python code the pi_piper gem works as I expect in above. (If I don't run this code below, the system gives me bouncing on the button). So currently I call a python script to do the following upon boot.
GPIO.setmode(GPIO.BCM)
GPIO.setup(ledPin, GPIO.OUT)
GPIO.setup(buttonPin, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.output(ledPin, GPIO.HIGH)

Any suggesitons on what I am doing wrong? Or how to get pi_piper to emulate the pyton script. (Raspbian, Rasp pi ver 2, 512 mb, Linux printlotto 3.10.25+ #622 PREEMPT Fri Jan 3 18:41:00 GMT 2014 armv6l GNU/Linux
)

State of project

What is the state of this project? I haven't seen any commit in the past few months. I think its a great library and would love to see some movement. Especially because there are several pending issues and open PR's that would fix some issues everyone is having.

Why is lib/pi_piper/driver.rb empty method definitions?

Hello,

I'm trying to understand how this code works, and I see in lib/pi_piper/pin.rb you call PiPiper.driver.pin_write - https://github.com/jwhitehorn/pi_piper/blob/develop/lib/pi_piper/pin.rb#L61

In lib/pi_piper.rb you seem to initialize PiPiper.driver as an instance of PiPiper::Driver https://github.com/jwhitehorn/pi_piper/blob/develop/lib/pi_piper.rb#L19-L32

What I don't understand, is why is lib/pi_piper/driver.rb full of empty method definitions? Where do you actually do the writing to filehandles?

In previous versions you actually wrote to /sys/class/gpio/gpio#{pin}/value - https://github.com/jwhitehorn/pi_piper/blob/master/lib/pi_piper/bcm2835.rb#L40

What am I missing here? How does this know to write to the correct location?

Thanks!

Doesn't work on Raspbian JESSIE?

I try to use this gem but I don't manage to control any pin.
I have no error message, but nothing happens on my board.

The LED on pin 17 is on, since the boot of the raspberry. But:

pin = PiPiper::Pin.new(:pin => 17, :direction => :out)
=> #<PiPiper::Pin:0x1ea4448 @pin=17, @direction=:out, @invert=false, @trigger=:both, @pull=0, @last_value=nil, @value=0>

pin.on
=> 1

pin.off
=> 1

pin.on?
=> false

pin.off?
=> true

Does anyone succeed to make it work on Raspbian Jessie + Ruby 2?

root@raspberrypi:~# ruby -v
ruby 2.1.5p273 (2014-11-13) [arm-linux-gnueabihf]

how to call a method from inside PiPiper.after?

This looks more like a ruby question, but it is related to pi_piper. I have this code:

require 'pi_piper'

class Foo

    def initialize
            PiPiper.after ({pin: 7, goes: :high}) do
                    bar
            end
    end

    def bar
            puts "hello"
    end
end

a = Foo.new

PiPiper.wait

but when I turn on the pin (with a switch), it returns this error

›sudo ruby stack.rb
stack.rb:7:in `block in initialize': undefined local variable or method `bar' for #<PiPiper::Pin:0x1172508> (NameError)
        from /var/lib/gems/1.9.1/gems/pi_piper-1.3.2/lib/pi_piper.rb:24:in `instance_exec'
        from /var/lib/gems/1.9.1/gems/pi_piper-1.3.2/lib/pi_piper.rb:24:in `block (2 levels) in watch'
        from /var/lib/gems/1.9.1/gems/pi_piper-1.3.2/lib/pi_piper.rb:19:in `loop'
        from /var/lib/gems/1.9.1/gems/pi_piper-1.3.2/lib/pi_piper.rb:19:in `block in watch'

how can effectively call "bar" method when pin goes high?, thanks

ERROR:pi_piper requires RubyGems version >= 2.0.0.

Hi Folks,

I'm facing an error while I do
sudo gem install pi_piper

It return an error blow :

ERROR: Error installing pi_piper: pi_piper
requires RubyGems version >= 2.0.0.
Try 'gem update --system' to update RubyGems itself.

I use rvm and below is my ruby -v and gem -v
and do tried 'gem update --system' but still failed.

My ruby and gem is up to date:

pi@cvproto01:/pi-piper $ which ruby
/home/pi/.rvm/rubies/ruby-2.2.1/bin/ruby
pi@cvproto01:
/pi-piper $ ruby -v
ruby 2.2.1p85 (2015-02-26 revision 49769) [armv7l-linux-eabihf]
pi@cvproto01:/pi-piper $ which gem
/home/pi/.rvm/rubies/ruby-2.2.1/bin/gem
pi@cvproto01:
/pi-piper $ gem -v
2.6.1

I did follow the instruction and install libssl-dev

And, I tried to install gem without sudo
gem install pi_piper
Guess what, it is successfully installed ?!

Successfully installed pi_piper-2.0.0
1 gem installed

I was thinking I'm so smart to do no 'sudo'.
But the story always comes with HOWEVER
However, I ran my ruby code, it returns:
'sudo ruby pi-piper-practice.rb'

pi-piper-practice.rb:1:in `require': no such file to load -- pi_piper (LoadError)
from pi-piper-practice.rb:1

The pi-piper-practice.rb code listed below:

require 'pi_piper'
include PiPiper

Examples

Example 1 - Simple switch

puts "Press the switch to get start"
PiPiper.watch :pin => 17, :invert => true do |pin|
puts "Pin changed from #{pin.last_value} to #{pin.value}"
end

PiPiper.wait

I couldn't know what I am missing now. Please helps and thanks in advance !!!!!!

/home/pi/.rvm/gems/ruby-2.2.1/gems/pi_piper-1.3.2/lib/pi_piper/pin.rb:23:in `close': Device or resource busy @ fptr_finalize - /sys/class/gpio/export (Errno::EBUSY)

Trying to use pi_piper to read a button connected to pin 18 and getting this error:

/home/pi/.rvm/gems/ruby-2.2.1/gems/pi_piper-1.3.2/lib/pi_piper/pin.rb:23:in `close': Device or resource busy @ fptr_finalize - /sys/class/gpio/export (Errno::EBUSY)
    from /home/pi/.rvm/gems/ruby-2.2.1/gems/pi_piper-1.3.2/lib/pi_piper/pin.rb:23:in `open'
    from /home/pi/.rvm/gems/ruby-2.2.1/gems/pi_piper-1.3.2/lib/pi_piper/pin.rb:23:in `initialize'
    from /home/pi/.rvm/gems/ruby-2.2.1/gems/pi_piper-1.3.2/lib/pi_piper.rb:18:in `new'
    from /home/pi/.rvm/gems/ruby-2.2.1/gems/pi_piper-1.3.2/lib/pi_piper.rb:18:in `block in watch'

This is my code:

$ cat pi_piper.rb
require 'pi_piper'
include PiPiper

pin = PiPiper::Pin.new(:pin => 18, :direction => :in, :pull => :up)

watch :pin => 18 do
  puts "Pin changed from #{last_value} to #{value}"
end

I'm running it like this:

$ rvmsudo bundle exec ruby pi_piper.rb

Conversely running this program in python works just fine (and outputs "Button Pressed" correctly only when I press the button)

pi@raspberrypi ~ $ cat switch.py
import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.IN, pull_up_down=GPIO.PUD_UP)

while True:
  input_state = GPIO.input(18)
  if input_state == False:
    print('Button Pressed')
    time.sleep(0.2)

$ sudo python switch.py
Button Pressed
Button Pressed
Button Pressed
Button Pressed
Button Pressed

Any advice? Anything I can try?

Can't read correct values from a rpi B 1

I'm using pin 4 (gpio 4) with this simple code:

require "pi_piper"

pin = PiPiper::Pin.new(:pin => 4, :direction => :in)

loop do
        puts pin.value
        sleep 0.1
end

I use a jumper and connect it to gpio4 and 3.3V (top-left).

It always shows a 0. If I change the jumper to GND (bottom-left), I also get a 0.

Reading the values from /sys/..., it shows correctly a 1 or 0, but the pi_piper script will always show a 0.

What's wrong? (I'm using pi_piper 2.0)

See the attached screenshot
2016-07-31-140056_1920x1080_scrot

Behavior of after/watch not as expected

Hello,

i am trying to fetch a simple pressed button but doesn't work as expected.

I am using pi_piper 2.2.2.

I tried the following:

after :pin => 21, :goes => :high do puts "Button pressed" end
The result was that it was prompted "Button pressed" the whole time until i pressed the button. when releasing the button it started prompting again.

The same happend when i tried :goes => :low

I tried the rpi_gpio gem

RPi::GPIO.setup 21, :as => :input, :pull => :down print RPi::GPIO.low? 21
Here was the result correct.

I have tried following different options:
GPIO21 (Pin 40) connected to GND/3.3V
Watch/Wait functions used
Try to initialize Pin first with parameters :pin => 21, direction => in, :pull => :down (Had no idea how to use der created Pin object in the watch or wait context because there you can use only pin numbers)

I am clueless how to use the library the right way :-(

Any ideas what is wrong with my Code?

Thanks

Regards Elmar

SPI doesn't work on my RPi2

Hi,

This code doesn't work on my BCM2836 but it works my old BCM2835. Is there any plan to update? or any advice?

require 'pi_piper'
loop do
  value = 0
  PiPiper::Spi.begin do |spi|
    raw = spi.write [0b01101000,0]
    value = ((raw[0]<<8) + raw[1]) & 0x03FF
  end
  puts value
  sleep(1)
end

Gemspec missing file pin_values.rb

The gemspec file is missing pin_values.rb which causes an error when you try to require 'pi_piper'. I was really confused why your spec tests were passing at first. Looks like it's because Travis just pulls down the repo and runs the tests and doesn't use the gemspec file at all I think. I have never set up Travis before but I bet there is a way to get it to use your gemspec file. I would recommend looking into that.

Gem Version 2.0?

Help

I have been trying to install this gem on ruby 1.9.3 but it says that the gem is for ruby gem version 2.0.

Does anyone have any idea on how to fix this?

## Thank You

GPIO Permission Error

Getting a Permission denied - /sys/class/gpio/gpio18/direction when executing...PiPiper::Pin.new :pin => 18, :direction => :out. Many different attempts at changing permissions on various directories. No joy.

Odroid U3: edge file needs to be reset on start

I’m using this awesome gem for a project with an Odroid U3. The relevant lines from the script are simply:

after pin: 199, goes: :high do
  # do something
end
PiPiper.wait

Everything works fine when I the script is started for the first time. However, if the script is stopped (Ctrl-C) and then started again, the block is no longer called even if the pin changes.

It found out that this can be fixed by “resetting” the edge file at the start of the script like this:

File.write "/sys/class/gpio/gpio199/edge", "none"

Should this be included in pi_piper?

non-root access

Hi,

non-root access to the dev and sysfs devices seems to be a recurring issue going by the many threads all over the internet, but is there any change on the pi_piper front ? Or is there anyway to proxy access via a root daemon ?
I appreciate this question was answered a couple of years ago, just wondering if anything has changed since then.

Thanks

CM

using pullups and action on change?

Hi guys,
This project is fantastic. I was trying to just use the GPIO17 on my raspberry pi with the built in pull-up and a button plugged into ground. I wanted this to work on 6 buttons as interrupts (change lcd values on button press)..

The problem is my values are erratic aka they change with no button push. I don't know if my wiring of the button is wrong or the simple test code. I wrote something like this on one button:

require 'pi_piper'
include PiPiper

pin = PiPiper::Pin.new(:pin => 17, :direction => :in, :pull => :up)
# set pin 17 to pull up

after :pin => 17, :goes => :low do
  puts "Button pressed"
end

PiPiper.wait

Sorry I didn't know where else to post this question. I realize this is a simple example but I'm a bit stuck. I don't think this addresses my interrupt problems either. Any help on that would be appreciated.

License missing from gemspec

RubyGems.org doesn't report a license for your gem. This is because it is not specified in the gemspec of your last release.

via e.g.

spec.license = 'MIT'
# or
spec.licenses = ['MIT', 'GPL-2']

Including a license in your gemspec is an easy way for rubygems.org and other tools to check how your gem is licensed. As you can imagine, scanning your repository for a LICENSE file or parsing the README, and then attempting to identify the license or licenses is much more difficult and more error prone. So, even for projects that already specify a license, including a license in your gemspec is a good practice. See, for example, how rubygems.org uses the gemspec to display the rails gem license.

There is even a License Finder gem to help companies/individuals ensure all gems they use meet their licensing needs. This tool depends on license information being available in the gemspec. This is an important enough issue that even Bundler now generates gems with a default 'MIT' license.

I hope you'll consider specifying a license in your gemspec. If not, please just close the issue with a nice message. In either case, I'll follow up. Thanks for your time!

Appendix:

If you need help choosing a license (sorry, I haven't checked your readme or looked for a license file), GitHub has created a license picker tool. Code without a license specified defaults to 'All rights reserved'-- denying others all rights to use of the code.
Here's a list of the license names I've found and their frequencies

p.s. In case you're wondering how I found you and why I made this issue, it's because I'm collecting stats on gems (I was originally looking for download data) and decided to collect license metadata,too, and make issues for gemspecs not specifying a license as a public service :). See the previous link or my blog post about this project for more information.

Yet Another Problem

After doing Sudo ruby xxxx.rb
/usr/uibl ruibylgews/1.9.1/ (Errno: :EBUSY) e Device or resource busy /sys/class/gpio/export r from piper-2.0.0/u b:65:in export from /usr/lib/ piper-2.e.e/uib/pi piper/bca283 b:34:in pin input. piper.2.0.0/uib/pi piper/pin.rb: sin initialize from /usr/lib/ruby/gems/1.9.1/gems/pi piper 2.0.0/uib/pi piper.rb115:in from /usr/lib/ruby/gems/1.9.1/gems/pi piper-2,0.0/uib/pi piper,rb1151in new block in Watch

Not completely correct.
Sorry😀

Roadmap for PiPiper

@jwhitehorn, @zsyed91,
I'm willing to bring some enhancement to the library, I just need to know if we are ok with it !

  • Better Licence : use standart licence (was a BSD?), add LICENCE file, add licence reference for the bcm2835 lib
  • Add support for PWM
  • Spec without a stub for Pin,I2C, ...
  • Add support for multiple drivers (kernel module, bcm2835 lib, WiringPi, ...)
  • Spec the drivers (how ?!)
  • Non-root usage.
  • ...

wrong ELF class: ELFCLASS32 (RVM + 64Bit Linux)

/home/benny/.rvm/gems/ruby-1.9.3-p392/gems/ffi-1.9.0/lib/ffi/library.rb:123:in `block in ffi_lib': Could not open library '/home/benny/.rvm/gems/ruby-1.9.3-p392/gems/pi_piper-1.3.1/lib/pi_piper/libbcm2835.img': /home/benny/.rvm/gems/ruby-1.9.3-p392/gems/pi_piper-1.3.1/lib/pi_piper/libbcm2835.img: wrong ELF class: ELFCLASS32 (LoadError)
    from /home/benny/.rvm/gems/ruby-1.9.3-p392/gems/ffi-1.9.0/lib/ffi/library.rb:90:in `map'
    from /home/benny/.rvm/gems/ruby-1.9.3-p392/gems/ffi-1.9.0/lib/ffi/library.rb:90:in `ffi_lib'
    from /home/benny/.rvm/gems/ruby-1.9.3-p392/gems/pi_piper-1.3.1/lib/pi_piper/bcm2835.rb:8:in `<module:Bcm2835>'
    from /home/benny/.rvm/gems/ruby-1.9.3-p392/gems/pi_piper-1.3.1/lib/pi_piper/bcm2835.rb:6:in `<module:PiPiper>'
    from /home/benny/.rvm/gems/ruby-1.9.3-p392/gems/pi_piper-1.3.1/lib/pi_piper/bcm2835.rb:3:in `<top (required)>'
    from /home/benny/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require'
    from /home/benny/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:55:in `require'
    from /home/benny/.rvm/gems/ruby-1.9.3-p392/gems/pi_piper-1.3.1/lib/pi_piper.rb:1:in `block in <top (required)>'
    from /home/benny/.rvm/gems/ruby-1.9.3-p392/gems/pi_piper-1.3.1/lib/pi_piper.rb:1:in `each'
    from /home/benny/.rvm/gems/ruby-1.9.3-p392/gems/pi_piper-1.3.1/lib/pi_piper.rb:1:in `<top (required)>'
    from /home/benny/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:60:in `require'
    from /home/benny/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:60:in `rescue in require'
    from /home/benny/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:35:in `require'

Does someone have an idea how to solve that?

Is Pi_Piper able to read DS18B20 heat sensor ?

Hi Folks,

Pi_piper is great !

I'm wondering is Pi_Piper able to read DS18B20 heat sensor ? If yes, how to do it ?
If not, any recommendation gem or solutions ?
My goal is to push the temperature data to Dashing dashboard.

My code works fine run in terminal.

def gettemp(id)

  filename = 'w1_slave'
  filepath = File.new("/sys/bus/w1/devices/#{id}/#{filename}", "w").path
  # “File” belongs to IO class, which contain I/O stream. http://ruby-doc.org/core-2.0.0/IO.html

  File.open(filepath) { |f|
    lines_arr = f.read.lines.to_a
    lines_arr.shift(1) 
    temp_arr = lines_arr.to_s.partition(/.t=/) # saperate the ["xx xx xx xx xx t=", "34.xxxx"]  
    @temp = temp_arr.last.to_f/1000
  }
  return @temp
end

# Use for startup the file
if __FILE__ == $0 then
  puts "Temp : #{gettemp('28-031581efbaff'})
end

pi@raspberry:~/dashing_project$: sudo ruby read_soil_temp.rb
Temp : 25.5

Below is I'm trying to read the sensor in Dashingm but it seems not able to fire the FILE correctly.

~/dashing_project/jobs/sample.rb

# For reading temp/humidity sensor DHT11 gem
require 'dht-sensor-ffi'
# For reading soil remp sensor        
def get_soil_temp(id)
    filename = 'w1_slave'
    filepath = File.new("/sys/bus/w1/devices/#{id}/#{filename}", "w").path
    File.open(filepath) { |f|
        lines_arr = f.read.lines.to_a 
        lines_arr.shift(1) 
        temp_arr = lines_arr.to_s.partition(/.t=/) 
        @temp = temp_arr.last.to_f/1000
    }
    return @temp
end
soil_temp_sensor_id = '28-031581efbaff'

current_air_temp = 0
current_air_humid = 0
current_soil_temp = 0

SCHEDULER.every '5s' do
  last_air_temp = current_air_temp
  last_air_humid = current_air_humid
  sensor_val = DhtSensor.read(17, 11)
  current_air_temp = sensor_val.temp
  current_air_humid = sensor_val.humidity

  if __FILE__ == $0 then
    current_soil_temp = get_soil_temp(soil_temp_sensor_id)
  end

  send_event('air_temp', { current: current_air_temp, last: last_air_temp })
  send_event('air_humid', { current: current_air_humid, last: last_air_humid })
  send_event('soil_temp',  value: current_soil_temp)
end

Please advice, thank you in advance !

Running pi_piper in Rails

Looking for some advise or if anyone has been able to get a basic blinking light scenario website up and running using pi_piper. I'm starting as simple and basic as I can. Created a rails app and in my controller added same ruby code (that works when ran as ruby). Was expecting page I navigated to see lights blink, nothing fancy yet just wanted the code to execute. But i received a Permission denied error.

Error Message: Permission denied @ rb_sysopen - /sys/class/gpio/gpio23/direction

Anyone out there have experience with getting pi_piper to work with rails?

One-wire monitoring with PiPiper

Hello,

I am new to the Raspberry Pi and have been looking to expand my Ruby expertise beyond Sinatra apps and Chef code.

PiPiper seems to be the most mature (and only still active) Ruby library, so it seems like the natural jumping off point.

Looking at the documentation and the code, it doesn't look like there's a One-wire bus interface. Can you confirm this? Am I just looking in the wrong place?

I think I can take pin.rb and kind of extend what's happening there to be able to monitor my one-wire sensors?

Essentially what I think is missing (please correct me anywhere I'm mistaken):

  • A method to read every /sys/bus/w1/devices/28-XXXXX/w1_slave interface
  • A method to parse the data into (, , ) (since w1_slave is two lines of output) (maybe appropriate to include a timestamp?)
  • A method to determine if the value has changed since last poll.

Am I thinking along the right lines here? Any thoughts? Would one-wire monitoring be a feature that would be appropriate/welcome in PiPiper?

Thanks!

SPI partly broken in gems

PiPiper::Spi::set_mode is broken in stable as well as in pre versions because PiPiper::Spi::SPI_MODE* constants are missing..

Resource Not Available

I did this:
'sudo ruby doorcount.rb`
and this came out:

/usr/lib/ruby/gems/1.9.1/gems/pi_piper-2.0.0/lib/pi_piper/bcm2835.rb:65:in write': Device or resource busy - /sys/class/gpio/export (Errno::EBUSY) from /usr/lib/ruby/gems/1.9.1/gems/pi_piper-2.0.0/lib/pi_piper/bcm2835.rb:65:inexport'
from /usr/lib/ruby/gems/1.9.1/gems/pi_piper-2.0.0/lib/pi_piper/bcm2835.rb:34:in pin_input' from /usr/lib/ruby/gems/1.9.1/gems/pi_piper-2.0.0/lib/pi_piper/pin.rb:58:ininitialize'
from /usr/lib/ruby/gems/1.9.1/gems/pi_piper-2.0.0/lib/pi_piper.rb:15:in new' from /usr/lib/ruby/gems/1.9.1/gems/pi_piper-2.0.0/lib/pi_piper.rb:15:inblock in watch'
/usr/lib/ruby/gems/1.9.1/gems/pi_piper-2.0.0/lib/pi_piper/bcm2835.rb:65:in write': Device or resource busy - /sys/class/gpio/export (Errno::EBUSY) from /usr/lib/ruby/gems/1.9.1/gems/pi_piper-2.0.0/lib/pi_piper/bcm2835.rb:65:inexport'
from /usr/lib/ruby/gems/1.9.1/gems/pi_piper-2.0.0/lib/pi_piper/bcm2835.rb:34:in pin_input' from /usr/lib/ruby/gems/1.9.1/gems/pi_piper-2.0.0/lib/pi_piper/pin.rb:58:ininitialize'
from /usr/lib/ruby/gems/1.9.1/gems/pi_piper-2.0.0/lib/pi_piper.rb:15:in new' from /usr/lib/ruby/gems/1.9.1/gems/pi_piper-2.0.0/lib/pi_piper.rb:15:inblock in watch'
/usr/lib/ruby/gems/1.9.1/gems/pi_piper-2.0.0/lib/pi_piper/bcm2835.rb:65:in write': Device or resource busy - /sys/class/gpio/export (Errno::EBUSY) from /usr/lib/ruby/gems/1.9.1/gems/pi_piper-2.0.0/lib/pi_piper/bcm2835.rb:65:inexport'
from /usr/lib/ruby/gems/1.9.1/gems/pi_piper-2.0.0/lib/pi_piper/bcm2835.rb:34:in pin_input' from /usr/lib/ruby/gems/1.9.1/gems/pi_piper-2.0.0/lib/pi_piper/pin.rb:58:ininitialize'
from /usr/lib/ruby/gems/1.9.1/gems/pi_piper-2.0.0/lib/pi_piper.rb:15:in new' from /usr/lib/ruby/gems/1.9.1/gems/pi_piper-2.0.0/lib/pi_piper.rb:15:inblock in watch'

I am using the latest version of pi_piper and ubidots.

Here is the code I am using:

require 'ubidots'

require 'pi_piper'
include PiPiper

savevaluep = 0

@api = Ubidots::ApiClient.new("The Api")

variable = @api.get_variable('The key')
while true do
watch :pin => 26 do
puts'Person Passed'
savevaluep = savevaluep + 1
value = variable.save_value(savevaluep)
savevaluep = 0
end
end

Pin#off? & Pin#on? not working as expected.

EDIT : I understood, this behaviour is by design, but it do not seem very "natural" to me.

irb(main):007:0> r.on; r.on?
=> false

even if r is realy on a high level.

    def off?
      value == GPIO_LOW
    end

use the cached value of the pin (why a cached value ?!) which is not updated after #on or #off

    def off?
      read == GPIO_LOW
    end

is a way to fix the issue

No such file or directory - /sys/class/gpio/gpio4/direction

Hey,
Sorry If this is noob issue, I couldn't see anything in the README.
I've Got a tiny script which loops and prints the output of a pin.

pin = PiPiper::Pin.new(pin: 4, direction: :in, pull: :up)
puts pin.read

I get the following error upon running the script.

$ sudo ruby read_sensor.rb 
/var/lib/gems/1.9.1/gems/pi_piper-1.3.2/lib/pi_piper/pin.rb:24:in `initialize': No such file or directory - /sys/class/gpio/gpio4/direction
from /var/lib/gems/1.9.1/gems/pi_piper-1.3.2/lib/pi_piper/pin.rb:24:in `open'
from /var/lib/gems/1.9.1/gems/pi_piper-1.3.2/lib/pi_piper/pin.rb:24:in `initialize'

I can get the output of my device by echoing /sys/bus/w1/devices/devicenumber/w1_slave

Which is the :pin number?

I had quite some trouble in figuring out that the :pin number actually is the GPIO number, not the physical pin number (and not either the wiringPi number).

So if I want to write to the physical pin number 12 I need to write PiPiper::Pin.new(:pin => 18, :direction => :out).

Would it be possible to add this information somewhere obvious to the documentation?

Tests using actual devices

I'm personally quite skeptical of using stub drivers for testing, it might not capture real device behaviour and things might go wrong in future releases.

To amend this, how about having a set of tests that will run only if the test suite is being run on a raspberry pi and will actually test the underlying hardware? These tests can be exactly the same as the current ones, only using real device drivers, and they will run only a raspberry pi, nowhere else.

We can also make it mandatory for future contributors to write two sets of tests - one using stub drivers and the other using real drivers. Or maybe both of these can be unified by cleverly using the before block.

Thoughts?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.