Home Assistant Rhasspy Integration GUI

My thinking about Rhasspy Junior having no GUI has led me to the belief that Junior does need a UI - but that it is separate.

My conclusions include:

  • Junior is for new users, and so it is totally reasonable for Junior to provide limited pre-defined intents for specified popular devices. The more assumptions and defaults we can pre-configure, the better the out-of-box experience (and simpler the interface).
  • Rhasspy 2.5 itself happily runs headless, and there is no need for new users to even know that Rhasspy has its own GUI. Progressing to advanced user is simply a matter of telling them about the Rhasspy 2.5 UI.
  • Experience has shown that Rhasspy base and Rhasspy satellites use different sets of modules, so maybe separate out the functionality ? In the case of one machine operating both as a Rhasspy base and as a satellite (if it has audio hardware connected) - Junior could treat them as separate instances ?
  • The Home Assistant Rhasspy Integration is the Junior User Interface. It should be kept simple. Basically its a web page which makes API calls to the Rhasspy core which runs independently.
  • users will need to:
    • check that their audio hardware is working correctly;
    • define user friendly names for each HA device
    • Looking at Michael’s Junior code I note that his intents use {name}, {attribute} and {value}. Users will probably want to see and maybe alter the allowed {values} for each {attributes}.
    • have access to error messages
    • I’m not sure if “Slots” and “Words” will still be needed

Proposed GUI (Rhasspy Junior Add-on for HA)

I imagine Junior Integration starting from the current Rhasspy Add-on; with a series of tabs along the top … but instead of the current Info, Configuration and Log, we would have:

    Info        Base       Sat-1      Sat-2      Sat-3      Log

Where “Base”, “Sat-1”, “Sat-2” and “Sat-3” might be the names of the Rhasspy instances.

Info tab is same as current Rhasspy Add-on, adding a [Scan for satellites] button

Base tab is where we map HA Domain/device to user-friendly name, and define values for the attributes - for example

Domain   HA device        {name}              {attribute}    values
light    LIFX Color-142   livingroom light    brightness     0-255
                                              color          white, blue, red, green
switch   pc191ha-109      bedroom heater   

It may be worth making the domain a link to a list of the intents for that domain

Satellite tabs are mostly the Rhasspy Home page from the satellite - audio Inout and Output devices, then existing components to test that audio is working.

SiteId:     Sat-1           Area: bedroom          IP Address: 192.168.1.128


Log tab is unchanged … but needs to be much less verbose

I think that a Sentences tab is not needed, since they will be predefined - but they MUST be documented for new users.

Processing

Junior will require a much more sophisticated installation routine; possibly running regularly to detect new devices and new satellites.

  • You were talking about detecting HA devices and automatically setting up default intents for them. Yes please !
  • You mentioned automatic detection of satellite devices. Again, yes please !
  • I agree with you on the basic intents.
  • Do I want it to do everything - no way that we can anticipate all user cases and devices … but if we can get say 70% usefulness out of the box for new users I would be delighted. Even 50% would give new users a real boost when they progress to full Rhasspy.

Yet another massive learning curve … just what i don’t need … but my interest is in the front end, and I had some web development experience a lifetime ago.

I’ve been looking for the code for the current HA Rhasspy Assistant add-on - can you point me to it, to fork and use as a starting point ?

Well, it was a nice theory while it lasted :frowning:

There’s a mountain of learning curves involved for this project; and I have learnt from bitter experience to attempt only one at a time. So i have been looking at the HA Developer documentation, and hoping that it will start to make sense.

The HA Add-on looks surprisingly straight-forward and even includes a tutorial to make your own hello world add-on. I see now that HA provides the page design … including automagically generating the Info, Documentation, Configuration and Log tabs … but does this also mean that I cant add other tabs ?

And if I can’t have multiple tabs in the Add-on section, and rhasspy configuration shouldn’t be in the front-end … then where does it fit ?

Are you referring to the HA addon interface having just those tabs to config it? If so, yes sort of in a way, for most addons you use that interface to control it’s running status and most of it’s configuration values (though I’m not sure how the Rhasspy addon handles the configuration since it needs a profile). Usually if the addon provides a web GUI of it’s own there will be a Launch Web GUI button on the Info tab, that will launch the native web UI for the addon if it provides one. I think I heard the Jr addon doesn’t have a web UI, while the full edition of the addon does.