Skip to content

Eve History

Erik Baauw edited this page Jan 30, 2022 · 14 revisions

Introduction

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.

History service

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, E863Fxxx-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.

Fingerprints

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.

Types

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 ?
Clone this wiki locally