Rhasspy satellite initial configuration question

I originally started trying to get snips to work all of a month or so before they got bought up and temporarily gave up on voice assistant plans. I’m now trying to get Rhasspy up and running, but so far have been unable to get anything meaningful to happen. I’ve followed the guide here: https://rhasspy.readthedocs.io/en/latest/tutorials/#shared-mqtt-broker

My setup is essentially running hassio in a VM on my ESXi server (I use usb-passthrough and a HUSBZB-1 usb stick to control z-wave and zigbee). I’ve installed the Rhasspy 2.5 add-on and configured it according to the guide above. Additionally, I’ve enabled Intent Handling and set it to “Home Assistant” because it seems like that’s what you’d need to do to have anything really work with Home Assistant (please let me know if I’m wrong in this).

I’ve configured my settings as follows:
configuration.yaml

# Rhasspy
intent:

intent_script: !include intent_scripts.yaml

intent_scripts.yaml

GetTime:
  speech:
    text: The current time is {{ now().strftime("%H %M %p") }}
  action:
    service: notify.notify
    data_template:
      message: Got the current time!

Hassio Rhasspy Add-on config

{
    "dialogue": {
        "satellite_site_ids": "satellite-test",
        "system": "rhasspy"
    },
    "handle": {
        "system": "hass"
    },
    "home_assistant": {
        "access_token": "<TOKEN>",
        "url": "https://192.168.0.2/"
    },
    "intent": {
        "satellite_site_ids": "satellite-test",
        "system": "fsticuffs"
    },
    "mqtt": {
        "enabled": "true",
        "host": "192.168.0.2",
        "password": "test",
        "port": "1883",
        "site_id": "base",
        "username": "test"
    },
    "speech_to_text": {
        "satellite_site_ids": "satellite-test",
        "system": "kaldi"
    },
    "text_to_speech": {
        "flite": {
            "voice": "rms"
        },
        "satellite_site_ids": "satellite-test",
        "system": "flite"
    }
}

Satellite Rhasspy config

{
    "home_assistant": {
        "handle_type": "event",
        "url": ""
    },
    "intent": {
        "remote": {
            "url": "http://192.168.0.2:12101/api/text-to-intent"
        },
        "system": "hermes"
    },
    "microphone": {
        "arecord": {
            "udp_audio_host": "127.0.0.1",
            "udp_audio_port": "12202"
        },
        "pyaudio": {
            "device": "0",
            "udp_audio_host": "127.0.0.1",
            "udp_audio_port": "12202"
        },
        "system": "arecord"
    },
    "mqtt": {
        "enabled": "true",
        "host": "192.168.0.2",
        "password": "test",
        "port": "1883",
        "site_id": "satellite-test",
        "username": "test"
    },
    "sounds": {
        "aplay": {
            "device": "default:CARD=sndrpigooglevoi"
        },
        "system": "aplay"
    },
    "speech_to_text": {
        "remote": {
            "url": "http://192.168.0.2:12101/api/speech-to-text"
        },
        "system": "hermes"
    },
    "text_to_speech": {
        "remote": {
            "url": "http://192.168.0.2:12101/api/text-to-speech"
        },
        "system": "hermes"
    },
    "wake": {
        "porcupine": {
            "udp_audio": "127.0.0.1:12202"
        },
        "system": "porcupine"
    }
}

Rhasspy add-on log on hassio

[DEBUG:2020-10-09 19:36:48,088] rhasspynlu_hermes: <- NluQuery(input='What time is it', site_id='satellite-test', id='666131bc-782c-4295-999e-fcfe8604b62a', intent_filter=None, session_id='666131bc-782c-4295-999e-fcfe8604b62a', wakeword_id=None, lang=None)
[DEBUG:2020-10-09 19:36:48,095] rhasspynlu_hermes: -> NluIntentParsed(input='what time is it', intent=Intent(intent_name='GetTime', confidence_score=1.0), site_id='satellite-test', id='666131bc-782c-4295-999e-fcfe8604b62a', slots=[], session_id='666131bc-782c-4295-999e-fcfe8604b62a')
[DEBUG:2020-10-09 19:36:48,095] rhasspynlu_hermes: Publishing 229 bytes(s) to hermes/nlu/intentParsed
[DEBUG:2020-10-09 19:36:48,101] rhasspynlu_hermes: -> NluIntent(input='what time is it', intent=Intent(intent_name='GetTime', confidence_score=1.0), site_id='satellite-test', id='666131bc-782c-4295-999e-fcfe8604b62a', slots=[], session_id='666131bc-782c-4295-999e-fcfe8604b62a', custom_data=None, asr_tokens=[[AsrToken(value='what', confidence=1.0, range_start=0, range_end=4, time=None), AsrToken(value='time', confidence=1.0, range_start=5, range_end=9, time=None), AsrToken(value='is', confidence=1.0, range_start=10, range_end=12, time=None), AsrToken(value='it', confidence=1.0, range_start=13, range_end=15, time=None)]], asr_confidence=None, raw_input='What time is it', wakeword_id=None, lang=None)
[DEBUG:2020-10-09 19:36:48,102] rhasspynlu_hermes: Publishing 690 bytes(s) to hermes/intent/GetTime
[DEBUG:2020-10-09 19:36:48,182] rhasspydialogue_hermes: <- NluIntent(input='what time is it', intent=Intent(intent_name='GetTime', confidence_score=1.0), site_id='satellite-test', id='666131bc-782c-4295-999e-fcfe8604b62a', slots=[], session_id='666131bc-782c-4295-999e-fcfe8604b62a', custom_data=None, asr_tokens=[[AsrToken(value='what', confidence=1.0, range_start=0, range_end=4, time=None), AsrToken(value='time', confidence=1.0, range_start=5, range_end=9, time=None), AsrToken(value='is', confidence=1.0, range_start=10, range_end=12, time=None), AsrToken(value='it', confidence=1.0, range_start=13, range_end=15, time=None)]], asr_confidence=None, raw_input='What time is it', wakeword_id=None, lang=None)
[WARNING:2020-10-09 19:36:48,182] rhasspydialogue_hermes: No session for site satellite-test. Dropping recognition.

Rhasspy log in the webui on satellite

[DEBUG:2020-10-09 19:36:47,942] rhasspyserver_hermes: -> HandleToggleOff(site_id='satellite-test')
[DEBUG:2020-10-09 19:36:47,945] rhasspyserver_hermes: Publishing 28 bytes(s) to rhasspy/handle/toggleOff
[DEBUG:2020-10-09 19:36:48,011] rhasspyserver_hermes: -> NluQuery(input='What time is it', site_id='satellite-test', id='666131bc-782c-4295-999e-fcfe8604b62a', intent_filter=None, session_id='666131bc-782c-4295-999e-fcfe8604b62a', wakeword_id=None, lang=None)
[DEBUG:2020-10-09 19:36:48,013] rhasspyserver_hermes: Publishing 211 bytes(s) to hermes/nlu/query
[DEBUG:2020-10-09 19:36:48,493] rhasspyserver_hermes: <- NluIntent(input='what time is it', intent=Intent(intent_name='GetTime', confidence_score=1.0), site_id='satellite-test', id='666131bc-782c-4295-999e-fcfe8604b62a', slots=[], session_id='666131bc-782c-4295-999e-fcfe8604b62a', custom_data=None, asr_tokens=[[AsrToken(value='what', confidence=1.0, range_start=0, range_end=4, time=None), AsrToken(value='time', confidence=1.0, range_start=5, range_end=9, time=None), AsrToken(value='is', confidence=1.0, range_start=10, range_end=12, time=None), AsrToken(value='it', confidence=1.0, range_start=13, range_end=15, time=None)]], asr_confidence=None, raw_input='What time is it', wakeword_id=None, lang=None)
[DEBUG:2020-10-09 19:36:48,530] rhasspyserver_hermes: Handling NluIntent (topic=hermes/intent/GetTime, id=303e0e95-1497-4077-90e7-5b73c391f23d)
[DEBUG:2020-10-09 19:36:48,532] rhasspyserver_hermes: Handling NluIntent (topic=hermes/intent/GetTime, id=e377ad2e-fcbb-457e-b395-39cf56949963)
[DEBUG:2020-10-09 19:36:48,700] rhasspyserver_hermes: -> HandleToggleOn(site_id='satellite-test')
[DEBUG:2020-10-09 19:36:48,703] rhasspyserver_hermes: Publishing 28 bytes(s) to rhasspy/handle/toggleOn

Rhasspy log in the webui on hassio

^-- literally not a daggone thing

Any assistance would be most welcome as I’m very new to this whole voice assistant thing.

As a semi aside, I also keep seeing references to always disabling 1883 for MQTT for security reasons, however when I do that, everything breaks in Rhasspy. How am I supposed to do that? I tried changing the config to use 1884, however Rhasspy failed to start. The only way I could fix it was to set MQTT’s 1883 port to use 1884 (and disable 1884), only then would Rhasspy start again and I could re-configure it back to using 1883 and re-set the configuration on MQTT again.

PS - The add-on Rhasspy instance DOES see lights that it has pulled from home assistant in a slot, so that part is working, however I can’t turn anything on/off right now either.

PPS - I should also probably be clear on something. I am typing in the text and clicking “recognize” on the satellite. If I speak and use the wake word, I’m not actually able to capture all of the log since debug is showing EVERYTHING including the audio chunks and I can only see so many lines before it scrolls off into the ether. I hope that doesn’t impact the issue I’m having, but if it does, I can post the add-on log from hassio with as much as I can.

1 Like

Try setting satellite_site_ids in handle as well in your Hassio Rhasspy add-on config. The rhasspy-homeassistant-hermes service will ignore messages from anything but base unless this is set.

Awesome, that did help! I also found that I neglected the port in home_assistant, url (should have been https://192.168.0.2:8123)
And a note for anyone else using SSL - I use LetsEncrypt for my Hassio instance, so instead of the IP address, you need to actually use the dns name rather than the IP (I just used that to obfuscate what my actual IP/internal DNS scheme is).

Once I get everything all set up, I’m planning on making a nice long walkthrough of exactly what’s needed from a default rhasspy installation in hassio to what was needed on each pi zero w satellite in each room. My plan is to be able to just say “turn (on|off) the light” in each room and for it to recognize which room I’m in and to do that action in that room only, as well as a few other fun things to help get people up and running with minimal effort.

1 Like

Did you get to make that nice long walkthrough? I am trying to setup rhasspy as a base station on my HA OS system and use a sattelite, however I am having some trouble with the setup.

My plan is to be able to just say “turn (on|off) the light” in each room and for it to recognize which room I’m in and to do that action in that room only

Make sure you run 2.5.11 then.
2.5.10 can not handle multiple satellites.

Unfortunately, very shortly after that post I got called back in to work and my free time dropped dramatically. Additionally, since then, our youngest was born and I’ve been through a long distance move. At this point I’m still finding project/parts boxes, but hope to pick up with Rhasspy again. First priority is getting Home Assistant squared away. It’s amazing how much a change in physical location affects all the little details in Home Assistant from how you had planned things out to zones, to automations and groups being newly inaccurate.

Well, the author of Rhasspy hinted to a new release a few weeks back, but he got bogged down too, so maybe the new release will be available when you have time to play with it again.
At the moment you have not lost much in the Rhasspy field. :slight_smile:

FWIW, my walk-through of adding a satellite (Raspberry Pi Zero with reSpeaker 2-mic HAT) to Rhasspy & Home Assistant came to 34 pages :frowning: … and I still have aspects of my setup I’m having trouble with (which suggests I need to learn more to be able to explain it better to others).

I’m thinking it would be better to summarize than to provide such a long detailed tutorial … especially given that there are several points (like using a SSH client) where there are lots of alternatives that I don’t want to give such detailed instructions for each.

@donburch
I have used the guides on the site to setup my satellite and base and it has helped and I have a working solution, but I also have features on the configuration pages, that I am confused about.
I think we need both, like a list that give a short explaination of each setting possible and a walk-through that tells the step to get to a certain setup.