integrate image-uploads from eye-fi cards into your application
JavaScript
Switch branches/tags
Nothing to show
Latest commit 75bc6e3 Sep 28, 2012 Martin Schuhfuss removed excessive logging
Permalink
Failed to load latest commit information.
lib
.gitignore
LICENSE
README.md
config.json.sample
index.js
package.json
standalone.js

README.md

Node-Eyefi

Allows an Eye-Fi card to post images directly to your node.js-application.

Installation

Standalone

git clone git://github.com/usefulthink/node-eyefi.git
cd node-eyefi && npm install .

As a module

npm install eyefi

Preparations

  • you'll obviously need an Eye-Fi card. Amazon has these.
  • connect the eye-fi card to your computer and run the setup found on the card (on linux you might want to try Dave Hansen's eyefi-config found here: http://goo.gl/D3UVy)
  • the card should be configured to use your network with the TransferRelay mode (and any other fancy-pants feature) turned off
  • test it with the software provided.
  • make sure that the card is in the same network (and network-segment, i.e. can send packets to) as your computer.
  • close the eye-fi helper and manager.
  • Locate the Settings.xml-File (Windows: \Users\<username>\Application Data\Eye-Fi\Settings.xml, OS-X: ~/Library/Eye-Fi/Settings.xml) to find out the cards mac-address and uploadKey

Running standalone

# create a file named config.json (just copy the config.json.sample)
cp config.json.sample config.json

# edit config.json and enter your cards mac-address and uploadKey

# start the server
node standalone.js

now take a photo to see if it's working.

Integrate into your own project

Integration is possible, and not really complicated. It basically just works (or maybe doesn't) and emits an imageReceived-Event whenever the upload of an image is completed. Additionally, you may listen for uploadProgress-events which are fired during the file-upload.

By default, logging will print error-messages to the console. This is something I'm working on. (If you want to customize logging, the only way for now is to create your own logger-instance (see standalone.js))

var eyefi = require('eyefi');

var eyefiServer = eyefi({
    uploadPath : '/where/uploaded/files/are/stored',
    cards : {
        '<macaddress>': {
            uploadKey: '<uploadKey>'
        }
    }
}).start();

eyefiServer.on('imageReceived', function(data) {
    console.log('received an image: ' + data.filename);
});

eyefiServer.on('uploadProgress', function(progress) {
    console.log( (100*progress.received/progress.expected).toFixed(2) + '% complete');
});

Doesn't work?

Shit happens. File an issue or drop me a line. I'll see what I can do.

Dive deeper?

If you want to undestand what is really going on behind the scenes, you could start here:

Acknowledgements

Inspired by prior work of Sebastian Hoitz and Thomas Schaaf – their project (http://goo.gl/HOxO2) gave me some insights and was some kind of starting-point for me.

Also, thanks to all the people who dissected the eye-fi cards and the protocols.