MagicMirror Forum
    • Recent
    • Tags
    • Unsolved
    • Solved
    • MagicMirror² Repository
    • Documentation
    • 3rd-Party-Modules
    • Donate
    • Discord
    • Register
    • Login
    A New Chapter for MagicMirror: The Community Takes the Lead
    Read the statement by Michael Teeuw here.

    MMM-HomeKit | Control your MagicMirror with Apple HomeKit

    Scheduled Pinned Locked Moved System
    27 Posts 17 Posters 19.5k Views 20 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • ? Offline
      A Former User
      last edited by

      MMM-HomeKit

      This is not a MagicMirror module but it allows you to control your mirror from the Home application with Apple HomeKit

      How it works

      To use HomeKit with your MagicMirror it will not be enough to install a module. For this we will have to use HomeBridge which is an emulator of the iOS HomeKit API. This will allow us to connect our Apple device to the Raspberry. Then we will have to install the homebridge-cmdswitch2 module that will allow us to perform bash commands when switching on / off from the Home application.

      Screenshot

      Prerequisites

      • MagicMirror2
      • HomeBridge (I let you look here to see how to install HomeBridge. It’s very simple.)

      Step 1 - Install the module

      cd
      sudo npm install -g homebridge-cmdswitch2
      

      Step 2 - Edit HomeBridge config

      sudo nano .homebridge/config.json
      

      Now Copy/paste this piece of JSON code into the “platform” section

      "platforms": [{
        "platform": "cmdSwitch2",
        "name": "Raspberry Pi",
        "switches": [{
          "name" : "Mirror",
          "on_cmd": "tvservice --preferred && sudo chvt 6 && sudo chvt 7",
          "off_cmd": "tvservice -o",
          "state_cmd": "tvservice --status | grep -i 'HDMI DMT'",
          "manufacturer": "Raspberry Pi Foundation",
          "model": "Raspberry Pi 3 Model B",
        }]
      }]
      

      Save the file.

      Step 3 - Start HomeBridge

      cd
      homebridge
      

      Configuring

      Here is the descriptive table of the module parameters (this table comes from the cmdSwitch2 Github)

      Fields Description Required
      platform Must always be cmdSwitch2. Yes
      name For logging purposes. No
      switches Array of switch config (multiple switches supported). Yes
      |- name* Name of your device. Yes
      |- on_cmd Command to turn on your device. No
      |- off_cmd Command to turn off your device. No
      |- state_cmd Command to detect an ON state of your device. No
      |- polling State polling (Default false). No
      |- interval Polling interval in s (Default 1s). No
      |- timeout** Commands execution timeout in s (Default 1s). No
      |- manufacturer Manufacturer of your device. No
      |- model Model of your device. No
      |- serial Serial number of your device. No

      Use

      Now you can fully use MagicMirror and HomeKit to turn the screen of your raspberry on and off ! Enjoy it well !

      Turn off the mirror from the Home application Turn on the mirror with Siri

      Contributing

      If you find any problems, bugs or have questions, please open a GitHub issue in this repository.

      ? 1 Reply Last reply Reply Quote 0
      • ? Offline
        A Former User @Guest
        last edited by

        @XC2DN
        Can we add additional cmdSwitch2 platform for other shell command? If so, module controlling could be added besides screen on/off

        ? 1 Reply Last reply Reply Quote 0
        • ? Offline
          A Former User @Guest
          last edited by

          @Sean said in MMM-HomeKit | Control your MagicMirror with Apple HomeKit:

          Can we add additional cmdSwitch2 platform for other shell command? If so, module controlling could be added besides screen on/off

          Yes! Absolutely. Just add this to the “switches” sections.

          {
              "name" : "Name of the HomeKit command",
              "on_cmd": "bash command to show a module",
              "off_cmd": "bash command to hide a module",
              "state_cmd": "bash command to get the hide / show status'",
              "manufacturer": "Raspberry Pi Foundation",
              "model": "Raspberry Pi 3 Model B",
          }
          

          Your config.json should look something like this.

          "platforms": [{
            "platform": "cmdSwitch2",
            "name": "Raspberry Pi",
            "switches": [{
              "name" : "Mirror",
              "on_cmd": "tvservice --preferred && sudo chvt 6 && sudo chvt 7",
              "off_cmd": "tvservice -o",
              "state_cmd": "tvservice --status | grep -i 'HDMI DMT'",
              "manufacturer": "Raspberry Pi Foundation",
              "model": "Raspberry Pi 3 Model B",
            },
            {
              "name" : "Name of the HomeKit command",
              "on_cmd": "bash command to show a module",
              "off_cmd": "bash command to hide a module",
              "state_cmd": "bash command to get the hide / show status'",
              "manufacturer": "Raspberry Pi Foundation",
              "model": "Raspberry Pi 3 Model B",
            }]
          }]
          
          1 Reply Last reply Reply Quote 0
          • P Offline
            p4lsec
            last edited by

            Excellent module!

            Got everything working fairly easily. I am attempting to add my own switches, but the issues I am having is that the “on_cmd” and “off_cmd” do not use npm correctly. Any ideas? This is the error it’s throwing. Didn’t have luck Googling.

            [3/10/2019, 1:42:17 PM] [Raspberry Pi] npm ERR! path /home/pi/package.json
            npm ERR! code ENOENT
            npm ERR! errno -2
            npm ERR! syscall open
            npm ERR! enoent ENOENT: no such file or directory, open '/home/pi/package.json'
            npm ERR! enoent This is related to npm not being able to find a file.
            npm ERR! enoent 
            
            ? 1 Reply Last reply Reply Quote 0
            • P Offline
              p4lsec
              last edited by

              Okay, looks like something with my npm was broken. It was working before, so I think installing this module or Homebridge did it. Attempting to fix.

              1 Reply Last reply Reply Quote 0
              • ? Offline
                A Former User @p4lsec
                last edited by A Former User

                @p4lsec said in MMM-HomeKit | Control your MagicMirror with Apple HomeKit:

                Excellent module!

                Hello ! Thank you for that compliment.
                Unfortunately, I don’t know where your problem comes from. What is the command you are executing that gives you this error?
                Keep me informed :wink:

                1 Reply Last reply Reply Quote 0
                • N Offline
                  Niggich
                  last edited by

                  @XC2DN
                  My Homebridge is at another Pi then the Mirror. How I have to use it?

                  C 1 Reply Last reply Reply Quote 0
                  • C Offline
                    Caimin @Niggich
                    last edited by

                    @Niggich Making connection to the other pi through ssh to send commands? Or if your using a module which allows to give commands through a url u can use curl… In this example I use both…

                     {
                           "name" : "Magic Mirror",
                           "on_cmd": "curl -s 'http://192.168.X.XX:8080/remote?action=MONITORON'",
                           "off_cmd": "curl -s 'http://192.168.X.XX:8080/remote?action=MONITOROFF'",
                           "state_cmd": "sshpass -p 'sshpassword' ssh -oStrictHostKeyChecking=no pi@192.168.X.XX vcgencmd display_power | grep -q '1' && echo '1'",
                           "polling": true,
                           "interval": 10,
                           "manufacturer": "XXX",
                           "model": "v 1.0.0"
                       }
                    

                    You might need to install sshpass: apt-get install sshpass, which allows you to connect through ssh with password without being prompted on the command line for the password.

                    N A 2 Replies Last reply Reply Quote 0
                    • N Offline
                      Niggich @Caimin
                      last edited by

                      @Caimin Thank you a lot. It is working like this. I install sshpass to send the Commands via ssh.

                      1 Reply Last reply Reply Quote 0
                      • K Offline
                        kevinlingley
                        last edited by

                        This post is deleted!
                        1 Reply Last reply Reply Quote 0
                        • 1
                        • 2
                        • 3
                        • 1 / 3
                        • First post
                          Last post
                        Enjoying MagicMirror? Please consider a donation!
                        MagicMirror created by Michael Teeuw.
                        Forum managed by Sam, technical setup by Karsten.
                        This forum is using NodeBB as its core | Contributors
                        Contact | Privacy Policy