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-ModuleScheduler - Module Schedules and Notifications

    Scheduled Pinned Locked Moved System
    moduleschedulecronnotifications
    82 Posts 20 Posters 154.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.
    • I Offline
      ianperrin @Alvinger
      last edited by ianperrin

      @Alvinger:

      A few quick observations,

      Firstly I’d suggest removing the leading zeros from each field in the cron expression, i.e. changing 00 06 * * * to 0 6 * * * - some parsers may support this but I believe the cron tab specification states the valid values for the minute field is 0-59 and hour field is 0-23. If in doubt, try using http://crontab.guru/ to test your expressions.

      Next up, make sure you updated to the latest version (git pull from the module directory and restart the mirror) to ensure the dim functionality is available to your mirror.

      If after ensuring the cron expressions are correct and you have the latest version, you are still experiencing this problem, can you check the output of the log (pm2 logs mm). You should have something like this

      MM-ModuleScheduler received CREATE_MODULE_SCHEDULE
      MMM-ModuleScheduler is scheduling clock using '0 6 * * *' and '30 9 * * *'
      MMM-ModuleScheduler is dimming clock
      MMM-ModuleScheduler has scheduled clock
      MMM-ModuleScheduler will next show clock at Wed Oct 15 2016 06:00:00 GMT+0000 (UTC)
      MMM-ModuleScheduler will next dim clock at Wed Oct 15 2016 09:30:00 GMT+0000 (UTC)
      

      Can you share the output of your log here so I can take a look?

      "Live as if you were to die tomorrow. Learn as if you were to live forever." - Mahatma Gandhi

      1 Reply Last reply Reply Quote 0
      • I Offline
        ianperrin
        last edited by

        @Alvinger, @cowboysdude

        Having looked at the code, there may be certain circumstances where the module is initially hidden, even when the dimLevel option is defined. I believe this only relates to schedules are defined using arrays with a particular show > dim > show > dim sequence.

        I’ve pushed an update to try an fix this, so feel free to update the module and give it a go.

        Alternatively, (and also highly recommended) would be to minimise the number of cron jobs create by simplifying your schedule as follows

        {
         module: "clock",
         position: "top_left",
         classes: "scheduler",
         config: {
          // Show at 06:00 and 16:00, then dim to 50% at 09:30 and 22:30 every day
          module_schedule: {from: '0 6,16 * * *', to: '30 9,22 * * *', dimLevel: '50'},
         }
        },
        

        "Live as if you were to die tomorrow. Learn as if you were to live forever." - Mahatma Gandhi

        1 Reply Last reply Reply Quote 0
        • AlvingerA Offline
          Alvinger
          last edited by

          @ianperrin
          It works! It was probably the code update that fixed even though I also simplified the cron expression.

          All my other schedules (which hides, not dims, modules) worked before even with arrays having double quotes and leading zeroes. And they still work.

          Great work @ianperrin, and thank you for a must-have module!

          1 Reply Last reply Reply Quote 1
          • I Offline
            ianperrin
            last edited by

            An update to MMM-ModuleScheduler is now available which includes the ability to

            • Send notifications using a schedule - thanks for the idea @cowboysdude
            • Control how quickly modules are shown/hidden (animationSpeed option)
            • Override the name of the class used to identify the modules which have a schedule (schedulerClass option)

            Check out the updated documentation for more information.

            "Live as if you were to die tomorrow. Learn as if you were to live forever." - Mahatma Gandhi

            1 Reply Last reply Reply Quote 1
            • cowboysdudeC Offline
              cowboysdude Module Developer
              last edited by

              That is awesome!! You just keep making this better and better!!! Thank you!

              1 Reply Last reply Reply Quote 1
              • AlvingerA Offline
                Alvinger
                last edited by

                @ianperrin @cowboysdude
                Check out my new module MMM-tvservice in the System section of the forum. I took the idea from @ianperrin when he suggested a module to act on notifications.

                1 Reply Last reply Reply Quote 0
                • I Offline
                  ianperrin
                  last edited by

                  @Alvinger interesting, I’ll check it out.

                  You may also be interested in taking a look at MMM-Remote-Control. It contains a heap of functions to control your mirror (including turning the monitor off and on, rebooting the pi, restarting the MM process etc) remotely.

                  I’ve been working with @Jopyth to expose this functionality via the use of sendNotification.

                  This should allow schedules like:

                  notification_schedule: [
                      {notification: 'REMOTE_ACTION', schedule: '30 9 * * *', payload: {action: 'MONITOROFF'}},
                      {notification: 'REMOTE_ACTION', schedule: '30 18 * * *', payload: {action: 'MONITORON'}}
                  ]
                  

                  Check out the repository on GitHub - the latest code includes this capability

                  "Live as if you were to die tomorrow. Learn as if you were to live forever." - Mahatma Gandhi

                  J 1 Reply Last reply Reply Quote 1
                  • J Offline
                    Jopyth Moderator @ianperrin
                    last edited by Jopyth

                    @ianperrin The actions available are now also documented in the readme, so noone has to dig through all the code neccessarily. See this section, a table is down below.

                    Helpful sticky: How to troubleshoot

                    1 Reply Last reply Reply Quote 1
                    • AlvingerA Offline
                      Alvinger
                      last edited by Alvinger

                      @ianperrin @Jopyth: sorry, wasn’t aware that MMM-Remote-Control had that ability. I would recommend MMM-Remote-Control instead of MMM-tvservice to the general user as it covers all functionality needed.

                      MMM-tvservice is more for the linux enthusiast who wants a program to do one thing and one thing only. I am not running MagicMirror through PM2 but rather directly via systemd so I cannot use all functionality of MMM-Remote-Control without editing the source. Also, as I am running through systemd I do not need to prefix the commands with sudo as the service already runs as root.

                      1 Reply Last reply Reply Quote 1
                      • MichMichM Offline
                        MichMich
                        last edited by

                        Very awesome work on this module! It might be interesting to look at the new show/hide mechanism: https://forum.magicmirror.builders/topic/241/revising-the-show-hide-mechanism/9

                        1 Reply Last reply Reply Quote 1
                        • MichMichM Offline
                          MichMich
                          last edited by MichMich

                          One other feature request:

                          It would be nice if there is a way to schedule a hide show based on a classname. This way I can give all my modules a class like “day” and “night”, and make a schedule:

                           {
                                  module: 'MMM-ModuleScheduler',
                                  config: {
                                      visibility_schedule: [
                                          {classes: 'day', schedule: {from: '0 6 * * *', to: '0 22 * * *' }},
                                          {classes: 'night',  schedule: {from: '0 22 * * *', to: '0 6 * * *' }}
                                      ]
                                  }
                          },
                          
                          I 1 Reply Last reply Reply Quote 2
                          • I Offline
                            ianperrin @MichMich
                            last edited by

                            @MichMich said in MMM-ModuleScheduler:

                            One other feature request:

                            It would be nice if there is a way to schedule a hide show based on a classname. This way I can give all my modules a class like “day” and “night”, and make a schedule:

                            Great idea. I was planning on adding a global module_schedule functionality, i.e. the ability to hide all modules at 10pm, rather than having to configure multiple schedules on a per-module basis.

                            I think the idea of class-based module groups makes for an interesting extension of the idea.

                            So to take your config example, if the global schedule definition includes the classes property, only those modules with that class are affected. If the global schedule definition omits the classes field then all modules are affected.

                            One for next week I suspect!

                            "Live as if you were to die tomorrow. Learn as if you were to live forever." - Mahatma Gandhi

                            1 Reply Last reply Reply Quote 0
                            • MichMichM Offline
                              MichMich
                              last edited by

                              An other small suggestion: delay all show effects with the a delay equal to the animation time. This way all Modules that will need to hide will nicely hide before any new modules fade in.

                              1 Reply Last reply Reply Quote 1
                              • I Offline
                                ianperrin
                                last edited by

                                @MichMich - some great ideas, keep them coming.

                                I’ve created issues (or rather enhancements) for these on GitHub - https://github.com/ianperrin/MMM-ModuleScheduler/issues. Feel free to review, comment etc.

                                "Live as if you were to die tomorrow. Learn as if you were to live forever." - Mahatma Gandhi

                                1 Reply Last reply Reply Quote 1
                                • Mr.MeeseeksM Offline
                                  Mr.Meeseeks
                                  last edited by

                                  Is it required to restart mm/server if a scheduler configuration is changed, add, removed?
                                  Thanks

                                  CAAAAN DOO!👍

                                  I 1 Reply Last reply Reply Quote 0
                                  • I Offline
                                    ianperrin @Mr.Meeseeks
                                    last edited by

                                    @Mr.Meeseeks Apologies for missing this one.

                                    The schedules are set up after the ALL_MODULES_STARTED or DOM_OBJECTS_CREATED notifications have been received from the core. So a restart should not be required and a refresh of the browser should be sufficient to pick up config changes.

                                    "Live as if you were to die tomorrow. Learn as if you were to live forever." - Mahatma Gandhi

                                    1 Reply Last reply Reply Quote 0
                                    • cowboysdudeC Offline
                                      cowboysdude Module Developer
                                      last edited by

                                      In retrospect I only wanted to be able to hide a module now and then LOL

                                      NEVER thought it would turn into such an awesome module!!!

                                      Thanks @ianperrin !!!

                                      1 Reply Last reply Reply Quote 2
                                      • MitchfarinoM Offline
                                        Mitchfarino Module Developer
                                        last edited by Mitchfarino

                                        @cowboysdude @ianperrin how would would I implement a schedule so that a module appeared for 5 minutes, then disappear and reappear in 5 minutes time?

                                        I’ve tried this

                                        module_schedule: { */5 * * * * },
                                        

                                        2nd edit- I thought I’d got it with this…

                                        module_schedule: { from: '*/2 * * * *', to: '*/3 * * * *'},
                                        
                                        cowboysdudeC I 2 Replies Last reply Reply Quote 0
                                        • cowboysdudeC Offline
                                          cowboysdude Module Developer @Mitchfarino
                                          last edited by cowboysdude

                                          @Mitchfarino said in MMM-ModuleScheduler:

                                          @cowboysdude @ianperrin how would would I implement a schedule so that a module appeared for 5 minutes, then disappear and reappear in 5 minutes time?

                                          I’ve tried this

                                          module_schedule: { */5 * * * * },
                                          

                                          2nd edit- I thought I’d got it with this…

                                          module_schedule: { from: '*/2 * * * *', to: '*/3 * * * *'},
                                          

                                          Yes that should make it run every five minutes…

                                          Copy and try this without brackets…

                                          '*/5 * * * *'

                                          example - schedule: ‘30 9 * * *’,

                                          1 Reply Last reply Reply Quote 0
                                          • I Offline
                                            ianperrin @Mitchfarino
                                            last edited by

                                            @Mitchfarino said in MMM-ModuleScheduler:

                                            @cowboysdude @ianperrin how would would I implement a schedule so that a module appeared for 5 minutes, then disappear and reappear in 5 minutes time?

                                            Try this

                                            module_schedule: {from: '0/10 * * * *',  to: '5/10 * * * *'}, 
                                            

                                            Which should equate to the module being

                                            • shown every 10 minutes starting from 0 minutes past the hour, i.e. 0, 10, 20 etc
                                            • hidden every 10 minutes starting from 5 minutes past the hour, i.e. 5, 15, 25 etc

                                            "Live as if you were to die tomorrow. Learn as if you were to live forever." - Mahatma Gandhi

                                            MitchfarinoM 1 Reply Last reply Reply Quote 1

                                            Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                                            Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                                            With your input, this post could be even better 💗

                                            Register Login
                                            • 1
                                            • 2
                                            • 3
                                            • 4
                                            • 5
                                            • 2 / 5
                                            • 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