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.

    .txt file include

    Scheduled Pinned Locked Moved Troubleshooting
    59 Posts 6 Posters 34.9k Views 6 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.
    • strawberry 3.141S Offline
      strawberry 3.141 Project Sponsor Module Developer @dominic
      last edited by strawberry 3.141

      @dominic this should give you an idea how to solve your problem, I just wrote it down maybe you have to adjust something a little bit and it’s not a finished solution

      • nodehelper:
      const fs = require('fs');
      ...
      
      socketNotificationReceived: function(notification, payload) {
          if(notification === 'START'){
              this.config = payload;
              this.readData();
              setInterval(() => {
                  this.readData();
              }, this.config.updateInterval);
          }
      },
      
      readData: function(){
          //to read a file to do the following
          fs.readFile('YOUR FILE PATH', (err, data) => {
              if (err) throw err;
              this.sendSocketNotification('DATA', data);
          });
      }
      
      • module:
      defaults: {
          updateInterval: 30*60*1000 //reads the file every 30 mins
      },
      
      start: function(){
          this.sendSocketNotification('START', this.config);
      },
      
      socketNotificationReceived: function(notification, payload) {
          if(notification === 'DATA'){
              this.dataFile = payload;
              this.updateDom();
          }
      },
      
      getDom: function(){
          var wrapper = document.createElement('div');
          if(this.dataFile){
              wrapper.innerHTML = this.dataFile;
          } else {
              wrapper.innerHTML = 'No data';
          }
          return wrapper;
      }
      

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

      D 1 Reply Last reply Reply Quote 1
      • D Offline
        dominic @strawberry 3.141
        last edited by

        @strawberry-3.141 Hi thank you.
        Sorry for the questions, i´m new in .js.

        Where do I insert the nodehelper und the module and and what I need to modify?
        I have insert the nodehelper code in the file: MagicMirror/modules/node_modules/node_helper/index.js.
        And the module code in /MagicMirror/modules/sensor/sensor.js.

        on the mirror is displayed : Sensor module_2_sensor…

        1 Reply Last reply Reply Quote 0
        • strawberry 3.141S Offline
          strawberry 3.141 Project Sponsor Module Developer
          last edited by

          there is a general design your module have to look like

          you have to create a directory in ~/MagicMirror/modules/YOUR_MODULE_NAME

          then create a file YOUR_MODULE_NAME.js

          Module.register("YOUR_MODULE_NAME",{
              //here comes the rest of the code for module I posted above
          });
          

          then create a file node_helper.js

          const NodeHelper = require("node_helper");
          const fs= require("fs");
          
          module.exports = NodeHelper.create({
              //here comes the part of the nodehelper after the 3 dots as posted above
          });
          

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

          D 1 Reply Last reply Reply Quote 1
          • D Offline
            dominic @strawberry 3.141
            last edited by

            @strawberry-3.141 Thanks for the fast answer :)

            I did it , just as you said it. on the mirror is displayed : NO DATA

            Here is the code from the nodehelper:
            Is the path specified correctly or I need to change something?

            • readData: function(){
              //to read a file to do the following
              fs.readFile(‘/home/pi/MagicMirror/Test-temp.txt’, (err, data) => {
              if (err) throw err;
              this.sendSocketNotification(‘DATA’, data);
              });
            1 Reply Last reply Reply Quote 0
            • strawberry 3.141S Offline
              strawberry 3.141 Project Sponsor Module Developer
              last edited by

              i think this should do the job

              fs.readFile('Test-temp.txt', (err, data) => {
              

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

              D 1 Reply Last reply Reply Quote 0
              • D Offline
                dominic @strawberry 3.141
                last edited by

                @strawberry-3.141
                hi, now i get " [object ArryBuffer]"
                what did i worng?

                1 Reply Last reply Reply Quote 0
                • strawberry 3.141S Offline
                  strawberry 3.141 Project Sponsor Module Developer
                  last edited by strawberry 3.141

                  sry wasn’t aware of that a buffer gets returned instead of a string if there is no encoding specified

                  fs.readFile('Test-temp.txt', 'utf8', (err, data) => {
                  

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

                  D 1 Reply Last reply Reply Quote 0
                  • D Offline
                    dominic @strawberry 3.141
                    last edited by paviro

                    @strawberry-3.141 said in .txt file include:

                    fs.readFile(‘Test-temp.txt’, ‘utf8’, (err, data) => {

                    Hi, sorry.
                    It didn´t work :/

                    Here is the node_helper.js code

                    const NodeHelper = require("node_helper");
                    const fs= require("fs");
                    
                    module.exports = NodeHelper.create({
                        //here comes the part of the nodehelper after the 3 dots as posted above
                    	
                    	socketNotificationReceived: function(notification, payload) {
                        if(notification === 'START'){
                            this.config = payload;
                            this.readData();
                            setInterval(() => {
                                this.readData();
                            }, this.config.updateInterval);
                        }
                    },
                    
                    readData: function(){
                        //to read a file to do the following
                       fs.readFile('Test-temp.txt', 'utf8', (err, data) => {
                            if (err) throw err;
                            this.sendSocketNotification('DATA', data);
                        });
                    }
                    });
                    
                    
                    
                    and here is the sensor.js code: 
                    
                    Module.register("sensor",{
                       defaults: {
                        updateInterval: 30*60*1000 //reads the file every 30 mins
                    },
                    
                    start: function(){
                        this.sendSocketNotification('START', this.config);
                    },
                    
                    socketNotificationReceived: function(notification, payload) {
                        if(notification === 'DATA'){
                            this.dataFile = payload;
                            this.updateDom();
                        }
                    },
                    
                    getDom: function(){
                        var wrapper = document.createElement('div');
                        if(this.dataFile){
                            wrapper.innerHTML = this.dataFile;
                        } else {
                            wrapper.innerHTML = 'No data';
                        }
                        return wrapper;
                    }
                    });
                    

                    Waht did i wrong? :D
                    I hope you can help me.


                    Note from admin: Please use Markdown on code snippets for easier reading!

                    1 Reply Last reply Reply Quote 0
                    • strawberry 3.141S Offline
                      strawberry 3.141 Project Sponsor Module Developer
                      last edited by

                      this works for me you had everywhere weird quotes and the updateinterval was also wrong

                      Module.register("sensor",{
                      	defaults: {
                      		updateInterval: 30 * 60 * 1000 //reads the file every 30 mins
                      	},
                      
                      	start: function(){
                      		this.sendSocketNotification("START", this.config);
                      	},
                      
                      	socketNotificationReceived: function(notification, payload) {
                      		if(notification === "DATA"){
                      			this.dataFile = payload;
                      			this.updateDom();
                      		}
                      	},
                      
                      	getDom: function(){
                      		var wrapper = document.createElement("div");
                      		if(this.dataFile){
                      			wrapper.innerHTML = this.dataFile;
                      		} else {
                      			wrapper.innerHTML = "No data";
                      		}
                      		return wrapper;
                      	}
                      });
                      
                      const NodeHelper = require("node_helper");
                      const fs= require("fs");
                      
                      module.exports = NodeHelper.create({
                      //here comes the part of the nodehelper after the 3 dots as posted above
                      
                      	socketNotificationReceived: function(notification, payload) {
                      		if(notification === "START"){
                      			this.config = payload;
                      			this.readData();
                          			setInterval(() => {
                              			this.readData();
                          			}, this.config.updateInterval);
                      		}
                      	},
                      
                      	readData: function(){
                      		//to read a file to do the following
                      		fs.readFile("Test-temp.txt", "utf8", (err, data) => {
                      			if (err) throw err;
                      			this.sendSocketNotification("DATA", data);
                      		});
                      	}
                      });
                      

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

                      D 2 Replies Last reply Reply Quote 0
                      • D Offline
                        dominic @strawberry 3.141
                        last edited by

                        @strawberry-3.141
                        Mh… than i don´t know…
                        i have copy your code but it doesen´t work…
                        I need to change anything els?

                        And thank you for your patience :)

                        1 Reply Last reply Reply Quote 0
                        • 1
                        • 2
                        • 3
                        • 4
                        • 5
                        • 6
                        • 5 / 6
                        • 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