Skip to main content

Python-based skill server for the hermes MQTT protocol

Project description

Hermes Skill Server

Intent handling based on modular skills written in python. Intents are supplied from the voice assistant via Hermes MQTT protocol.

Voice Assistant   <=== mqtt ===>   hss_server   <===>   hss_skill

Compatible with the Rhasspy voice assistant.

Installation

The server is preferably installed within a virtualenv, and requires python >=3.6.

/home/s710 $> mkdir hss
/home/s710 $> cd hss
/home/s710/hss $> mkdir hss
/home/s710/hss $> python3.7 -m venv /home/s710/hss/venv

/home/s710/hss $> source venv/bin/activate
(venv) /home/s710/hss $> pip install hss_server

Afterwards the server can be run:

(venv) /home/s710/hss $> hss_server
INFO:hss: Hermes Skill Server v1.0.0
INFO:hss: Using config dir '/home/s710/.config/hss_server'
INFO:hss: Loading skills from '/home/s710/.config/skills'
INFO:hss_server.skillserver: Loading skills ...
INFO:hss_server.collection: Initializing skills ...
INFO:hss_server.collection: Skill 'hss-skill-s710-weather' loaded
INFO:hss_server.collection: Loaded 1 skill
INFO:hss_server.skillserver: Connecting to MQTT server ...
INFO:hss_server.mqtt: Connected to 10.0.50.5:1883
INFO:hss_server.mqtt: Publishing TTS to topic 'hermes/tts/say'
INFO:hss_server.mqtt: Subscribing to topic 'hermes/intent/#' ...

After the initial start, hss_server creates its configuration file ([USER_CONFIG_DIR]/hss_server/config.ini). The config file will contain the location where skills are installed, which by default is [USER_CONFIG_DIR]/hss_server/skills.

On Linux, the USER_CONFIG_DIR will be ~/.config, on MacOS it will be ~/Library/Application Support.

Updating

Just simply use pip again to update:

/home/s710 $> cd hss
/home/s710/hss $> source venv/bin/activate
(venv) /home/s710/hss $> pip install hss_server --upgrade

Features

The server opens a connection to the given MQTT broker, and listens on the intent-topics (by default: hermes/intent/#). Also, all available skills from the skills directory will be loaded, each skill as own process with its own virtualenv.

For every incoming intent which is published via MQTT, the skill-server tries to find a matching skill, and, if found, hands the intent over to the skill so it can be handled. If the skill implements a response text, then this text will be returned via MQTT to the TTS topic (by default: hermes/tts/say).

Each skill is running in its own python virtualenv, with its own python dependencies and configuration. Skills can be installed easily from a git repository using the hss_cli tool.

Options

Usage:
   $ ./hss_server [OPTIONS]

Options:

   --host=[HOST]           MQTT host to connect to (default: localhost)
   --port=[PORT]           MQTT port (default: 1883)
   --topic=[TOPIC]         MQTT topic to listen on (default: hermes/intent/#)
   --tts-topic=[TOPIC]     MQTT topic to publish TTS to (default: hermes/tts/say)
   --tts-url=[URL]         URL to post TTS to. If set, TTS is not sent via MQTT (default: None)
   --start-port=[PORT]     Starting port for RCP communication (default: 51000)

   --config-dir=[DIR]      Location where the server's config.ini is located (default: user config dir)

   --log-file=[FILE]       Log file to write log entries to (default: console)
   --debug                 Enable debug log output

   --help                  Show this help and exit
   --version               Show version and exit

The options host/port/topic/tts-topic are needed for MQTT communication with the voice assistant.

The option --tts-url switches the text-to-speech output from MQTT to HTTP, in case the voice assistant does not support MQTT-based TTS messages. For rhasspy <= 2.4, this should be set to http://[RHASSPYHOST]:12101/api/text-to-speech.

The --start-port option denotes the beginning of the dynamic RPC port range, and should not be changed unless there are issues with other services.

CLI

The hss_cli tool is used to:

  • list all installed skills
  • install a skill
  • uninstall a skill
  • update one or all installed skills

Usage

Usage:
   $ ./hss_cli [OPTIONS]

Options:

   --list                          List all installed skills

   --install    --url=[URL]        Install a new skill using [URL]. [URL] must be a valid GIT link.
   --update     (--skill=[NAME])   Update an already installed skill named [NAME].
                                   If skill is ommited, ALL skills will be updated.

   --uninstall  --skill=[NAME]     Uninstall an already installed skill named [NAME]

   --help                          Show this help and exit
   --version                       Show version and exit

Installing

When installing skills, the GIT repository URL must be given. The repository name is considered to be the skill-name, and will be the subdirectory name within the skills-directory.

Installing a skill involves the following steps:

  • cloning the remote repository
  • creating a virtualenv
  • installing dependencies given by the skill developer (requirements.txt)
  • asking the user for configuration parameters, if the skill provides the config.ini.default file

The server must be restarted after installing a new skill.

Updating

Updating one or more skills is as easy as pulling changes from the remote GIT repository of the skill.

In addition, hss_cli will compare the existing config.ini (if it exists) with a new config.ini.default, to detect newly added configuration parameters, and then prompt the user for the parameters.

Uninstalling

Uninstalling simply leads to the deletion of the skill's subfolder within the skill-directory. No other actions involved.

Skill development

In order to develop your own skill, check out the hss_skill package at HSS - Skill. It will give detailed instructions of how to develop skills for the hermes skill server.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hss_server-0.0.4.tar.gz (14.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hss_server-0.0.4-py3-none-any.whl (16.6 kB view details)

Uploaded Python 3

File details

Details for the file hss_server-0.0.4.tar.gz.

File metadata

  • Download URL: hss_server-0.0.4.tar.gz
  • Upload date:
  • Size: 14.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.7.2

File hashes

Hashes for hss_server-0.0.4.tar.gz
Algorithm Hash digest
SHA256 26ae0f643b2fa34a453706349628ad33cdbb2300ef880dc7542846ad3a1b0e95
MD5 ef7f1a725a219d4e5c056501be48983c
BLAKE2b-256 ec223f1c00e3e19d954084dd9dc1c69f7a9f3a05619d1a5430139c0213dc4f77

See more details on using hashes here.

File details

Details for the file hss_server-0.0.4-py3-none-any.whl.

File metadata

  • Download URL: hss_server-0.0.4-py3-none-any.whl
  • Upload date:
  • Size: 16.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.7.2

File hashes

Hashes for hss_server-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 71cf7b5fb1f97275fbf839f6ccee8c3158c9d32979e5310053adbd3f368c4f37
MD5 8b4860d9a12d8fbc4cb98ea9789cca12
BLAKE2b-256 0ae5fe75a2f32c62f6d3a70119f9cd368cf09e99f6cf286dc7f1401559adce33

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page