Read the statement by Michael Teeuw here.
Help needed simple API based module
- 
 Hi, 
 I just started creating modules, and don’t have any javascript experience.
 I am trying my luck on a really simple API based ISS tracker module.
 but I am doing something wrong.here is my code: https://github.com/washichi/MMM-ISS-current-location the logs mm-out-0.log &mm-error-0.log don’t give me weird errors. 
 and I compiled it with http://liveweave.com/ (can’t find the right plugin for sublime3 ) so I’m doing something wrong in the code.I hope someone can help me to see what I did wrong. 
- 
 I’m no programmer [yet] LOL But I will tell you that you also need something like this in there: notificationReceived(notification, payload, sender) That MagicMirror core has the ability to send notifications to modules. Or even better: the modules have the possibility to send notifications to other modules. When this module is called, it has 3 arguments: notification - String - The notification identifier. 
 payload - AnyType - The payload of a notification.
 sender - Module - The sender of the notification. If this argument is undefined, the sender of the notififiction is the core system.
 Example:notificationReceived: function(notification, payload, sender) { 
 if (sender) {
 Log.log(this.name + " received a module notification: " + notification + " from sender: " + sender.name);
 } else {
 Log.log(this.name + " received a system notification: " + notification);
 }
 }
 Note: the system sends two notifications when starting up. These notifications could come in handy!ALL_MODULES_STARTED - All modules are started. You can now send notifications to other modules. 
 DOM_OBJECTS_CREATED - All dom objects are created. The system is now ready to perform visual changes.
 socketNotificationReceived: function(notification, payload)When using a node_helper, the node helper can send your module notifications. When this module is called, it has 2 arguments: notification - String - The notification identifier. 
 payload - AnyType - The payload of a notification.
 Note 1: When a node helper sends a notification, all modules of that module type receive the same notifications.
 Note 2: The socket connection is established as soon as the module sends its first message using sendSocketNotification.Example: socketNotificationReceived: function(notification, payload) { 
 Log.log(this.name + " received a socket notification: " + notification + " - Payload: " + payload);
 },
- 
 @cowboysdude 
 mhh okay, thank you! I’ll try to implement it, looking to the default weatherforecast module as example.from the modules readme I don’t totally understand why I need this, it sounds like optional . and I don’t have notifications. (or are updating modules seen as notification?) 
- 
 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. 
- 
 @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
- 
 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(); }
- 
 @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. 
- 
 @washichi 
 hm. Did you try to output latitude and longitude as well ingetDomto see if this is working?
- 
 @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. 
- 
 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. 


