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.

    How to use "require" in a module?

    Scheduled Pinned Locked Moved Development
    4 Posts 3 Posters 4.1k Views 2 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.
    • M Offline
      mbalfour
      last edited by paviro

      I’m trying to make my first module. A pretty simple one, I just want to display the IP address of my Raspberry Pi. (I’m not assigning it a static addr, so if it changes I’d like to know the new addr to remote into)

      A quick google turned up some code for querying for your local IP address. However, it’s not working. I’m getting “Uncaught ReferenceError: require is not defined”. Am I missing something silly here? (Yes, I know the actual ip-getting code is commented out, I’ll bring it back once I can get the reference to os working)

      Here’s the code:

      var os = require("os");
      Module.register("my_ip", {
      
          // Default module config.
      	defaults: {
      	},
      
          // Override dom generator.
      	getDom: function () {
      	    var ip = location.host;
      
      	    /*
      	    var ifaces = os.networkInterfaces();
      
      	    Object.keys(ifaces).forEach(function (ifname) {
      	        var alias = 0;
      
      	        ifaces[ifname].forEach(function (iface) {
      	            if ('IPv4' !== iface.family || iface.internal !== false) {
      	                // skip over internal (i.e. 127.0.0.1) and non-ipv4 addresses
      	                return;
      	            }
      
      	            if (alias >= 1) {
      	                // this single interface has multiple ipv4 addresses
      	                console.log(ifname + ':' + alias, iface.address);
                          ip = iface.address;
      	            } else {
      	                // this interface has only one ipv4 adress
      	                console.log(ifname, iface.address);
                          ip = iface.address;
      	            }
      	            ++alias;
      	        });
      	    });
              */
      
      	    var wrapper = document.createElement("div");
      	    wrapper.innerHTML = ip;
      		return wrapper;
      	},
      
      });
      
      1 Reply Last reply Reply Quote 0
      • strawberry 3.141S Offline
        strawberry 3.141 Project Sponsor Module Developer
        last edited by

        take a look into the documentation on how to write a module, especially the part with node_helper

        Please create a github issue if you need help, so I can keep track

        1 Reply Last reply Reply Quote 0
        • M Offline
          mbalfour
          last edited by

          Thanks! I’ve got it working with node_helper now. It seems a bit convoluted though, since my module now sends a socket notification to request the IP, and listens for the socket notification to refresh the local variable and redraw the DOM. Is this actually the correct way to do it?

          1 Reply Last reply Reply Quote 0
          • KirAsh4K Offline
            KirAsh4 Moderator
            last edited by

            That’s how the node_helper method works, module sends a request, the node_helper.js script responds.

            A Life? Cool! Where can I download one of those from?

            1 Reply Last reply Reply Quote 0

            Hello! It looks like you're interested in this conversation, but you don't have an account yet.

            Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

            With your input, this post could be even better 💗

            Register Login
            • 1 / 1
            • 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