-
-
Notifications
You must be signed in to change notification settings - Fork 12
Eve History
Eve accessories maintain historic data on sensor readings and events. The Eve app shows this history as graphs.
A single accessory can maintain historic values for up to eight data elements. Typically, a data element corresponds to a characteristic on the accessory. For sensor values, the accessory creates a periodic history entry, every 10 minutes. For events, the accessory creates an ad-hoc history entry, as the event occurs. Note that a history entry typically includes values for multiple data elements, but need not include all of them. Next to the historic values, each entry contains a sequence number and a timestamp.
The accessory reports the history configuration and the sequence number of the most recent entry. When the Eve app realises there are newer entries, it downloads the newer entries from the accessory into local storage. The accessory keeps about a month of history entries. The Eve app keeps the downloaded history entries forever, until the app is uninstalled. The history is linked to the accessory by the accessory UUID. When the accessory is removed from HomeKit and later re-added, the previously downloaded history entries are again available.
The Eve app also synchronises the accessory clock with the clock of the Apple device running the app.
Technically, to handle the history, an Eve accessory includes a custom History
service, with UUID E863F007-079E-48FF-8F27-9C2605A29F52
.
Note that Eve use their own UUID range, E863F
xxx-079E-48FF-8F27-9C2605A29F52
, for their custom services and characteristics.
We only list the short UUIDs here, so 007
for the History
service.
This service carries the following custom characteristics:
UUID | Characteristic | rw | Description |
---|---|---|---|
131 |
ConfigData |
r | Used in conjunction with ConfigCommand to maintain the accessory configuration. |
11D |
ConfigCommand |
w | Used in conjunction with ConfigData to maintain the accessory configuration. |
158 |
? | rw | Found on accessories with Thread support. |
116 |
HistoryStatus |
r | History configuration and status including the index of the most recent entry. |
117 |
HistoryEntries |
r | Used in conjunction with HistoryRequest to report the history entries. |
11C |
HistoryRequest |
w | Used in conjunction with HistoryEntries to report the history entries. |
121 |
SetTime |
w | Timestamp of current time. |
112 |
ResetTotal |
rw | Timestamp of the most recent reset of cumulative values (e.g. for total consumption, times opened). |
11E |
? | rw | Accessory type and version. Used to show the user manual and for firmware updates. |
Timestamps are 32-bit integer values, the number of seconds since 2001-01-01T00:00:00Z.
The other characteristic are of type DATA.
The data is base64
encoded binary data, sometimes using a fixed structure, sometimes using a TVL-like structure.
All integer values in these structures are in little endian.
An Eve accessory updates HistoryStatus
(116
) when a new history entry is available.
When the Eve app concludes there's newer entries than is has already loaded, it writes the sequence number of the first missing entry to HistoryRequest
(11C
).
Then, it repeatedly reads HistoryEntries
(117
), until all missing entries have been read.
The accessory reports up to 11 next entries per read, starting with the sequence number from HistoryRequest
.
Occasionally, the Eve app writes SetTime
(112
) to sync the accessory clock with the clock of the Apple device running the app.
The Eve app is somewhat picky when it comes to showing the history: not only does it require a properly configured History
service, the other services and characteristics on the accessory must match this configuration.
Also, the accessory clock and the clock on the device running the app must be synchronised; Eve won't even display entries with a timestamp in the future.
HistoryStatus
(116
) contains a fingerprint indicating what data elements are included in the history for the accessory.
Each data element is identified by a one-byte type.
This fingerprint consists of a byte for the number of data elements, followed by a type/length-pair per data element.
Each history entry in HistoryEntries
(117
) contains a one-byte bitmap of the values included in the entry.
This allows for ad-hoc entries with only event values vs scheduled entries with periodic values.
Below is an overview of known fingerprints:
Device | Year | Gen | Fingerprint |
---|---|---|---|
Eve Door & Window | 2015 | 1 | 01 0601 |
Eve Door & Window | 2020 | 3 | 01 0601 |
Eve Energy | ? | ? | 04 0102 0202 0702 0F03 |
Eve Energy (EU) | 2015 | 1 | 05 0502 0B02 0C02 0D02 0702 |
Eve Energy (EU) | 2020 | 4 |
06 0B02 0C02 0D02 0702 0E01 0102 * |
Eve Light Switch | ? | ? | 0E01 |
Eve Motion | ? | ? | 02 1301 1C01 |
Eve Room | 2015 | 1 | 04 0102 0202 0402 0F03 |
Eve Room | 2018 | 2 | 07 0102 0202 2202 2901 2501 2302 2801 |
Eve Room | 2021 | 3 | 07 0102 0202 2202 2801 |
Eve Thermo | ? | ? | 05 0102 1102 1001 1201 1D01 |
Eve Thermo | 2020 | 4 | 06 0102 1102 1001 1201 1D01 2302 |
Eve Weather | 2015 | 1 | 03 0102 0202 0302 |
Eve Weather | 2021 | 2 | 05 0102 0202 0302 2701 2F01 |
*) Periodic entries use a bitmap of 0x2F, excluding type 0E
. Event entries, when switching the smart plug on or off, use a bitmap of 0x10, only including type 0E
. The value for type 01
doesn't seem to be the temperature.
The following table lists the known types.
Type | Len | Quantity | Unit | Characteristic |
---|---|---|---|---|
01 |
2 | Temperature | 0.01°C | CurrentTemperature |
02 |
2 | Humidity | 0.01% | CurrentRelativeHumidity |
03 |
2 | Air Pressure | 0.1 hPa |
AirPressure (10F ) |
04 |
2 | VOC Level | ppb |
VOCLevel (10B ) |
05 |
PowerApparent | |||
06 |
1 | Door | -- | ContactDetected |
07 |
2 | Consumption | 0.01W |
CurrentConsumption (10D ) |
08 |
WaterFlow | |||
09 |
WaterTemperature | |||
0A |
WaterEnergy | |||
0B |
2 | PowerWatt | ||
0C |
2 | Voltage | 0.01V |
Voltage (10A ) |
0D |
2 | PowerCurrent | ||
0E |
1 | On/Off | -- | On |
0F |
VOCHeatSense | |||
10 |
1 | Valve Position | % open |
ValvePosition (12E ) |
11 |
2 | Target Temperature | 0.01°C | TargetTemperature |
12 |
1 | Mode | -- | TargetHeatingCoolingState |
13 |
Motion | |||
14 |
Switch | |||
15 |
PowerOnOff2 | |||
16 |
SmokeDetected | |||
17 |
CurrentPosition | |||
18 |
TargetPosition | |||
19 |
PositionState | |||
1A |
ObstructionDetected | |||
1B |
SmokeDetectorStatus | |||
1C |
1 | Motion | -- | MotionDetected |
1D |
1 | Window Open Detection | -- | -- |
1E |
? | |||
1F |
InUse | |||
20 |
WindowState | |||
21 |
PotState | |||
22 |
2 | VOC Density | µg/m³ | VOCDensity |
23 |
2 | Battery Voltage | mV | -- |
24 |
StatelessSwitchEvent | |||
25 |
1 | Battery Level | % | BatteryLevel |
26 |
Lock | |||
27 |
1 | Air Pressure Change | -- | -- |
28 |
1 | Air Quality | -- | AirQuality |
29 |
1 | ? | ||
2F |
1 | ? |