Voco - Voice control for your MySensors network
Over the past few weeks I've been working on Voco, an add-on for the WebThings Gateway that enables privacy friendly voice control. It's built on Snips, so it requires no internet connection.
Since I mostly use the WebThings Gateway to manage a collection of experimental privacy friendly smart home devices that are based on MySensors, it has been fine-tuned to work well with any MySensors network.
Furthermore, the MySensors add-on has a new features that will separate devices with a lot of toggles into multiple separate things. This allows you to name them separately, and thus target them perfectly using just your voice.
It also has a lot of time-based functionality. E.g. you can say "Turn on the heater until 5pm", or "Turn on the relay between 3 and 5 o'clock".
You can also ask the classics, like ask for the time, and set timers, reminders and alarms.
For a full list of all its capabilities check out the Github page.
Voco is a vital part of Candle, the privacy friendly smart home.
Work on Voco was supported by the Creative Industries Fund NL and the Sherpa project. Sherpa, and by extension this project, has received funding from the European Union’s Horizon 2020 research and innovation programme, under grant agreement No 786641.
CrankyCoder last edited by
I am going to be checking this out. I have been working with snips on some other stuff, so this could be very interesting.
CrankyCoder last edited by
Do you have any install documentation for it? Any docs for integrating into existing snips setup?
Not really? I would imagine:
- Install the WebThings Gateway (burn image to SD card)
- Install the Voco add-on (just takes a few clicks inside the UI)
- If you know what you're doing, the Voco add-on has the ability to replace its built in assistant with your own. You just have to provide a download location for your assistant zip file, and it will replace the built-in one with yours.
Currently the add-on does not start the skills server, so if your assistant uses specific skills (e.g. other people's apps), then you will have to install the skills server too, through SSH.
The more complex version:
Clone the Voco add-on on github and replace parts of its code in with your own. The most important part for you would then be to just replace the calls in the intent callback.
Also replace the assistant.zip in the voco/snips folder with your own.
Then you can install your own version of the add-on by going into SSH (can be enabled under development in the WebThings Gateway menu) and cloning your own version into the add-ons folder. E.g.
(make sure you remove Voco first if it's already installed)
shh firstname.lastname@example.org cd ~/.mozilla-iot/add-ons git clone https://github.com/YOUR_CLONE_OF_VOCO ./package.sh sudo systemctl restart mozilla-iot-gateway.service
After that, your version of the Voco add-on should show up in the add-on list of your WebThings Gateway.
This add-on has also been updated, and now uses the latest version of Snips again.
skywatch last edited by
@alowhum Really interesting development this - I'll take a deeper look when I get a few more urgent things out of the way....
jholweg last edited by
@alowhum We installed Snips as part of a CandleSmartHome test setting to control our smart bio-ethanol burners. The Raspberry pi with Webthings works and we can control the burner already. However, Snips is only answering things like "What is the time". When asking to turn in one of the devices, it replies "I couldn't do that." Debug logging shows that at some point it's trying to do an HTTP request to "/things" and gets a "403" response, after which it says "Skipping it". For a full log, please see https://github.com/mozilla-iot/addon-list/issues/388#issuecomment-555504593
Any idea what could be wrong? (If I ssh into the raspberry and execute a CURL to port 8080, I get the 403 error as well; CURL to port 4443 gives "certificate error", unless I specify the "-k" parameter, in which case it does provide me with a list of devices in JSON format.)
According to that link you already solved it, and it was caused by the external access option. Nice work.