@mochman Thanks a lot! I’ll take a look at the documentation and try your suggestion.
Have a good weekend!
@mochman Thanks a lot! I’ll take a look at the documentation and try your suggestion.
Have a good weekend!
@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");
}
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!
@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!
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>
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);
}
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!
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;
},
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!
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.