MagicMirror² v2.4.1 is available! For more information about this release, check out this topic.
Please read the release notes carefully since this update requires adjustments to your Raspberry Pi configuration!

Tutorials or Overview for Module Dev?



  • I am looking to develop a module for my Mirror, for an Energy Monitor (SiteSage E-Monitor), and I have found the API specification that provides all of the information regarding the methods for the API.

    I was wondering if there exists a general overview of how to take the API methods that are outlined in the company’s specification, and turn it into a Module.

    From my high-level understanding, here is what I need to develop:

    • E-MonitorConfig.js
    • E-MonitorStyling.css --> which takes the data from the API call and turns it into the visualization for the magic mirror.

    Is there any general documentation or any high-level guidelines that I may be missing as I embark on this journey?



  • @nbrenn I found it really useful to find a module someone had already written and look at that as an example. I’ve now written a few simple modules that just pull data from web service and display it on screen. Feel free to fork any of them and pull them apart for ideas, the one I just submitted (MMM-AirNow) is pretty basic.




  • Moderator

    I’d like to jump in as well.
    How do you decide if a node_helper is required or if the module itself is sufficient? Is there any benefit or downside if you choose one way or the other?



  • @yawns I create only a node_helper if I need to use a npm dependency



  • Thanks for the responses, guys.

    The E-Monitor API specification has a listing of the supported API methods (page 3), like authenticate, deauthenticate, getCurrentData and so on.

    Aside from Module.register, getStyles, start: function(), and getDom, are these methods listed in the API specification the ones that I will use as functions in my code? For example:

    Module.resgister ("MMM-Emonitor.js", {
    },
    
    getStyles: function() {
    },
    
    start: function() {
    },
    
    getDom: function() {
    },
    
     // And then the EMonitor methods below:
    authenticate: function() { 
    }
    
    deauthenticate: function() {
    }
    
    getCurrentData: function() {
    }
    
    //... and so on down the list of the supported API methods