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.

    include npm module like firebase module into our own MM module

    Scheduled Pinned Locked Moved Development
    9 Posts 2 Posters 2.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.
    • K Offline
      kevung
      last edited by kevung

      @sean said in include npm module like firebase module into our own MM module:

      i tried node helper. below code is working. But once i added const firebase = require (‘firebase’) on top then error appeared.

      var NodeHelper = require("node_helper")
      
      module.exports = NodeHelper.create({
        start: function() {
          this.countDown = 10000000
        },
        socketNotificationReceived: function(notification, payload) {
          switch(notification) {
            case "DO_YOUR_JOB":
              this.sendSocketNotification("I_DID", (this.countDown - payload))
              break
          }
        },
      })
      

      The error is

      WARNING! Could not load config file. Starting with default configuration. Error found: Error: Failed to load gRPC binary module because it was not installed for the current system
      Expected directory: electron-v2.0-linux-arm-glibc
      Found: [node-v59-linux-arm-glibc]
      This problem can often be fixed by running "npm rebuild" on the current system
      Original error: Cannot find module '/home/pi/MagicMirror/modules/MMM-hellotsuhan/node_modules/grpc/src/node/extension_binary/electron-v2.0-linux-arm-glibc/grpc_node.node'
      

      I tried npm rebuild. but still not working

      ? 2 Replies Last reply Reply Quote 0
      • ? Offline
        A Former User @kevung
        last edited by

        @kevung
        I know what it is.
        MagicMirror standalone(kiosk) mode is running on Electron - frontend GUI framework. Unfortunately, it has its own node.js and chrome engine. Your current node module might not be compatible with Electron version. So you should re-build node modules for matching proper Electron.
        Normally electron-rebuild will be a help.

        In SERVERONLY mode, with Chrome browser as frontend, you might not get this error.

        1 Reply Last reply Reply Quote 0
        • ? Offline
          A Former User @kevung
          last edited by

          @kevung

          cd ~/MagicMirror/modules/MMM-hellotsuhan
          npm install --save-dev electron-rebuild
          ./node_modules/.bin/electron-rebuild
          

          This could be the solution. or not. :D

          1 Reply Last reply Reply Quote 0
          • K Offline
            kevung
            last edited by kevung

            Thanks bro!:smiling_face_with_open_mouth_smiling_eyes: this work for me!! after did below code then success to run the code already.

            cd ~/MagicMirror/modules/MMM-hellotsuhan
            npm install --save-dev electron-rebuild
            ./node_modules/.bin/electron-rebuild
            

            Now my node_helper.js is :

            const firebase = require ('firebase')
            var NodeHelper = require("node_helper")
            let countdown;
            var ref;
            var config = {
                apiKey: "AIzaSyAxi_kFKM3lxMZ9gnBMhwoPa7pxKX_e1BI",
                authDomain: "customerservice-ee487.firebaseapp.com",
                databaseURL: "https://customerservice-ee487.firebaseio.com",
                projectId: "customerservice-ee487",
                storageBucket: "customerservice-ee487.appspot.com",
                messagingSenderId: "466622230094"
            };
            if (!firebase.apps.length) {
                firebase.initializeApp(config);
            }
            module.exports = NodeHelper.create({
                start: function() {
                   ref = firebase.app().database().ref().child('countdown');
                   r ef.once('value').then(function (snap) {
                     console.log('snap.val()', snap.val());
                     countdown=snap.val();
                   });
              },
              socketNotificationReceived: function(notification, payload) { 
                  switch(notification) {
                     case "DO_YOUR_JOB":   
                       ref.once('value').then(function (snap) {
                          console.log('snap.val()', snap.val());
            	      countdown=snap.val();
            	  });
                      this.sendSocketNotification("I_DID", countdown - payload);      
            	  break
                  }
              }, 	
            })
            

            My MMM-hellotsuhan.js

            Module.register("MMM-hellotsuhan",{
                start: function (){
                    this.count = 0
                },
                getDom: function() {
                    var element = document.createElement("div")
            	element.className = "myContent"
            	element.innerHTML = "Hello, World! " + this.config.foo
                    var subElement = document.createElement("p")
            	subElement.id = "COUNT"
            	element.appendChild(subElement)
            	return element
                },
                notificationReceived: function(notification, payload, sender) { 
                    switch(notification) {
            	    case "DOM_OBJECTS_CREATED":
            	        var timer = setInterval(()=>{
            	            this.sendSocketNotification("DO_YOUR_JOB", this.count)
            	            this.count++
            	        }, 1000)
            	        break
            	    }
                },
                socketNotificationReceived: function(notification, payload) {
                    switch(notification) {
            	    case "I_DID":
            	        var elem = document.getElementById("COUNT")
            	        elem.innerHTML = "Count:" + payload
            	        break
            	   }
                    },
            });	
            
            K 1 Reply Last reply Reply Quote 0
            • K Offline
              kevung @kevung
              last edited by

              btw Thanks for the great tutorial for developing module from @Sean !!
              Head first developing MM module for extreme beginners

              ? 1 Reply Last reply Reply Quote 0
              • ? Offline
                A Former User @kevung
                last edited by A Former User

                @kevung
                I think you’d better define config in module js instead node_helper.js to be able to be redefined by user in config.js. You can move config values with sendSocketNotification.

                K 1 Reply Last reply Reply Quote 0
                • K Offline
                  kevung @Guest
                  last edited by

                  @sean ok will try it out later =)

                  1 Reply Last reply Reply Quote 0
                  • 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