Testing and Feedback for Magic-Mirror-Voice-Control-Skill

How to install magic-mirror-voice-control-skill

  • Install magic-mirror-voice-control-skill by …

    • git clone https://github.com/dmwilsonkc/magic-mirror-voice-control-skill.git

    • When you first activate the skill, Mycroft will attempt to find the ip.json which will hold the ip address of your MagicMirror. If that file does not exist Mycroft will say

      "To activate the magic-mirror-voice-control-skill I need to know the I P address of the magic mirror. What is the I P address of the magic mirror you would like to control with your voice?"

    • Be ready, because Mycroft will expect an answer, and you will hear the listening chirp as soon as Mycroft finishes speaking. Be ready with the response “Set IP Address 192 dot 168 dot X dot XXX”. Replace the X’s with your MagicMirror’s IP Adress. It can be finicky. So if it doesn’t work, just say ‘Hey Mycroft’… 'Set IP Adress 192 dot 168 dot X dot XXX again. Be careful not to say ‘Set IP Adress to’ because Mycroft tries to add the word ‘to’ into the IP Adress.

  • magic-mirror-voice-control-skill connects to a working install of MagicMirror from …

    • https://magicmirror.builders/

    • which can be installed by 'git clone https://github.com/MichMich/MagicMirror.git'

    • WARNING!!! IF YOU PLAN TO HAVE BOTH MAGIC MIRROR AND MYCROFT OPERATING ON THE SAME RASPBERRY PI, YOU MUST USE MAGIC MIRROR V2.3.1 AND NOT THE LATEST VERSION 2.4.1 BECAUSE THE V2.4.1 HAS A NEWER VERSION OF ELECTRON WHICH WILL CAUSE EXTREMELY HIGH CPU USAGE AND WILL OVERHEAT YOUR RPi.

    • you can use git checkout 60b9a5b

    • in the config.js you will need to modify your ip whitelist like so:

      address: "0.0.0.0", port: 8080, ipWhitelist: ["127.0.0.1", "192.168.X.1/24"],

      where 192.168.X.1/24 -----------X is your local network address

    • In addition to the default modules the MMM-Remote-Control module and my fork of the MMM-kalliope module must be installed for the skill to function as it does in the video. To add the modules to the config.js follow the instructions for each module.

    • If you would like to see the steps I took to have both a working copy of MagicMirror and Mycroft operating on the same RPi you can check out these two links Creating my first skill… and Trying to install both…

How to test magic-mirror-voice-control-skill

Specify the steps the user should take to test the Skill, such as;

  • Speak —hey mycrofthide clock

  • Mycroft should —remove the clock from the MagicMirror display

  • Mycroft has a number of different “system action keywords”
    refresh
    restart
    reboot
    shutdown
    show
    hide
    turn on
    turn off
    update
    conceal
    display
    wake up
    go to sleep
    save

    When these system action keywords are combined with “System Keywords” like

    article details
    mirror
    monitor
    raspberry pi
    pi
    modules
    screen

    You can Reboot Pi for example or Turn Off Monitor or Save Pi or Update Mirror
    You should see the action taken, and get an audible response from Mycroft.

  • There are also actions that can be directed at modules:
    hide
    show
    display
    conceal
    install
    add
    turn on
    turn off
    update

    That need to be coupled with “Module Keywords” like:
    alert
    update notification
    clock
    calendar
    compliments
    wunder ground
    traffic
    google traffic map
    email
    remote control
    news feed
    page indicator
    remote control repository
    button
    buttons
    carousel
    carousel navigation
    connection status
    hide all
    glance
    module scheduler
    on screen menu
    tabulator
    bitcoin
    ethereum
    lice
    stock
    stocks

    In all, Mycroft can interact with 340 different modules. But the only commands that Mycroft will take action are on modules that are actually installed on the MagicMirror. Like hide clock, or show email, or turn off weather for example.

Mycroft will respond to every intent that is recognized with an action which you will see on the mirror and a verbal response from the success.dialog:
done
complete
success
as you wish
by your command

If the command doesn’t make sense, like install raspberry pi, Mycroft should respond with incrorrect.dialog.
‘That command is not valid, please restate it’ or
‘I cannot follow that command, please say it a different way’
‘That command does not make sense, please try again’

If a module is not installed, Mycroft will respond:
“That module does not appear to be installed.” or
“I cannot find that module installed on the magic mirror.”

Where feedback on magic-mirror-voice-control-skill should be directed to:

Feedback is preferred here on this post, or via [Mycroft Chat] -> @dmwilsonkc (https://chat.mycroft.ai

1 Like

@dmwilsonkc,
Very interested in this project but currently don’t have the hardware to make it happen. It is on my wish list though. Few questions (unrelated to the skill).

  1. How big is the mirror and display?
  2. Did you use Glass or Acrylic?
  3. Could you have a larger mirror with smaller display in one region of the mirror?
  4. Can the MM be a separate installation (hardware) to mycroft?

Looks great by the way.

@pcwii I have not built the physical mirror yet. My plan is to use an old 32” LCD monitor and acrylic mirror. As far as using a smaller display with a larger mirror, it is all up to you and your personal preference. You can use separate installations of Mycroft and Magic Mirror. You can even use this skill with a Mark 1 and a MagicMirror as long as it is on the same network, and the mirror has the proper modules installed and the IP whitelist is configured in the mirror’s config.js

I’m love your skill iv got to say and after finding out about picroft I would like to us this ai with my MagicMirror2, I’m running the latest MagicMirror2, you mentioned about over heating issues is this with no pi cooling or not as I have a heat sink and fan on the cpu and ram and a heat sink on the smsc chip?? Or is it better to just downgrade the mirror version, thanks for the great work, just one more thing is there any more progress with the skill??

@Jmh474 You can use any version of MagicMirror you like as long as the MMM-Remote Control Module and my branch of the MMM-kalliope Module are installed. My concern about the overheating is because I had both the MagicMirror and Picroft installed on the same RPi. If you experience overheating issues, you can always use a seperate RPi for Picroft, so long as they are on the same network and have access to the MM’s ip address. You could also use the skill (so long as the modules are installed on the Mirror) with a Mark 1 and quite probably a Mark II when they ship.

The the skill works by sending http requests to the MagicMirror, so as long as the modules are installed and you’ve properly whitelisted the Picroft’s ip, it should work perfectly. :slight_smile:

@Jmh474 Oh… I haven’t been able to do anymore work on the skill for quite some time. I’m not sure what other functionality you’re looking for, but I’m super busy with work and I’m not sure when I could get to it. If you’ve got cooling with your mirror overheating will probably not be a problem for you, I am using a basic RPi 3b with a 16gb sd card. Nothing fancy, but overheating is a consideration for me.

thanks for the fast reply not much else i wanted really just asking if your still tinkering with the skill, but again grate work

as soon as the magic mirror server is not active, you will get a second error error message every second
“Bei der Verarbeitung der Anfrage ist ein Fehler im Skill Magic Mirror Voice
Control Skill aufgetreten.” pretty nerf.

@gras64 I will work on error handling for that event. Sorry.

How can we add more modules into the “availablemodules.json” file?

@Anthony_36 You can create a Pull Request for the modules you want and I can add them. You could add them yourself but they will be replaced on an update, so you could create a backup of that file after you’ve added the modules you’d like added in case the skill gets updated. If you look at it, it is a simple json file and the parts for each module you want added are pretty self explanatory. If you do a PR please include a link to the module’s url. I will update it, but not if I have to hunt for the module.

Submit the PR here

I thought that I must do much more for it to work. So if I add in availablemodules.json a small array containing the module’s url, mycroftname etc like all the others it will work just like that? If so I will do ti my self with a back up folder as you mentioned. Thank you for the tip.

@gras64 So I had the opportunity to identify instances in the code that throw the “There was an error processing a request in the MagicMirrorVoiceControl skill” error. I think I have made the necessary code changes to account for possible errors and address them so the annoying “error processing request” errors no longer happen. I also made changes in the code to check for connection and whether my fork of the MMM-kalliope is installed and configured. If you get a chance, go to the magic-mirror-voice-control-skill directory in the skills directory /mycroft-core/skills/magic-mirror-voice-control-skill/ and type

git pull

To update the skill.

Let me know if you find any other errors I need to address.

Thx,
Cheers!

1 Like

Hi @Jmh474, @gras64, and @Anthony_36

This Skill is currently being reviewed to be included in the public Skills Marketplace. It sounds like you are all using the skill currently so your experience is the best indicator of whether it’s functioning as expected.

Based on the skills current README.md, if a User installed this from the Marketplace, would they be able to get setup and perform all the actions described in the example intents?

Is there anything that you think needs to be modified before it is merged into the Marketplace?

hello, I have a problem with Magic-mirror-Voice-Control-Skill.
All works before yesterday.
Yesterday I update mycroft to the latest version 19.8.0 and now at the start of Mycroft I have the following error:

2019-09-27 22:47:28.701 | ERROR    |  9316 | mycroft.skills.skill_loader:_load_skill_source:209 | Failed to load skill: magic-mirror-voice-control-skill (ImportError("No module named 'mycroft.messagebus.client.ws'",))
Traceback (most recent call last):
  File "/home/pi/mycroft-core/mycroft/skills/skill_loader.py", line 202, in _load_skill_source
('.py', 'rb', imp.PY_SOURCE)
  File "/usr/lib/python3.5/imp.py", line 234, in load_module
return load_source(name, filename, file)
  File "/usr/lib/python3.5/imp.py", line 172, in load_source
module = _load(spec)
  File "<frozen importlib._bootstrap>", line 693, in _load
  File "<frozen importlib._bootstrap>", line 673, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 673, in exec_module
  File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed
  File "/opt/mycroft/skills/magic-mirror-voice-control-skill/__init__.py", line 31, in <module>
from mycroft.messagebus.client.ws import WebsocketClient
ImportError: No module named 'mycroft.messagebus.client.ws'
2019-09-27 22:47:28.730 | ERROR    |  9316 | mycroft.skills.skill_loader:_communicate_load_status:280 | Skill magic-mirror-voice-control-skill failed to load

Any suggestion? how fix it?

Thanks a lot

I do not know why this error is occurring. Obviously if it happened after the update, something changed with Mycroft’s code. We can ask @gez-mycroft to look into what may have changed with Mycroft-core’s web socket.

Solved…
I made that change al the issue disappear:

I have the problem “No module named” also with many other skills. it seems to me that the dependent rent for updates are not installed properly. no idea.

Hey, checkout this change to the Reminder Skill to see how you can switch it over to the new format.

@gez-mycroft Thanks! I’ve been swamped at work so I haven’t really had a chance to look at this. I’ll update the skill to the MessageBusClient, but I probably won’t be able to get to it for a couple of weeks. Thanks, Dave.

1 Like