• 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.

Timer on Module

Scheduled Pinned Locked Moved Unsolved Troubleshooting
22 Posts 4 Posters 5.8k 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.
  • ? Offline
    A Former User
    last edited by A Former User Dec 19, 2018, 4:50 PM Dec 19, 2018, 4:44 PM

    job: function() {
      setInterval(()=>{
        this.updateDom() // this will execute your getDom()
      }, yourInterval)
    },
    
    notificationReceived: function (noti, payload, sender) {
      if (noti == “DOM_OBJECT_CREATED”) this.job()
    
    },
    
    getDom: function () {
      //making  your video DOM here.
    }
    
    D 1 Reply Last reply Dec 19, 2018, 8:02 PM Reply Quote 0
    • D Offline
      dsmtweaker @Guest
      last edited by Dec 19, 2018, 8:02 PM

      @sean Sorry for being so new at this. And thank you for all of the help. I tried using your code.

      get: function() {
      setInterval(()=>{this.updateDom()}, 60000)
      notificationRecieved: function (noti, payload, sender) {
      if (noti = “DOM_OBJECT_CREATED”) this.job()

      		},
      getDom: function ()
      			var video =  document.createElement("video");
      			video.src = this.config.videoSRC;
      			video.autoplay = true;
      			video.loop = this.config.loop;
                   },
      

      });

      But I get “Uncaught SyntaxError: Unexpected token (” from notificationRecieved: function (noti, payload, sender) {

      S 1 Reply Last reply Dec 19, 2018, 8:05 PM Reply Quote 0
      • S Offline
        sdetweil @dsmtweaker
        last edited by Dec 19, 2018, 8:05 PM

        @dsmtweaker you missed some of the job function
        this.updateDom()

        }, yourInterval)

        Sam

        How to add modules

        learning how to use browser developers window for css changes

        D 1 Reply Last reply Dec 19, 2018, 8:08 PM Reply Quote 0
        • D Offline
          dsmtweaker @sdetweil
          last edited by Dec 19, 2018, 8:08 PM

          @sdetweil It is there in the get:function

           get: function() {setInterval(()=>{this.updateDom()}, 60000)
          	notificationRecieved: function (noti, payload, sender) {
          		if (noti = "DOM_OBJECT_CREATED") this.job()
          
          		},
          getDom: fuction ()
          			var video =  document.createElement("video");
          			video.src = this.config.videoSRC;
          			video.autoplay = true;
          			video.loop = this.config.loop;
          

          },});

          S 1 Reply Last reply Dec 19, 2018, 8:12 PM Reply Quote 0
          • S Offline
            sdetweil @dsmtweaker
            last edited by Dec 19, 2018, 8:12 PM

            @dsmtweaker i hate code posting on this forum…

            note that
            getDom: fuction () is spelled wrong
            and also missing the open brace

            Sam

            How to add modules

            learning how to use browser developers window for css changes

            1 Reply Last reply Reply Quote 0
            • S Offline
              sdetweil
              last edited by sdetweil Dec 19, 2018, 8:41 PM Dec 19, 2018, 8:41 PM

              there are 3 routines (functions)… in seans post

              // worker function
              job: function() {
                // start a recurring timer that will tell MM to get the module updated dom content
                // this uses an inline function, be careful of braces and parens  matching
                setInterval(()=>{
                  this.updateDom() // this will execute your getDom(), after 'yourInterval' time
                }, yourInterval)
              },
              
              // the function called when notifications are received from the system
              notificationReceived: function (noti, payload, sender) {
                 // if the notification is "dom is created", then call our worker function
                if (noti == “DOM_OBJECT_CREATED”) this.job() 
              
              },
              
              // the function called for the module to provide its dom content
              getDom: function () {
                //making  your video DOM here.
              }
              

              Sam

              How to add modules

              learning how to use browser developers window for css changes

              D 1 Reply Last reply Dec 19, 2018, 9:18 PM Reply Quote 0
              • D Offline
                dsmtweaker @sdetweil
                last edited by Dec 19, 2018, 9:18 PM

                @sdetweil I made all the corrections noted.

                but on if (noti == “DOM_OBJECT_CREATED”) this.job() I am still getting the error SyntaxError: Invalid or unexpected token

                M S 2 Replies Last reply Dec 19, 2018, 10:36 PM Reply Quote 0
                • M Offline
                  Mykle1 Project Sponsor Module Developer @dsmtweaker
                  last edited by Dec 19, 2018, 10:36 PM

                  @dsmtweaker said in Timer on Module:

                  but on if (noti == “DOM_OBJECT_CREATED”) this.job() I am still getting the error SyntaxError: Invalid or unexpected token

                  Excuse me for jumping in but the curly quotes containing DOM_OBJECT_CREATED will cause that error. Try:

                  if (noti == "DOM_OBJECT_CREATED") this.job()

                  The difference is slight, but enough.

                  Create a working config
                  How to add modules

                  1 Reply Last reply Reply Quote 0
                  • S Offline
                    sdetweil @dsmtweaker
                    last edited by Dec 19, 2018, 11:30 PM

                    @dsmtweaker its the darned cut/paste of the double quotes… in the web posting it shows the MS word document style quotes which cause an error with the javascript parser…

                    overtype those double quotes with the text editor…

                    Sam

                    How to add modules

                    learning how to use browser developers window for css changes

                    1 Reply Last reply Reply Quote 1
                    • ? Offline
                      A Former User
                      last edited by A Former User Dec 20, 2018, 7:40 AM Dec 20, 2018, 7:39 AM

                      I’m back. Sorry for my prior mistypo and unsufficient post. I was typing that on my phone.

                      start: function() {
                        this.timer = null  
                        this.videoDom = null
                      },
                      getDom: function() {
                        var container =  document.createElement("div")
                        var video = document.createElement("video")
                        video.id = "VIDEO"
                        video.style.display = "none"
                        video.autoplay = true
                        video.loop = this.config.loop
                        container.appendChild(video)
                        this.videoDom = video
                        return container 
                      // Just create DOMs in getDom(). It's better to control DOMs outside of getDom().
                      },
                      notificationReceived: function(noti, payload, sender) {
                        if (noti == "DOM_OBJECT_CREATED") this.work()
                      //DOM_OBJECT_CREATED would be the best time to start your job. Your DOM would be created and be ready to work on that message.
                      },
                      work: function(src = null, interval = null) {
                        clearTimer(this.timer)
                        interval = (interval) ? interval : this.config.interval
                        src = (src) ? src : this.config.videoSRC
                        this.playVideo(src)
                        this.timer = setTimeout(()=>{
                          this.work()
                        }, interval)
                      //setTimeout is better than setInterval.
                      // you can repeat this function by interval. you can change interval and src with parameters of this function.
                      },
                      playVideo: function(src) {
                        this.videoDom.src = src
                        if (this.videoDom.style.display == "none") this.videoDom.style.display = "block"
                        this.videoDom.play()
                        // assign src to your videoDom and play it.
                      }
                      

                      Not tested on real device, so maybe somthig is missed, but this is basic approach.
                      I didn’t use updateDom because there is no need to redraw whole module just for playing video.

                      D 1 Reply Last reply Dec 20, 2018, 2:13 PM Reply Quote 0
                      • 1
                      • 2
                      • 3
                      • 2 / 3
                      2 / 3
                      • First post
                        12/22
                        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