MagicMirror Forum
    • Recent
    • Tags
    • Unsolved
    • Solved
    • MagicMirror² Repository
    • Documentation
    • 3rd-Party-Modules
    • Donate
    • Discord
    • Register
    • Login
    1. Home
    2. nbrenn
    3. Posts
    A New Chapter for MagicMirror: The Community Takes the Lead
    Read the statement by Michael Teeuw here.
    Offline
    • Profile
    • Following 0
    • Followers 0
    • Topics 10
    • Posts 43
    • Groups 0

    Posts

    Recent Best Controversial
    • RE: Trying to write my own Module...

      @mochman Thanks a lot! I’ll take a look at the documentation and try your suggestion.

      Have a good weekend!

      posted in Development
      nbrennN
      nbrenn
    • RE: Trying to write my own Module...

      @mochman ->

      How would I go about formatting my table? I would like to have each column have it’s own title, like “Load” and “kWh”. Is it also possible to put them into a tabulated table?

      My getDOM currently looks like the following:

      getDom: function(){
              var wrapper = document.createElement("div");
              if(!this.loaded) {
                      wrapper.innerHTML = "Loading...";
                      return wrapper;
              }
              if(this.xml !== null){
      	 var table = document.createElement("table");
               table.classList.add("xsmall", "table");
               var channels = this.xml.getElementsByTagName("channel");
               for(var i = 0; i < channels.length; i++){
      	   var row = document.createElement("tr");
                 for(var n = 0; n < channels[i].children.length; n++){
      		name = channels[i].getAttribute('name');
      		if(channels[i].children[n].tagName === "kWh"){
                      var element = document.createElement("td");
      		element.classList.add(channels[i].children[n].tagName);
      		if (channels[i].children[n].textContent != 0){
      			element.innerHTML = name + channels[i].children[n].textContent;
      			row.appendChild(element);
      			table.appendChild(row);
      			}
      		}
      		
      		
                 
      	   
                 }
               }
               wrapper.appendChild(table);
              } else {
                      console.log("Returned no Data");
                      wrapper.innerHTML = "NO DATA";
              }
              return wrapper;
         },
      
         parseXML: function(xmlStr){
              return ( new window.DOMParser() ).parseFromString(xmlStr, "text/xml");
         }
      

      0_1484333787480_screenshot.png

      posted in Development
      nbrennN
      nbrenn
    • Connecting to a MySQL Server to Retrieve Data

      Hi all,

      I have a MySQL server that is storing temperature sensor data that is being logged every second.

      I was wondering if anyone has any experience or knowledge of a suitable approach to retrieve this data from the MySQL server, process the data, and then provide me with an output?

      Let’s say, for example that I want it to display the average temperature from my sensor from 7am-8am on a particular day. I would like to connect in to the MySQL server, extract the data for that day, process the average, and then output it in some format on my mirror.

      Thanks for any preliminary guidance!

      posted in Development
      nbrennN
      nbrenn
    • RE: Trying to write my own Module...

      @mochman Thanks for sharing the link to the w3 schools page! I managed to get it working by following the example on the website. Glad I learned something in the process! Happy New Year!

      posted in Development
      nbrennN
      nbrenn
    • RE: Trying to write my own Module...

      I’m working on getting historical data (my API has a function getHistoricalData). The XML looks like the following:

      <Time Time="2016-11-03 00:00:00">
      <channel channel="194882" name="Main Power Main Panel">
      <kWh>0.319</kWh>
      </channel>
      <channel channel="194885" name="Outlet 1">
      <kWh>0.000</kWh>
      </channel>
      <channel channel="194886" name="Solar Panel 1">
      <kWh>-5.737</kWh>
      </channel>
      <channel channel="194887" name="Solar Panel 2">
      <kWh>-4.877</kWh>
      </channel>
      

      The difference between this XML output, and the XML output from my getCurrentData call, is that name is not it’s own element. With the old function, <name> was in brackets. Now, it is name = ....

      Would be getDom be the same as it was for getCurrentData, or is it different since it’s name= and not it’s own <name> ... </name>

      posted in Development
      nbrennN
      nbrenn
    • RE: Trying to write my own Module...

      For posterity, I modified the if statement as follows, to remove the row items that have a 0 for wattage:

      if (channels[i].children[n].textContent != 0) {
           element.innterHTML = channels[i].children[n].textContent;
           row.appendChild(element);
           table.appendChild(row);
      }
      else {
           table.removeChild(row);
      }
      
      posted in Development
      nbrennN
      nbrenn
    • RE: Trying to write my own Module...

      It looks like the values are not updating. (The wattage values didn’t change at all overnight).

      Should the line:

      setInterval(this.getCurrentData(), this.config_interval);
      

      be changed to:

      setInterval(this.getCurrentData(), this.interval);
      

      Are we calling the interval variable in the config incorrectly?

      Thanks!

      posted in Development
      nbrennN
      nbrenn
    • RE: Trying to write my own Module...

      I’m trying to display just the names where the watts that are != 0. I want both the values greater than 0 and the values less than 0 (in order to include the negative values from the solar generation).

      I attempted to modify the getDom. It is displaying every names in the .XML and shows the watts value only if it is != 0. But how do I also remove the names that are 0? The output currently looks like the following:

      Power Panel        66
      Outlets            20
      Heat Pump
      Oven   
      East Solar Panel  -70
      West Solar Panel  -50
      
      getDom: function(){
              var wrapper = document.createElement("div");
              if(!this.loaded) {
                      wrapper.innerHTML = "Loading...";
                      return wrapper;
              }
              if(this.xml !== null){
               var table = document.createElement("table");
               table.classList.add("xsmall", "table");
               var channels = this.xml.getElementsByTagName("channel");
               for(var i = 0; i < channels.length; i++){
                 var row = document.createElement("tr");
                 for(var n = 0; n < channels[i].children.length; n++){
                      if(channels[i].children[n].tagName === "name" || channels[i].children[n].tagName === "watts"){
                      var element = document.createElement("td");
                      element.classList.add(channels[i].children[n].tagName);
                      if (channels[i].children[n].textContent != 0){
      			element.innerHTML = channels[i].children[n].textContent;
      			row.appendChild(element);
      			}
                      
                      }
                 table.appendChild(row);
                 }
               }
               wrapper.appendChild(table);
              } else {
                      console.log("Returned no Data");
                      wrapper.innerHTML = "NO DATA";
              }
              return wrapper;
         },
      
      posted in Development
      nbrennN
      nbrenn
    • RE: Trying to write my own Module...

      This is awesome.

      A few clarifying questions:

      • Is the purpose of the xhttp.open("GET"... line to make the API call to the website? Is this when the connection is made to the XML page?

      • So, you’re going through each "channel" and creating a row in the table for each channel? And then for each channel’s name and wattage, a data object is created?

      • If I didn’t have any .css file, would the data still show up?

      Thanks for the clarifications, and again, thanks for the great support. This community is top-notch!

      posted in Development
      nbrennN
      nbrenn
    • RE: Trying to write my own Module...

      Ahh, that makes sense. I do not have a node_helper.js, and I had the getCurrentData function because I tried to replicate a different module. I will remove these lines of code since they serve no purpose for me at the moment.

      I’ll try to take a look at examples to see how to save the data into the xml variable, so that this.xml can be used.

      posted in Development
      nbrennN
      nbrenn
    • 1
    • 2
    • 3
    • 4
    • 5
    • 3 / 5