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

[MMM-FlightsAbove] Problem receiving and seing JSON from node_helper

Scheduled Pinned Locked Moved Development
promiseasyncjson
13 Posts 3 Posters 4.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.
  • R Offline
    raywo Module Developer @E3V3A
    last edited by Feb 27, 2018, 7:03 PM

    @E3V3A Actually the API doesn’t return json. It returns an array of Javascript objects. You can very easy iterate over the array and access any properties of the objects in the array with dot syntax.

    const radar = require("flightradar24-client/lib/radar");
    
    radar(53, 13, 52, 14)
      .then((flights) => {
        flights.forEach((flight) => {
          console.log("id: " + flight.id + ", origin: " + flight.origin);
        })
      })
      .catch((err) => {
        console.error(err);
        process.exit(1);
      });
    
    E 1 Reply Last reply Feb 27, 2018, 8:12 PM Reply Quote 2
    • E Offline
      E3V3A @raywo
      last edited by Feb 27, 2018, 8:12 PM

      @raywo

      It returns an array of Javascript objects.

      Thanks! That is certainly important to know! :) But I don’t see how that help me here… :(

      As for the rest of the test code above, it’s probably not very helpful in my case, but it could be great for another module though. In my code I already have (according to console.log the right output to be fed.) But somehow my feed mechanism is not working and I’m not able to check it.

      For example, another dummy question:
      Why doesn’t the following console.log’s print anything?

          // This comes from YOUR module, usually "node_helper.js"
          socketNotificationReceived: function(notification, payload) {
              console.log("=====> " + this.name + " received a socket notification: " + notification); //+ " - Payload: " + payload);
              switch (notification) {
                  case "NEW_DATA":
                      console.log("-----> FlightsAbove: NEW_DATA received!"); // Why doesn't this show?
                      let ping = payload;
                      console.log("-- PING!\n");
                      console.log(ping);
                      //console.log("-- PING DATA:\n", ping);
      
                      this.loaded = true;
                      this.setTableData(payload);
                      break;
                  default:
                      console.log("Did not match the Notification: ", notification);
              }
          },
      

      Similarly, here in node_helper.js. Everything before the //WTF comments prints, but the rest is never seen! ???

      
          radarPing: function() {
              console.log("ENTER (inside)");
              Promise.all([
                  //radar(-8.20917,114.62177,-9.28715,115.71243)  // "PDS" (Bali Airport)
                  radar(53.05959,12.52388,51.98161,14.29552) // (Berlin)
                  ]).then(function(results) {
                      var ping = JSON.stringify(results);
      
                      console.log("Sending NEW_DATA:");
                      console.log(ping);
      
                      // WTF! This below is never shown!
                      this.sendSocketNotification("NEW_DATA", ping); //self?
                      console.log("Sent NEW_DATA!");
                      console.log("NEW_DATA is: %O", ping);
                      console.dir(ping, {depth: null, colors: true});
      
                      //return ping;
                  }).then(function(error) {
                      //console.log("ERROR:")
                      console.log(error);
                  });
              console.log("EXIT (inside)");
      },
      

      So at the end of the day, I have no idea if the NEW_DATA socket notification was actually sent, nor what was the payload, nor if it was received.

      "Everything I do (here) is for free – altruism is the way!"
      MMM-FlightsAbove, MMM-Tabulator, MMM-Assistant (co-maintainer)

      R 1 Reply Last reply Feb 27, 2018, 8:38 PM Reply Quote 0
      • Y Offline
        yawns Moderator
        last edited by Feb 27, 2018, 8:17 PM

        Inside the module itself console.log doesn’t work. Use Log.error instead and check the output in your browser console, not the terminal/cmd

        R E 2 Replies Last reply Feb 27, 2018, 8:20 PM Reply Quote 1
        • R Offline
          raywo Module Developer @yawns
          last edited by Feb 27, 2018, 8:20 PM

          @yawns That is not correct. console.log() works fine in your module. But the output is not shown on the log of your mirror but on the browser’s log. You need to open the developer tools in your browser to see it.

          1 Reply Last reply Reply Quote 0
          • Y Offline
            yawns Moderator
            last edited by Feb 27, 2018, 8:27 PM

            Oh, really? Maybe this was changed, in the beginning it wasn’t working at all in the main module file.

            1 Reply Last reply Reply Quote 0
            • R Offline
              raywo Module Developer @E3V3A
              last edited by raywo Feb 27, 2018, 8:44 PM Feb 27, 2018, 8:38 PM

              @E3V3A This function works just fine:

              radarPing: function () {
                    radar(53.05959, 12.52388, 51.98161, 14.29552)
                      .then((flights) => {
                        this.sendSocketNotification("NEW_DATA", flights); //self?
                        console.log("New radar data: ");
                        console.log(flights);
                      })
                      .catch(function (error) {
                        //console.log("ERROR:")
                        console.log(error);
                      });
                  },
              

              It receives data, prints them on the mirror’s log and sends it to the module. The module is receiving the data and logs them to the browser’s console. And your table is populated too.

              E 1 Reply Last reply Feb 27, 2018, 9:43 PM Reply Quote 1
              • E Offline
                E3V3A @yawns
                last edited by Feb 27, 2018, 9:00 PM

                @yawns That’s yet another one! (And it didn’t give any output.) So far I have seen:

                Log.log()
                Log.info()
                console.log()
                console.error()
                

                Then I have seen more general node ones like:
                console.dir()…

                How can we know where they can be used (and where the output goes)?

                "Everything I do (here) is for free – altruism is the way!"
                MMM-FlightsAbove, MMM-Tabulator, MMM-Assistant (co-maintainer)

                R 1 Reply Last reply Feb 27, 2018, 9:12 PM Reply Quote 0
                • R Offline
                  raywo Module Developer @E3V3A
                  last edited by raywo Feb 27, 2018, 9:13 PM Feb 27, 2018, 9:12 PM

                  @E3V3A console.log() is a standard Javascript function it works anywhere. Log.info() and so on are functions from the MagicMirror’s module system. So they will only work in the module file.

                  node_helper.js is executed in the server context. Any console output is therefore on the server’s log.

                  The module file is executed in the client context (the browser). So console output from the module file is logged in the browser console.

                  1 Reply Last reply Reply Quote 3
                  • E Offline
                    E3V3A @raywo
                    last edited by Feb 27, 2018, 9:43 PM

                    @raywo OMG!! I missed your post by not updating my open tabs. Now I found it and it bloody hell it works! I got so excited I fell off my chair!

                    I have no idea why the eeek I have been trying to over-engineer this thing. I guess I’m simply not familiar enough with the JS/node notations, and constantly get bogged down with beginners conceptual trivialities.

                    Thank you! Tomorrow it will be party!

                    "Everything I do (here) is for free – altruism is the way!"
                    MMM-FlightsAbove, MMM-Tabulator, MMM-Assistant (co-maintainer)

                    1 Reply Last reply Reply Quote 1
                    • E Offline
                      E3V3A
                      last edited by Feb 27, 2018, 9:47 PM

                      @yawns BTW. The console.log from main module didn’t want to work in my Firefox (Dev Tools), but console.error() do. It could be a browser issue…

                      "Everything I do (here) is for free – altruism is the way!"
                      MMM-FlightsAbove, MMM-Tabulator, MMM-Assistant (co-maintainer)

                      1 Reply Last reply Reply Quote 0
                      • 1
                      • 2
                      • 1 / 2
                      1 / 2
                      • First post
                        7/13
                        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