{"id":21655214,"url":"https://github.com/pseitz/yamaha-nodejs","last_synced_at":"2025-07-23T18:05:51.331Z","repository":{"id":20361313,"uuid":"23636479","full_name":"PSeitz/yamaha-nodejs","owner":"PSeitz","description":"A node module to control your yamaha receiver","archived":false,"fork":false,"pushed_at":"2022-12-08T14:02:31.000Z","size":390,"stargazers_count":124,"open_issues_count":7,"forks_count":32,"subscribers_count":21,"default_branch":"master","last_synced_at":"2025-07-04T05:07:13.833Z","etag":null,"topics":["client","home-automation","javascript","lib","receiver","yamaha","yamaha-av-receiver","yamaha-nodejs","yamaha-receiver","zone"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PSeitz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-09-03T20:33:04.000Z","updated_at":"2025-03-19T13:07:12.000Z","dependencies_parsed_at":"2023-01-13T20:56:06.240Z","dependency_job_id":null,"html_url":"https://github.com/PSeitz/yamaha-nodejs","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/PSeitz/yamaha-nodejs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PSeitz%2Fyamaha-nodejs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PSeitz%2Fyamaha-nodejs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PSeitz%2Fyamaha-nodejs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PSeitz%2Fyamaha-nodejs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PSeitz","download_url":"https://codeload.github.com/PSeitz/yamaha-nodejs/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PSeitz%2Fyamaha-nodejs/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266726627,"owners_count":23974927,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-23T02:00:09.312Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["client","home-automation","javascript","lib","receiver","yamaha","yamaha-av-receiver","yamaha-nodejs","yamaha-receiver","zone"],"created_at":"2024-11-25T08:30:42.102Z","updated_at":"2025-07-23T18:05:51.310Z","avatar_url":"https://github.com/PSeitz.png","language":"JavaScript","readme":"Yamaha-nodejs\n==================\n[![NPM Downloads](https://img.shields.io/npm/dm/yamaha-nodejs.svg?style=flat)](https://npmjs.org/package/yamaha-nodejs)\n[![Dependency Status](https://david-dm.org/PSeitz/yamaha-nodejs.svg?style=flat)](https://david-dm.org/PSeitz/yamaha-nodejs)\n\n\nA node module to control your yamaha receiver. Tested with RX-V775, should work with all yamaha receivers with a network interface.\n\n### Install\nnpm install yamaha-nodejs\n\n## Example\n```javascript\nvar YamahaAPI = require(\"yamaha-nodejs\");\nvar yamaha = new YamahaAPI(\"192.168.0.100\");\nyamaha.powerOn().then(function(){\n\tconsole.log(\"powerOn\");\n\tyamaha.setMainInputTo(\"NET RADIO\").then( function(){\n\t\tconsole.log(\"Switched to Net Radio\");\n\t\tyamaha.selectWebRadioListItem(1).then(function(){\n\t\t\tconsole.log(\"Selected Favorites\");\n\t\t\tyamaha.selectWebRadioListItem(1).then(function(){});\n\t\t});\n\n\t});\n});\n```\n## Prerequisites\n* To power on the yamaha, network standby has to be enabled\n* The Yamaha reveiver is stateful. Some commands only work work if the receiver is in the right state. E.g. to get web radio channels, the \"NET RADIO\" input has to be selected.\n\n## Methods\n```javascript\nvar yamaha = new Yamaha(\"192.168.0.100\")\nvar yamaha = new Yamaha() // Auto-Discovery\nyamaha.powerOff(zone) // or \"System\" for sytem power\nyamaha.powerOn(zone)  // or \"System\" for sytem power\nyamaha.isOn(zone)\nyamaha.isOff(zone)\n\n//Volume\nyamaha.setVolumeTo(-500, zone) // Value must be divisble by 5 or value will be rejected\nyamaha.volumeUp(50, zone)\nyamaha.volumeDown(50, zone)\nyamaha.muteOn(zone)\nyamaha.muteOff(zone)\n\n//Extended Volume Settings\nyamaha.setBassTo(60)          //-60 to 60 (may depend on model)\nyamaha.setTrebleTo(60)        //-60 to 60 (may depend on model)\nyamaha.setSubwooferTrimTo(60) //-60 to 60 (may depend on model)\nyamaha.setDialogLiftTo(5)     //0 to 5 (may depend on model)\nyamaha.setDialogLevelTo(3)    //0 to 3 (may depend on model)\nyamaha.YPAOVolumeOn()\nyamaha.YPAOVolumeOff()\nyamaha.extraBassOn()\nyamaha.extraBassOff()\nyamaha.adaptiveDRCOn()\nyamaha.adaptiveDRCOff()\n\n//Playback\nyamaha.stop(zone)\nyamaha.pause(zone)\nyamaha.play(zone)\nyamaha.skip(zone)\nyamaha.rewind(zone)\n\n//Remote (Case Sensitive Values)\nyamaha.remoteCursor(command) // 'Up', 'Down', 'Left', 'Right', 'Return', 'Sel'\nyamaha.remoteMenu(command)   // 'Option', 'Display'\n\n//Switch Input\nyamaha.setInputTo(\"USB\", 2)\nyamaha.setMainInputTo(\"NET RADIO\")\n\n//Party Mode\nyamaha.partyModeOn()\nyamaha.partyModeOff()\nyamaha.partyModeUp()\nyamaha.partyModeDown()\n\n//Basic\nyamaha.SendXMLToReceiver()\n\n//Get Info\nyamaha.getBasicInfo(zone).done(function(basicInfo){\n    basicInfo.getVolume();\n    basicInfo.isMuted();\n    basicInfo.isOn();\n    basicInfo.isOff();\n    basicInfo.getCurrentInput();\n    basicInfo.isPartyModeEnabled();\n    basicInfo.isPureDirectEnabled();\n    basicInfo.getBass();\n    basicInfo.getTreble();\n    basicInfo.getSubwooferTrim();\n    basicInfo.getDialogueLift();\n    basicInfo.getDialogueLevel();\n\t\tbasicInfo.getZone();\n    basicInfo.isYPAOVolumeEnabled();\n    basicInfo.isExtraBassEnabled();\n    basicInfo.isAdaptiveDRCEnabled();\n})\n\nyamaha.isHeadphoneConnected()\nyamaha.getSystemConfig()\nyamaha.getAvailableInputs()\nyamaha.isMenuReady(\"NET_RADIO\")\n\n// FM Tuner\nyamaha.getTunerInfo()\nyamaha.getTunerPresetList()\nyamaha.selectTunerPreset(1)\nyamaha.selectTunerFrequency(band, frequency)\n\n//Select Menu Items\nyamaha.selectUSBListItem(1)\nyamaha.selectWebRadioListItem(1)\n\n// Single Commands, receiver has to be in the right state\nyamaha.getWebRadioList()\nyamaha.selectWebRadioListItem(1)\n\n// Chained Commands, they ensure the receiver is in the right state\nyamaha.switchToFavoriteNumber()\nyamaha.gotoFolder('/NET_RADIO/Radio/Favorites', 'NET_RADIO')\n\n// Find the index of a list item to select using the name of the item,\n// returns -1 if not found. Will move the list page down so index will always\n// between 1 and 8.\nyamaha.getIndexOfMenuItem(\n    await yamaha.getWebRadioList(), \n    'BBC Radio 1', \n    'NET_RADIO'\n)\n\n// Zone Commands\nyamaha.getAvailableZones()\nyamaha.getZoneConfig(zone)\n\n```\n\n#### Zones\nThe zone parameter is optional, you can pass a number or a string\n\n#### Promises\nAll these methods return a promise:\n```javascript\nyamaha.isOn().then(function(result){\n\tconsole.log(\"Receiver is:\"+result);\n})\n```\n#### Execute Tests\n```javascript\nmocha mochatest.js --ip 192.168.0.25\nor with autodiscovery\nmocha mochatest.js\n```\n\n#### Discovery\nIf the IP is omitted in the constructor, the module will try to discover the yamaha ip via a SSDP call.\nThanks @soef @mwittig\n\n#### Changelog\n0.8:\n- FIX Remove get request delays\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpseitz%2Fyamaha-nodejs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpseitz%2Fyamaha-nodejs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpseitz%2Fyamaha-nodejs/lists"}