Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/unknownskl/xbox-smartglass-node
Xbox Smartglass library
https://github.com/unknownskl/xbox-smartglass-node
Last synced: 11 days ago
JSON representation
Xbox Smartglass library
- Host: GitHub
- URL: https://github.com/unknownskl/xbox-smartglass-node
- Owner: unknownskl
- License: mit
- Created: 2021-11-26T18:58:00.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2024-04-11T01:08:13.000Z (7 months ago)
- Last Synced: 2024-10-06T12:36:57.861Z (about 1 month ago)
- Language: TypeScript
- Size: 593 KB
- Stars: 1
- Watchers: 3
- Forks: 0
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Xbox-Smartglass-Node
[![GitHub Workflow - Build](https://github.com/unknownskl/xbox-smartglass-node/workflows/.github/workflows/build.yml/badge.svg?branch=release/0.1.0)](https://github.com/unknownskl/xbox-smartglass-node/actions)
Xbox Smartglass library made in Typescript for controlling your Xbox One and Xbox Series X/S.
## 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-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)