Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
Elgato Eve HomeKit Services & Characteristics

Elgato Eve HomeKit Services & Characteristics

A work in progress collection of proprietary and as of yet undocumented HomeKit characteristics and their UUIDs used by Elgato Eve.

This list is not including all Eve accessories available and some services and characteristics still make no sense to me. If you have anything to contribute, please leave a comment. There is no guarantee that the information listed below is correct.

Elgato Eve Energy (Firmware Revision 1.3.1;466)

Service - Characteristic UUID R W Type Description
Accessory Information 0000003E-0000-1000-8000-0026BB765291 - - HomeKit Standard
  • Name | 00000023-0000-1000-8000-0026BB765291 | X | | String(64) | HomeKit Standard
  • Manufacturer | 00000020-0000-1000-8000-0026BB765291 | X | | String(64) | HomeKit Standard
  • Model | 00000021-0000-1000-8000-0026BB765291 | X | | String(64) | HomeKit Standard
  • Serial Number | 00000030-0000-1000-8000-0026BB765291 | X | | String(64) | HomeKit Standard
  • Identify | 00000014-0000-1000-8000-0026BB765291 | | X | Boolean | HomeKit Standard
  • Firmware Revision | 00000052-0000-1000-8000-0026BB765291 | X | | String(64) | HomeKit Standard Outlet | 00000047-0000-1000-8000-0026BB765291 | - | - | | HomeKit Standard
  • Name | 00000023-0000-1000-8000-0026BB765291 | X | | String(64) | HomeKit Standard
  • Power State | 00000025-0000-1000-8000-0026BB765291 | X | X | Boolean | HomeKit Standard
  • Outlet In Use | 00000026-0000-1000-8000-0026BB765291 | X | | Boolean | HomeKit Standard
  • Volt (V) | E863F10A-079E-48FF-8F27-9C2605A29F52 | X | | UInt16 | Volt = UInt16(value) / 10
  • Ampere (A) | E863F126-079E-48FF-8F27-9C2605A29F52 | X | | UInt16 | Ampere = UInt16(value) / 100
  • Watt (W) | E863F10D-079E-48FF-8F27-9C2605A29F52 | X | | UInt16 | Watt = UInt16(value) / 10. This is what is reported as "Consumption" in the Eve app.
  • Kilowatt-Hour (kWh) | E863F10C-079E-48FF-8F27-9C2605A29F52 | X | | UInt32 | kWh = UInt32(value) / 1000. This is what is reported as "Total Consumption" in the Eve app. ??? | E863F007-079E-48FF-8F27-9C2605A29F52 | - | - | | Probably a service for meta and/or historical information
  • Volt-Ampere (VA) | E863F110-079E-48FF-8F27-9C2605A29F52 | X | | UInt16 | Volt-Ampere = UInt16(value) / 10
  • kVAh | E863F127-079E-48FF-8F27-9C2605A29F52 | X | | UInt32 | kVAh = UInt32(value) / 1000
  • ??? | E863F11E-079E-48FF-8F27-9C2605A29F52 | X | X | | ??? - Also available on Eve Room & Weather
  • ??? | E863F112-079E-48FF-8F27-9C2605A29F52 | X | X | UInt32? | ??? - Always <00000000>? Also available on Eve Weather
  • ??? | E863F10E-079E-48FF-8F27-9C2605A29F52 | X | | UInt16? | ??? - Seems to be 0 when no consumers are attached to the outlet
  • ??? | E863F11C-079E-48FF-8F27-9C2605A29F52 | | X | | ??? - Also available on Eve Room
  • ??? | E863F121-079E-48FF-8F27-9C2605A29F52 | | X | | ??? - Also available on Eve Room
  • ??? | E863F116-079E-48FF-8F27-9C2605A29F52 | X | | | ??? - Also available on Eve Room & Weather
  • ??? | E863F117-079E-48FF-8F27-9C2605A29F52 | X | | | See below - Also available on Eve Room & Weather

Notes

The last two may be a cache of measurements that are polled by the Eve app when the accessory is in range.

E863F117-079E-48FF-8F27-9C2605A29F52

Array of logs with each entry having x bytes as determined by Byte 1. The following is what I think I learned about logs with 20 bytes. I have already seen 21 bytes but haven't taken a look at those yet:

  • Byte 1: Length (i.e. 14 for 20 Bytes)
  • Bytes 2 & 3: Counter
  • Bytes 4 & 5: ??? (always 0x00 or maybe an extension of the counter?)
  • Bytes 6 & 7: Seconds since ???
  • Bytes 8 & 9: ???
  • Byte 10: ??? (always 0x1f?)
  • Bytes 11 & 12: Watt (W)(see E863F10D-079E-48FF-8F27-9C2605A29F52)
  • Bytes 13 & 14: Volt-Ampere (VA) (see E863F110-079E-48FF-8F27-9C2605A29F52)
  • Bytes 15 & 16: Volt (V) (see E863F10A-079E-48FF-8F27-9C2605A29F52)
  • Bytes 17 & 18: Ampere (A) (see E863F126-079E-48FF-8F27-9C2605A29F52)
  • Bytes 19 & 20: ??? (might correspond to E863F10E-079E-48FF-8F27-9C2605A29F52)

Bytes 6 to 9 look like some kind of timestamp. The format is not clear but from the limited dataset available to me up to now it seems that they are offsets from an initial timestamp, most likely the original installation date. Bytes 8 and 9 could thus be something like "days since installation".

This characteristic seems to only return a maximum of 11 log entries and I have no clear idea on how to scroll back in time. Maybe that's what either E863F11C-079E-48FF-8F27-9C2605A29F52 or E863F121-079E-48FF-8F27-9C2605A29F52 is for: You write a value to one of the characteristics and get a different range from the logs. Just a wild guess.

Elgato Eve Room (Firmware Revision 1.3.1;466)

Service - Characteristic UUID R W Type Description
Accessory Information 0000003E-0000-1000-8000-0026BB765291 - - HomeKit Standard
  • Name | 00000023-0000-1000-8000-0026BB765291 | X | | String(64) | HomeKit Standard
  • Manufacturer | 00000020-0000-1000-8000-0026BB765291 | X | | String(64) | HomeKit Standard
  • Model | 00000021-0000-1000-8000-0026BB765291 | X | | String(64) | HomeKit Standard
  • Serial Number | 00000030-0000-1000-8000-0026BB765291 | X | | String(64) | HomeKit Standard
  • Identify | 00000014-0000-1000-8000-0026BB765291 | | X | Boolean | HomeKit Standard
  • Firmware Revision | 00000052-0000-1000-8000-0026BB765291 | X | | String(64) | HomeKit Standard Battery | 00000096-0000-1000-8000-0026BB765291 | - | - | | HomeKit Standard
  • Name | 00000023-0000-1000-8000-0026BB765291 | X | | String(64) | HomeKit Standard
  • Status Low Battery | 00000079-0000-1000-8000-0026BB765291 | ? | ? | ? | HomeKit Standard
  • Battery Level | 00000068-0000-1000-8000-0026BB765291 | ? | ? | ? | HomeKit Standard
  • Charging State | 0000008F-0000-1000-8000-0026BB765291 | ? | ? | ? | HomeKit Standard Temperature Sensor           | 0000008A-0000-1000-8000-0026BB765291 | - | - | | HomeKit Standard
  • Name | 00000023-0000-1000-8000-0026BB765291 | X | | String(64) | HomeKit Standard
  • Current Temperature | 00000011-0000-1000-8000-0026BB765291 | ? | ? | ? | HomeKit Standard Humidity Sensor | 00000082-0000-1000-8000-0026BB765291 | - | - | | HomeKit Standard
  • Name | 00000023-0000-1000-8000-0026BB765291 | X | | String(64) | HomeKit Standard
  • Current Relative Humidity | 00000010-0000-1000-8000-0026BB765291 | ? | ? | ? | HomeKit Standard Air Quality Sensor | 0000008D-0000-1000-8000-0026BB765291 | - | - | | HomeKit Standard
  • Name | 00000023-0000-1000-8000-0026BB765291 | X | | String(64) | HomeKit Standard
  • Air Quality | 00000095-0000-1000-8000-0026BB765291 | ? | ? | ? | HomeKit Standard (Level 0 - 5)
  • Air Quality in ppm | E863F10B-079E-48FF-8F27-9C2605A29F52 | ? | ? | ? | UInt16(value) in ppm. Rough classification: 0 - 700 Excellent, 700 - 1100 Good, 1100 - 1600 Acceptable, 1600 - 2000 Moderate, > 2000 Bad. Represented by simple levels with the characteristic above.
  • ??? | E863F132-079E-48FF-8F27-9C2605A29F52 | ? | ? | ? | ??? ??? | E863F007-079E-48FF-8F27-9C2605A29F52 | - | - | | Probably a service for meta and/or historical information
  • ??? | E863F11C-079E-48FF-8F27-9C2605A29F52 | ? | ? | ? | ??? - Also available on Eve Energy
  • ??? | E863F121-079E-48FF-8F27-9C2605A29F52 | ? | ? | ? | ??? - Also available on Eve Energy
  • ??? | E863F11D-079E-48FF-8F27-9C2605A29F52 | ? | ? | ? | ???
  • ??? | E863F11E-079E-48FF-8F27-9C2605A29F52 | ? | ? | ? | ??? - Also available on Eve Energy
  • ??? | E863F116-079E-48FF-8F27-9C2605A29F52 | ? | ? | ? | ??? - Also available on Eve Energy
  • ??? | E863F117-079E-48FF-8F27-9C2605A29F52 | ? | ? | ? | ??? - Also available on Eve Energy
  • ??? | E863F131-079E-48FF-8F27-9C2605A29F52 | ? | ? | ? | ???
  • Status Fault | 00000077-0000-1000-8000-0026BB765291 | ? | ? | ? | HomeKit Standard

Elgato Eve Door

Service - Characteristic UUID R W Type Description
Number of times opened E863F129-079E-48FF-8F27-9C2605A29F52 ? ? UInt32 UInt32(value) / 2
Battery Level E863F11B-079E-48FF-8F27-9C2605A29F52 ? ? UInt16 UInt16(value) in %

Elgato Eve Weather

Service - Characteristic UUID R W Type Description
Battery Level E863F11B-079E-48FF-8F27-9C2605A29F52 ? ? UInt16 UInt16(value) in %
JotWee commented Jan 18, 2016

Great work so far! Thank you very much.

JotWee commented Jan 19, 2016

Eve Door
E863F129-079E-48FF-8F27-9C2605A29F52
UInt32
Number of times opened = UInt32(value)/2

JotWee commented Jan 20, 2016

Eve Door, Eve Weather, Eve Eve room
E863F11B-079E-48FF-8F27-9C2605A29F52
UInt16
Battery Level = Uint16(value) %

Owner

@JotWee: Thanks! I added your input to the gist.

@gomfunkel: great! i have just included voltage, current, power and energy into the fhem homebridge plugin and it works great. with one small exceptions. currently the values displayed in eve are a factor of 10 or 1000 to large. maybe i'm interpreting your factors above wrong. for example: Watt = UInt16(value) / 10 currently means i'm sending 10 x the real value in to homekit. but it looks like i should send the uncorrected value.

@JotWee: there is also a standard homekit characteristic for battery Level in %. does eve use both or only the custom one?
how does the 'Number of times opened' characteristic work? is it just an absolute counter or is it reset under certain conditions?

Owner

@justme-1968: What the factor means is that Eve Energy reports a UInt16 you have to divide by 10 to get the actual value. Example: When the Eve Energy characteristic for Watt reports 600 you have to divide that by 10 to get the actual value which is 60.

That is what I was seeing at least. If you experience something different I'm happy to add what you learned. Just add a comment. Thanks!

@gomfunkel: yes. i think i'm seeing something different. i have to send the values without a factor multiplied in. otherwise they will be displayed in eve with this factor. maybe the factor is not implicit but is hiding in any of the other characteristics. i will try to do some more tests.

pdlove commented Feb 11, 2016

Is Watt 1 and Watt 2 for multiphase setups?

@gomfunkel: Can you give an example how to casts the value property of those proprietary characteristics into an Int in Swift? :/
For example, I only get a hex-string like '<64>' for the battery level characteristics, how do I cast this one into an Int?

Owner

@tobiaskaulich: I'm using helpers like the following to do the conversion. You can probably do some error and consistency checking but this should get you started.

// Convert a byte array into UInt16
func byteArrayToUInt16 (byteArray: NSData) -> UInt16 {
    var val: UInt16 = 0
    byteArray.getBytes(&val, length: byteArray.length)
    return val
}
Owner

@pdlove: I don't think so. Both Watt 1 and 2 have a value close to the consumer attached and there is only one phase on the outlet. If, for example, a consumer with 60W is attached, both characteristics show something around 60W, with one or two watts difference between them.

@gomfunkel: Thank you very much!

Eve Room: Air Quality - UInt16(?) in ppm
E863F10B-079E-48FF-8F27-9C2605A29F52

In-App classification roughly
0 - 700 : Exzellent
700 - 1100 : Good
1100 - 1500(?) : Acceptable
1500(?) - 2000(?) : Moderate
greater than 2000(?) : Bad

Owner

I might have finally figured out why there are two W/kWh values. Talking to the right people (and brushing up on electrical engineering skills) alway helps. It seems that they are actually not two W/kWh values (which wouldn't make a lot of sense anyways) but W/kWh and VA/kVAh.

If my guess is correct, telling kWh and kVAh apart is rather easy as kVAh is always more than kWh. The same applies for comparing W and VA but as I cannot get these values on the exact same time and need to fetch them after one another they are hard to tell apart. Judging from several samples I took it seems that E863F110-079E-48FF-8F27-9C2605A29F52 is most of the time larger than E863F10D-079E-48FF-8F27-9C2605A29F52 so I think the first one is VA and the second one is W.

Does this make sense?

Owner

@tobiaskaulich: You're writing about "Eve Door: Air Quality". Do you mean "Eve Room" instead of "Eve Door"?

@gomfunkel: Oh of course! Sorry, just updated the post.

brutella commented Feb 25, 2016 edited

The air quality classification seems to be like this

  • 0...700 : Excellent
  • 700...1100 : Good
  • 1100...1600 : Acceptable
  • 1600...2000 : Moderate
  • 2000 : Bad

Just a couple of updates on how the characteristics are interpreted within the Eve app which might help anyone developing an app that wants to report these:

  • Watt (E863F10D-079E-48FF-8F27-9C2605A29F52) is reported as 'Consumption'
  • Kilowatt-hour (E863F10C-079E-48FF-8F27-9C2605A29F52) is reported as 'Total Consumption'
Owner

@PeteLawrence: Thanks, I just added your comment to the gist.

SphtKr commented Mar 13, 2016

@gomfunkel & @justme-1968: I am implementing this in homebridge-zway and also seem to get have to send the raw Watts value instead of 10*W . Question: there is a "unit" property in a HomeKit characteristic...can you see what Eve Energy is sending in that property? It could be that it [the app] reads the unit property to see what units to interpret as, and we just need the magic string value so that the Eve app interprets the value as "deciwatts" or something (I've already tried "deciwatts" though, and it still treated the value as Watts). Same question for both Watts and Kilowatt-hours characteristics. Thanks!

SphtKr commented Mar 13, 2016

Additionally, I tried sending a float value instead of UInt64 for kWh, and the Eve app handled it fine. That is, it interpreted this correctly:

        {
          "iid": 17,
          "type": "E863F10C-079E-48FF-8F27-9C2605A29F52",
          "perms": [
            "pr",
            "ev"
          ],
          "format": "float",
          "value": 7.514,
          "description": "Total Consumption",
          "unit": "kilowatthours",
          "maxValue": 1000000000,
          "minValue": 0,
          "minStep": 0.001
        }

And didn't crash or anything.

float would be great. did you also try float with the volt or watt characteristics ?

SphtKr commented Mar 18, 2016

Not yet. I'm guessing it'll work. The devices I'm bridging seem to only have integer Watt values. Does Volt show up in the Eve app anywhere?

luc-ass commented Mar 21, 2016

Thank you for your hard work! I just implemented your UUIDs to monitor my energy consumption via efergy (in my meter box). Efergy also provides access to historic data. Have you had any progress on that?

Samfox2 commented Mar 21, 2016

I added the same into my homebridge-domotiga plugin, history would be great.
Found an example (early stage, but shows a fake history in eve app: https://gist.github.com/0ff/668f4b7753c80ad7b60b )

planetk commented Aug 3, 2016

It seems that the Eve App sends the current timestamp (seconds since 1.1.2001) to E863F12 on a regular base.

e.g.: written value: cf1b521d
-> reverse 1d521bcf
-> hex2dec 491920335
Epoch Timestamp 1.1.2001 = 978307200;
978307200 + 491920335 = 1470227535
= Wed, 03 Aug 2016 12:32:15 GMT
= 3.8.2016, 14:32:15 GMT+2:00 DST (MEST)

mrose17 commented Sep 27, 2016

could you take a look at https://github.com/homespun/hap-nodejs-community-types/blob/master/types.js#L251 and tell me if "it looks right" ? thanks!

@JotWee you wrote that Eve Door Characteristic E863F129... has got a value for the number of opened times. But when I try to read this characteristic it doesn't return anything. I just can indicate for different characteristics and they get called, when the state is changed. For example: E863F118 if state goes to closed/in contact, E863F119 state goes to open/not in contact and E863F11A for every state change. What do I have to do to get some values from this devices?

Furthermore, at the Eve Energy what do I have to do to set it on and off?

llemtt commented Dec 13, 2016

Great! Has someone already discovered Eve Thermo S & C ?

Owner

Just updated the gist with details for Eve Room.

@planetk Great find, thanks. Have you had time to play with that some more by now?

gbagerry commented Jan 30, 2017 edited

Have you discovered any of the settings/attributes for the Elgato Eve Motion Sensor?
I have at least discovered the following two:
E863F120-079E-48FF-8F27-9C2605A29F52 - Sensitivity
readable/writeable
0 <= UInt8 <= 7

E863F12D-079E-48FF-8F27-9C2605A29F52 - Duration
readable/writeable
2 <= UInt16 <= 65000 // I assume seconds

E863F11A-079E-48FF-8F27-9C2605A29F52 - ??????
readable
uint32

ebaauw commented Mar 24, 2017

Maybe some-one here can help me: both my Eve Energy plugs report Outlet In Use as Yes all the time, even when nothing is plugged into them. I'd expect the In Use only to show Yes when something is actually drawing power. Am I missing something?

ebaauw commented Mar 24, 2017

I'm trying to use Sensitivity and Duration in my homebridge plugin, but Eve doesn't show them (other HomeKit apps do). I think it's because Eve exposes these in a different service type than Motion Sensor. At least that's what they do with the Eve Energy and the Eve Door. Can some-one please confirm this and post the UUID of this service type? Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment