Giter Site home page Giter Site logo

evanugarte / my-arcam-remote Goto Github PK

View Code? Open in Web Editor NEW
2.0 1.0 0.0 167 KB

A remote for Arcam products using Svelte, Python and the arcam_fmj library.

Python 44.68% Shell 0.91% CSS 11.66% HTML 1.46% JavaScript 4.77% Svelte 33.75% Dockerfile 2.78%
arcam arcamfmj svelte python amplifiers

my-arcam-remote's Introduction

my-arcam-remote

A remote for Arcam products using Svelte, Python and the arcam_fmj library.

Running the App

Step 1: Obtain Device IP Address

  1. Ensure your arcam device is connected to your network via ethernet cable.
  2. Obtain the device's IP address following the steps on this document on page 16 on the rightmost section.

Step 2: Create .env file with ARCAM_IP entry

create a .env file in the project directory with the contents below. Ensure the ip address matches the value you got from step 1.

ARCAM_IP=192.168.1.1

Step 3: Run the application with docker-compose

  1. Make sure docker-compose is installed.
  2. From the my-arcam-remote directory run docker-compose up.
  3. The website should be accessible at http://localhost after building.

Example Screenshot

The website has a simple UI for both the browser and the phone:

Website

my-arcam-remote's People

Contributors

evanugarte avatar

Stargazers

 avatar  avatar

Watchers

 avatar

my-arcam-remote's Issues

Intermittent SSE Timeout

it seems like when we are on the page for too long, the SSEs no longer work.

updating the nginx file to resolve this.

Related to #28

Add option to scan for Arcam device on local network

On startup, if the given HOST_IP (found on docker-compose.yml:9) isn't responding, we should be able to try our best to scan for the Arcam device if it may be something different.

Simple algo

  1. Boot server
  2. ping HOST_IP, make sure a normal query works
  3. If it doesn't, scan the range of IP addresses using the subnet mask to find a device with ports 80 and 50000 open.
  4. Try normal ping, if it works use it, else keep searching
  5. Error out if we cannot find a host

Rapidly clicking volume up/down inconsistent

Say volume is 30. this happens when we click the volume up/down too fast:

*click* *click* *click*

31
33
32

It has to do with trying to handle async events sequentially. We could have the server keep state of the volume. Or look around to see if there are examples of handling this

Add Server to Take Arcam Commands

We need a server in flask to server static HTML content and accept GET and POST requests for controlling the device.

GET  "/"
GET  "/<path:path>"
GET  "/api/health-check"
POST "/api/mute"
POST "/api/power"
POST "/api/volume"
POST "/api/source"

All post requests set the related field with the query parameter value. The values will be active high, meaning
GET /api/power?value=1 will turn the device on and 0 will turn it off.

Containerize Website

With a bridge network so we can access the device outside of the container runtime.

Replace font awesome icons

Use meteor-icon-kit over font awesome. we will store the icons locally so the arcam app will not need a connection to the internet anymore for icons to work. the license for these new icons is MIT so we can steal it to our hearts content

Add Custom Metrics

For Prometheus like amplifier latency, commands per hour and volume levels over time.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.