0.0.1 • Published 8 years ago

node-thinkgear-sockets v0.0.1

Weekly downloads
3
License
MIT
Repository
github
Last release
8 years ago

node-thinkgear-sockets

Client library for the ThinkGear Socket Protocol from NeuroSky.

This library is based on node-neurosky, but updated to work with ThinkGear Connect 4.1.8.

Note: It seems that Neurosky has changed the protocol from their documentation. The change is that no appKey or appName need to be sent to the server. Instead the config should be sent right after the connection is made. If you are using an older version of Neurosky's ThinkGear Connect application, this library might not work for you.

You'll need one of these:

Fashion!

Usage

Install with NPM:

$ npm install node-thinkgear-sockets

Include the module:

var thinkgear = require('node-thinkgear-sockets');

Create a client instance:

var client = thinkgear.createClient({ enableRawOutput: true });

Data Events

Clients fire three types of data events: blink_data, raw_data, data. You can add a listener like this:

client.on('data',function(data){

	// magical and wonderful things

});

Connect to the headset

Connect to the headset like this:

client.connect();

All of this is in the example/app.js file too.

Troubleshooting

Make sure that your headset is paired and connected before you start the Node app. It may take 5-10 seconds for data to start streaming to your Node app after you make the connection.

The ThinkGear Connector app will multiplex connections to the headset, so if you are unsure if your connection is working correctly, you can use the included "Brainwave Visualizer App" while your Node app is running. If data is streaming correctly to the Brainwave Visualizer, then it should be streaming correctly to your Node app as well.

Data

data events

The output of data events looks like this:

{
	eSense: {
		attention: 53,
		meditation: 47
	},
	eegPower: {
		delta: 416474,
		theta: 33592,
		lowAlpha: 3877,
		highAlpha: 3142,
		lowBeta: 1569,
		highBeta: 3125,
		lowGamma: 3521,
		highGamma: 1451
	},
	poorSignalLevel: 0
}

blink_data events

Example: { blinkStrength: 55 }

raw_data events

Example: { rawEeg: 43 }

Note that raw_data events stream at a rate of about 500 per second, so make sure your event handlers are relatively quick!

TODO

  • Tests
  • Use Node Streams for raw data to add some buffering