tessel-apple-remote
v0.1.1
Published
An event-emitter interface to an Apple IR Remote using the Tessel IR Module
Downloads
2
Readme
tessel-apple-remote
An event-emitter interface to an Apple IR Remote using the Tessel IR Module
This module takes the burden off of processing the infared byte buffers and extends the events from ir-attx4 to provide a higher-level API for programming against Apple remotes. This module supports both the first and second generation of remotes.
usage
var tessel = require('tessel');
var port = tessel.port['A'];
var apple = require('tessel-apple-remote')(port);
apple.on('menu', function() {
console.log('menu');
});events
Simple button presses:
menucenterupdownrightleftplay
Each event name has a corresponding [name].long event for long presses:
menu.longcenter.longup.longdown.longright.longleft.longplay.long
NOTE: both play and play.long only apply to the 2nd Generation remote.
id
Each Apple Remote sends along a simple remote ID between 0-255 (0xFF). To differentiate between remotes, you can prefix both the command events and continuation events with that id. For example, if your remote had the ID of 50
apple.on('50.menu', function() {
console.log('my remote clicked "menu"');
});To enable discovery on the fly of remote IDs, an id event is emitted, with a value of the new id. This event will only be emitted the first time that ID is encountered.
apple.on('id', function(id) {
console.log('a new challenger appears', id);
});To test this, you can either use two remotes, or you can first press a button on the remote, notice the id event fires, then change your remote's ID by pressing and holding the menu + center buttons for about 10 seconds. After your remote's ID is changed, another id event will be emitted on the next button press. See examples/lockout.js for an example of how to isolate your code to the first remote to send an event.
data
The standard data event is unmodified.
apple.on('data', function(data) {
// access to the low-level duration stream
console.log(data.toString('hex'));
});error
The standard error event is unmodified.
apple.on('error', function(error) {
console.log(error);
});examples
- Plug the IR module into Port A on your Tessel, then connect via USB
tessel run [script]to test scripts in examples folder.- Click buttons on your remote and commence mad science.
notes
Helpful reference material on the implemenation:
- https://github.com/tessel/ir-attx4#api-infrared-on-data-callback-data-Emitted-when-an-infrared-signal-is-detected
- http://techdocs.altium.com/display/FPGA/NEC+Infrared+Transmission+Protocol
- http://en.wikipedia.org/wiki/Apple_Remote#Technical_details
- https://github.com/squeed/AppleRemoteSender/blob/master/AppleRemoteSender.cpp
- https://hifiduino.wordpress.com/apple-aluminum-remote/
hardware
You need:
- a Tessel
- an IR module
- either a first-generation (white) Apple remote
- or a second-generation (silver) Apple remote

