integrated webserver ... #697

Merged
merged 2 commits into from Jun 12, 2016

Projects

None yet

4 participants

@redPanther
Contributor

... remote control and in future for configuration.

1. Tell us something about your changes.
add a webserver to hyperion. This is a preparation for a web interface integrated in hyperion. The web ui can be used to set color/effect and in future to configure hyperion.

The http server stuff is taken from
http://gitlab.unique-conception.org/qt-libraries/qt-http-server

and the files for webui is taken from
https://github.com/Gamadril/hyperion-remote
@Gamadril perhaps you want to extend/adapt the webui shipped with hyperion

2. If this changes affect the .conf file. Please provide the changed section
add following block

"webConfig" :
{
    "enable" : true,
    "document_root" : "/usr/share/hyperion/webconfig",
    "port" : 8080
},

3. Reference a issue (optional)

redpanther added some commits Jun 12, 2016
redpanther initial commit of webconfig 892839f
redpanther update example config with webconfig and fix format of file
update debian postinst script for install example config
5245b0a
@brindosch brindosch merged commit 7dfb9f1 into hyperion-project:Beta Jun 12, 2016
@brindosch brindosch modified the milestone: V2.0 Jun 13, 2016
@Gamadril
Contributor

bad idea to integrate my remote for several reasons:

  • you don't really want to keep it uptodate in the local repository. you might not event know that there is a new version in my repo
  • you don't want to track issues on the remote control in hyperion repo
  • the sources included are not minified
@redPanther
Contributor

At the moment its a placeholder or better technology demo. Perhaps its a start or not. The goal was that we have an integrated webserver, the ui is the next thing we will do

@penfold42
Contributor

could we add it as a submodule?

@brindosch
Collaborator
brindosch commented Jun 16, 2016 edited

@Gamadril
Of course, the main target is not just a remote control.
The idea is to get a full working webinterface for Hyperion itself. That could be via JSON (depending on if @Paulchen-Panther could implement all things we need. Some things may be just local gathered or set. We need some options to save local or flags to set, like "welcome wizard has been done". It is no option to save that at a cookie.

The long term plan: Replace HyperCon with a webinterface. This external tool has numerous disadvantages over a webinterface.

  • need ssh to update hyperion - webinterface could trigger that better
  • always in sync with the current options of the installed hyperion version
  • update notifications without to have a look at the webpage
  • changelog and news integration without to visit the webpage
  • It may possible to no longer care to much about options for the smartphone apps (version updates) - just load the webinterface at the apps. Widgets, Anroid Wear, Google Now to control (Android), Siri, Apple hardware (iOS), -Windows Phone specific here-
  • provide buttons for script installation for things we can integrate in hyperion
  • HyperCon is not capable to handle more then one hyperion instance, and the workload is big to get this. A webinterface would be a more future driven solution. Also we no longer need to care about HyperCon, just another building zone to keep it running.

The target is to implement as much functions with JSON to control from everywhere.
To simplify the work that needs to be done to keep things running. Less code building zones (hypercon/apps/hyperion) and more time for new features.

@Gamadril
due to the point we have currently no one who could help here to get a working construct or the basics.
I would appreciate if you join the hyperion development to help to create something which is much better than everything we currently have.

@Gamadril
Contributor

I like the idea of a Web Config Tool (when I forked hyperion for Poco lib usage I also planned to create it for changed config structure) but I dislike the idea to integrate a full blown web sever for it. The config tool can be hosted anywhere (like my remote) the only thing it needs is a communication channel to hyperion backend.

I cannot promise anything as I don't have much time for private projects at the moment...

@brindosch
Collaborator
brindosch commented Jun 16, 2016 edited

but I dislike the idea to integrate a full blown web sever for it

In a way you need a webserver to write in case some local data? It makes sense to get everything we want to do? Due to the point it is qt based it works on all platforms, no apache or nginx required, not sure if the qt5 implementation is a "blown" webserver or more a basic one.
And the usage is easy, port could be configured via .json - nothing you could do wrong here.

If i am wrong just correct me :)

@redPanther
Contributor

... a basic one but could be extended to our needs

@Gamadril
Contributor
Gamadril commented Jun 16, 2016 edited

The mentioned qt http server is a "dumb" content provider. It responses with satic content to browser requests. It will never know what the user is doing in his browser.
This is the point I mean. The application running in the browser knows what it has to do. The only thing it needs from hyperion is a communication endpoint (websocket) and the data protocol (JSON) to understand each other. From where the application is loaded in the browser doesn't matter.

P.S. This is actually how hyperion works now when listening for commands from the remote control. It just has to be extended or a separate endpoint created only for configuration....

@brindosch brindosch modified the milestone: V1.03.1 Jul 24, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment