• 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 9.5k 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 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
                  • Y Offline
                    yawns Moderator
                    last edited by Feb 1, 2017, 9:04 PM

                    @ooom416354
                    Yes, kind of. At least with JSON calls without additional headers. The you need to use request and a node_helper

                    1 Reply Last reply Reply Quote 0
                    • O Offline
                      ooom416354 @washichi
                      last edited by Feb 1, 2017, 9:49 PM

                      @washichi Yea, I am still not even sure how to translate the returned JSON to an actual visual table on the mirror. Not very good at this lol

                      C 1 Reply Last reply Feb 1, 2017, 10:08 PM Reply Quote 1
                      • 1
                      • 2
                      • 2 / 2
                      2 / 2
                      • First post
                        11/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