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.
    • S Offline
      SaschaSP
      last edited by yawns

      @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

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

        @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 Reply Quote 1
        • S Offline
          SaschaSP @strawberry 3.141
          last edited by SaschaSP

          @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

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

            @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

              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 Reply Quote 0
              • S Offline
                sdetweil @banbutcher
                last edited by

                @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

                  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 Reply Quote 0
                  • S Offline
                    sdetweil @banbutcher
                    last edited by sdetweil

                    @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

                      @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 Reply Quote 0
                      • S Offline
                        sdetweil @banbutcher
                        last edited by

                        @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