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.6k 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.
    • A Offline
      anatius @ianperrin
      last edited by

      @ianperrin

      Hi Ian,

      Below is the relevant output of the log (error log is empty). Note that now (Monday at 3 PM) all modules are dimmed though they should not be…

      MMM-ModuleScheduler received INITIALISE_SCHEDULER
      MMM-ModuleScheduler is setting the config
      MMM-ModuleScheduler is removing all scheduled jobs
      MMM-ModuleScheduler received CREATE_NOTIFICATION_SCHEDULE
      MMM-ModuleScheduler received CREATE_GLOBAL_SCHEDULE
      MMM-ModuleScheduler is creating a global schedule for all modules using "0 7 * * 1-5" and "0 20 * * 1-5" with dim level 30
      MMM-ModuleScheduler has created the global schedule for all modules
      MMM-ModuleScheduler will next show all modules at Tue Dec 20 2016 07:00:00 GMT+0100 (CET)
      MMM-ModuleScheduler will next dim all modules at Mon Dec 19 2016 20:00:00 GMT+0100 (CET)
      MMM-ModuleScheduler is creating a global schedule for all modules using "0 8 * * 0,6" and "0 20 * * 0,6" with dim level 30
      MMM-ModuleScheduler is dimming all modules
      MMM-ModuleScheduler has created the global schedule for all modules
      MMM-ModuleScheduler will next show all modules at Sat Dec 24 2016 08:00:00 GMT+0100 (CET)
      MMM-ModuleScheduler will next dim all modules at Sat Dec 24 2016 20:00:00 GMT+0100 (CET)
      

      Many thanks for your support!
      Christian

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

        Hi @anatius (Christian)

        Okay, I think I see the problem, and a fix is in the works, its just going to take a little time until I can finish it.

        I’ve created an issue on github which contains more details on why this is happening.

        Until the fix is in place, you have two (understandably sub-optimal) options

        • leave the mirror running and it should self-correct after the next 8pm and/or 7/8am depending on when it is started :(
        • temporarily use the same expression for all days of the week, e.g.
        global_schedule: [ {from: '0 7 * * *', to: '0 20 * * *', dimLevel: '30'} ]
        

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

        A 1 Reply Last reply Reply Quote 1
        • A Offline
          anatius @ianperrin
          last edited by

          @ianperrin

          Hi Ian,

          Thanks for the support. You are right indeed, the error corrects itself the first time the scheduler sets the module to undimmed. It is just that the starting conditions are not correct, but this is no big deal for me. It is just that I was too impatient to wait for the scheduler to change status for the first time…

          Many thanks for your support!
          Christian

          1 Reply Last reply Reply Quote 0
          • lucallmonL Offline
            lucallmon
            last edited by lucallmon

            Firstly, thanks for making such an awesome module!

            However, I can get it to work with all of my modules except one… I can’t get it to work with MMM-Instagram. I have it set up just like all of my other modules, but this one just ignores the scheduler script and always runs, never following the code. Here is the module code in config.js:

            		{
            		      	module: 'MMM-Instagram',
            		        position: 'top_right',
            			classes: 'scheduler',
            		        config: {
            				module_schedule: [
            					{from: '0 5 * * 1-5', to: '0 9 * * 1-5'},
            					{from: '0 17 * * 1-5', to: '0 22 * * 1-5'},
            					{from: '0 6 * * 6-7', to: '0 24 * * 6-7'}
            				],
            		                access_token: '//ACCESS_TOKEN//',
            		                count: 200,
            		                min_timestamp: 0,
            		                animationSpeed: 2500,
                            		updateInterval: 12000
            			}
            		},
            
            

            any thoughts? here’s a picture of what it looks like when the scheduler is active: https://goo.gl/photos/K3S6HA7m61j5iSEe8

            lucallmonL 1 Reply Last reply Reply Quote 0
            • lucallmonL Offline
              lucallmon @lucallmon
              last edited by

              @ianperrin @cowboysdude

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

                @lucallmon Honestly I’m a bit lost on this one… I’m going to defer to @ianperrin for this one…

                1 Reply Last reply Reply Quote 0
                • lucallmonL Offline
                  lucallmon
                  last edited by

                  alt text
                  https://goo.gl/photos/dFMRL8JkvE5XWvaN7

                  This is what I get when I wake up and the monitor was supposed to go off at night and then turns back on in the morning. This happens every morning. Essentially, the monitor signal cuts but it never actually turns off or enters a low power state as it does when I actually shut down the Pi. This only happens when it’s overnight. When I do a trial off for a few minutes, it doesn’t do it. I think it might be the crappy old monitor, but I don’t know. Any thoughts?

                  lucallmonL 1 Reply Last reply Reply Quote 0
                  • lucallmonL Offline
                    lucallmon @lucallmon
                    last edited by

                    I have found that this white screen that happens every day essentially freezes the entire Magic Mirror and I have to press CRTL+Q to restart. It doesn’t actually freeze the entire RPi.

                    1 Reply Last reply Reply Quote 0
                    • SnilleS Offline
                      Snille Module Developer
                      last edited by

                      Hi there!
                      Thank you for this excellent module! :)
                      I would like to use the scheduler together with “Profile Switcher”.

                      Scenario:

                      • Let’s say normally I always show “Clock”, “Monthly calendar” and “Wounderground Weather” (local weather).
                      • Then on Mondays and Wednesdays at 05:30 to 07:30 I would like to also show “Weather” and “weather forecast” (in my case for another location).
                      • Then I would like to have a “profile” called “Snille” who (when activated) shows all of the above plus also “System Status” and “Bitcoin” (for example).

                      I have tried this, but it seams that when a module is scheduled, it get’s “locked” by the scheduler and therefore the “Profile Switcher” can not show it…

                      Getting this in the console (when selecting the profile):
                      Will not show currentweather. LockStrings active: module_0_MMM-ModuleScheduler
                      Will not show weatherforecast. LockStrings active: module_0_MMM-ModuleScheduler

                      If I “force” to unlock (using my Modlulebar to show and hide) the module it can be showed with the “Profile Switcher”.

                      I’m thinking… Do you have to “lock” the modules with the scheduler? :)

                      If you cant find it, make it and share it!
                      Modules: MMM-homeassistant-sensors, MMM-Modulebar, MMM-Profilepicture, MMM-Videoplayer

                      1 Reply Last reply Reply Quote 0
                      • SnilleS Offline
                        Snille Module Developer
                        last edited by

                        @ianperrin I have sent a PR to you adding an option to solve the problem. :)

                        If you cant find it, make it and share it!
                        Modules: MMM-homeassistant-sensors, MMM-Modulebar, MMM-Profilepicture, MMM-Videoplayer

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

                          Hello all,

                          @ianperrin Thanks for the great module!

                          I’ve been using MMM-ModuleScheduler successfully for a couple of weeks, however, after a recent update the module is no longer working as designed. It appears that the correct SHOW & HIDE commands are being send (see logs below), however, the modules do not appear or disappear from the MM itself.

                          The only command that works well is the HDMI on/off. Any guidance or insight is appreciated.

                          Thanks!

                            | MMM-ModuleScheduler will next send SEND_NOTIFICATION to REMOTE_ACTION at Thu Apr 20 2017 23:30:00 GMT-0400 (EDT) based on "30 23 * * *"
                          0|mm       | Powering off HDMI
                          0|mm       | MMM-ModuleScheduler is sending HIDE_MODULE to module_11_MMM-ImagesPhotos
                          0|mm       | MMM-ModuleScheduler will next send HIDE_MODULE to module_11_MMM-ImagesPhotos at Thu Apr 20 2017 23:45:00 GMT-0400 (EDT) based on "45 23 * * *"
                          0|mm       | MMM-ModuleScheduler is sending SEND_NOTIFICATION to REMOTE_ACTION
                          0|mm       | MMM-ModuleScheduler will next send SEND_NOTIFICATION to REMOTE_ACTION at Fri Apr 21 2017 06:00:00 GMT-0400 (EDT) based on "0 6 * * *"
                          0|mm       | MMM-ModuleScheduler is sending SHOW_MODULE to module_4_localtransport
                          0|mm       | MMM-ModuleScheduler will next send SHOW_MODULE to module_4_localtransport at Fri Apr 21 2017 06:00:00 GMT-0400 (EDT) based on "0 6 * * *"
                          0|mm       | MMM-ModuleScheduler is sending SHOW_MODULE to module_6_iFrame
                          0|mm       | MMM-ModuleScheduler will next send SHOW_MODULE to module_6_iFrame at Fri Apr 21 2017 06:00:00 GMT-0400 (EDT) based on "0 6 * * *"
                          0|mm       | Powering on HDMI with preferred settings
                          
                          
                          1 Reply Last reply Reply Quote 0
                          • A Offline
                            ArkantosArk
                            last edited by

                            Hi All and thanks to @ianperrin for creating this awesome module.

                            I’m trying to schedule my screen to turn it on and off in specific times from Monday to Friday, and doing also the same thing in different times on weekend.

                            Right now this is my configuration, but is not quite working:

                            {
                            module: ‘MMM-ModuleScheduler’,
                            config: {
                            notification_schedule: [
                            // TURN THE MONITOR/SCREEN ON AT 08:00 EVERY DAY
                            {notification: ‘REMOTE_ACTION’, schedule: ‘0 8 * * * 1-5’, payload: {action: “MONITORON”}},
                            // TURN THE MONITOR/SCREEN OFF AT 09:30 EVERY DAY
                            {notification: ‘REMOTE_ACTION’, schedule: ‘30 9 * * * 1-5’, payload: {action: “MONITOROFF”}},
                            // TURN THE MONITOR/SCREEN ON AT 19:00 EVERY DAY
                            {notification: ‘REMOTE_ACTION’, schedule: ‘0 19 * * * 1-5’, payload: {action: “MONITORON”}},
                            // TURN THE MONITOR/SCREEN OFF AT 23:00 EVERY DAY
                            {notification: ‘REMOTE_ACTION’, schedule: ‘0 23 * * * 1-5’, payload: {action: “MONITOROFF”}},
                            // TURN THE MONITOR/SCREEN ON AT 10:30 WEEKEND
                            {notification: ‘REMOTE_ACTION’, schedule: ‘30 10 * * * 6-7’, payload: {action: “MONITORON”}},
                            // TURN THE MONITOR/SCREEN OFF AT 21:00 WEEKEND
                            {notification: ‘REMOTE_ACTION’, schedule: ‘0 21 * * * 6-7’, payload: {action: “MONITOROFF”}},
                            // RESTART THE MAGICMIRROR PROCESS AT 2am EVERY SUNDAY
                            {notification: ‘REMOTE_ACTION’, schedule: ‘0 2 * * SUN’, payload: {action: “RESTART”}}
                            ]
                            }
                            },

                            Can somebody tell me if this is the right way to do it or if there is some kind of issue there?

                            Thanks!

                            1 Reply Last reply Reply Quote 0
                            • H Offline
                              Henrik
                              last edited by

                              Hello,
                              When “hiding” a module, does that also stop it from executing? I’m looking for a way to reduce the number of API calls made, by disabling a module at night.
                              If not, any other suggestion on how to achieve this?

                              Thanks in advance.

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

                                @Henrik

                                It’s not possible for MMM-ModuleScheduler to affect the behaviour of the modules it hides/shows.

                                However, it is possible for a modules to ‘react’ to being shown/hidden.

                                To reduce the API calls the developer of the modules you use could implement/subclass the suspend and resume methods.

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

                                B 1 Reply Last reply Reply Quote 2
                                • B Offline
                                  bachoo786 @ianperrin
                                  last edited by

                                  @ianperrin hi thanks for this module.

                                  I used it to turn my uknationalrail module on and off at certain times. However what I noticed was that your module disables my uknationalrail module I.e. it turns it on but then it doesn’t update. If I remove your module and the settings of your module on my module it works fine.

                                  Is this a bug?

                                  Thanks

                                  FoziF 1 Reply Last reply Reply Quote 0
                                  • FoziF Offline
                                    Fozi Project Sponsor @bachoo786
                                    last edited by

                                    @bachoo786 I had the same issue with MMM-googlemaps-route. The module was switched on at the defined time, but the map was not updated, only the travel times. Unfortunately, I had to find turn off the scheduler, but found a workaround for the route module to reduce the number of API calls.

                                    HowTo: Replace PIR Sensor with a RCWL-0516 Microwave Sensor

                                    B 1 Reply Last reply Reply Quote 0
                                    • B Offline
                                      bachoo786 @Fozi
                                      last edited by

                                      @Fozi ah right well i would like to turn it on and off I have used remote control module as well but I face the same issue. I can adjust to reduce the number of API calls but thats least of my worries as I would like to have a clean MM interface hence turning off the module would be awesome provided it worked.

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

                                        @bachoo786 MMM-ModuleScheduler (and MMM-RemoteControl) are only sending hide/show requests via the MagicMirror API, so have no control over the target modules upstream API calls.

                                        However, it may be possible something is amiss. Can you post your config and I’ll see if I can spot anything?

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

                                        B 2 Replies Last reply Reply Quote 0
                                        • B Offline
                                          bachoo786 @ianperrin
                                          last edited by

                                          @ianperrin thanks for the reply.

                                          here is my config:

                                          /* Magic Mirror Config Sample
                                           *
                                           * By Michael Teeuw http://michaelteeuw.nl
                                           * MIT Licensed.
                                           *
                                           * For more information how you can configurate this file
                                           * See https://github.com/MichMich/MagicMirror#configuration
                                           *
                                           */
                                          
                                          var config = {
                                          	address: "0.0.0.0", // Address to listen on, can be:
                                          	                      // - "localhost", "127.0.0.1", "::1" to listen on loopback interface
                                          	                      // - another specific IPv4/6 to listen on a specific interface
                                          	                      // - "", "0.0.0.0", "::" to listen on any interface
                                          	                      // Default, when address config is left out, is "localhost"
                                          	port: 8181,
                                          	ipWhitelist: [], // Set [] to allow all IP addresses
                                          	                                                       // or add a specific IPv4 of 192.168.1.5 :
                                          	                                                       // ["127.0.0.1", "::ffff:127.0.0.1", "::1", "::ffff:192.168.1.5"],
                                          	                                                       // or IPv4 range of 192.168.3.0 --> 192.168.3.15 use CIDR format :
                                          	                                                       // ["127.0.0.1", "::ffff:127.0.0.1", "::1", "::ffff:192.168.3.0/28"],
                                          
                                          	language: "en",
                                          	timeFormat: 24,
                                          	units: "metric",
                                          //        customCss: 'css/custom.css',
                                          
                                          	modules: [
                                          //		{
                                          //			module: "alert",
                                          //		},
                                          		{
                                          			module: "updatenotification",
                                          			position: "top_bar"
                                          		},
                                          		{
                                          			module: "clock",
                                          			position: "top_left"
                                          		},
                                          
                                          
                                              { 
                                                 module: 'MMM-ModuleScheduler',
                                              },
                                          
                                          
                                          
                                                  {
                                          		module: 'MMM-SystemStats',
                                          		position: 'bottom_bar', // This can be any of the regions.
                                          		// classes: 'small dimmed', // Add your own styling. OPTIONAL.
                                          		// header: 'System Stats', // Set the header text OPTIONAL
                                          		config: {
                                          			updateInterval: 10000, // every 10 seconds
                                          			align: 'right', // align labels
                                                                  units: 'metric',
                                          			view: 'textAndIcon',
                                          		},
                                          	},
                                          
                                          
                                                  {
                                                      module: "currentweather",
                                                      position: "top_right",
                                                      config: {
                                                          location: "London",
                                                          locationID: "xx",  //ID from http://bulk.openweathermap.org/sample/; unzip the gz file and find your city
                                                          appid: "xx"
                                                      }
                                                  },
                                                  {
                                                      module: "weatherforecast",
                                                      position: "top_right",
                                                      header: "Weather Forecast",
                                                      config: {
                                                          location: "xx",
                                                          locationID: "xx",  //ID from http://www.openweathermap.org/help/city_list.txt
                                                          appid: "xx"
                                                      }
                                                  },
                                          
                                          
                                          
                                                      {
                                                          module: 'random_quotes',
                                                          position: 'lower_third',
                                                          config: {
                                                                          updateInterval: '8',
                                                                          fadeSpeed: '4'
                                                          }
                                                      },
                                          
                                                          {
                                                                  module: 'MMM-homeassistant-sensors',
                                                                  position: 'top_left',
                                                                  config: {
                                                                  host: "xx",
                                                                  port: "xx",
                                                                  https: true,
                                                                  token: "xx",
                                                                  prettyName: false,
                                          //                        updateInterval: "1000",
                                                                  title: "Shower",
                                                                  stripName: false,
                                                                  values: [{
                                                                    sensor: "sensor.shower",
                                                                    icons: [{
                                                                    "default": "shower"
                                                                 }
                                                                 ]
                                                                   },{
                                                                    sensor: "timer.water",
                                                                    icons: [{
                                                                    "default": "water-pump"
                                                                 }
                                                                 ]
                                                                   }
                                                                 ]
                                                              }
                                                          },
                                          
                                          {
                                                                  module: 'MMM-homeassistant-sensors',
                                                                  position: 'top_left',
                                                                  config: {
                                                                  host: "xx",
                                                                  port: "xx",
                                                                  https: true,
                                                                  token: "xx",
                                                                  prettyName: false,
                                          //                        updateInterval: "1000",
                                                                  title: "Namaaz Time",
                                                                  stripName: false,
                                                                  values: [{
                                                                    sensor: "sensor.fajr",
                                                                    icons: [{
                                                                    "default": "clock-outline"
                                                                 }
                                                                 ]
                                                                   },{
                                                                    sensor: "sensor.zohr",
                                                                    icons: [{
                                                                    "default": "clock-outline"
                                                                 }
                                                                 ]
                                                                   },{
                                                                    sensor: "sensor.maghrib",
                                                                    icons: [{
                                                                    "default": "clock-outline"
                                                                }
                                                                ]
                                                                  }
                                                                ]
                                                              }
                                                          },
                                          
                                          
                                          
                                          
                                          
                                          
                                          
                                          
                                          {
                                                  module:         'MMM-UKNationalRail',
                                                  position:       'bottom_left',
                                                  header:         'Wealdstone Departures',
                                                  classes: 'scheduler',
                                                  config: {
                                                      module_schedule: {from: '0 9 * * 3', to: '0 18 * * 3' },
                                                      stationCode:        'HRW',      // CRS code for station
                                                      app_id:             'xx',         // TransportAPI App ID
                                                      app_key:            'xx',         // TransportAPI App Key
                                                      updateInterval: 1 * 60 * 1000,
                                                      maxResults:         5,          //Optional - Maximum results to display.
                                                      showOrigin:         false,      //Optional - Show the origin of the train in the table
                                                                  destination:            'EUS',
                                                                  to_offset:              'PT02:00:00',
                                                                  operator:               'LM'
                                                  }
                                              },
                                          
                                          
                                          
                                          {
                                                module: 'MMM-TFL',
                                                position: 'bottom_left',
                                                config: {
                                                  updateTime: 600000,
                                                  modes: ['tube'],
                                                  lines: 'metropolitan'
                                                }
                                              },
                                          
                                          
                                          
                                          
                                          
                                          //{
                                          //  module: "MMM-AssistantMk2",
                                          //  position: "bottom_right",
                                          //  config: {
                                          //   assistantConfig: {
                                          //     latitude: 51.508530,
                                          //     longitude: -0.076132, 
                                          //    },
                                          //    micConfig: { // put there configuration generated by auto-installer
                                          //      sampleRate    : 16000,      // audio sample rate
                                          //      threshold     : 0.1,        // silence threshold (rec only)
                                          //      thresholdStart: null,       // silence threshold to start recording, overrides threshold (rec only)
                                          //      thresholdEnd  : null,       // silence threshold to end recording, overrides threshold (rec only)
                                          //      verbose       : false,      // log info to the console. Use this when you want to check mic working or not.
                                          //      silence       : 0,
                                          //      recorder: "arecord",
                                          //      device: "plughw:AK5371",
                                          //    },
                                          //    responseConfig: {
                                          //      useHTML5: true,
                                          //      useScreenOutput: true,
                                          //      useAudioOutput: true,
                                          //      useChime: true,
                                          //      timer: 2000,
                                          //      myMagicWord: false,
                                          //      delay: 0.5
                                          ////      playProgram: "mpg321"
                                          //    },
                                          ////      recorder: "arecord",
                                          // //     device: "plughw:AK5371",
                                          ////    },
                                          //    recipes: [ "with-MMM-Hotword.js"],
                                          //  }
                                          
                                          //},
                                          
                                          
                                          
                                          
                                          
                                          
                                          
                                          // {
                                          //   module: "MMM-Hotword",
                                          //    position: "bottom_right",
                                          //    config: {
                                          //      useDisplay: false,
                                          //      chimeOnFinish: null,
                                          //      recipes: ["with-AMk2v3_smart-mirror.js"],
                                          //      mic: {
                                          //        recordProgram: "arecord",
                                          //        device: "plughw:AK5371",
                                          //      },
                                          //    },
                                          //  },
                                          
                                          
                                          
                                          
                                          
                                          
                                          
                                          
                                          
                                          
                                          
                                          {
                                              module: 'newsfeed',
                                              position: 'bottom_bar',
                                              config: {
                                                  feeds: [
                                                      {
                                                          title: "BBC News UK",
                                                          url: "http://feeds.bbci.co.uk/news/england/rss.xml"
                                                      },
                                                      {
                                                          title: "Sky News",
                                                          url: "http://feeds.skynews.com/feeds/rss/world.xml"
                                                      }
                                                  ],
                                                  showSourceTitle: true,
                                                  showPublishDate: true,
                                                  ignoreOldItems: true,
                                                  ignoreOlderThan: 50400000,
                                                  updateInterval: 10000
                                          
                                                  }
                                                },
                                          
                                          
                                          
                                          	]
                                          
                                          };
                                          
                                          /*************** DO NOT EDIT THE LINE BELOW ***************/
                                          if (typeof module !== "undefined") {module.exports = config;}
                                          
                                          1 Reply Last reply Reply Quote -1
                                          • B Offline
                                            bachoo786 @ianperrin
                                            last edited by

                                            @ianperrin hi

                                            Did you have a chance to look at my configuration?

                                            1 Reply Last reply Reply Quote 0

                                            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
                                            • 4 / 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