• Recent
  • Tags
  • Unsolved
  • Solved
  • MagicMirror² Repository
  • Documentation
  • 3rd-Party-Modules
  • Donate
  • Discord
  • Register
  • Login
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.

Multiple "Mirrors" from a single device

Scheduled Pinned Locked Moved Solved General Discussion
20 Posts 3 Posters 952 Views 4 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.
  • S Offline
    sdetweil @DarrenO 0
    last edited by sdetweil Nov 7, 2024, 12:46 PM Nov 7, 2024, 12:45 PM

    @DarrenO-0 the json file my installer script creates is just to give the app name in pm2 a meaningful mame,

    if you use
    pm2 start mmfoo.sh
    the the app name will be mmfoo

    the watch function is broken, pm2 now only supports watching a folder for changes, but file updates don’t count as a folder change

    can you change the name of the script, yes, anything you like

    once you update the json file , just
    pm2 start xxxx.json
    and it will take the info from there

    Sam

    How to add modules

    learning how to use browser developers window for css changes

    B D 2 Replies Last reply Nov 7, 2024, 7:28 PM Reply Quote 0
    • B Offline
      BKeyport Module Developer @sdetweil
      last edited by BKeyport Nov 7, 2024, 10:39 PM Nov 7, 2024, 7:28 PM

      As I rewrote that section in the docs - I’ll give a (semi) live example (My second mirror is down due to lack of space, I’m working on a solution) - this is what works for me at the moment. I do realize I’m doubling up on some things.

      In my Pi’s config, I also reverted to X11 desktop rather than wayland for reasons unrelated. I have not tested this on Wayland.


      mm.sh

      cd /home/bkey1970/MagicMirror
      DISPLAY=:0 npm start
      

      mm2.sh

      cd /home/bkey1970/MagicMirror
      export MM_CONFIG_FILE=config/config2.js
      export MM_PORT=8081
      DISPLAY=:0 npm start
      

      the start of config.js:

      var config = {
      	address: "0.0.0.0",
      	port: 8080,
      	ipWhitelist: [],
      	language: "en",
      	timeFormat: 12,
      	units: "imperial",
      	//logLevel: ["INFO", "LOG", "WARN", "ERROR", "DEBUG"],
      	modules: [
      

      The start of config2.js:

      var config = {
      	address: "0.0.0.0",
      	port: 8081, 
      	electronOptions: { 
      		x: 1920
      	},
      	ipWhitelist: [], 
      	language: "en",
      	timeFormat: 12,
      	units: "imperial",
      	//logLevel: ["INFO", "LOG", "WARN", "ERROR", "DEBUG"],
      	customCss: "css/custom2.css",
      	modules: [
      

      PM2 commands to tie it all together:

      pm2 start /home/<username>/<path>/mm.sh --name "MM Main"
      pm2 start /home/<username>/<path>/mm2.sh --name "MM 2nd"
      pm2 save
      

      The "E" in "Javascript" stands for "Easy"

      D 1 Reply Last reply Nov 7, 2024, 11:11 PM Reply Quote 0
      • D Offline
        DarrenO 0 @sdetweil
        last edited by Nov 7, 2024, 9:00 PM

        @sdetweil
        OK, so no requirement to update the “name” and “watch” values in the .json file, but it doesn’t hurt to do so from an fyi perspective, right???

        When I run “pm2 start config2.js”, I can then access the second instance via browser on another device with no issue, but it also takes over the display directly connected to the MM host device.
        I can view both MM instances via a browser on different devices (great, as that was one of my original questions), but what if i want to view instance #1 via the display directly connected to the MM host device and instance #2 via a remote browser (or vice versa?

        My .sh files to start each MM instance are as follows:

        mm.sh
        #!/bin/bash
        cd ~/MagicMirror
        DISPLAY=:0 npm start

        mm2.sh
        #!/bin/bash
        cd ~/MagicMirror
        export MM_CONFIG_FILE=config/config2.js
        export MM_PORT=8081
        npm start
        #DISPLAY=:0 npm start

        Should I change anything, or what would I need to change, to have the desired outcome described above?

        S 1 Reply Last reply Nov 7, 2024, 9:25 PM Reply Quote 0
        • S Offline
          sdetweil @DarrenO 0
          last edited by Nov 7, 2024, 9:25 PM

          @DarrenO-0 npm start run the ui locally and the server for remotes

          npm run server starts the server for remote and browsers locally

          both cases remotes need the server config to allow outside connection

          pm2 start xxxx
          where xxxx is the script name ( end in . sh)
          OR
          the json file where it can get the info

          the different config is set thru an environment variable
          MM_CONFIG_FILE=

          in linux by default env variables are NOT passed to children processes
          so you have to use export to
          make it passed on

          on Windows env variables ARE passed to children processes by default

          the port number is used on the remote system to access the appropriate instance

          http://mm-server-address:mm-instance-port-number

          Sam

          How to add modules

          learning how to use browser developers window for css changes

          D 1 Reply Last reply Nov 7, 2024, 10:37 PM Reply Quote 0
          • D Offline
            DarrenO 0 @sdetweil
            last edited by Nov 7, 2024, 10:37 PM

            @sdetweil
            so mm2.sh should/would be:
            #!/bin/bash
            cd ~/MagicMirror
            export MM_CONFIG_FILE=config/config2.js
            export MM_PORT=8081
            npm run server
            #DISPLAY=:0 npm start

            while mm.sh remains untouched

            When I have this in place:

            • instance #1 correctly displays on the screen attached to the MM host… tick
            • i can also view instance #1 on a browser (on port 8080)… tick
            • can view instance #2 in a browser (on port 8081)… tick

            However, when I run mm2.sh while I am SSH’d to the MM, I am not returned to the command line so I can save the pm2 setup.
            I just have a prompt saying “Ready to go! Please point your browser to http://ipaddress:8081”

            I have to Ctrl-C to cancel out, which then stops the server function and the #2 instance is no longer displayed

            S 1 Reply Last reply Nov 7, 2024, 10:46 PM Reply Quote 0
            • S Offline
              sdetweil @DarrenO 0
              last edited by Nov 7, 2024, 10:46 PM

              @DarrenO-0 in Windows when you want an app to run when started from the command prompt you do

              detach command…
              in linux you add and & as the last character

              comand… &

              now… STOPPING those detached/background things are tough…
              here is one value for pm2… it EXPECTS the script to block

              and so you can kill it thru pm2 stop xxxx
              BUT
              pm2’s JOB is to start and app AND KEEP IT RUNNING…
              so you kill it (ctrl-q) or it fails, pm2 will restart it

              SO, if you want both to run and want to do it manually, open a second ssh session
              until you are happy and then let pm2 run them both

              Sam

              How to add modules

              learning how to use browser developers window for css changes

              D 1 Reply Last reply Nov 7, 2024, 11:06 PM Reply Quote 0
              • D Offline
                DarrenO 0 @sdetweil
                last edited by Nov 7, 2024, 11:06 PM

                @sdetweil
                OK, so I launched the second instance of MM via mm2.sh with the “npm run server” command.
                I then launched a second SSH session to the MM device and issued a “pm2 save” command.
                Rebooted the MM device from the second SSH session but the second MM instance didn’t come up.

                S 1 Reply Last reply Nov 7, 2024, 11:25 PM Reply Quote 0
                • D Offline
                  DarrenO 0 @BKeyport
                  last edited by Nov 7, 2024, 11:11 PM

                  @BKeyport
                  isn’t this to run two MM’s on a single display and have the second MM displayed from the 1920th pixel on the x axis?

                  I’m wanting to run two MM’s, each instance on isolated displays - one on the display connected to the host in the traditional method and the other on a remote display like another computer, or TV with an in-built browser.

                  S B 3 Replies Last reply Nov 7, 2024, 11:26 PM Reply Quote 0
                  • S Offline
                    sdetweil @DarrenO 0
                    last edited by sdetweil Nov 7, 2024, 11:29 PM Nov 7, 2024, 11:25 PM

                    @DarrenO-0 and what does the status say?

                    pm2 status
                    pm2 logs 1 (or whatever the number is of the line for the second ) --lines=xxxx
                    where xxxx is the number of the most recent lines in the log for that app

                    I have lots of apps on my desktop pm2
                    pm2 status output

                    | id │ name               │ mode     │ ↺    │ status    │ cpu      │ memory   │
                    ├────┼────────────────────┼──────────┼──────┼───────────┼──────────┼──────────┤
                    │ 1  │ MagicMirror        │ fork     │ 27   │ stopped   │ 0%       │ 0b       │
                    │ 7  │ MagicMirror1       │ fork     │ 279… │ stopped   │ 0%       │ 0b       │
                    │ 0  │ Smart Mirror       │ fork     │ 31   │ stopped   │ 0%       │ 0b       │
                    │ 3  │ checkarec          │ fork     │ 0    │ online    │ 0%       │ 3.5mb    │
                    │ 6  │ smart-mirror       │ fork     │ 9    │ online    │ 0%       │ 3.5mb    │
                    │ 5  │ smart-mirror ttt   │ fork     │ 10   │ stopped   │ 0%       │ 0b       │
                    │ 4  │ start_alexa_bk     │ fork     │ 0    │ online    │ 0%       │ 3.5mb    │
                    │ 2  │ startspot          │ fork     │ 328  │ stopped   │ 0%       │ 0b       │
                    └────┴────────────────────┴──────────┴──────┴───────────┴──────────┴────────
                    

                    the count under the circle coloum is restarts of that app

                    Sam

                    How to add modules

                    learning how to use browser developers window for css changes

                    D 1 Reply Last reply Nov 7, 2024, 11:41 PM Reply Quote 0
                    • S Offline
                      sdetweil @DarrenO 0
                      last edited by sdetweil Nov 7, 2024, 11:29 PM Nov 7, 2024, 11:26 PM

                      @DarrenO-0 the server side still provides access regardless of where the local display output is configured

                      AND if you run server mode, then the config for the local electron isn’t used

                      Sam

                      How to add modules

                      learning how to use browser developers window for css changes

                      1 Reply Last reply Reply Quote 0
                      • 1
                      • 2
                      • 1 / 2
                      1 / 2
                      • First post
                        8/20
                        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