WouterEekhout / MMM-Tado

A MagicMirror Module for your Tado Smart Thermostat.
MIT License
7 stars 6 forks source link

Module doesnt show - No hot water temp error #2

Closed dinkybluebug closed 7 years ago

dinkybluebug commented 7 years ago

Hi -

Ive realised that the module errors when my hot water is on -

The error in the console is: Uncaught TypeError: Cannot read property 'celsius' of null at MMM-Tado.js:100 at u (lodash.min.js:1) at Function.gf (lodash.min.js:2) at MMM-Tado.js:77 at u (lodash.min.js:1) at Function.gf (lodash.min.js:2) at Class.getDom (MMM-Tado.js:61) at updateDom (main.js:99) at Object.updateDom (main.js:472) at Class.updateDom (module.js:296)

I think this is because of my Tado system - it heats my hot water but it doesnt measure the temperature of the water - my boiler does that itself.

As such when my water is being heated, the module disappears. Can it be altered to show Water is being heated, when you have a system that doesnt have a hot water temperature variable?

My output is:

{ "tadoMode": "HOME", "geolocationOverride": true, "geolocationOverrideDisableTime": "2017-01-13T06:00:00Z", "preparation": null, "setting": { "type": "HOT_WATER", "power": "ON", "temperature": null }, "overlayType": "MANUAL", "overlay": { "type": "MANUAL", "setting": { "type": "HOT_WATER", "power": "ON", "temperature": null }, "termination": { "type": "TIMER", "durationInSeconds": 1800, "expiry": "2017-01-12T20:03:08Z", "remainingTimeInSeconds": 1388, "projectedExpiry": "2017-01-12T20:03:08Z" } }, "link": { "state": "ONLINE" }, "activityDataPoints": {}, "sensorDataPoints": {} }

WouterEekhout commented 7 years ago

Hi again. Can you send me the JSON File of the Hot water when it is turned on?

dinkybluebug commented 7 years ago

Sorry - I hit enter by mistake and hadnt finished my entry - Ive updated previous post

WouterEekhout commented 7 years ago

Thanks! There is a fix available. Can you check if this solves your problem?

BTW: Thanks for the patience :)

dinkybluebug commented 7 years ago

No errors which is good - but shouldnt it display Water and the flame icon to show my water is being heated?

{ "tadoMode": "HOME", "geolocationOverride": true, "geolocationOverrideDisableTime": "2017-01-13T06:00:00Z", "preparation": null, "setting": { "type": "HOT_WATER", "power": "ON", "temperature": null }, "overlayType": "MANUAL", "overlay": { "type": "MANUAL", "setting": { "type": "HOT_WATER", "power": "ON", "temperature": null }, "termination": { "type": "TIMER", "durationInSeconds": 1800, "expiry": "2017-01-12T20:24:21Z", "remainingTimeInSeconds": 1737, "projectedExpiry": "2017-01-12T20:24:21Z" } }, "link": { "state": "ONLINE" }, "activityDataPoints": {}, "sensorDataPoints": {} }

WouterEekhout commented 7 years ago

Unfortunately it doesn't work like that. The module doesn't show if it is heating or not. For me it is always on, but it does not state if it is heating. In the heating component if the activityDataPoints.heatingPower.percentage is greater than 0, it is heating. There is no such information for the HOT WATER. I can display if the HOT WATER is ON or OFF, when there is no temperature information. Would this work?

{ "tadoMode": "HOME", "geolocationOverride": false, "geolocationOverrideDisableTime": null, "preparation": null, "setting": { "type": "HOT_WATER", "power": "ON", "temperature": { "celsius": 55, "fahrenheit": 131 } }, "overlayType": null, "overlay": null, "link": { "state": "ONLINE" }, "activityDataPoints": {}, "sensorDataPoints": {} }

dinkybluebug commented 7 years ago

ah ok - well my system is different.. Weird.

When my water is off - it looks like this: {"tadoMode":"HOME","geolocationOverride":true,"geolocationOverrideDisableTime":"2017-01-13T06:00:00Z","preparation":null,"setting":{"type":"HOT_WATER","power":"OFF","temperature":null},"overlayType":null,"overlay":null,"link":{"state":"ONLINE"},"activityDataPoints":{},"sensorDataPoints":{}}

When my water is being heated - it looks like this: {"tadoMode":"HOME","geolocationOverride":true,"geolocationOverrideDisableTime":"2017-01-13T06:00:00Z","preparation":null,"setting":{"type":"HOT_WATER","power":"ON","temperature":null},"overlayType":"MANUAL","overlay":{"type":"MANUAL","setting":{"type":"HOT_WATER","power":"ON","temperature":null},"termination":{"type":"TIMER","durationInSeconds":1800,"expiry":"2017-01-12T20:44:42Z","remainingTimeInSeconds":1793,"projectedExpiry":"2017-01-12T20:44:42Z"}},"link":{"state":"ONLINE"},"activityDataPoints":{},"sensorDataPoints":{}}

dinkybluebug commented 7 years ago

Im assuming that for systems where tado doesnt monitor the temperature of the water -

the different outputs are: {"type":"HOT_WATER","power":"ON","temperature":null} {"type":"HOT_WATER","power":"OFF","temperature":null}

WouterEekhout commented 7 years ago

The code is updated. If temperature: null, than it will show the power state. Otherwise the temperature. Can you verify?

dinkybluebug commented 7 years ago

This is largely because my boiler determines whether the water is hot enough or not - Tado simply says yes you can heat now.... and keeps that switch open for the desired time - when the water is hot enough the boiler stops heating- but the Tado switch stays on. Then when I leave the house, or otherwise - Tado sends a OFF command to the boiler and it doesnt get heated.

dinkybluebug commented 7 years ago

Just seen the update on this - its awesome! Works perfectly

How did you accommodate both your and my Tado setups?

WouterEekhout commented 7 years ago

With if statements ;)

if(zone.state.setting.temperature == null) ; show setting.power

else ; show setting.temperature.celsius