simont77 / fakegato-history

Module to emulate Elgato Eve history
MIT License
166 stars 17 forks source link

Thermo integration example #11

Closed rooi closed 6 years ago

rooi commented 6 years ago

Hi,

Great project! I would like to include the new thermo functionality you've created in honeywell's evohome homebridge: https://github.com/rooi/homebridge-evohome

I do not see the the graphs as in the weather station. Perhaps it has something to do with the fact the the homebridge-evohome uses platforms instead of accessories and/or I've made an error. Do you have an example on how to include the thermo?

Thanks!

simont77 commented 6 years ago

Thermo is still work-in-progress, unfortunately I do not have plugins to test on, but I was able to push entries to history of a fake Thermo accessory built using Homekit Accessory Simulator. In any case, you should create your accessory with a thermostat service, then you should add these 3 characteristics https://gist.github.com/simont77/3f4d4330fa55b83f8ca96388d9004e7d#elgato-eve-thermo . At this point the history should appear for temperatures, together with "Schedule" settings and Valve. History for valve position is currently not working, you will have history for currentTemp and setTemp only. Also, characteristics for "Schedule" have unknown protocol (but needed to enable Eve to recognize the accessory as Thermo), so you would like to hide the "Schedule" field in Eve. Note that if you use plarforms following API v2, there may be some problem on restart. Unfortunately, I'm not so expert of API v2, so cannot help, but a fix for that should come from @devbobo soon. In the meantime you can ask to @NorthernMan54, @devbobo or @NebzHB who have working platform v2 accessories.

NebzHB commented 6 years ago

Thermo is not implemented yet in my plugin but soon... and yes it's working on v2 but i delete and recreate every service on homebridge start... (cause the domotic platform my plugin connect to may have changed config on my services)

simont77 commented 6 years ago

@NebzHB correct me if I'm wrong, he seems to use v1 API (I see a getServices call) https://github.com/rooi/homebridge-evohome/blob/master/index.js . But fakegatoHistoryService is not returned in the list of services. May be this?

NebzHB commented 6 years ago

yep the getServices should return the fakegatoHistoryService too

rooi commented 6 years ago

Thanks! I've added the return of fakegatoHistoryService in the getServices method and added the 3 additional characteristics. In the eve app, the schedule is shown, but no history or valve position yet.

When I use KHaosT's Hesperus homekit app, I can see Valve position = 0 and an undefined history field with name (=name + History) S2R1 unknown, S2R2 <00> S2W1 write only S2W2 write only.

Am I using the correct props for the additional chars? If tried to add notify perm and specifying the valve min max, but it still does not show the valve position in eve's app. `` CustomCharacteristic.ValvePosition = function() { Characteristic.call(this, 'Valve position', 'E863F12E-079E-48FF-8F27-9C2605A29F52'); this.setProps({ format: Characteristic.Formats.UINT8, unit: Characteristic.Units.PERCENTAGE, perms: [Characteristic.Perms.READ] }); this.value = this.getDefaultValue(); }; inherits(CustomCharacteristic.ValvePosition, Characteristic);

 CustomCharacteristic.ProgramCommand = function() {
     Characteristic.call(this, 'Program command', 'E863F12C-079E-48FF-8F27-9C2605A29F52');
     this.setProps({
                   format: Characteristic.Formats.DATA,
                   perms: [Characteristic.Perms.WRITE]
                   });
     this.value = this.getDefaultValue();
 };
 inherits(CustomCharacteristic.ProgramCommand, Characteristic);

 CustomCharacteristic.ProgramData = function() {
     Characteristic.call(this, 'Program data', 'E863F12F-079E-48FF-8F27-9C2605A29F52');
     this.setProps({
                   format: Characteristic.Formats.DATA,
                   perms: [Characteristic.Perms.READ]
                   });
     this.value = this.getDefaultValue();
 };
 inherits(CustomCharacteristic.ProgramData, Characteristic);

``

simont77 commented 6 years ago

History characteristics are there now. This to completely close Eve and reopen, or remove and re-add the accessory. You should see the empty graph. Then check if your plugin is populating the history, and after few entries are added refresh data in Eve

simont77 commented 6 years ago

Also, Valve position is hidden by default in Eve, but since it is not working yet you can it as is (apparently Eve needs a proper calibration procedure to show values for valve, but this procedure is unknown)

rooi commented 6 years ago

You we're right, restarting the eve app showed the graph! I've fixed some other things and specified different serials for each accessory in the platform. Also I needed to removed and homekit accessory to show these unique serials. To me it seems the history should be populated, but there is no data visual in the eve app. Do you have any idea what can be wrong?

This is a debug log of the populating part:

[2018-1-12 22:44:26] [Evohome] First entry Woonkamer Thermostat: 0 [2018-1-12 22:44:26] [Evohome] Last entry Woonkamer Thermostat: 2 [2018-1-12 22:44:26] [Evohome] Used memory Woonkamer Thermostat: 2 [2018-1-12 22:44:26] [Evohome] 116 Woonkamer Thermostat: 0000000000000000ba63092005 0102 1102 1001 1201 1d010200c00f00000000000000000101 [2018-1-12 22:44:26] [Evohome] First entry Badkamer Thermostat: 0 [2018-1-12 22:44:26] [Evohome] Last entry Badkamer Thermostat: 2 [2018-1-12 22:44:26] [Evohome] Used memory Badkamer Thermostat: 2 [2018-1-12 22:44:26] [Evohome] 116 Badkamer Thermostat: 0000000000000000ba63092005 0102 1102 1001 1201 1d010200c00f00000000000000000101 [2018-1-12 22:44:26] [Evohome] First entry Slaapkamer Thermostat: 0 [2018-1-12 22:44:26] [Evohome] Last entry Slaapkamer Thermostat: 2 [2018-1-12 22:44:26] [Evohome] Used memory Slaapkamer Thermostat: 2 [2018-1-12 22:44:26] [Evohome] 116 Slaapkamer Thermostat: 0000000000000000ba63092005 0102 1102 1001 1201 1d010200c00f00000000000000000101 [2018-1-12 22:44:26] [Evohome] First entry Kinderkamer Thermostat: 0 [2018-1-12 22:44:26] [Evohome] Last entry Kinderkamer Thermostat: 2 [2018-1-12 22:44:26] [Evohome] Used memory Kinderkamer Thermostat: 2 [2018-1-12 22:44:26] [Evohome] 116 Kinderkamer Thermostat: 0000000000000000ba63092005 0102 1102 1001 1201 1d010200c00f00000000000000000101 [2018-1-12 22:44:26] [Evohome] First entry Hal Thermostat: 0 [2018-1-12 22:44:26] [Evohome] Last entry Hal Thermostat: 2 [2018-1-12 22:44:26] [Evohome] Used memory Hal Thermostat: 2 [2018-1-12 22:44:26] [Evohome] 116 Hal Thermostat: 0000000000000000ba63092005 0102 1102 1001 1201 1d010200c00f00000000000000000101

NorthernMan54 commented 6 years ago

In my plugin, I used both the hostname and a unique device identifier as the serial, so I could run a production version and test. Eve uses the serial number as the key to store the data on the iPhone, so if you have 2 devices with the same serial they have the same data. And if you have 2 houses with the same serial they share the same graph data.

Usually it takes a few minutes of running before you see data.

PS If you want to chat in real time, I’m lurking on homebridge’s slack instance

On Jan 12, 2018, at 4:50 PM, rooi notifications@github.com wrote:

You we're right, restarting the eve app showed the graph! I've fixed some other things and specified different serials for each accessory in the platform. Also I needed to removed and homekit accessory to show these unique serials. To me it seems the history should be populated, but there is no data visual in the eve app. Do you have any idea what can be wrong?

This is a debug log of the populating part:

[2018-1-12 22:44:26] [Evohome] First entry Woonkamer Thermostat: 0 [2018-1-12 22:44:26] [Evohome] Last entry Woonkamer Thermostat: 2 [2018-1-12 22:44:26] [Evohome] Used memory Woonkamer Thermostat: 2 [2018-1-12 22:44:26] [Evohome] 116 Woonkamer Thermostat: 0000000000000000ba63092005 0102 1102 1001 1201 1d010200c00f00000000000000000101 [2018-1-12 22:44:26] [Evohome] First entry Badkamer Thermostat: 0 [2018-1-12 22:44:26] [Evohome] Last entry Badkamer Thermostat: 2 [2018-1-12 22:44:26] [Evohome] Used memory Badkamer Thermostat: 2 [2018-1-12 22:44:26] [Evohome] 116 Badkamer Thermostat: 0000000000000000ba63092005 0102 1102 1001 1201 1d010200c00f00000000000000000101 [2018-1-12 22:44:26] [Evohome] First entry Slaapkamer Thermostat: 0 [2018-1-12 22:44:26] [Evohome] Last entry Slaapkamer Thermostat: 2 [2018-1-12 22:44:26] [Evohome] Used memory Slaapkamer Thermostat: 2 [2018-1-12 22:44:26] [Evohome] 116 Slaapkamer Thermostat: 0000000000000000ba63092005 0102 1102 1001 1201 1d010200c00f00000000000000000101 [2018-1-12 22:44:26] [Evohome] First entry Kinderkamer Thermostat: 0 [2018-1-12 22:44:26] [Evohome] Last entry Kinderkamer Thermostat: 2 [2018-1-12 22:44:26] [Evohome] Used memory Kinderkamer Thermostat: 2 [2018-1-12 22:44:26] [Evohome] 116 Kinderkamer Thermostat: 0000000000000000ba63092005 0102 1102 1001 1201 1d010200c00f00000000000000000101 [2018-1-12 22:44:26] [Evohome] First entry Hal Thermostat: 0 [2018-1-12 22:44:26] [Evohome] Last entry Hal Thermostat: 2 [2018-1-12 22:44:26] [Evohome] Used memory Hal Thermostat: 2 [2018-1-12 22:44:26] [Evohome] 116 Hal Thermostat: 0000000000000000ba63092005 0102 1102 1001 1201 1d010200c00f00000000000000000101

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/simont77/fakegato-history/issues/11#issuecomment-357364251, or mute the thread https://github.com/notifications/unsubscribe-auth/AS5CmJshfOw7oG-tXRllVcb1QPE16q2Mks5tJ9PBgaJpZM4RcSAv.

simont77 commented 6 years ago

There is an annoying "feature" of Eve, that ignores entries lower than the current last it has in memory is they are too close. Say it has a last entry of 5, and you restart homebridge, Eve will ignore entries up to 6, and you will loose the first one with the reference time stamp, so no data is displayed. This is really annoying in debug (because you work we few samples, always at the beginning of the history), but not a great issue il real life. Try to add some more entries, and if still no luck, change serial number, so that Eve should start over from 0. Then monitor communication for request and data on 117.

simont77 commented 6 years ago

In the serial do not use ":", use numbers and letter. Dashes are ok.

rooi commented 6 years ago

After letting it run for a while and forcing a refresh by draging the graph down it works!

Thanks!

NorthernMan54 commented 6 years ago

@rooi I'm playing with this as well, and am only getting graphing for current temperature and not target temperature. Does your's graph both?

rooi commented 6 years ago

@NorthernMan54 You can switch on target temperature just below the graph in the eve app. I search for a bit as well

NorthernMan54 commented 6 years ago

@rooi Tks, that was it....now just need to wait

NorthernMan54 commented 6 years ago

@rooi After playing with this for a bit, that switch only appears if you use your custom characteristics

rooi commented 6 years ago

Great! Not my characteristic though, but @simont77's

NorthernMan54 commented 6 years ago

@rooi When your using this, do you get a spinner in the corner? Look at the top right of this, just below edit.

img_1890

simont77 commented 6 years ago

I think the spinner is due to the schedule. Eve cannot get the current schedule from the fake accessory, unfortunately I did not decode schedule protocol. Try to put 12f1130014c717040af6010700fc140c170c11fa24366684ffffffff24366684ffffffff24366684ffffffff24366684ffffffff24366684ffffffff24366684ffffffff24366684fffffffff42422222af3381900001a24366684ffffffff on 12F (data from real dump)

llemtt commented 6 years ago

I removed ValvePosition characteristic and history still works!

tkintscher commented 5 years ago

@NorthernMan54 You can switch on target temperature just below the graph in the eve app. I search for a bit as well

Would you mind posting a screenshot of the switch? I cannot find it and just want to verify whether a characteristic is missing, or I am just blind 😉

NorthernMan54 commented 5 years ago

The temperature controls are the blue up and down arrows/buttons below the large 20C

tkintscher commented 5 years ago

sorry, I meant displaying the target temperature in the graph (the purple lines in your screenshot above). Mine only shows the current temperature.

NorthernMan54 commented 5 years ago

Sounds like your missing a data element. That is from homebridge-tcc if you want to look closer at it

ebaauw commented 5 years ago

homebridge-hue is now exposing its first thermostat, incl. history (see https://github.com/ebaauw/homebridge-hue/issues/426#issuecomment-461920956). Some observations: