Closed bigc847 closed 7 years ago
UPDATE: This plugin works fine with another Homekit compatible app; EzziHome.
So, problem likely in the interaction from the Elgato app, rather than the plugin itself.
What version of homebridge-evohome are you using?
if not already done, please update to v0.1.1 (oder versions are no longer working)
sudo npm install -g homebridge-evohome
The problem looks strange as I exclusively use Eve and have not encountered any problems... perhaps you can also post what version of homebridge you are using...
I only installed it last night, so can only assume it's the latest version. I installed exactly as per the instructions in the readme.
I can't check right now, but can tell you homebridge and nodejs versions as well if that helps....
On 17 May 2016 at 09:05, Lucas Gasenzer notifications@github.com wrote:
What version of homebridge-evohome are you using?
— You are receiving this because you authored the thread. Reply to this email directly or view it on GitHub https://github.com/luc-ass/homebridge-evohome/issues/6#issuecomment-219647552
Sounds like you did everything right. Perhaps you can tell me a little about your home set up. Perhaps there is some specialities in your set up that I did not Think about when programming the plug-in.
Some details:
I have homebridge running on a Raspberry Pi 3, running the latest Jessie Raspbian build (pure vanilla from RaspberryPi.org). Will need to check versions, but think it was v4.0 for NodeJS. Installed homebridge last week so "latest" version from then.
The homebridge installation is running two plug-ins (hence two platforms in the config.json) One for LightwaveRF kit (lights etc) which works well and gives Siri integration (which was the main rationale for installing it) and the Evohome plugin. I noticed Siri doesn't support any functionality with the Evohome kit (or I don't know what to ask for!)
My EvoHome setup has 8 zones plus a hot water zone. All zones are TRV controlled, some with multiple TRV's (11 in total). I noticed the hot water just gets reported as a thermostat, rather than a by name as a 'special' zone. (The EvoHome controller won't allow you to adjust the h/w termperature for example.) When homebridge failed, it would report back 2 thermostat zones before crashing on the third. I have the proprietary Evohome internet gateway.
Pi doesn't yet run NTP, so time was set manually with correct timezone but may not be strictly accurate (noted something in the readme about time).
Home network is a simple flat 192.168.1.0/24 NAT'd.
Using the Eve app homebridge crashes (in fact it crashes if I just open that app on my phone), running the other EzziHome app it all works as expected.
Hope that helps! C.
On 17 May 2016 at 11:08, Lucas Gasenzer notifications@github.com wrote:
Sounds like you did everything right. Perhaps you can tell me a little about your home set up. Perhaps there is some specialities in your set up that I did not Think about when programming the plug-in.
— You are receiving this because you authored the thread. Reply to this email directly or view it on GitHub https://github.com/luc-ass/homebridge-evohome/issues/6#issuecomment-219674976
Aha! I don't have a hot water zone! ... So I can not test how to fix it but perhaps I can fix it if you send me a "complete" log of your setup. I will post instructions later. Basicaly I would need a dump of a "curl".
Please try doing this from the terminal:
curl -X POST -H "Content-Type: application/json" -d '{"username": "user@email.com", "password": "pass!word123", "ApplicationId": "91db1612-73fd-4500-91b2-e63b069b185c"}' 'https://tccna.honeywell.com/WebAPI/api/Session'
and then post the json you get back (please remove personal data)...
OK. I get the following data:
{
"sessionId": "76AD0FE9-4526-41B0-82DD-C87B0B806289",
"userInfo": {
"userID": 516999,
"username": "me@my-email",
"firstname": "Colin",
"lastname": "xxxxxx",
"streetAddress": "zzzzzzzzzzz",
"city": "Ipswich",
"zipcode": "IPDD FFF",
"country": "GB",
"telephone": "",
"userLanguage": "en-GB",
"isActivated": true,
"deviceCount": 0,
"tenantID": 5,
"securityQuestion1": "NotUsed",
"securityAnswer1": "",
"securityQuestion2": "NotUsed",
"securityAnswer2": "",
"securityQuestion3": "NotUsed",
"securityAnswer3": "",
"latestEulaAccepted": false
},
"latestEulaAccepted": true
but i'm not sure that helps you? I can get LOTS more information through a Python script I've used before which gives a full dump of what comes back through the API. https://github.com/watchforstock/evohome-client
Would it be better to have that?? I haven't managed to get the output in a sensible format to post it here but I will plug away until I have something sensible to share. Presumably it will be the same output you get via the homebridge plugin?
OK, this "might" be more useful. When I run homebridge in debug mode and get to see the returned values, I get the following:
[5/18/2016, 12:16:12 AM] [heating] Logged into Evohome! [5/18/2016, 12:16:13 AM] [heating] You have 1 location(s). Only the first one will be used! [5/18/2016, 12:16:13 AM] [heating] You have 8 device(s). [5/18/2016, 12:16:13 AM] [heating] 0: (51°) [5/18/2016, 12:16:13 AM] [heating] 1: Alice's Room (20°) [5/18/2016, 12:16:13 AM] [heating] 2: Bob Bedroom (20°) [5/18/2016, 12:16:13 AM] [heating] 3: Front room (19.5°) [5/18/2016, 12:16:13 AM] [heating] 4: Living room (19°) [5/18/2016, 12:16:13 AM] [heating] 5: Master Bed (20°) [5/18/2016, 12:16:13 AM] [heating] 6: Rest of house (21.5°) [5/18/2016, 12:16:13 AM] [heating] 7: TV Room (16.5°) [5/18/2016, 12:16:13 AM] [heating] Initializing platform accessory ' Thermostat'... [5/18/2016, 12:16:13 AM] [heating] Initializing platform accessory 'Alice's Room Thermostat'... [5/18/2016, 12:16:13 AM] [heating] Initializing platform accessory 'Bob's Bedroom Thermostat'... [5/18/2016, 12:16:13 AM] [heating] Initializing platform accessory 'Front room Thermostat'... [5/18/2016, 12:16:13 AM] [heating] Initializing platform accessory 'Living room Thermostat'... [5/18/2016, 12:16:13 AM] [heating] Initializing platform accessory 'Master Bed Thermostat'... [5/18/2016, 12:16:13 AM] [heating] Initializing platform accessory 'Rest of house Thermostat'... [5/18/2016, 12:16:13 AM] [heating] Initializing platform accessory 'TV Room Thermostat'...
So, looks like the first zone I get back is actually my hot water, and it doesn't have a name, just a returned temperature value. My guess is that if you were expecting a name, perhaps you don't capture the null response?
Hope that's useful. Let me know if you need more details (and how to provide them...)
I was actually expecting a full dump off the data evohome is able to provide. Perhaps you can indeed run the python script and post back the information you get. Your idea seems good. Actually the hot water zone is getting a name but it's just called " thermostat" and starts with a space.
At the time I was developing the plug-in I was already thinking about problems that might occur when people are using different devices in their set up than I do. Perhaps this is the time to take care of these problems.
OK. Attached should be the output from a call to Honeywell using a little Python to extract all the information they give you. First I made a call to get the userID and SessionID then used them to get all the data posted back.
I've anonymised slightly, but left it otherwise alone. Hopefully it will be useful. Let me know if you want to try something else.
Honeywell output here: output.txt
Okay. Quick question here. What type of functionality do you need with the "Domestic Hot Water" device?Temperature? On/Off? Nothig at all?
If nothing is needed I would exclude it for a quick and dirty fix.
JSON for further investigation: https://gist.github.com/luc-ass/24fbe49831cf12562e1833f7bbacee2e
I made a quick and dirty fix for the problem (see 305b150). Could you please install the plugin from git-hub and let me know if it works in combination with the Eve-App? The Plugin should now report 0° for your domestic hot water device. Please install as follows:
sudo npm install -g https://github.com/luc-ass/homebridge-efergy
I will push it to NPM if it works for you 😁
Sorry, Eve app still crashes Homebridge. Debug output below...
[5/21/2016, 11:18:44 AM] [heating] Logged into Evohome!
[5/21/2016, 11:18:45 AM] [heating] You have 1 location(s). Only the first one will be used!
[5/21/2016, 11:18:45 AM] [heating] You have 8 device(s).
[5/21/2016, 11:18:45 AM] [heating] 0: (50°)
[5/21/2016, 11:18:45 AM] [heating] 1: Alice's Room (19.5°)
[5/21/2016, 11:18:45 AM] [heating] 2: Bob Bedroom (20°)
[5/21/2016, 11:18:45 AM] [heating] 3: Front room (19.5°)
[5/21/2016, 11:18:45 AM] [heating] 4: Living room (20°)
[5/21/2016, 11:18:45 AM] [heating] 5: Master Bed (20.5°)
[5/21/2016, 11:18:45 AM] [heating] 6: Rest of house (21°)
[5/21/2016, 11:18:45 AM] [heating] 7: TV Room (16°)
[5/21/2016, 11:18:45 AM] [heating] Initializing platform accessory ' Thermostat'...
[5/21/2016, 11:18:45 AM] [heating] Initializing platform accessory 'Alice's Room Thermostat'...
[5/21/2016, 11:18:45 AM] [heating] Initializing platform accessory 'Bob Bedroom Thermostat'...
[5/21/2016, 11:18:45 AM] [heating] Initializing platform accessory 'Front room Thermostat'...
[5/21/2016, 11:18:45 AM] [heating] Initializing platform accessory 'Living room Thermostat'...
[5/21/2016, 11:18:45 AM] [heating] Initializing platform accessory 'Master Bed Thermostat'...
[5/21/2016, 11:18:45 AM] [heating] Initializing platform accessory 'Rest of house Thermostat'...
[5/21/2016, 11:18:45 AM] [heating] Initializing platform accessory 'TV Room Thermostat'..
[5/21/2016, 11:18:45 AM] Homebridge is running on port 51826.
[Started Eve App on my iPhone here......]
[5/21/2016, 11:19:08 AM] [heating] getCurrentHeatingCooling
[5/21/2016, 11:19:08 AM] [heating] Current temperature of Bob Bedroom Thermostat is 20°
[5/21/2016, 11:19:08 AM] [heating] Target temperature for Bob Bedroom Thermostat is 18°
[5/21/2016, 11:19:08 AM] [heating] Target temperature for Living room Thermostat is 19°
[5/21/2016, 11:19:08 AM] [heating] getCurrentHeatingCooling
[5/21/2016, 11:19:09 AM] [heating] getCurrentHeatingCooling
[5/21/2016, 11:19:09 AM] [heating] Current temperature of Thermostat is 50°
/usr/local/lib/node_modules/homebridge-evohome/index.js:238
var targetTemperature = this.device.thermostat.changeableValues.heatSetpoint['value'];
^
TypeError: Cannot read property 'value' of undefined
at Object.EvohomeThermostatAccessory.getTargetTemperature
(/usr/local/lib/node_modules/homebridge-evohome/index.js:238:79)
at emitTwo (events.js:100:13)
at emit (events.js:185:7)
at Characteristic.getValue
(/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/Characteristic.js:120:10)
at Bridge.<anonymous>
(/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/Accessory.js:604:20)
at Array.forEach (native)
at Bridge.Accessory._handleGetCharacteristics
(/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/Accessory.js:568:8)
at emitThree (events.js:110:13)
at HAPServer.emit (events.js:188:7)
at HAPServer._handleCharacteristics
(/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/HAPServer.js:914:10)
On 21 May 2016 at 08:22, Lucas Gasenzer notifications@github.com wrote:
I made a quick and dirty fix for the problem (see 305b150 https://github.com/luc-ass/homebridge-evohome/commit/305b150d9f9898e68845aa10179c7bb493f3fed1). Could you please install the plugin from git-hub and let me know if it works in combination with the Eve-App? The Plugin should now report 0° for your domestic hot water device. Please install as follows:
sudo npm install -g https://github.com/luc-ass/homebridge-efergy
I will push it to NPM if it works for you 😁
— You are receiving this because you authored the thread. Reply to this email directly or view it on GitHub https://github.com/luc-ass/homebridge-evohome/issues/6#issuecomment-220763539
Actually, I get the same failure using the other apps as well, so not just the Eve app.
Not had time yet to dig any further, so open to suggestions.
Meant to say thanks for putting in the effort; really appreciated ;-) C.
On 21 May 2016 at 11:22, Colin Caskie colin@colincaskie.co.uk wrote:
Sorry, Eve app still crashes Homebridge. Debug output below...
[5/21/2016, 11:18:44 AM] [heating] Logged into Evohome!
[5/21/2016, 11:18:45 AM] [heating] You have 1 location(s). Only the first one will be used!
[5/21/2016, 11:18:45 AM] [heating] You have 8 device(s).
[5/21/2016, 11:18:45 AM] [heating] 0: (50°)
[5/21/2016, 11:18:45 AM] [heating] 1: Alice's Room (19.5°)
[5/21/2016, 11:18:45 AM] [heating] 2: Bob Bedroom (20°)
[5/21/2016, 11:18:45 AM] [heating] 3: Front room (19.5°)
[5/21/2016, 11:18:45 AM] [heating] 4: Living room (20°)
[5/21/2016, 11:18:45 AM] [heating] 5: Master Bed (20.5°)
[5/21/2016, 11:18:45 AM] [heating] 6: Rest of house (21°)
[5/21/2016, 11:18:45 AM] [heating] 7: TV Room (16°)
[5/21/2016, 11:18:45 AM] [heating] Initializing platform accessory ' Thermostat'...
[5/21/2016, 11:18:45 AM] [heating] Initializing platform accessory 'Alice's Room Thermostat'...
[5/21/2016, 11:18:45 AM] [heating] Initializing platform accessory 'Bob Bedroom Thermostat'...
[5/21/2016, 11:18:45 AM] [heating] Initializing platform accessory 'Front room Thermostat'...
[5/21/2016, 11:18:45 AM] [heating] Initializing platform accessory 'Living room Thermostat'...
[5/21/2016, 11:18:45 AM] [heating] Initializing platform accessory 'Master Bed Thermostat'...
[5/21/2016, 11:18:45 AM] [heating] Initializing platform accessory 'Rest of house Thermostat'...
[5/21/2016, 11:18:45 AM] [heating] Initializing platform accessory 'TV Room Thermostat'..
[5/21/2016, 11:18:45 AM] Homebridge is running on port 51826.
[Started Eve App on my iPhone here......]
[5/21/2016, 11:19:08 AM] [heating] getCurrentHeatingCooling
[5/21/2016, 11:19:08 AM] [heating] Current temperature of Bob Bedroom Thermostat is 20°
[5/21/2016, 11:19:08 AM] [heating] Target temperature for Bob Bedroom Thermostat is 18°
[5/21/2016, 11:19:08 AM] [heating] Target temperature for Living room Thermostat is 19°
[5/21/2016, 11:19:08 AM] [heating] getCurrentHeatingCooling
[5/21/2016, 11:19:09 AM] [heating] getCurrentHeatingCooling
[5/21/2016, 11:19:09 AM] [heating] Current temperature of Thermostat is 50°
/usr/local/lib/node_modules/homebridge-evohome/index.js:238
var targetTemperature = this.device.thermostat.changeableValues.heatSetpoint['value'];
^
TypeError: Cannot read property 'value' of undefined
at Object.EvohomeThermostatAccessory.getTargetTemperature
(/usr/local/lib/node_modules/homebridge-evohome/index.js:238:79)
at emitTwo (events.js:100:13) at emit (events.js:185:7) at Characteristic.getValue
(/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/Characteristic.js:120:10)
at Bridge.<anonymous>
(/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/Accessory.js:604:20)
at Array.forEach (native) at Bridge.Accessory._handleGetCharacteristics
(/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/Accessory.js:568:8)
at emitThree (events.js:110:13) at HAPServer.emit (events.js:188:7) at HAPServer._handleCharacteristics
(/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/HAPServer.js:914:10)
On 21 May 2016 at 08:22, Lucas Gasenzer notifications@github.com wrote:
I made a quick and dirty fix for the problem (see 305b150 https://github.com/luc-ass/homebridge-evohome/commit/305b150d9f9898e68845aa10179c7bb493f3fed1). Could you please install the plugin from git-hub and let me know if it works in combination with the Eve-App? The Plugin should now report 0° for your domestic hot water device. Please install as follows:
sudo npm install -g https://github.com/luc-ass/homebridge-efergy
I will push it to NPM if it works for you 😁
— You are receiving this because you authored the thread. Reply to this email directly or view it on GitHub https://github.com/luc-ass/homebridge-evohome/issues/6#issuecomment-220763539
I see, probably the same problem because my "check if value exists" was to simple. I created another bugfix. Give it a shot.
the log should give you something like this:
Device type is: EMEA_ZONE. Target temperature should be there.
Target temperature for Bad Thermostat is 19°
OK, first confession time; Your post this morning pointed to your efergy plugin (your instructions pointed at luc-ass/homebridge-efergy. I never noticed the mistake so installed that, rather than update Evohome plugin. So I never tried the first fix.
However, have now installed latest Evohome plugin and still get a crash on the hot water, but not when I access the other thermostats. See below, Alice's room works fine, but when it read the hot water temperature, the next thing fails. It is not possible to set the hot water temperature on EvoHome (it's a configurable system setting, but not possible from the official app so presumably not possible from the API), so perhaps you need to skip that part if you detect the hot water thermostat?
[5/21/2016, 5:33:11 PM] Homebridge is running on port 51826.
[5/21/2016, 5:33:16 PM] [heating] getCurrentHeatingCooling
[5/21/2016, 5:33:16 PM] [heating] Current temperature of Alice's Room Thermostat is 21°
[5/21/2016, 5:33:16 PM] [heating] Device type is: EMEA_ZONE. Target temperature should be there.
[5/21/2016, 5:33:16 PM] [heating] Target temperature for Alice's Room Thermostat is 21°
[5/21/2016, 5:33:45 PM] [heating] getCurrentHeatingCooling
[5/21/2016, 5:33:45 PM] [heating] Current temperature of Thermostat is 49°
/usr/local/lib/node_modules/homebridge-evohome/index.js:242
var targetTemperature = this.device.thermostat.changeableValues.heatSetpoint['value'];
^
TypeError: Cannot read property 'value' of undefined
at Object.EvohomeThermostatAccessory.getTargetTemperature (/usr/local/lib/node_modules/homebridge-evohome/index.js:242:80)
at emitTwo `(events.js:100:13)`
at emit (events.js:185:7)
at Characteristic.getValue (/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/Characteristic.js:120:10)
at Bridge.<anonymous> (/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/Accessory.js:604:20)
at Array.forEach (native)
at Bridge.Accessory._handleGetCharacteristics (/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/Accessory.js:568:8)
at emitThree `(events.js:110:13)`
at HAPServer.emit (events.js:188:7)
at HAPServer._handleCharacteristics (/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/HAPServer.js:914:10)
Thanks for sticking with it! C.
This actually terrific news! It means that I can apply the fix I used for the previous problem for the upcoming problems. I'm actually thinking about excluding the domestic hot water zone altogether until I can figure out a way to make it work properly. As you mentioned the only thing that can be done doing the API might be switching it on and off. So perhaps a standard switch device would be appropriate.
Am 21.05.2016 um 18:42 schrieb bigc847 notifications@github.com:
OK, first confession time; Your post this morning pointed to your efergy plugin (your instructions pointed at luc-ass/homebridge-efergy. I never noticed the mistake so installed that, rather than update Evohome plugin. So I never tried the first fix.
However, have now installed latest Evohome plugin and still get a crash on the hot water, but not when I access the other thermostats. See below, Alice's room works fine, but when it read the hot water temperature, the next thing fails. It is not possible to set the hot water temperature on EvoHome (it's a configurable system setting, but not possible from the official app so presumably not possible from the API), so perhaps you need to skip that part if you detect the hot water thermostat?
[5/21/2016, 5:33:11 PM] Homebridge is running on port 51826. [5/21/2016, 5:33:16 PM] [heating] getCurrentHeatingCooling [5/21/2016, 5:33:16 PM] [heating] Current temperature of Alice's Room Thermostat is 21° [5/21/2016, 5:33:16 PM] [heating] Device type is: EMEA_ZONE. Target temperature should be there. [5/21/2016, 5:33:16 PM] [heating] Target temperature for Alice's Room Thermostat is 21° [5/21/2016, 5:33:45 PM] [heating] getCurrentHeatingCooling [5/21/2016, 5:33:45 PM] [heating] Current temperature of Thermostat is 49° /usr/local/lib/node_modules/homebridge-evohome/index.js:242 var targetTemperature = this.device.thermostat.changeableValues.heatSetpoint['value']; ^
TypeError: Cannot read property 'value' of undefined at Object.EvohomeThermostatAccessory.getTargetTemperature (/usr/local/lib/node_modules/homebridge-evohome/index.js:242:80) at emitTwo
(events.js:100:13)
at emit (events.js:185:7) at Characteristic.getValue (/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/Characteristic.js:120:10) at Bridge.(/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/Accessory.js:604:20) at Array.forEach (native) at Bridge.Accessory._handleGetCharacteristics (/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/Accessory.js:568:8) at emitThree (events.js:110:13)
at HAPServer.emit (events.js:188:7) at HAPServer._handleCharacteristics (/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/HAPServer.js:914:10) Thanks for sticking with it! C.— You are receiving this because you were assigned. Reply to this email directly or view it on GitHub
okay. Updated it. check it out...
did it work?
Sorry for delay!
No. Sorry. Same error when I query the hot water. It read the temperature value back and reports it on homebridge, but then crashes.
Strange. You should not even have a hot water device... Perhaps it is cached...
Am 21.05.2016 um 21:30 schrieb bigc847 notifications@github.com:
Sorry for delay!
No. Sorry. Same error when I query the hot water. It read the temperature value back and reports it on homebridge, but then crashes.
— You are receiving this because you were assigned. Reply to this email directly or view it on GitHub
Does it work with the latest update so that his bug can be closed?
Got this working on my Pi 3 with Homebridge. All the debug info suggests it's connecting to the EvoHome service fine.
However, when I try and connect to the Pi from the Elgato Eve iPhone app, Homebridge crashes:
/usr/local/lib/node_modules/homebridge-evohome/index.js:238 var targetTemperature = this.device.thermostat.changeableValues.heatSetpoint['value']; ^
TypeError: Cannot read property 'value' of undefined at Object.EvohomeThermostatAccessory.getTargetTemperature (/usr/local/lib/node_modules/homebridge-evohome/index.js:238:79) at emitTwo (events.js:100:13) at emit (events.js:185:7) at Characteristic.getValue (/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/Characteristic.js:120:10) at Bridge. (/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/Accessory.js:604:20)
at Array.forEach (native)
at Bridge.Accessory._handleGetCharacteristics (/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/Accessory.js:568:8)
at emitThree (events.js:110:13)
at HAPServer.emit (events.js:188:7)
at HAPServer._handleCharacteristics (/usr/local/lib/node_modules/homebridge/node_modules/hap-nodejs/lib/HAPServer.js:914:10)
I don't understand enough about the code to help out, but thought I'd post the issue here.
Homebridge was stable with the only other registered platform.