{"id":34574770,"url":"https://github.com/firstone/av-remote-poly","last_synced_at":"2026-06-05T14:31:14.947Z","repository":{"id":141910529,"uuid":"591764666","full_name":"firstone/av-remote-poly","owner":"firstone","description":null,"archived":false,"fork":false,"pushed_at":"2025-09-20T14:27:45.000Z","size":315,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-20T16:28:09.754Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","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/firstone.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-01-21T19:44:30.000Z","updated_at":"2025-09-20T14:27:49.000Z","dependencies_parsed_at":"2023-10-11T04:08:45.841Z","dependency_job_id":"387c24eb-37e3-4ed1-ad88-50b98f2af1bd","html_url":"https://github.com/firstone/av-remote-poly","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/firstone/av-remote-poly","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/firstone%2Fav-remote-poly","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/firstone%2Fav-remote-poly/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/firstone%2Fav-remote-poly/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/firstone%2Fav-remote-poly/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/firstone","download_url":"https://codeload.github.com/firstone/av-remote-poly/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/firstone%2Fav-remote-poly/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33946818,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-05T02:00:06.157Z","response_time":120,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","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":[],"created_at":"2025-12-24T09:48:35.405Z","updated_at":"2026-06-05T14:31:14.941Z","avatar_url":"https://github.com/firstone.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# RESTRemote\n\n## Summary\n\nSimple REST service that allows multiple devices control via similar interface. It allows easy additional of other device drivers. It current supports following:\n\n* LG Web OS TV (via WebSockets)\n* Tivo (via Tivo IP interface)\n* nVidia Shield (and probably other Android devices, via adb debug capability)\n* Denon AVR (via Denon IP interface)\n* Most IR devices (via ESP8266 board)\n\n## Getting Started\n\nInstall python3 and run *install.sh*\n\nConfiguration is done via configuration file (*cfg/config.yaml*). If you don't have one, it will be copied from *cfg/config_sample.yaml*.\n\nIf you don't have a particular device and don't want to load its driver, you can turn disable it by changing `enabled: false`.\n\nMost devices require only host name defined.\n\nYou need to specify both, config file and server config file (*cfg/server_config.yaml*) in the command line. Run `restremote.py --help` for command line options.\n\nOnce service is running, you can execute GET calls via browser:\n\nhttp://localhost:5000/devices\n\nor via command line. For example, curl:\n\n`curl -i -X GET http://localhost:5000/living_tivo/commands`\n\nPUT commands have to be done from command line or tool:\n\n`curl -i -X PUT http://localhost:5000/living_tv/mute/on`\n\n## Basic commands\n\n* */devices* - list configured drivers\n* */`\u003cdevice name\u003e`/commands* - list all available commands with method (**GET**, **PUT**)\n\n\n## Devices\n\nDevices represent your physical AV devices and use drivers to communicated with them.\n\nEach device has key (short name), which is what you use in REST command, a driver associated with it, as well as configuration parameters. Configuration parameters depend on the driver. See the driver section for configuration details.\n\n## Drivers\n\n### Tivo\n\nThere is not much to set up, other than *hostName*. Just look up IP in Tivo and plug it in. If you configure it for static IP in a router, this will never need to be changed. I'm not aware of any way to auto discover it.\n\n### Denon AVR\n\nDenon ARV has auto discovery but I didn't see any of it documented. Just plug in host name or IP into *hostName*. If you configure your router for static IP, this never needs to be changed.\n\n### LG TV (Web OS devices)\n\nLatest models don't need to be configured. They respond on WebSocket hostname of *lgwebostv*. If your device doesn't, plug host name or IP into *hostName*. There is a way to auto discover but I didn't code it since *lgwebostv* works.\n\nThe first time you start the service, it needs to be accepted on TV. Start the server, turn TV on and issue any command. You will see the prompt on TV. Clicks 'Accept'. If this fails for any reason, restart the service and try again. This will write client key so config directory needs to be writable. Or else, change *clientKeyFile* to point to writable location.\n\nFor some reason listing available launch point or available app doesn't work for me. So you can usually turn on an app, then issue get running app status command, and use that ID to configure launch commands.\n\nIf TV doesn't turn on using *Power On* command, set **Broadcast Address** parameter to you match your subnet. For example, if you TV's IP address is *192.168.0.xxx*, set **Broadcast Address** to *192.168.0.255*\n\n### Shield (Android devices)\n\nAndroid based devices use adb debugging mode. Make sure you have adb installed and configured in *executable*. It either has to be in path or have absolute path specified. Not sure if there's auto discovery so just plug host name or IP into *hostName*.\n\nAndroid device needs to be configured for network debugging. Usually you need to turn on USB debugging first. Once that's done, option for network debugging is available.\n\nFirst time you turn it on, make sure your device is on, and it will prompt you to accept connection from your server MAC address. You only need to accept it once.\n\nIf you're getting *unauthorized* errors, try `adb kill-server`, followed by `adb connect \u003chost name\u003e:5555`. This should bring authorization dialog again.\n\nIf commands don't work, run `adb devices`. If device is listed *offline*, reboot it, run `adb kill-server` and run `adb connect \u003chost name\u003e:5555`. After that, `adb devices` should show status as *online*. It appears that only one MAC address can control Android device at a time. So every time you connect from another MAC, this needs to be repeated to switch to a new MAC.\n\nIn order to configure launching apps, issue command to list installed apps (it takes a while). This will return list off apps and launch activities.\n\n### ESP8266\n\nThis one requires most work. Schematics can be obtained here:\n\nhttps://github.com/mdhiggins/ESP8266-HTTP-IR-Blaster\n\nDo not load firmware from that page. Instead load firmware from esp8266 directory. You need Arduino IDE, ESP8266 libraries, ESPWebServer and IRRemoteESP8266.\n\n*DO THIS STEP BEFORE YOU TEACH ANY CODES. IT WILL REMOVE ANY EXISTING CODES*\nFollow instruction for ESP8266 to setup file system transfer in Arduino IDE. After that, transfer files. It will pick up files in data directory. You don't need to specify them.\n\nConnect to the blaster via browser and teach IR commands. After that you need to edit *cfg/server_config.yaml* file and assign command names to driver commands. At that point you should be able to send them though RESTRemote server.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffirstone%2Fav-remote-poly","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffirstone%2Fav-remote-poly","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffirstone%2Fav-remote-poly/lists"}