MagicMirror Forum
    • Recent
    • Tags
    • Unsolved
    • Solved
    • MagicMirror² Repository
    • Documentation
    • 3rd-Party-Modules
    • Donate
    • Discord
    • Register
    • Login
    1. Home
    2. dmwilsonkc
    3. Posts
    A New Chapter for MagicMirror: The Community Takes the Lead
    Read the statement by Michael Teeuw here.
    D
    Offline
    • Profile
    • Following 0
    • Followers 0
    • Topics 1
    • Posts 25
    • Groups 0

    Posts

    Recent Best Controversial
    • RE: MMM-voice

      @strawberry-3.141 Thanks for the clarification. The code that I copied came from the node_helper as you are probably aware.
      One more question for you concerning extending the socket with node_helper: The code you have for the MMM-mobile module is written like:

      appSocket() {
      const namespace =
      ${this.name}/app;

          this.io.of(namespace).use((socket, next) => {
              const hash = crypto.createHash('sha256').update(socket.handshake.query.token).digest('base64');
              if (this.mobile.user && this.mobile.user === hash) {
                  console.log(`${this.name}: Access granted!`);
                  next();
              } else {
                  console.log(`${this.name}: Authentication failed!`);
                  next(new Error('Authentication failed!'));
              }
          });
      
          this.io.of(namespace).on('connection', (socket) => {
              console.log(`${this.name}: App connected!`); 
      

      Mycroft in my case is on the same RPi so I realize the code will be different and you have created this code in a way to “pair” with the mobile device. Again, I am very new to writing code like this, but can you point in the right direction as far as how to extend the socket with the MMM-mycroft module’s node_helper.js? I do not understand how to extend the socket. Why is the code appSocket() {
      const namespace =
      ${this.name}/app;

      Would the same code work for MMM-mycroft module?

      So my understanding, thanks to your help, to have a flow like this:

      Node_helper extends socket server. Mycroft-core send command to node_helper, then the node_helper sends it to the MMM-mycroft module via this.send socketnotification and the MMM-mycroft module broadcasts it to all other modules via this.sendnotification.

      I am just not sure how to code the Node_helper.js to extend the socket in my case.

      You have been extremely helpful so far and I truly appreciate all of your help.

      Also, since this is all done on the RPi, would the ipwhitelist even come into play here? My guess is no.

      posted in Utilities
      D
      dmwilsonkc
    • RE: MMM-voice

      @strawberry-3.141 Oh! Wow! That was awesome! You opened my eyes. I really am starting to understand better thanks to your incite. That makes perfect sense to treat Mycroft more like a remote-control than a voice-control because it handles the STT and can send socket messages to the MagicMirror. The MMM-Mycroft module would need to be very similar in function to your MMM-mobile module.

      For example it could have a number of ways to control the MagicMirror:

              socket.on('SHOW_MODULES', () => {
                  console.log(`${this.name}: Showing modules!`);
                  this.sendSocketNotification('SHOW_MODULES');
              });
      
              socket.on('HIDE_MODULES', () => {
                  console.log(`${this.name}: Hiding modules!`);
                  this.sendSocketNotification('HIDE_MODULES');
              });
      

      Just as an example to handle the messages sent to the socket.

      If I’m reading your code right, you’re using a qr image to handle security. I hadn’t really thought about the need for security with something like this, but I guess that really should be a consideration. In your opinion, would requiring some kind of user password/key set in the config for both MMM-Mycroft module and the Mycroft MM skill be sufficient?

      posted in Utilities
      D
      dmwilsonkc
    • RE: MMM-voice

      @strawberry-3.141 So I guess I kind of understood what is happening with the MMM-Mobile module of yours. I am very new to all of this and have only been dabbling in writing simple code up to now. It is much easier to build off of existing code that I know already works. If I could figure out a way to continuing to use your MMM-voice module and Mycroft at the same time, I would probably just do that, but as you pointed out both processes can’t use the microphone at the same time. Since Mycroft skills seem pretty straight forward to create, I thought eh… Why not attempt it.

      I can create a Mycoft skill that will send ‘HIDE_CLOCK’ for example to socket.io. What happens when the Websocket-client for Mycroft connects to socket.io and sends ‘HIDE_CLOCK’? How would MagicMirror handle that?
      Keep in mind, I have already added Mykle’s modifications from Hello-Lucy.

      That’s part of what I can’t wrap my head around.

      Thank you for responding and helping me!

      posted in Utilities
      D
      dmwilsonkc
    • RE: MMM-voice

      So I must say the MMM-voice module (also with Mykle’s Hello-Lucy enhancements) works perfectly on my mirror… when I don’t have my Mycroft AI running at start as well. It’s an Error: resource busy/unavailable referring to the Microphone. When I stop Mycroft/restart mirror it works perfectly, but then Mycroft gets the same error. Any suggestions?

      I am thinking about building a MagicMirror skill for Mycroft, but Mycroft is Python not Java, and not a module. Would it be possible to send the same commands as Hello-Lucy (i.e. ‘HIDE_CLOCK’ for example) only use Websocket-client for Mycroft and send commands to the MagicMirror via socket.io?

      If so, what would handle the socketmessage? Would it be communicated to the right module/s. Would I also need to create a fork of the MMM-voice module with code to handle the socketmessages from Mycroft?

      Any guidance would be much appreciated!

      Sorry, I should have also said my mirror is running on a RPi 3b running Debian Jessie on a 16gb sd.

      posted in Utilities
      D
      dmwilsonkc
    • 1
    • 2
    • 3
    • 3 / 3