HOWTO get your Raspberry Pi running owncloud, tt-rss and thinkup

March 21st, 2013

Today a case for my Raspberry Pi arrived from Adafruit arrived and it is time for some spring cleaning.

I was running the XBMC distro on the pi, but found it cumbersome to listen to music in the home office that way. So time to start with a fresh Raspbian install.

Here are my notes:

  • Get the current Raspbian release from Raspbian.org and install it on a
    4GB flash disk.
  • Boot the new disk and make the following configurations using
    raspi-config which is run the first time it starts up.

    – Use only 16M for GPU since I’m not running an X desktop
    – set appropriate timezone
    – set appropriate locale
    – expand fs to use entire 4GB disk
    – change pi passwd
    – enable ssh access
    – update
    – reboot

  • Now some miscellaneous setup to make life easier later on. Both tt-rss and thinkup require MySQL, but I’ll also want to use it for
    owncloud too. So install MySQL server:

    sudo apt-get install mysql-server

    Avahi (aka bonjour) is a very nice network tool that is a DNS-less way
    to announcing your hostname on the local network. Most (all) linux
    tools support it, but you’ll need Apple’s Bonjour kit for Windows.
    That means you can just ‘ssh raspberrypi.local‘ or browse to
    http://raspberrypi.local/

    sudo apt-get install avahi-utils

    I like emacs and screen is useful.

    sudo apt-get install emacs23-nox screen

    At this point I stop using the keyboard/monitor connected to the Raspberry Pi and use an ssh session from my laptop to do the rest.

  • First install ownCloud by taking a look here: http://software.opensuse.org/download/package?project=isv:ownCloud:community&package=owncloud. Then connect to your Raspberry Pi:

    ssh pi@raspberrypi.local
    sudo -i

    Now run this script which I slightly modified from their page:

    wget http://download.opensuse.org/repositories/isv:ownCloud:community/Debian_6.0/Release.key
    apt-key add - < Release.key

    echo 'deb http://download.opensuse.org/repositories/isv:ownCloud:community/Debian_6.0/ /' >> /etc/apt/sources.list.d/owncloud.list
    apt-get update
    apt-get install owncloud

    At this point you’ll have all the required packages are installed. Now point a browser to http://raspberrypi.local/owncloud

    You will need to create an owncloud admin account and will want to then expand the Advanced tab and to use a MySQL server instead of SQLite. Fill in root, mysql root password (I didn’t bother to set an mysql admin password, so null in my case). For the database, use owncloud and database host localhost. It may take a couple minutes to be complete, so be patient.

  • Now install tt-rss doing the following steps:

    cd /var/www/

    wget -c https://github.com/gothfox/Tiny-Tiny-RSS/archive/1.7.4.tar.gz

    And follow the instructions here http://tt-rss.org/redmine/projects/tt-rss/wiki/InstallationNotes which are essentially:

    tar zxvf 1.7.4.tar.gz
    mv Tiny-Tiny-RSS-1.7.4 tt-rss

    chown -R www-data:www-data tt-rss

    You will have to manually create a mysql database and import the schema

    mysql -u root
    mysql> create database ttrss;
    mysql> quit

    Now import the database schema (a fancy way to say the database tables and some initial data)

    cd tt-rss/schema
    mysql -u root ttrss < ttrss_schema_mysql.sql

    And a little editing the configuration file...

    cd /var/www/tt-rss

    cp config.php-dist config.php

    emacs config.php (or use vi, nano, etc)

    I made the following edits:

    define('DB_TYPE', "mysql");
    define('DB_HOST', "localhost");
    define('DB_USER', "root");
    define('DB_NAME', "ttrss");
    define('DB_PASS', "");

    define('SELF_URL_PATH', 'http://raspberrypi.local/tt-rss/');
    define('SINGLE_USER_MODE', true);

    Point a browser to http://raspberrypi.local/tt-rss

    From there login with default login/password of admin/password and you are done.

  • Finally install http://www.thinkupapp.com/docs/install/quickstart.html

    The one package you’ll need that isn’t already installed at this point is php5-curl.

    apt-get install php5-curl

    Now get the kit. I used wget and the site provided the kit, but with an unusual name.


    cd /var/www
    wget -c http://thinkupapp.com/download/
    mv index.html thinkup-1.3.1.zip
    unzip thinkup-1.3.1
    chown -R www-data:www-data thinkup

    Almost done. Point a browser to http://raspberrypi.local/thinkup and complete the configuration.

    database host: localhost

    database name: thinkup

    user: root

    password: blank, in my case or whatever you set the mysql root password to.

    I (and probably you) don’t have a smtp server configured, so in order to activate your account, you’ll need to do this: http://www.thinkupapp.com/docs/troubleshoot/common/advanced/directdb.html

    # mysql -u root thinkup

    mysql> select id,full_name,is_activated from tu_owners;
    +—-+————-+————–+
    | id | full_name | is_activated |
    +—-+————-+————–+
    | 1 | Marc Nozell | 0 |
    +—-+————-+————–+
    1 row in set (0.00 sec)

    mysql> update tu_owners set is_activated=1 where id=1;
    mysql> quit

    Done! Now go back to http://raspberrypi.local/thinkup and configure the plugins to your favorite social media sites.

Trevor @ NH Mens’ Gymnastics Championships 2013

March 18th, 2013

Back from the NH Mens’ Gymnastics Championships — Trevor placed 2nd All Around and 1st in Floor, Rings and PBars. Nice way to end his gymnastics career.

Except for the New England Regionals the beginning of April of course.


  • Still Rings

  • Pommel Horse

  • Floor

  • High Bar

  • Parallel Bars

  • Vault

7 hours of engineering pit from New Hampshire GSR FIRST Robotics competition compressed to 83 seconds

March 2nd, 2013

As soon as they opened the door at 8am this morning, I put the camera, tripod + arduino hack at the very top of the seating in the Verizon Wireless Center pointing down at the pit where the robots are prepped for competition.


*BEST* GSR (NH) FIRST Robotics time lapse in the pit (10fps)


GSR (NH) FIRST Robotics time lapse in the pit (5fps)


GSR (NH) FIRST Robotics time lapse in the pit (20fps)

After nearly seven hours (the length my camera’s battery lasted taking photos every 30 seconds) there were 835 photos which were converted to an AVI using:

mencoder -nosound -ovc lavc -lavcopts vcodec=mjpeg -o timelapse-10fps.avi -mf type=jpeg:fps=10 mf://*.JPG

and then converted to a much smaller M4V file using ghb aka the very handy Handbrake tool.

Sony Alpha-100 DSLR shutter control using an arduino and reed switches

February 9th, 2013

This is a follow up to my “time lapse photography using an arduino to drive a Sony Alpha-100 DSLR” post — basically I fixed it to ‘do it right’ instead of it being a horrible hack.

Here is the improved circuit diagram:

BetterCamera_bb

This uses two Reed Switches from Radio Shack for about $3 each — sure I could have used other types of switches or a transitor, but they use magnetism which is cooler ;-)

  1. Buy a cheap (~$7.00) shutter release cord to sacrifice to the project.
  2. Carefully cut and strip the wires from release cord. Shorting the green and blue wires causes the camera to focus. Shorting the green, blue and red wires after focusing causes the camera to shoot.
  3. Remember that my soldering days are long ago (hey, it was only an EE minor) and have one of the kids at our FIRST Robotics do it for me. Here is the result. Note that blue->white.

    Shutter release cord mapping

  4. Then connected the wires from the shutter release cord to pins as follows: (see the above Fritzing image)
    Green -> First Reed Switch
    Red -> Second Reed Switch
    Blue/White -> shared line with the other side of the switches (not this isn’t tied to ground or anything else)

  5. Now the improved code: I call it BetterCamera.ino


    /*
    * A better camera control for a Sony A-100 DSLR
    * marc@nozell.com
    */

    // Pin 13 has an LED connected on most Arduino boards.
    // give it a name:
    int led = 13;
    int relayA = 2;
    int relayB = 3;

    // the setup routine runs once when you press reset:
    void setup() {

    Serial.begin(9600);

    if (Serial.available() )
    Serial.println("-- Starting ---");

    // initialize the digital pin as an output.
    pinMode(led, OUTPUT);
    pinMode(relayA, OUTPUT);
    pinMode(relayB, OUTPUT);

    }

    // the loop routine runs over and over again forever:
    void loop() {

    Serial.println("-- Focusing ---");

    // first focus -- short white & green

    digitalWrite(relayA, HIGH);
    delay(2000); // 2 sec
    digitalWrite(relayA, LOW);
    delay(1000); // 1 sec

    Serial.println("-- Take Photo ---");

    // then take a photo -- short white, green & red

    digitalWrite(relayA, HIGH);
    digitalWrite(relayB, HIGH);
    delay(1000); // 1 sec
    digitalWrite(relayA, LOW);
    digitalWrite(relayB, LOW);

    Serial.println("-- Sleep for 30s ---");
    delay(23000); // 2 + 1 + 1 + 3 + 23

    for (int i = 0; i < 3; i++) { // 3seconds
    digitalWrite(led, HIGH);
    delay(500);
    digitalWrite(led, LOW);
    delay(500);
    Serial.print(".");
    }
    Serial.println("!");
    }

  6. If you connect the release to the camera while the camera is on, even if here is no power to the arduino, it will take a couple photos. That is the kink. Just connect it up with the camera off and it will be fine.
  7. Consider setting the photo size to ‘standard’ — it saves a lot on disk space.
  8. Now find something interesting to point your camera at and come back later. In my case it was our backyard the day after the Nemo Blizzard of 2013 (we got all the snow overnight, so it isn’t riveting content).
  9. Download all the photos to a directory and use this linux command to convert the JPG images to an AVI file.

    mencoder -nosound -ovc lavc -lavcopts vcodec=mjpeg -o timelapse-30fps.avi -mf type=jpeg:fps=30 mf://*.JPG
  10. Before uploading to youtube, I ran it through Handbrake to knock down the size from 260M to less than 70MB.

Installing owncloud on a Raspberry Pi

January 17th, 2013

Spoiler: Just follow the official installation guide and you’ll be fine. Although you’ll probably want to put owncloud data on external storage. Surprised? It is just another linux server!

Below are the commands I used. Those in bold are where I did something slightly different in order to change the location where files are stored. In my case I have a powered USB disk mounted on /mnt.


$ sudo -i
[sudo] password for marc:
# apt-get install apache2 php5 php5-gd php-xml-parser \
php5-intl php5-sqlite php5-mysql smbclient curl \
libcurl3 php5-curl
...a bunch of packages installed...
# cd /var/www/
# tar jxf ~marc/owncloud-4.5.5.tar.bz2
# chown -R www-data:www-data owncloud/apps
# chown -R www-data:www-data owncloud/config
# mkdir /mnt/owncloud-data
# chown www-data:www-data /mnt/owncloud-data
# ln -s /mnt/owncloud-data/ /var/www/owncloud/data

Then point a browser to http://raspberrypi.local/owncloud and take all the defaults. That is leave the file location as /var/www/owncloud/data

Finally go download the sync clients from http://owncloud.org/sync-clients/ and drag-n-drop files in your ~/owncloud.

For testing I had ~180M of files in my ~/owncloud directory and the apache2 process hammered the RPi cpu for a while for the first sync from my desktop.

time lapse photography using an arduino to drive a Sony Alpha-100 DSLR

December 28th, 2012

Finally I got around to working out most of the kinks of having the an arduino control the shutter release of a Sony Alpha-100 DSLR camera.

  1. Buy a cheap (~$7.00) shutter release cord to sacrifice to the project.
  2. Carefully cut and strip the wires from release cord. Shorting the green and blue wires causes the camera to focus. Shorting the green, blue and red wires after focusing causes the camera to shoot.
  3. Remember that my soldering days are long ago (hey, was only an EE minor) and have one of the kids at our FIRST Robotics do it for me. Here is the result. Note that blue->white. The blue wires I have all seem to be a bit flakey.

    Shutter release cord mapping

  4. Find someone who has done something similar: http://ujwal.shrestha.me/arduino-intervalometer-for-sony-dslr/ and leverage their code. I’m not sure that is the right solution, but it worked for me. Something with MOSFETs I think, but that was years ago…

  5. Then connected the wires from the shutter release cord to pins as follows:
    Green -> Ground
    Red -> Digital pin 8
    Blue/White -> Digital pin 9

    Ardiuno pin mapping

  6. Now the code. I named it aifs30.ino:

    /*

    Heavily based on:

    http://ujwal.shrestha.me/arduino-intervalometer-for-sony-dslr/

    For complete writeup, see http://nozell.com/blog/

    The shutter release has 3 wires: green, red, blue which I had soldered
    to green, red and white (my blue wires are flakey)

    green - ground
    red - digital 8
    blue/white - digital 9

    green + blue/white => focus
    green + blue/white + red => take photo

    */

    void setup(void)
    {
    Serial.begin(115200);
    }

    void loop() {

    if (Serial.available() )
    Serial.println("VVVVVVVVVV");

    pinMode(8,OUTPUT);
    delay(100);
    pinMode(9,OUTPUT);

    if (Serial.available() )
    Serial.println("Sleep for 1/2 seconds");

    delay(500);

    if (Serial.available() )
    Serial.println("wake up and take photo ");

    pinMode(8,INPUT);

    delay(100);

    pinMode(9,INPUT);

    if (Serial.available() )
    Serial.println("ZZZZZZZZ Sleep for 30s");

    delay(10000);
    delay(10000);
    delay(10000);

    if (Serial.available() )
    Serial.println("^^^^^^^^^^");
    }

  7. If you connect the release to the camera while the camera is on, even if here is no power to the arduino, it will take a couple photos. That is the kink. Just connect it up with the camera off and it will be fine.
  8. Consider setting the photo size to ‘standard’ — it saves a lot on disk space.
  9. Now find something interesting to point your camera at and come back later. In my case it was our backyard chickens.
  10. Download all the photos to a directory and use this linux command to convert the JPG images to an AVI file.

    mencoder -nosound -ovc lavc -lavcopts vcodec=mjpeg -o timelapse-10fps.avi -mf type=jpeg:fps=10 mf://*.JPG
  11. upload to youtube and enjoy the results

Anti-Obama sign does not have the intended effect

November 8th, 2012

Whie the sign has been up on Baboosic Lake Rd, Merrimack, NH for a few weeks, it was only on election day I stopped and took a photo. Oddly that was the first time I noticed the typo. Who misspells “YOU” as “YOE”?

IF YOE HATE YOUR GRAND KIDS VOTE OBAMA


Today my wife noticed someone had updated the sign.


I VOTED FOR OBAMA BECAUSE OF THIS SIGN

President Obama (w/ President Clinton) Rally in Concord, NH (2012)

November 8th, 2012
Clinton, Lynch, ObamaSeamus the Romney Dog?It was a bit nippy (pre-time change)DSC06504.JPG4 city block line!Veterans for Obama
Crowd photo releaseGene Robinson Patricia J. Lee OFA_NHObama for America NH  Patricia J. Lee NH Senator Jeanne ShaheenNH Governor John Lynch w/ Dr. Susan Lynch
NH Governor John Lynch w/ Dr. Susan LynchNH Governor John Lynch w/ Dr. Susan LynchDSC06572.JPGSecret Service with his violin caseSecret Service with their guitar casesDSC06592.JPG
President ClintonPresident ClintonPresident ClintonPresident ClintonPresident ClintonPresident Clinton

President Obama (w/ President Clinton) Rally in Concord, NH (2012), a set on Flickr.

This was a *huge* rally 2 days before the election. Over 14k people, the largest ever in NH. While Kids #4, #5, #6 & I got there around 6:15am, there was already a long line and we didn’t get a great viewing spot. Before they opened the gates, the line serpentined up and down Main Street four times.

Senators Ayotte, Talent, Thune; Gov Jindal; Congresswoman Blackburn

November 8th, 2012
DSC06495.JPGDSC06494.JPGDSC06493.JPGDSC06477.JPGDSC06467.JPGDSC06457.JPG
DSC06422.JPGDSC06414.JPGDSC06403.JPGDSC06394.JPGDSC06388.JPGDSC06385.JPG
DSC06384.JPGDSC06383.JPGDSC06381.JPGDSC06359.JPGDSC06358.JPGDSC06357.JPG
DSC06491.JPGDSC06474.JPGDSC06451.JPGDSC06432.JPGDSC06399.JPGDSC06396.JPG

Senators Ayotte, Talent, Thune; Gov Jindal; Congresswoman Blackburn, a set on Flickr.

It would be a crime *not* to take a look at all the national political figures making their way through NH every four years. Regardless of your political persuasion.

TIL Senator John Thune is really tall.

Keene Pumpkinfest 2012

November 8th, 2012
Ernie, Burt, Elmo and Cookie MonsterBest use of stemKeene Pumpkin Festival#YOLOLots of jack'o lanternsLots of people
redditDSC06197.JPGMust be a scary pumpkinDr WhoBugged out!SuperPumpkin!
Another SuperPumpkinWicked was a popular themeCan I get an upvote?Got Ovaries? Avoid Ovide!Lots and lots of pumpkinsDSC06176.JPG
That was a huge pumpkinhead!

Keene Pumpkinfest 2012, a set on Flickr.

Sadly Keene, NH did not win back the world record for most jack-o-lanterns…