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.

    Help needed simple API based module

    Scheduled Pinned Locked Moved Development
    19 Posts 4 Posters 11.1k 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.
    • yawnsY Offline
      yawns Moderator
      last edited by

      Hi, first spotted error:

      Module.register("ISS-current-location",{
      

      This should be

      Module.register("MMM-ISS-current-location",{
      

      Otherwise your module won’t be called.

      W 1 Reply Last reply Reply Quote 1
      • W Offline
        washichi @yawns
        last edited by

        @yawns yeah that solved it, my module is now at least showing :).
        sorry, stupid mistake haha, I though I checked it .
        Thanks for your help

        1 Reply Last reply Reply Quote 0
        • yawnsY Offline
          yawns Moderator
          last edited by

          okay, next thing is your updateISS function. I modified it for you to get you started:

          	updateISS: function() {
          		var self = this;
          		var url = self.config.apiBase;
          		var opennotifyRequest = new XMLHttpRequest();
          		opennotifyRequest.open("GET", url, true);
          		opennotifyRequest.onreadystatechange = function() {
          		if (this.readyState === 4) {
          			if (this.status === 200) {
          				var resp = JSON.parse(this.response);
          				this.latitude = resp.iss_position.latitude;
          				this.longitude = resp.iss_position.longitude;
          				this.timestamp = resp.timestamp;
          				this.message = resp.message;
          			}
          		}
          			
          			self.updateDom();
          		};
          	opennotifyRequest.send();
          	}
          
          W 1 Reply Last reply Reply Quote 0
          • W Offline
            washichi @yawns
            last edited by washichi

            @yawns thank you!
            the module shows now this.message and refreshes it with the schedule.
            however I am still doing something wrong in my request:

            	updateISS: function() {
            		var url = this.config.apiBase;
            		var self = this;
            		var opennotifyRequest = new XMLHttpRequest();
            		opennotifyRequest.open("GET", url, true);
            		this.message = "in updateISS";
            		opennotifyRequest.onreadystatechange = function() {
            		self.message = "request status: "+ to.String(this.status); // not displayed
            		if (this.readyState === 4) {
            			if (this.status === 200) {
            				var resp = JSON.parse(this.response);
            				self.latitude = resp.iss_position.latitude;
            				self.longitude = resp.iss_position.longitude;
            				self.timestamp = resp.timestamp;
            				self.message = resp.message;
            				self.message = "dit gebeurt niet";
            			}
            		}
            		};
            	opennotifyRequest.send();
            	self.updateDom();
            	}
            

            I can’t set message in that function, for example line 86. I use self/this wrong, or the function isn’t executing. but the code continous because when I set the message before or after that function it gets displayed.

            yawnsY 1 Reply Last reply Reply Quote 0
            • yawnsY Offline
              yawns Moderator @washichi
              last edited by

              @washichi
              hm. Did you try to output latitude and longitude as well in getDom to see if this is working?

              W 1 Reply Last reply Reply Quote 0
              • W Offline
                washichi @yawns
                last edited by

                @yawns No I didn’t, but that should be exactly the same thing.
                If I hardcode the (any) variable in “issRequest.onreadystatechange = function() {”
                then it just doesn’t display, so it looks like it isn’t going in that function.
                but if I hardcode the (any) variable after that function It displays.

                So I can display the variable (message), but the variable doesn’t get filled with the request.

                1 Reply Last reply Reply Quote 0
                • yawnsY Offline
                  yawns Moderator
                  last edited by

                  Simple way to test if it entering the function:

                  Log.error("function entered");

                  Press F12 in browser, check for console output and refresh the website. If the function is entered you will see “function entered” in the console.

                  1 Reply Last reply Reply Quote 0
                  • W Offline
                    washichi
                    last edited by

                    thank you! It’s now working :)
                    I thought that my scheduleupdate was working but it didn’t (only 2 times )
                    with the Log function I could find the problem easy .

                    1 Reply Last reply Reply Quote 1
                    • yawnsY Offline
                      yawns Moderator
                      last edited by

                      great. Now tidy up your code ;) and present your module in modules showcase

                      ooom416354O 1 Reply Last reply Reply Quote 2
                      • ooom416354O Offline
                        ooom416354 @yawns
                        last edited by

                        @washichi @yawns this is great work. I am wondering, would this completed code be kind of a base for making other API calls which return data in JSON format?

                        W cowboysdudeC 2 Replies Last reply Reply Quote 1
                        • 1
                        • 2
                        • 2 / 2
                        • 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