Read the statement by Michael Teeuw here.
.txt file include
-
@strawberry-3.141
No. There is only one line. -
can you please upload your txt file i have no clue how it looks like, so we can help you out with that
-
@strawberry-3.141
Raspberry Pi wiringPi DHT22 reader www.lolware.net Data not good, skip Data not good, skip Data not good, skip Humidity = 47.10 % Temperature = 24.50 *C .This is the contetn of the .txt file. And its all in one line.
-
@strawberry-3.141 Hi, do you have any idea?
-
getDom: function(){ var wrapper = document.createElement("div"); if(this.dataFile){ var humidityRegExp = /Humidity = (.*?) %/ig; var humidity = humidityRegExp.exec(this.dataFile)[1]; var temperatureRegExp = /Temperature = (.*?) *C/ig; var temperature = temperatureRegExp.exec(this.dataFile)[1]; wrapper.innerHTML = "Humidity: " + humidity + "% and Temperature: " + temperature + "°C"; } else { wrapper.innerHTML = "No data"; } return wrapper; }
-
@strawberry-3.141 HI Thanks. Sorry but, where do I insert the code?
I´m new in this… -
in sensor.js you have the function getdom replace it with this
-
@strawberry-3.141 Yeah :) Thanks :)
-
@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 txtI hope you can help me to Display " Meldung, Zone, Zeit" on my MagicMirror
Best regards
Sascha
-
@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