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

Help needed simple API based module

Scheduled Pinned Locked Moved Development
19 Posts 4 Posters 10.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.
  • W Offline
    washichi @yawns
    last edited by Feb 1, 2017, 1:37 PM

    @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
    • Y Offline
      yawns Moderator
      last edited by Feb 1, 2017, 1:49 PM

      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 Feb 1, 2017, 3:04 PM Reply Quote 0
      • W Offline
        washichi @yawns
        last edited by washichi Feb 1, 2017, 3:11 PM Feb 1, 2017, 3:04 PM

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

        Y 1 Reply Last reply Feb 1, 2017, 3:14 PM Reply Quote 0
        • Y Offline
          yawns Moderator @washichi
          last edited by Feb 1, 2017, 3:14 PM

          @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 Feb 1, 2017, 3:20 PM Reply Quote 0
          • W Offline
            washichi @yawns
            last edited by Feb 1, 2017, 3:20 PM

            @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
            • Y Offline
              yawns Moderator
              last edited by Feb 1, 2017, 3:31 PM

              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 Feb 1, 2017, 4:22 PM

                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
                • Y Offline
                  yawns Moderator
                  last edited by Feb 1, 2017, 5:03 PM

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

                  O 1 Reply Last reply Feb 1, 2017, 7:38 PM Reply Quote 2
                  • O Offline
                    ooom416354 @yawns
                    last edited by Feb 1, 2017, 7:38 PM

                    @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 C 2 Replies Last reply Feb 1, 2017, 9:04 PM Reply Quote 1
                    • W Offline
                      washichi @ooom416354
                      last edited by Feb 1, 2017, 9:04 PM

                      @ooom416354 Yes, but other modules are also that.
                      I used the default module “weatherforecast” it is an simple api based module that gets the data and displays it in a table.

                      I’m now trying to add a map, and then display the ISS current position on that, but implementing this in a module is a lot harder then normal javascript :p.

                      O 1 Reply Last reply Feb 1, 2017, 9:49 PM Reply Quote 0
                      • 1
                      • 2
                      • 1 / 2
                      1 / 2
                      • First post
                        9/19
                        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