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

.txt file include

Scheduled Pinned Locked Moved Troubleshooting
59 Posts 6 Posters 31.3k 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.
  • S Offline
    SaschaSP
    last edited by yawns Jun 12, 2018, 10:21 AM Jun 12, 2018, 10:09 AM

    @strawberry-3-141 great solution from you.
    I want to use your solution not for showing Temperatur/ Humidity rather for showing alerts from sensors.

    The content from my txt is for example:

    Meldung Stellmotor Antrieb blockiert
    Zone Nebenantrieb
    Zeit 6.Juni 2018 10:40
    +++ENDE DER DATEI+++
    

    I change the sensor.js:

    Module.register("Home-Status",{
    	defaults: {
    		updateInterval: 0.5 * 60 * 1000 //reads the file every 30 seconds
    	},
    
    	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){
                            var meldungRegExp = /Meldung = (.*?) /ig;
                            var meldung = meldungRegExp.exec(this.dataFile)[1];
    
                            var zoneRegExp = /Zone = (.*?) /ig;
                            var zone = zoneRegExp.exec(this.dataFile)[1];
    
    			var zeitRegExp = /Zeit = (.*?) /ig;
    			var zeit = zeitRegExp.exec(this.dataFile)[1];
    			wrapper.innerHTML = "Meldung: " + meldung + " , Zone: " + zone + " , "Zeit: " + zeit" ;
    		} else {
    			wrapper.innerHTML = "No Data";
    		}
    		return wrapper;
    	}
    });
    

    but it dosn´t work.
    Firtst problem: my txt have no seperators like = or :
    second probleme: my alert text (Meldung) contains of several words
    third Problem: only the newest txt should be displayed. The Names from the txt files are for example 20180112090125.txt or 20185912085949.txt etc. It´s not possible to edit the incoming txt names. Best way is to automaticly delete the previous txt

    I hope you can help me to Display " Meldung, Zone, Zeit" on my MagicMirror

    Best regards

    Sascha

    S 1 Reply Last reply Jun 12, 2018, 7:08 PM Reply Quote 0
    • S Offline
      strawberry 3.141 Project Sponsor Module Developer @SaschaSP
      last edited by Jun 12, 2018, 7:08 PM

      @saschasp you can change your regular expressions to the following:
      /Meldung (.*)/ig;, /Zone (.*)/ig; and /Zeit (.*)/ig;. This should help you displaying the data. For the problem with the newest file you need to do the following steps: Scan the directory, sort file list by highest number, read the first file.

      Scan the directory https://nodejs.org/api/fs.html#fs_fs_readdir_path_options_callback

      Sort the file names https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

      Read the file https://nodejs.org/api/fs.html#fs_fs_readfile_path_options_callback

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

      S 1 Reply Last reply Jun 13, 2018, 9:42 AM Reply Quote 1
      • S Offline
        SaschaSP @strawberry 3.141
        last edited by SaschaSP Jun 13, 2018, 9:51 AM Jun 13, 2018, 9:42 AM

        @strawberry-3-141
        Ok, i will try step by step.
        Beginning with my first probleme:
        The Output message (displayed on the mirror) is only displaying one word after the “identifyer-word”

        identifyer "Meldung"
        Stellmotor Antrieb blockiert
        MagicMirror Display only Stellmotor
        Antrieb blockiert is missing

        The identifyer-wordsare Meldung Zone Zeit

        The content from my txt:

        Meldung Stellmotor Antrieb blockiert
        Zone Nebenantrieb
        Zeit 6.Juni 2018 10:40
        +++ENDE DER DATEI+++
        

        My edited sensor.js:

        Module.register("Home-Status",{
        	defaults: {
        		updateInterval: 0.5 * 60 * 1000 //reads the file every 30 seconds
        	},
        
        	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){
                                var meldungRegExp = /Meldung (.*?) /ig;
                                var meldung = meldungRegExp.exec(this.dataFile)[1];
        
        
                                var zoneRegExp = /Zone (.*?) /ig;
                                var zone = zoneRegExp.exec(this.dataFile)[1];
        
        			var zeitRegExp = /Zeit (.*?) /ig;
        			var zeit = zeitRegExp.exec(this.dataFile)[1];
        			wrapper.innerHTML = "Meldung: " + meldung + " Zone: " + zone + " Zeit: " + zeit;
        		} else {
        			wrapper.innerHTML = "No Data";
        		}
        		return wrapper;
        	}
        });
        
        

        Result wich is displayed at MagicMirror:

        Meldung:Stellmotor Zone:Nebenantrieb Zeit:6.Juni

        S 1 Reply Last reply Jun 13, 2018, 6:21 PM Reply Quote 0
        • S Offline
          strawberry 3.141 Project Sponsor Module Developer @SaschaSP
          last edited by Jun 13, 2018, 6:21 PM

          @saschasp your regular expressens are different from the one i posted, use them and I’m sure it will work

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

          1 Reply Last reply Reply Quote 0
          • B Offline
            banbutcher
            last edited by Apr 13, 2020, 5:26 AM

            hi,
            sorry to be dragging up old posts, but im trying to get my mirror to display the contents of a txt file and i have it partly working… i have the contents displaying on my mirror but its all showing up on one line, how can i display it with each line break as in txt file?

            thanks

            S 1 Reply Last reply Apr 13, 2020, 10:54 AM Reply Quote 0
            • S Away
              sdetweil @banbutcher
              last edited by Apr 13, 2020, 10:54 AM

              @banbutcher you will have to replace the line feeds (\n) with html breaks (
              )

              Sam

              How to add modules

              learning how to use browser developers window for css changes

              1 Reply Last reply Reply Quote 0
              • B Offline
                banbutcher
                last edited by Apr 16, 2020, 2:01 PM

                hi again,

                im after getting my script to update my txt file with the names of downloaded movies and tv series… how would i go about reading the title of the series and just having the title and info ie:

                if title has S**E** in it then
                filename - Archer S01E01pilot 1080p x265.mkv
                desired result - Archer S01E01

                else its a movie and just add movie name

                i think this is the bit of code im to edit but i havent got it working :(

                	getDom: function(){
                		var wrapper = document.createElement("div");
                		if(this.dataFile){
                                        var meldungRegExp = /Meldung (.*?) /ig;
                                        var meldung = meldungRegExp.exec(this.dataFile)[1];
                
                
                                        var zoneRegExp = /Zone (.*?) /ig;
                                        var zone = zoneRegExp.exec(this.dataFile)[1];
                
                			var zeitRegExp = /Zeit (.*?) /ig;
                			var zeit = zeitRegExp.exec(this.dataFile)[1];
                			wrapper.innerHTML = "Meldung: " + meldung + " Zone: " + zone + " Zeit: " + zeit;
                		} else {
                			wrapper.innerHTML = "No Data";
                		}
                		return wrapper;
                	}
                });
                

                thanks

                Richie

                S 1 Reply Last reply Apr 16, 2020, 2:33 PM Reply Quote 0
                • S Away
                  sdetweil @banbutcher
                  last edited by sdetweil Apr 17, 2020, 11:49 AM Apr 16, 2020, 2:33 PM

                  @banbutcher said in .txt file include:

                  Archer S01E01pilot 1080p x265.mkv

                  using the regex tester,
                  https://regex101.com/

                  I think this is the regex u want

                  /.*[S][(0-9)]+[E][(0-9)]+/
                  

                  Sam

                  How to add modules

                  learning how to use browser developers window for css changes

                  1 Reply Last reply Reply Quote 0
                  • B Offline
                    banbutcher
                    last edited by banbutcher Apr 17, 2020, 1:30 AM Apr 17, 2020, 1:29 AM

                    @sdetweil

                    that worked great…

                    however, im a little bit stuck again… your expression works fine and return the correct result but only on the first line of the file and only if i remove the [1] from the end of line 5 of the code

                    	getDom: function(){
                    		var wrapper = document.createElement("div");
                    		if(this.dataFile){
                                            var splitRegExp = /.*[S][(0-9)]+[E][(0-9)]+/ig;
                                            var split = splitRegExp.exec(this.dataFile)[1];
                    
                    			wrapper.innerHTML = split;
                    		} else {
                    			wrapper.innerHTML = "No Data";
                    		}
                    		return wrapper;
                    	}
                    

                    do i need to stick it in some kind of loop? or am i reading the contents of file wrong?

                    again thanks for your help :)

                    S 1 Reply Last reply Apr 17, 2020, 1:47 AM Reply Quote 0
                    • S Away
                      sdetweil @banbutcher
                      last edited by Apr 17, 2020, 1:47 AM

                      @banbutcher is dataFile an array of filenames? then yes, you’ll need a loop.
                      so, you are moving part of name a, to a new array
                      then part of name b to the next slot in the array

                      array.push(item)
                      adds item to the end of the array

                      name_of_array =[] initializes name_of_array to be an empty array

                      then u will need to format the array of partial names

                      var x = name_of_array.join(separator)
                      will turn the array into x, a string with separator between the names

                      Sam

                      How to add modules

                      learning how to use browser developers window for css changes

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