2.1.6 • Published 5 years ago

node-irsdk v2.1.6

Weekly downloads
7
License
MIT
Repository
github
Last release
5 years ago

node-irsdk

Build status Greenkeeper badge Dependencies devDependencies npm version

Unofficial iRacing SDK implementation for Node.js.

node-irsdk provides data access (live telemetry and session info) and most of available commands. You can find some usage examples from utils directory, and there is some data samples too.

Other iRSDK implementations:

Installing

Make sure you have Node.js v6 x64 or later.

npm install --save node-irsdk

API documentation

irsdk

irsdk.init(opts) ⇒ iracing

Initialize JsIrSdk, can be done once before using getInstance first time.

Kind: static method of irsdk
Returns: iracing - Running instance of JsIrSdk

ParamTypeDefaultDescription
optsObjectOptions
opts.telemetryUpdateIntervalInteger0Telemetry update interval, milliseconds
opts.sessionInfoUpdateIntervalInteger0SessionInfo update interval, milliseconds
opts.sessionInfoParsersessionInfoParserCustom parser for session info
var irsdk = require('node-irsdk')
// look for telemetry updates only once per 100 ms
var iracing = irsdk.init({telemetryUpdateInterval: 100})

irsdk.getInstance() ⇒ iracing

Get initialized instance of JsIrSdk

Kind: static method of irsdk
Returns: iracing - Running instance of JsIrSdk

var irsdk = require('node-irsdk')
var iracing = irsdk.getInstance()

iracing ⇐ events.EventEmitter

Kind: global class
Extends: events.EventEmitter
Emits: Connected, Disconnected, Telemetry, TelemetryDescription, SessionInfo
See: EventEmitter API

new JsIrSdk()

JsIrSdk is javascript implementation of iRacing SDK.

Don't use constructor directly, use getInstance.

var iracing = require('node-irsdk').getInstance()

iracing.Consts : IrSdkConsts

iRacing SDK related constants

Kind: instance property of iracing

iracing.camControls : Object

Camera controls

Kind: instance property of iracing

camControls.setState(state)

Change camera tool state

Kind: static method of camControls

ParamTypeDescription
stateCameraStatenew state
// hide UI and enable mouse aim
var States = iracing.Consts.CameraState
var state = States.CamToolActive | States.UIHidden | States.UseMouseAimMode
iracing.camControls.setState(state)

camControls.switchToCar(carNum, camGroupNum, camNum)

Switch camera, focus on car

Kind: static method of camControls

ParamTypeDescription
carNumInteger | String | CamFocusAtCar to focus on
camGroupNumIntegerSelect camera group
camNumIntegerSelect camera
// show car #2
iracing.camControls.switchToCar(2)
      
// show car #02
iracing.camControls.switchToCar('02')
      
// show leader
iracing.camControls.switchToCar('leader')
      
// show car #2 using cam group 3
iracing.camControls.switchToCar(2, 3)

camControls.switchToPos(position, camGroupNum, camNum)

Switch camera, focus on position

Kind: static method of camControls

ParamTypeDescription
positionInteger | CamFocusAtPosition to focus on
camGroupNumIntegerSelect camera group
camNumIntegerSelect camera
iracing.camControls.switchToPos(2) // show P2

iracing.playbackControls : Object

Replay and playback controls

Kind: instance property of iracing

playbackControls.play()

Play replay

Kind: static method of playbackControls

iracing.playbackControls.play()

playbackControls.pause()

Pause replay

Kind: static method of playbackControls

iracing.playbackControls.pause()

playbackControls.fastForward(speed)

fast-forward replay

Kind: static method of playbackControls

ParamTypeDefaultDescription
speedInteger2FF speed, something between 2-16 works
iracing.playbackControls.fastForward() // double speed FF

playbackControls.rewind(speed)

rewind replay

Kind: static method of playbackControls

ParamTypeDefaultDescription
speedInteger2RW speed, something between 2-16 works
iracing.playbackControls.rewind() // double speed RW

playbackControls.slowForward(divider)

slow-forward replay, slow motion

Kind: static method of playbackControls

ParamTypeDefaultDescription
dividerInteger2divider of speed, something between 2-17 works
iracing.playbackControls.slowForward(2) // half speed

playbackControls.slowBackward(divider)

slow-backward replay, reverse slow motion

Kind: static method of playbackControls

ParamTypeDefaultDescription
dividerInteger2divider of speed, something between 2-17 works
iracing.playbackControls.slowBackward(2) // half speed RW

playbackControls.search(searchMode)

Search things from replay

Kind: static method of playbackControls

ParamTypeDescription
searchModeRpySrchModewhat to search
iracing.playbackControls.search('nextIncident')

playbackControls.searchTs(sessionNum, sessionTimeMS)

Search timestamp

Kind: static method of playbackControls

ParamTypeDescription
sessionNumIntegerSession number
sessionTimeMSIntegerSession time in milliseconds
// jump to 2nd minute of 3rd session
iracing.playbackControls.searchTs(2, 2*60*1000)

playbackControls.searchFrame(frameNum, rpyPosMode)

Go to frame. Frame counting can be relative to begin, end or current.

Kind: static method of playbackControls

ParamTypeDescription
frameNumIntegerFrame number
rpyPosModeRpyPosModeIs frame number relative to begin, end or current frame
iracing.playbackControls.searchFrame(1, 'current') // go to 1 frame forward

iracing.telemetry

Latest telemetry, may be null or undefined

Kind: instance property of iracing

iracing.telemetryDescription

Latest telemetry, may be null or undefined

Kind: instance property of iracing

iracing.sessionInfo

Latest telemetry, may be null or undefined

Kind: instance property of iracing

iracing.execCmd(msgId, arg1, arg2, arg3)

Execute any of available commands, excl. FFB command

Kind: instance method of iracing

ParamTypeDescription
msgIdIntegerMessage id
arg1Integer1st argument
arg2Integer2nd argument
arg3Integer3rd argument

iracing.reloadTextures()

Reload all car textures

Kind: instance method of iracing

iracing.reloadTextures() // reload all paints

iracing.reloadTexture(carIdx)

Reload car's texture

Kind: instance method of iracing

ParamTypeDescription
carIdxIntegercar to reload
iracing.reloadTexture(1) // reload paint of carIdx=1

iracing.execChatCmd(cmd, arg)

Execute chat command

Kind: instance method of iracing

ParamTypeDescription
cmdChatCommand
argIntegerCommand argument, if needed
iracing.execChatCmd('cancel') // close chat window

iracing.execChatMacro(num)

Execute chat macro

Kind: instance method of iracing

ParamTypeDescription
numIntegerMacro's number (0-15)
iracing.execChatMacro(1) // macro 1

iracing.execPitCmd(cmd, arg)

Execute pit command

Kind: instance method of iracing

ParamTypeDescription
cmdPitCommand
argIntegerCommand argument, if needed
// full tank, no tires, no tear off
iracing.execPitCmd('clear')
iracing.execPitCmd('fuel', 999) // 999 liters
iracing.execPitCmd('lf') // new left front
iracing.execPitCmd('lr', 200) // new left rear, 200 kPa

iracing.execTelemetryCmd(cmd)

Control telemetry logging (ibt file)

Kind: instance method of iracing

ParamTypeDescription
cmdTelemCommandCommand: start/stop/restart
iracing.execTelemetryCmd('restart')

"Connected"

iRacing, sim, is started

Kind: event emitted by iracing

iracing.on('Connected', function (evt) {
  console.log(evt)
})

"Disconnected"

iRacing, sim, was closed

Kind: event emitted by iracing

iracing.on('Disconnected', function (evt) {
  console.log(evt)
})

"TelemetryDescription"

Telemetry description, contains description of available telemetry values

Kind: event emitted by iracing

iracing.on('TelemetryDescription', function (data) {
  console.log(evt)
})

"Telemetry"

Telemetry update

Kind: event emitted by iracing

iracing.on('Telemetry', function (evt) {
  console.log(evt)
})

"SessionInfo"

SessionInfo update

Kind: event emitted by iracing

iracing.on('SessionInfo', function (evt) {
  console.log(evt)
})

"update"

any update event

Kind: event emitted by iracing

iracing.on('update', function (evt) {
  console.log(evt)
})

iracing~sessionInfoParser ⇒ Object

Parser for SessionInfo YAML

Kind: inner typedef of iracing
Returns: Object - parsed session info

ParamTypeDescription
sessionInfoStringSessionInfo YAML

IrSdkConsts

IrSdkConsts, iRacing SDK constants/enums.

Kind: global constant

var IrSdkConsts = require('node-irsdk').getInstance().Consts

IrSdkConsts.BroadcastMsg

Available command messages.

Kind: static enum of IrSdkConsts
Properties

NameDefaultDescription
CamSwitchPos0Switch cam, args: car position, group, camera
CamSwitchNum1Switch cam, args, driver #, group, camera
CamSetState2Set cam state, args: CameraState, unused, unused
ReplaySetPlaySpeed3Set replay speed, args: speed, slowMotion, unused
ReplaySetPlayPosition4Jump to frame, args: RpyPosMode, Frame Number (high, low)
ReplaySearch5Search things from replay, args: RpySrchMode, unused, unused
ReplaySetState6Set replay state, args: RpyStateMode, unused, unused
ReloadTextures7Reload textures, args: ReloadTexturesMode, carIdx, unused
ChatComand8Chat commands, args: ChatCommand, subCommand, unused
PitCommand9Pit commands, args: PitCommand, parameter
TelemCommand10Disk telemetry commands, args: TelemCommand, unused, unused
FFBCommand11*not supported by node-irsdk**: Change FFB settings, args: FFBCommandMode, value (float, high, low)
ReplaySearchSessionTime12Search by timestamp, args: sessionNum, sessionTimeMS (high, low)

IrSdkConsts.CameraState

Camera state Camera state is bitfield; use these values to compose a new state.

Kind: static enum of IrSdkConsts
Properties

NameDefaultDescription
IsSessionScreen1Is driver out of the car
IsScenicActive2The scenic camera is active (no focus car)
CamToolActive4Activate camera tool
UIHidden8Hide UI
UseAutoShotSelection16Enable auto shot selection
UseTemporaryEdits32Enable temporary edits
UseKeyAcceleration64Enable key acceleration
UseKey10xAcceleration128Enable 10x key acceleration
UseMouseAimMode256Enable mouse aim

IrSdkConsts.RpyPosMode

Kind: static enum of IrSdkConsts
Properties

NameDefaultDescription
Begin0Frame number is relative to beginning
Current1Frame number is relative to current frame
End2Frame number is relative to end

IrSdkConsts.RpySrchMode

Kind: static enum of IrSdkConsts
Properties

NameDefault
ToStart0
ToEnd1
PrevSession2
NextSession3
PrevLap4
NextLap5
PrevFrame6
NextFrame7
PrevIncident8
NextIncident9

IrSdkConsts.RpyStateMode

Kind: static enum of IrSdkConsts
Properties

NameDefaultDescription
EraseTape0Clear any data in the replay tape (works only if replay spooling disabled)

IrSdkConsts.ReloadTexturesMode

Kind: static enum of IrSdkConsts
Properties

NameDefault
All0
CarIdx1

IrSdkConsts.ChatCommand

Kind: static enum of IrSdkConsts
Properties

NameDefaultDescription
Macro0Macro, give macro num (0-15) as argument
BeginChat1Open up a new chat window
Reply2Reply to last private chat
Cancel3Close chat window

IrSdkConsts.PitCommand

Kind: static enum of IrSdkConsts
Properties

NameDefaultDescription
Clear0Clear all pit checkboxes
WS1Clean the winshield, using one tear off
Fuel2Request fuel, optional argument: liters
LF3Request new left front, optional argument: pressure in kPa
RF4Request new right front, optional argument: pressure in kPa
LR5Request new left rear, optional argument: pressure in kPa
RR6Request new right rear, optional argument: pressure in kPa
ClearTires7Clear tire pit checkboxes
FR8Request a fast repair
ClearWS9Disable clear windshield
ClearFR10Disable fast repair
ClearFuel11Disable refueling

IrSdkConsts.TelemCommand

Kind: static enum of IrSdkConsts
Properties

NameDefaultDescription
Stop0Turn telemetry recording off
Start1Turn telemetry recording on
Restart2Write current file to disk and start a new one

IrSdkConsts.CamFocusAt

When switching camera, these can be used instead of car number / position

Kind: static enum of IrSdkConsts
Properties

NameDefaultDescription
Incident-3
Leader-2
Exciting-1
Driver0Use car number / position instead of this

Development

To develop node-irsdk itself, you need working working installation of node-gyp.

Useful commands:

  • npm install builds binary addon
  • npm run ready runs tests and updates docs

Making a new release

  1. Check if license file needs updating
  2. npm run ready
  3. Tag new version using npm version, push to Github
  4. Wait for Appveyor to upload binaries
  5. npm publish
  6. Add release notes to Github, helper npm run release-notes.

License

Released under the MIT License.

Credits

Parts of original irsdk used, license available here: https://github.com/apihlaja/node-irsdk/blob/master/src/cpp/irsdk/irsdk_defines.h (BSD-3-Clause)

2.1.6

5 years ago

2.1.5

5 years ago

2.1.4

6 years ago

2.1.3

6 years ago

2.1.1

6 years ago

2.1.0

6 years ago

2.0.0

7 years ago

2.0.0-beta1

7 years ago

1.1.2

7 years ago

1.1.1

7 years ago

1.1.0

8 years ago

1.0.16

8 years ago

1.0.15-beta7

8 years ago

1.0.15-beta6

8 years ago

1.0.15-beta5

8 years ago

1.0.15-beta4

8 years ago

1.0.15-beta3

8 years ago

1.0.15-beta2

8 years ago

1.0.1-5.1

8 years ago

1.0.15

8 years ago

1.0.14

8 years ago

1.0.13

8 years ago

1.0.12

8 years ago

1.0.11

8 years ago

1.0.10

9 years ago

1.0.9

9 years ago

1.0.8

9 years ago

1.0.7

9 years ago

1.0.6

9 years ago

1.0.5

9 years ago

1.0.4

9 years ago

1.0.3

9 years ago

1.0.2

9 years ago

1.0.1

9 years ago