@shawnlane ok have fun…the lunartic module starts working from Summer… maybe June ore juli with live picture from the moon
right now the api is down so there is no live picture …
@shawnlane ok have fun…the lunartic module starts working from Summer… maybe June ore juli with live picture from the moon
right now the api is down so there is no live picture …
@shawnlane mmm-earth and mmm-lunartic are nice modules
@shawnlane I have the same problem…and the globe module does not work anymore it does not update the picture
@shawnlane there are two different modules with the name mmm globe ??
@Fozi :face_with_tears_of_joy: :face_with_tears_of_joy:
@WouterEekhout Hi my other modules work but this is not working and I don’t know why :thinking_face:
I will try to change the line 26…thanks for you help
@WouterEekhout sorry does not work

Last login: Sat Jun 6 20:48:53 on ttys000
patrickhahn@Patricks-Mini ~ % cd ~/MagicMirror/modules
patrickhahn@Patricks-Mini modules % git clone https://github.com/WouterEekhout/MMM-Tado
Cloning into 'MMM-Tado'...
remote: Enumerating objects: 47, done.
remote: Counting objects: 100% (47/47), done.
remote: Compressing objects: 100% (39/39), done.
remote: Total 152 (delta 22), reused 23 (delta 6), pack-reused 105
Receiving objects: 100% (152/152), 841.64 KiB | 973.00 KiB/s, done.
Resolving deltas: 100% (50/50), done.
patrickhahn@Patricks-Mini modules % cd MMM-Tado
patrickhahn@Patricks-Mini MMM-Tado % npm install
npm WARN deprecated simple-oauth2@2.5.2: simple-oauth2 v2 is no longer supported. Please upgrade to v3 for further support
npm WARN deprecated mkdirp@0.5.1: Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)
npm WARN deprecated wreck@14.2.0: This module has moved and is now available at @hapi/wreck. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues.
npm WARN deprecated boom@7.3.0: This module has moved and is now available at @hapi/boom. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues.
npm WARN deprecated bourne@1.1.2: This module has moved and is now available at @hapi/bourne. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues.
npm WARN deprecated hoek@6.1.3: This module has moved and is now available at @hapi/hoek. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues.
npm notice created a lockfile as package-lock.json. You should commit this file.
added 42 packages from 446 contributors and audited 42 packages in 5.628s
1 package is looking for funding
run `npm fund` for details
found 1 low severity vulnerability
run `npm audit fix` to fix them, or `npm audit` for details
patrickhahn@Patricks-Mini MMM-Tado % git pull
git checkout incorrect_pointer_in_getdom
Already up to date.
Branch 'incorrect_pointer_in_getdom' set up to track remote branch 'incorrect_pointer_in_getdom' from 'origin'.
Switched to a new branch 'incorrect_pointer_in_getdom'
patrickhahn@Patricks-Mini MMM-Tado %
@sdetweil no luck…sorry, I have changed 4x this into self
but I am not sure with the line 26
/**
* Created by Wouter Eekhout on 06/01/2017.
*/
Module.register("MMM-Tado", {
// Default module config.
defaults: {
username: '',
password: '',
updateInterval: 300000,
},
tadoMe: {},
tadoHomes: [],
getStyles: function () {
return [
this.file('css/MMM-Tado.css'),
];
},
start: function () {
if (this.config.updateInterval < this.defaults.updateInterval){
this.config.updateInterval = this.defaults.updateInterval;
}
this.config.units = self.config.units;
this.sendSocketNotification('CONFIG', this.config);
},
// Override dom generator.
getDom: function () {
let self = this;
let wrapper = document.createElement("div");
wrapper.className = "tado-info";
this.tadoHomes.forEach(home => {
let homeWrapper = document.createElement("div");
homeWrapper.className = "tado-home";
let logoWrapper = document.createElement("i");
logoWrapper.className = "tado-icon-tado_logo tado-logo";
homeWrapper.appendChild(logoWrapper);
let tableWrapper = document.createElement("table");
tableWrapper.className = "tado-table small";
home.zones.forEach(zone => {
let rowWrapper = document.createElement("tr");
if (zone.type === "HOT_WATER") {
let firstTableDataWrapper = document.createElement("td");
firstTableDataWrapper.className = "tado-table-name";
let zoneNameWrapper = document.createElement("span");
zoneNameWrapper.innerText = zone.name;
firstTableDataWrapper.appendChild(zoneNameWrapper);
rowWrapper.appendChild(firstTableDataWrapper);
let secondTableDateWrapper = document.createElement("td");
secondTableDateWrapper.className = "tado-table-data";
let temperatureWrapper = document.createElement("span");
let temperatureIconWrapper = document.createElement("i");
temperatureIconWrapper.className = "fa fa-thermometer-half";
temperatureWrapper.appendChild(temperatureIconWrapper);
if (zone.state.setting.temperature == null) {
var temperatureTextWrapper = document.createTextNode(zone.state.setting.power);
} else {
if (self.config.units === "metric") {
var temperatureTextWrapper = document.createTextNode(zone.state.setting.temperature.celsius + "°");
} else {
var temperatureTextWrapper = document.createTextNode(zone.state.setting.temperature.fahrenheit + "°");
}
}
temperatureWrapper.appendChild(temperatureTextWrapper);
secondTableDateWrapper.appendChild(temperatureWrapper);
rowWrapper.appendChild(secondTableDateWrapper);
}
else if (zone.type === "HEATING") {
let firstTableDataWrapper = document.createElement("td");
firstTableDataWrapper.className = "tado-table-name";
let zoneNameWrapper = document.createElement("span");
zoneNameWrapper.innerText = zone.name;
firstTableDataWrapper.appendChild(zoneNameWrapper);
rowWrapper.appendChild(firstTableDataWrapper);
let secondTableDateWrapper = document.createElement("td");
secondTableDateWrapper.className = "tado-table-data";
//current temperature
let temperatureWrapper = document.createElement("span");
temperatureWrapper.className = "bright";
let temperatureIconWrapper = document.createElement("i");
temperatureIconWrapper.className = "fa fa-thermometer-half";
temperatureWrapper.appendChild(temperatureIconWrapper);
if (self.config.units === "metric") {
var temperatureTextWrapper = document.createTextNode(zone.state.sensorDataPoints.insideTemperature.celsius + "°");
} else {
var temperatureTextWrapper = document.createTextNode(zone.state.sensorDataPoints.insideTemperature.fahrenheit + "°");
}
temperatureWrapper.appendChild(temperatureTextWrapper);
if (zone.state.activityDataPoints.heatingPower.percentage > 0) {
//The zone is heating
let heatingWrapper = document.createElement("i");
heatingWrapper.className = "fa fa-fire bright";
temperatureWrapper.appendChild(heatingWrapper);
}
secondTableDateWrapper.appendChild(temperatureWrapper);
//target temperature
let temperatureTargetWrapper = document.createElement("span");
temperatureTargetWrapper.className = "xsmall";
let temperatureTargetIconWrapper = document.createElement("i");
temperatureTargetIconWrapper.className = "fa fa-thermometer-half";
temperatureTargetWrapper.appendChild(temperatureTargetIconWrapper);
if (zone.state.setting.temperature == null) {
var temperatureTargetTextWrapper = document.createTextNode(zone.state.setting.power);
} else {
if (self.config.units === "metric") {
var temperatureTargetTextWrapper = document.createTextNode(zone.state.setting.temperature.celsius + "°");
} else {
var temperatureTargetTextWrapper = document.createTextNode(zone.state.setting.temperature.fahrenheit + "°");
}
}
temperatureTargetWrapper.appendChild(temperatureTargetTextWrapper);
secondTableDateWrapper.appendChild(temperatureTargetWrapper);
let breakLine = document.createElement("br");
secondTableDateWrapper.appendChild(breakLine);
let humidityWrapper = document.createElement("span");
let humidityIconWrapper = document.createElement("i");
humidityIconWrapper.className = "fa fa-tint";
humidityWrapper.appendChild(humidityIconWrapper);
let humidityTextWrapper = document.createTextNode(zone.state.sensorDataPoints.humidity.percentage + "%");
humidityWrapper.appendChild(humidityTextWrapper);
secondTableDateWrapper.appendChild(humidityWrapper);
rowWrapper.appendChild(secondTableDateWrapper);
}
else if (zone.type === "AIR_CONDITIONING") {
let firstTableDataWrapper = document.createElement("td");
firstTableDataWrapper.className = "tado-table-name";
let zoneNameWrapper = document.createElement("span");
zoneNameWrapper.innerText = zone.name;
firstTableDataWrapper.appendChild(zoneNameWrapper);
rowWrapper.appendChild(firstTableDataWrapper);
let secondTableDateWrapper = document.createElement("td");
secondTableDateWrapper.className = "tado-table-data";
//current temperature
let temperatureWrapper = document.createElement("span");
temperatureWrapper.className = "bright";
let temperatureIconWrapper = document.createElement("i");
temperatureIconWrapper.className = "fa fa-thermometer-half";
temperatureWrapper.appendChild(temperatureIconWrapper);
if (self.config.units === "metric") {
var temperatureTextWrapper = document.createTextNode(zone.state.sensorDataPoints.insideTemperature.celsius + "°");
} else {
var temperatureTextWrapper = document.createTextNode(zone.state.sensorDataPoints.insideTemperature.fahrenheit + "°");
}
temperatureWrapper.appendChild(temperatureTextWrapper);
if (zone.state.setting.mode === "HEAT") {
//The zone is heating
let heatingWrapper = document.createElement("i");
heatingWrapper.className = "fa fa-fire bright";
temperatureWrapper.appendChild(heatingWrapper);
}
else if (zone.state.setting.mode === "COOL") {
//The zone is cooling
let coolingWrapper = document.createElement("i");
coolingWrapper.className = "fa fa-snowflake bright";
temperatureWrapper.appendChild(coolingWrapper);
}
secondTableDateWrapper.appendChild(temperatureWrapper);
//target temperature
let temperatureTargetWrapper = document.createElement("span");
temperatureTargetWrapper.className = "xsmall";
let temperatureTargetIconWrapper = document.createElement("i");
temperatureTargetIconWrapper.className = "fa fa-thermometer-half";
temperatureTargetWrapper.appendChild(temperatureTargetIconWrapper);
if (zone.state.setting.temperature == null) {
var temperatureTargetTextWrapper = document.createTextNode(zone.state.setting.power);
} else {
if (self.config.units === "metric") {
var temperatureTargetTextWrapper = document.createTextNode(zone.state.setting.temperature.celsius + "°");
} else {
var temperatureTargetTextWrapper = document.createTextNode(zone.state.setting.temperature.fahrenheit + "°");
}
}
temperatureTargetWrapper.appendChild(temperatureTargetTextWrapper);
secondTableDateWrapper.appendChild(temperatureTargetWrapper);
let breakLine = document.createElement("br");
secondTableDateWrapper.appendChild(breakLine);
let humidityWrapper = document.createElement("span");
let humidityIconWrapper = document.createElement("i");
humidityIconWrapper.className = "fa fa-tint";
humidityWrapper.appendChild(humidityIconWrapper);
let humidityTextWrapper = document.createTextNode(zone.state.sensorDataPoints.humidity.percentage + "%");
humidityWrapper.appendChild(humidityTextWrapper);
secondTableDateWrapper.appendChild(humidityWrapper);
rowWrapper.appendChild(secondTableDateWrapper);
} else {
//don't add it
return;
}
tableWrapper.appendChild(rowWrapper);
});
homeWrapper.appendChild(tableWrapper);
wrapper.appendChild(homeWrapper);
});
return wrapper;
},
socketNotificationReceived: function(notification, payload) {
if (notification === 'NEW_DATA') {
this.tadoMe = payload.tadoMe;
this.tadoHomes = payload.tadoHomes;
this.updateDom();
}
}
});
@sdetweil Hello, after module update same problem
and your fix don’t work anymore…can you help me again?
var config = {
address: "0.0.0.0", // Address to listen on, can be:
// - "0.0.0.0", "127.0.0.1", "::1" to listen on loopback interface
// - another specific IPv4/6 to listen on a specific interface
// - "", "0.0.0.0", "::" to listen on any interface
// Default, when address config is left out, is "0.0.0.0"
port: 8080,
ipWhitelist: [], // Set [] to allow all IP addresses
// or add a specific IPv4 of 192.168.1.5 :
// ["127.0.0.1", "::ffff:127.0.0.1", "::1", "::ffff:192.168.1.5"],
// or IPv4 range of 192.168.3.0 --> 192.168.3.15 use CIDR format :
// ["127.0.0.1", "::ffff:127.0.0.1", "::1", "::ffff:192.168.3.0/28"],
language: "de",
timeFormat: 24,
units: "metric",
modules: [
@sdetweil without your fix it does not work in my case
@WouterEekhout I am from Germany and I need metric unit but Sam helped me to fix and now it’s working for me.
It would be cool to have the choice in module config. Metric or imperial
Thanks to you guys
Hi, do I need a second api for example for my soccer or weather module when I run a second mirror or can I use one API for two ore more Mirrors
@Jalibu Hello, the module is very good but it only shows the time that has already passed and not the time that is yet to come…
can I change that is showing the next 2 hours
@fordi there is no Time in the weathermodule
it is the time for rise and set of the sun :sun_with_face:
@sdetweil Hey i am back… now it seems to work :ok_hand_medium-light_skin_tone:
Hey I have the same problem …since 2 or 3 day no login possible on
my mobile devices…