luc-ass / homebridge-evohome

Homebridge plugin for Honeywell Evohome
29 stars 16 forks source link

Add support for Honeywell Round Connected #39

Closed matijus91 closed 3 years ago

matijus91 commented 6 years ago

I have a evohome system and it works great in HomeKit with this plugin now! Thanks for the add that it sets temps to next time schedule! Now it works even greater!

I als use a Honeywell round connected for the zones Where I have floor heating. This also works in the same account with a different location. Now with the possibility of multiple locations I can make it show the scenes as away, eco, ..... but it not shows the thermostat (round connected) any option that I can let this work? If not can you look if there is a possibility you can make an add?

It would help me a lot.

luc-ass commented 6 years ago

It would certainly be possible. We would have to have a complete json-answer for your type fo device. You should be able to achieve this by adding something like this.log(locations); in-between 96/97. You can post the response here (please be sure to remove personal data).

matijus91 commented 6 years ago

[2018-3-31 16:04:32] [Thermostaat] Logged into Evohome! [2018-3-31 16:04:33] [Thermostaat] [ Location { locationID: '—', name: 'Thuis —', streetAddress: '—', city: '—', country: 'Netherlands', postcode: '—', locationType: 'Residential', devices: [ [Object] ], daylightSavingTimeEnabled: true, timeZone: Timezone { timeZoneId: 'WEuropeStandardTime', displayName: '(UTC+01:00) Amsterdam, Berlijn, Bern, Rome, Stockholm, Wenen', offsetMinutes: 60, currentOffsetMinutes: 120, supportsDaylightSaving: true }, systemId: '968367' } ] [2018-3-31 16:04:33] [Thermostaat] You have 1 location(s). This instance will be using Index No 0 [2018-3-31 16:04:33] [Thermostaat] You have 1 device(s). [2018-3-31 16:04:34] [Thermostaat] 0: Thermostat (21°) [2018-3-31 16:04:34] [Thermostaat] Initializing platform accessory 'Evohome Away Mode'... [2018-3-31 16:04:34] [Thermostaat] Initializing platform accessory 'Evohome Day Off Mode'... [2018-3-31 16:04:34] [Thermostaat] Initializing platform accessory 'Evohome Heating Off Mode'... [2018-3-31 16:04:34] [Thermostaat] Initializing platform accessory 'Evohome Eco Mode'... [2018-3-31 16:04:34] [Thermostaat] Initializing platform accessory 'Evohome Custom Mode'...

matijus91 commented 6 years ago

It shows 1 termostate and his temperature in the log as you can see. In home app it will not appare... the mode buttons I can see in de home app.

luc-ass commented 6 years ago

Okay, great. We will have to have a look into the devices object. Please change the line to: this.log(locations[0].devices);

matijus91 commented 6 years ago

The evohome system in another Pi is working great. Logs down here:

[2018-3-31 16:36:42] [Thermostaat] Logged into Evohome! [2018-3-31 16:36:43] [Thermostaat] [ Location { locationID: '—', name: '—', streetAddress: '—', city: '—', country: 'Netherlands', postcode: '—', locationType: 'Residential', devices: [ [Object], [Object], [Object], [Object], [Object] ], daylightSavingTimeEnabled: true, timeZone: Timezone { timeZoneId: 'WEuropeStandardTime', displayName: '(UTC+01:00) Amsterdam, Berlijn, Bern, Rome, Stockholm, Wenen', offsetMinutes: 60, currentOffsetMinutes: 120, supportsDaylightSaving: true }, systemId: '621859' } ] [2018-3-31 16:36:43] [Thermostaat] You have 1 location(s). This instance will be using Index No 0 [2018-3-31 16:36:43] [Thermostaat] You have 5 device(s). [2018-3-31 16:36:44] [Thermostaat] 0: Woonkamer (23°) [2018-3-31 16:36:44] [Thermostaat] 1: Slaapkamer (23°) [2018-3-31 16:36:44] [Thermostaat] 2: Badkamer (22.5°) [2018-3-31 16:36:44] [Thermostaat] 3: Slp. Boven (undefined°) [2018-3-31 16:36:44] [Thermostaat] 4: Hal (23.5°) [2018-3-31 16:36:44] [Thermostaat] Initializing platform accessory 'Woonkamer Thermostat'... [2018-3-31 16:36:44] [Thermostaat] Initializing platform accessory 'Slaapkamer Thermostat'... [2018-3-31 16:36:44] [Thermostaat] Initializing platform accessory 'Badkamer Thermostat'... [2018-3-31 16:36:44] [Thermostaat] Initializing platform accessory 'Slp. Boven Thermostat'... [2018-3-31 16:36:44] [Thermostaat] Initializing platform accessory 'Hal Thermostat'... [2018-3-31 16:36:44] [Thermostaat] Initializing platform accessory 'Evohome Away Mode'... [2018-3-31 16:36:44] [Thermostaat] Initializing platform accessory 'Evohome Day Off Mode'... [2018-3-31 16:36:44] [Thermostaat] Initializing platform accessory 'Evohome Heating Off Mode'... [2018-3-31 16:36:44] [Thermostaat] Initializing platform accessory 'Evohome Eco Mode'... [2018-3-31 16:36:44] [Thermostaat] Initializing platform accessory 'Evohome Custom Mode'...

matijus91 commented 6 years ago

[2018-3-31 16:41:18] [Thermostaat] Logged into Evohome! [2018-3-31 16:41:18] [Thermostaat] [ Device { zoneID: '—', zoneType: 'Thermostat', modelType: 'RoundWireless', name: 'Thermostat', maxHeatSetpoint: 35, minHeatSetpoint: 5, valueResolution: 0.5 } ] [2018-3-31 16:41:18] [Thermostaat] You have 1 location(s). This instance will be using Index No 0 [2018-3-31 16:41:18] [Thermostaat] You have 1 device(s). [2018-3-31 16:41:19] [Thermostaat] 0: Thermostat (21°) [2018-3-31 16:41:19] [Thermostaat] Initializing platform accessory 'Evohome Away Mode'... [2018-3-31 16:41:19] [Thermostaat] Initializing platform accessory 'Evohome Day Off Mode'... [2018-3-31 16:41:19] [Thermostaat] Initializing platform accessory 'Evohome Heating Off Mode'... [2018-3-31 16:41:19] [Thermostaat] Initializing platform accessory 'Evohome Eco Mode'... [2018-3-31 16:41:19] [Thermostaat] Initializing platform accessory 'Evohome Custom Mode'... Setup Payload:

luc-ass commented 6 years ago

Okay, it gets ignored because of line 127 because the modelType is not HeatingZone but RoundWireless. You can try this workaround:

Replace device.modelType == "HeatingZone" with device.modelType == "HeatingZone" || device.modelType == "RoundWireless".

This should add your RoundWireless to home.app. It might still not be working perfectly. Please let me know how it goes.

matijus91 commented 6 years ago

You are great! I see it and can change the temps!

It would be great is it can work together wit the round en evohome. Now I tested it where only is a round, but in another home there is a evohome and round together but now evohome system won’t work I think with this work around.

luc-ass commented 6 years ago

So it works where there is ONLY a Round but doesn't where both exist side by side? Let me have a look into that. Does it throw you an error?

matijus91 commented 6 years ago

I have to leave right now... I will have a look into it tomorrow! Let you now!

luc-ass commented 6 years ago

No Problem. We'll find a solution and evolve this Plugin to perfection :D

matijus91 commented 6 years ago

Very nice! Thanks so far!

matijus91 commented 6 years ago

Hello,

I tried it now as you said, but it gives a error. The other time I tried it by changing it to:

                                    // create accessory (only if it is "RoundWireless")
                                    if (device.modelType == "RoundWireless") {

But now I get this error:

[2018-4-2 12:34:27] ==================== [2018-4-2 12:34:27] ERROR LOADING PLUGIN homebridge-evohome: [2018-4-2 12:34:27] /usr/local/lib/node_modules/homebridge-evohome/index.js:127 if (device.modelType == "HeatingZone || device.modelType == "RoundWireless") { ^^^^^^^^^^^^^

SyntaxError: Unexpected identifier at createScript (vm.js:74:10) at Object.runInThisContext (vm.js:116:10) at Module._compile (module.js:533:28) at Object.Module._extensions..js (module.js:580:10) at Module.load (module.js:503:32) at tryModuleLoad (module.js:466:12) at Function.Module._load (module.js:458:3) at Module.require (module.js:513:17) at require (internal/module.js:11:18) at Plugin.load (/usr/local/lib/node_modules/homebridge/lib/plugin.js:72:22) [2018-4-2 12:34:27] ====================

So this doesn’t work 😔

matijus91 commented 6 years ago

I found out it is in the other home another divicename is. So I did change it like this:

(device.modelType == "HeatingZone" || device.modelType == "RoundModulation")

Now it give no error when I set only location 1 (there is where the RoundModulation is from) but it shows no thermostat in the home app.

When I change locations to 0, 1 this is what I get as error:

[2018-4-2 13:37:26] [Thermostaat boven] [ Device { zoneID: '—', zoneType: 'RadiatorZone', modelType: 'HeatingZone', name: 'Slaapkamer 2', maxHeatSetpoint: 35, minHeatSetpoint: 5, valueResolution: 0.5 }, Device { zoneID: '—', zoneType: 'RadiatorZone', modelType: 'HeatingZone', name: 'Badkamer', maxHeatSetpoint: 35, minHeatSetpoint: 5, valueResolution: 0.5 }, Device { zoneID: '—', zoneType: 'RadiatorZone', modelType: 'HeatingZone', name: 'Hal', maxHeatSetpoint: 35, minHeatSetpoint: 5, valueResolution: 0.5 }, Device { zoneID: '—', zoneType: 'RadiatorZone', modelType: 'HeatingZone', name: 'Slaapkamer 1', maxHeatSetpoint: 35, minHeatSetpoint: 5, valueResolution: 0.5 }, Device { zoneID: '—', zoneType: 'Unknown', modelType: 'Unknown', name: '', maxHeatSetpoint: 30, minHeatSetpoint: 5, valueResolution: 0.5 } ] [2018-4-2 13:37:26] [Thermostaat boven] [ Device { zoneID: '—', zoneType: 'Thermostat', modelType: 'RoundModulation', name: 'Thermostat', maxHeatSetpoint: 35, minHeatSetpoint: 5, valueResolution: 0.5 } ] [2018-4-2 13:37:26] [Thermostaat boven] You have 2 location(s). This instance will be using Index No 0, 1 [2018-4-2 13:37:26] [Thermostaat boven] Evohome Failed: TypeError: Cannot read property 'devices' of undefined at EvohomePlatform. (/usr/local/lib/node_modules/homebridge-evohome/index.js:100:67) at _fulfilled (/usr/local/lib/node_modules/homebridge-evohome/node_modules/q/q.js:787:54) at self.promiseDispatch.done (/usr/local/lib/node_modules/homebridge-evohome/node_modules/q/q.js:816:30) at Promise.promise.promiseDispatch (/usr/local/lib/node_modules/homebridge-evohome/node_modules/q/q.js:749:13) at /usr/local/lib/node_modules/homebridge-evohome/node_modules/q/q.js:557:44 at flush (/usr/local/lib/node_modules/homebridge-evohome/node_modules/q/q.js:108:17) at _combinedTickCallback (internal/process/next_tick.js:131:7) at process._tickCallback (internal/process/next_tick.js:180:9)

When I set everything back to only heatingzone and in the Json only location 0 now non of the thermostat will work. The say “no reaction” in HomeKit.

matijus91 commented 6 years ago

Ive tested some more. It now works both separate from each other. I see the RoundModulation when only using location 1 and the HeatingZone when using location 0.

As you can see he gives me an TypeError and that looks like that is because both have different type names: RadiatorZone and Thermostat.

Do you now where I can change that in the .js ?

luc-ass commented 6 years ago

Is there a zoneID that is used double? I suppose you blanked them, right?

matijus91 commented 6 years ago

No double zoneIDs... just blank them

matijus91 commented 6 years ago

If you have some time this week maybe you can look with me on the Pi with TeamViewer. You can contact me on Twitter maybe? @matijus91

luc-ass commented 5 years ago

Hey, sorry for the long pause. Have you gotten anywhere with this?

honeywelluser commented 3 years ago

I did the || device.modelType == “RoundWireless” to get my round thermostat working. All good!

My friend has full 12 zone Evohome and I can add hers to my home and control it nicely. However, it’s really confusing as it’s easy for Siri to accidentally refer to both homes as they both appear in my home.

Is it possible to use one homebridge to control Evohome’s in two homes (that are different locations in the one account)? Can I say some devices are in another home? That way I wouldn’t need another homebridge in the other house!

luc-ass commented 3 years ago

@honeywelluser would you create a pull request? I would love to integrate it into this version!

As for multiple systems: This is a limitation of Homebridge. You would need to run two instances of homebridge, one for each home as these "bridges" are what is added to specific homes. I have the same setup (for other plugins), where I have multiple homebridges for my home, a vacation home and my parents place. Beware that automatic location switching is based on your Apple TV or iPad - so that will not work.

luc-ass commented 3 years ago

@matijus91 @honeywelluser

I just created a new branch implementing the changes you proposed. Would one of you try to run it? I have no way of testing this feature. Fingers crossed 🤞

Installation: npm install https://github.com/luc-ass/homebridge-evohome.git#honeywell-round-connected

Reverting to the main version should be done from configuration ui (i.e. delete and re-download the plugin).

Maykel1969 commented 3 years ago

Hi, I tried it immediately but the installer didn’t work. Lots of error messages. 5BF898A3-B40E-44BE-8169-F763D2385BC6

I also tried to update to 0.7.4. but there was no visible difference to 0.7.3.

luc-ass commented 3 years ago

Hm, the installation seems to be different using hoobs. Do you possibly need sudo? How did you install the other plugins?

Version 0.7.4 does indeed not change anything visible. It's just a maintenance update.

Maykel1969 commented 3 years ago

In Hoobs normally you just search for the plugin and click on “install”. That’s all. And your 0.7.4. Showed as an update so I only needed to click on it.

I ran the command that you published but that generated the error. I’ve no idea what sudo means because I’m quite new to this playground....

Maykel1969 commented 3 years ago

SUCCES! I read about sudo and reinstalled ! I now see the thermostat and the current room temperature. I will continu to test soon.

luc-ass commented 3 years ago

Great news! I'll wait for your feedback and merge the branch back into the master if all works out.

Maykel1969 commented 3 years ago

All seems to work fine for now. I removed the schedule from honeywell completely. I am running now with 2 timed events in automations. So tomorrow is the big test, if I wake up in a cold house or if it really works fine :-) I’ll let you know!

Maykel1969 commented 3 years ago

I Woke up in a warm house, however not warm enough :-) I created an automation to set the temperature at 21.5 oC at 6.20. But in reality the target temperature was set at 21.0 instead of 21.5. I rechecked everything and the target temp is set correctly to 21.5, but the setpoint read directly from the display of the thermostat states 21.0 ?!?!

luc-ass commented 3 years ago

That's really strange. Would you mind opening another issue for that behavior?

Maykel1969 commented 3 years ago

I’m still investigating but i think that the problem is slightly different. If I change the setting to 18.0 then after a minute the honywell app jumps back to 21.0 ! At that moment the home and eve app both say that the setpoint is 18.0 ?!?! For some reason the app automatically jumps back to 21.0 but there is no schedule in the honeywell app anymore.

I do see something strange in the log. Does your plugin send a “until” command without info? Is that the reason that the temperature is only set for 1 minute?? 09093610-764E-4FE4-BA7B-CD0EFFD0A6B1

luc-ass commented 3 years ago

Honeywell Round Devices are now supported Check out version 0.8.0 or above Feel free to reopen this if you encounter problems