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 ?