
Security News
The Hidden Blast Radius of the Axios Compromise
The Axios compromise shows how time-dependent dependency resolution makes exposure harder to detect and contain.
yamaha-nodejs
Advanced tools
A node module to control your yamaha receiver. Tested with RX-V775, should work with all yamaha receivers with a network interface.
npm install yamaha-nodejs
var YamahaAPI = require("yamaha-nodejs");
var yamaha = new YamahaAPI("192.168.0.100");
yamaha.powerOn().then(function(){
console.log("powerOn");
yamaha.setMainInputTo("NET RADIO").then( function(){
console.log("Switched to Net Radio");
yamaha.selectWebRadioListItem(1).then(function(){
console.log("Selected Favorites");
yamaha.selectWebRadioListItem(1).then(function(){});
});
});
});
var yamaha = new Yamaha("192.168.0.100")
var yamaha = new Yamaha() // Auto-Discovery
yamaha.powerOff(zone) // or "System" for sytem power
yamaha.powerOn(zone) // or "System" for sytem power
yamaha.isOn(zone)
yamaha.isOff(zone)
//Volume
yamaha.setVolumeTo(-500, zone) // Value must be divisble by 5 or value will be rejected
yamaha.volumeUp(50, zone)
yamaha.volumeDown(50, zone)
yamaha.muteOn(zone)
yamaha.muteOff(zone)
//Extended Volume Settings
yamaha.setBassTo(60) //-60 to 60 (may depend on model)
yamaha.setTrebleTo(60) //-60 to 60 (may depend on model)
yamaha.setSubwooferTrimTo(60) //-60 to 60 (may depend on model)
yamaha.setDialogLiftTo(5) //0 to 5 (may depend on model)
yamaha.setDialogLevelTo(3) //0 to 3 (may depend on model)
yamaha.YPAOVolumeOn()
yamaha.YPAOVolumeOff()
yamaha.extraBassOn()
yamaha.extraBassOff()
yamaha.adaptiveDRCOn()
yamaha.adaptiveDRCOff()
//Playback
yamaha.stop(zone)
yamaha.pause(zone)
yamaha.play(zone)
yamaha.skip(zone)
yamaha.rewind(zone)
//Remote (Case Sensitive Values)
yamaha.remoteCursor(command) // 'Up', 'Down', 'Left', 'Right', 'Return', 'Sel'
yamaha.remoteMenu(command) // 'Option', 'Display'
//Switch Input
yamaha.setInputTo("USB", 2)
yamaha.setMainInputTo("NET RADIO")
//Party Mode
yamaha.partyModeOn()
yamaha.partyModeOff()
yamaha.partyModeUp()
yamaha.partyModeDown()
//Basic
yamaha.SendXMLToReceiver()
//Get Info
yamaha.getBasicInfo(zone).done(function(basicInfo){
basicInfo.getVolume();
basicInfo.isMuted();
basicInfo.isOn();
basicInfo.isOff();
basicInfo.getCurrentInput();
basicInfo.isPartyModeEnabled();
basicInfo.isPureDirectEnabled();
basicInfo.getBass();
basicInfo.getTreble();
basicInfo.getSubwooferTrim();
basicInfo.getDialogueLift();
basicInfo.getDialogueLevel();
basicInfo.getZone();
basicInfo.isYPAOVolumeEnabled();
basicInfo.isExtraBassEnabled();
basicInfo.isAdaptiveDRCEnabled();
})
yamaha.isHeadphoneConnected()
yamaha.getSystemConfig()
yamaha.getAvailableInputs()
yamaha.isMenuReady("NET_RADIO")
// FM Tuner
yamaha.getTunerInfo()
yamaha.getTunerPresetList()
yamaha.selectTunerPreset(1)
yamaha.selectTunerFrequency(band, frequency)
//Select Menu Items
yamaha.selectUSBListItem(1)
yamaha.selectWebRadioListItem(1)
// Single Commands, receiver has to be in the right state
yamaha.getWebRadioList()
yamaha.selectWebRadioListItem(1)
// Chained Commands, they ensure the receiver is in the right state
yamaha.switchToFavoriteNumber()
yamaha.gotoFolder('/NET_RADIO/Radio/Favorites', 'NET_RADIO')
// Find the index of a list item to select using the name of the item,
// returns -1 if not found. Will move the list page down so index will always
// between 1 and 8.
yamaha.getIndexOfMenuItem(
await yamaha.getWebRadioList(),
'BBC Radio 1',
'NET_RADIO'
)
// Zone Commands
yamaha.getAvailableZones()
yamaha.getZoneConfig(zone)
The zone parameter is optional, you can pass a number or a string
All these methods return a promise:
yamaha.isOn().then(function(result){
console.log("Receiver is:"+result);
})
mocha mochatest.js --ip 192.168.0.25
or with autodiscovery
mocha mochatest.js
If the IP is omitted in the constructor, the module will try to discover the yamaha ip via a SSDP call. Thanks @soef @mwittig
0.8:
FAQs
An API to control your YAMAHA Receiver written in nodejs
The npm package yamaha-nodejs receives a total of 38 weekly downloads. As such, yamaha-nodejs popularity was classified as not popular.
We found that yamaha-nodejs demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
The Axios compromise shows how time-dependent dependency resolution makes exposure harder to detect and contain.

Research
A supply chain attack on Axios introduced a malicious dependency, plain-crypto-js@4.2.1, published minutes earlier and absent from the project’s GitHub releases.

Research
Malicious versions of the Telnyx Python SDK on PyPI delivered credential-stealing malware via a multi-stage supply chain attack.