# xbox-smartglass-core-node

> NodeJS smartglass library for controlling a Xbox

Latest version **0.6.10** (published 2021-12-17) · MIT license · 0 weekly downloads

## Install

```sh
npm install xbox-smartglass-core-node
pnpm add xbox-smartglass-core-node
yarn add xbox-smartglass-core-node
bun add xbox-smartglass-core-node
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.6.10 |
| Published | 2021-12-17 |
| First published | 2018-06-12 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 6 |
| Unpacked size | 144.5 KB |
| Known vulnerabilities | 0 (+9 in 3 direct dependencies) |
| Install scripts | no |
| GitHub stars | 40 |
| Author | UnknownSKL |
| Maintainers | unknownskl |
| Keywords | xbox, xbox one, smartglass |

## Links

- npm: https://www.npmjs.com/package/xbox-smartglass-core-node
- Repository: https://github.com/unknownskl/xbox-smartglass-core-node
- Issues: https://github.com/unknownskl/xbox-smartglass-core-node/issues
- npm.io page: https://npm.io/package/xbox-smartglass-core-node

## Dependencies (6)

- [uuid](https://npm.io/package/uuid.md) ^8.3.2
- [debug](https://npm.io/package/debug.md) ^4.3.2
- [elliptic](https://npm.io/package/elliptic.md) ^6.5.2
- [jsrsasign](https://npm.io/package/jsrsasign.md) ^10.3.0
- [uuid-parse](https://npm.io/package/uuid-parse.md) ^1.1.0
- [hex-to-binary](https://npm.io/package/hex-to-binary.md) ^1.0.1

## Recent versions

- 0.6.10 (latest) — 2021-12-17
- 0.6.9 — 2021-08-06
- 0.6.8 — 2021-04-01
- 0.6.7 — 2020-11-20
- 0.6.5 — 2020-08-01
- 0.6.4 — 2020-04-17
- 0.6.3 — 2020-01-11
- 0.6.2 — 2019-09-06
- 0.6.1 — 2019-08-02
- 0.6.0 — 2019-06-28
- 0.5.1 — 2019-06-23
- 0.5.0 — 2019-06-14
- 0.4.3 — 2019-05-31
- 0.4.2 — 2019-05-24
- 0.4.1 — 2019-05-11
- … 11 more at https://npm.io/package/xbox-smartglass-core-node/versions

## README

# Xbox-Smartglass-Core-Node

[![GitHub Workflow - Build](https://github.com/OpenXbox/xbox-smartglass-core-node/workflows/.github/workflows/build.yml/badge.svg?branch=release/0.6.10)](https://github.com/OpenXbox/xbox-smartglass-core-node/actions)
[![Quality Gate](https://sonarcloud.io/api/project_badges/measure?project=xbox-smartglass-core-node&metric=alert_status&branch=release/0.6.10)](https://sonarcloud.io/component_measures?id=xbox-smartglass-core-node&metric=alert_status)
[![Technical debt](https://sonarcloud.io/api/project_badges/measure?project=xbox-smartglass-core-node&metric=sqale_index&branch=release/0.6.10)](https://sonarcloud.io/component_measures?id=xbox-smartglass-core-node&metric=sqale_index)
[![Bugs](https://sonarcloud.io/api/project_badges/measure?project=xbox-smartglass-core-node&metric=bugs&branch=release/0.6.10)](https://sonarcloud.io/component_measures?id=xbox-smartglass-core-node&metric=bugs)
[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=xbox-smartglass-core-node&metric=coverage&branch=release/0.6.10)](https://sonarcloud.io/component_measures?id=xbox-smartglass-core-node&metric=coverage)
[![Discord](https://img.shields.io/badge/discord-OpenXbox-blue.svg)](https://openxbox.org/discord)


NodeJS smartglass library for controlling a Xbox.

## Features

- Detect Xbox consoles on the network that are turned on
- Retrieve ip address, name and console id
- Simple controls like navigation and controller buttons
- Retrieve active application in realtime
- Send STB and AVR remote commands like channels and volume

## Dependencies

- NodeJS >= 12.x

## How to install

`npm install xbox-smartglass-core-node --save`

## Functions

    const Smartglass = require('xbox-smartglass-core-node')
    var SystemInputChannel = require('xbox-smartglass-core-node/src/channels/systeminput')
    var SystemMediaChannel = require('xbox-smartglass-core-node/src/channels/systemmedia')
    var TvRemoteChannel = require('xbox-smartglass-core-node/src/channels/tvremote')

    var sgClient =  Smartglass()
    sgClient.connect(ip).then(function(){
        sgClient.addManager('system_input', SystemInputChannel())
        sgClient.addManager('system_media', SystemMediaChannel())
        sgClient.addManager('tv_remote', TvRemoteChannel())
    }, function(error){
        console.log(error)
    })

    # Send DVR Record command

    sgClient.recordGameDvr().then(function(status){
        console.log('DVR record send')
    }).catch(function(error){
        console.log('DVR record error:', error)
    })

####  SystemInputChannel

    const Smartglass = require('xbox-smartglass-core-node')
    var SystemInputChannel = require('xbox-smartglass-core-node/src/channels/systeminput');

    var sgClient =  Smartglass()
    sgClient.addManager('system_input', SystemInputChannel())

    sgClient.getManager('system_input').sendCommand('nexus').then(function(button){ console.log(button) }, function(error){ console.log(error) });
    sgClient.getManager('system_input').sendCommand('left').then(function(button){ console.log(button) }, function(error){ console.log(error) });
    sgClient.getManager('system_input').sendCommand('a').then(function(button){ console.log(button) }, function(error){ console.log(error) });

####  SystemMediaChannel

    const Smartglass = require('xbox-smartglass-core-node')
    var SystemMediaChannel = require('xbox-smartglass-core-node/src/channels/systemmedia');

    var sgClient =  Smartglass()
    sgClient.addManager('system_media', SystemMediaChannel())

    sgClient.getManager('system_media').sendCommand('play').then(function(button){ console.log(button) }, function(error){ console.log(error) });
    sgClient.getManager('system_media').sendCommand('pause').then(function(button){ console.log(button) }, function(error){ console.log(error) });
    var media_state = sgClient.getManager('system_media').getState()


####  TvRemoteChannel

    const Smartglass = require('xbox-smartglass-core-node')
    var TvRemoteChannel = require('xbox-smartglass-core-node/src/channels/tvremote');

    var sgClient =  Smartglass()
    sgClient.addManager('tv_remote', TvRemoteChannel())

    sgClient.getManager('tv_remote').getConfiguration().then(function(configuration){ console.log(configuration) }, function(error){ console.log(error) });
    sgClient.getManager('tv_remote').getHeadendInfo().then(function(configuration){ console.log(configuration) }, function(error){ console.log(error) });
    sgClient.getManager('tv_remote').getLiveTVInfo().then(function(configuration){ console.log(configuration) }, function(error){ console.log(error) });
    sgClient.getManager('tv_remote').getTunerLineups().then(function(configuration){ console.log(configuration) }, function(error){ console.log(error) });
    sgClient.getManager('tv_remote').getAppChannelLineups().then(function(configuration){ console.log(configuration) }, function(error){ console.log(error) });

    sgClient.getManager('tv_remote').sendIrCommand('btn.vol_up').then(function(button){ console.log(button) }, function(error){ console.log(error) });
    sgClient.getManager('tv_remote').sendIrCommand('btn.vol_down').then(function(button){ console.log(button) }, function(error){ console.log(error) });

## How to use

See the [examples](examples) folder for examples

## Setting up the Xbox

The plugin needs to be allowed to connect to your Xbox. To allow this make sure you set the setting to allow anonymous connections in Settings -> Devices -> Connections.

## Known Issues

- When sending multiple commands at once the protocol can disconnect

## Changelog

See [changelog](CHANGELOG.md)

---
_Source: https://npm.io/package/xbox-smartglass-core-node · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
