ESPHome 2026.3.0-dev
Loading...
Searching...
No Matches
defines.h
Go to the documentation of this file.
1#pragma once
2
3// This file is not used by the runtime, instead, a version is generated during
4// compilation with only the relevant feature flags for the current build.
5//
6// This file is only used by static analyzers and IDEs.
7
9
10// Informative flags
11#define ESPHOME_BOARD "dummy_board"
12#define ESPHOME_PROJECT_NAME "dummy project"
13#define ESPHOME_PROJECT_VERSION "v2"
14#define ESPHOME_PROJECT_VERSION_30 "v2"
15#define ESPHOME_VARIANT "ESP32"
16#define ESPHOME_DEBUG_SCHEDULER
17#define ESPHOME_DEBUG_API
18
19// Default threading model for static analysis (ESP32 is multi-threaded with atomics)
20#define ESPHOME_THREAD_MULTI_ATOMICS
21
22// logger
23#define ESPHOME_LOG_LEVEL ESPHOME_LOG_LEVEL_VERY_VERBOSE
24#define ESPHOME_LOGGER_TX_BUFFER_SIZE 512
25#define USE_LOG_LISTENERS
26#define ESPHOME_LOG_MAX_LISTENERS 8
27
28// Feature flags
29#define USE_ALARM_CONTROL_PANEL
30#define USE_AREAS
31#define USE_BINARY_SENSOR
32#define USE_BINARY_SENSOR_FILTER
33#define USE_BUTTON
34#define USE_CAMERA
35#define USE_CLIMATE
36#define USE_CLIMATE_VISUAL_OVERRIDES
37#define USE_CONTROLLER_REGISTRY
38#define USE_COVER
39#define USE_DATETIME
40#define USE_DATETIME_DATE
41#define USE_DATETIME_DATETIME
42#define USE_DATETIME_TIME
43#define USE_DEBUG
44#define USE_DEEP_SLEEP
45#define USE_DEVICES
46#define USE_DISPLAY
47#define USE_ENTITY_ICON
48#define USE_ESP32_CAMERA_JPEG_CONVERSION
49#define USE_ESP32_HOSTED
50#define USE_ESP32_IMPROV_STATE_CALLBACK
51#define USE_EVENT
52#define USE_FAN
53#define USE_GRAPH
54#define USE_GRAPHICAL_DISPLAY_MENU
55#define USE_HOMEASSISTANT_TIME
56#define USE_HTTP_REQUEST_OTA_WATCHDOG_TIMEOUT 8000 // NOLINT
57#define USE_IMAGE
58#define USE_IMPROV_SERIAL
59#define USE_IMPROV_SERIAL_NEXT_URL
60#define USE_INFRARED
61#define USE_IR_RF
62#define USE_JSON
63#define USE_LIGHT
64#define USE_LIGHT_GAMMA_LUT
65#define USE_LOCK
66#define USE_LOGGER
67#define USE_LOGGER_LEVEL_LISTENERS
68#define USE_LOGGER_RUNTIME_TAG_LEVELS
69#define USE_LVGL
70#define USE_LVGL_ANIMIMG
71#define USE_LVGL_ARC
72#define USE_LVGL_BINARY_SENSOR
73#define USE_LVGL_BUTTON
74#define USE_LVGL_BUTTONMATRIX
75#define USE_LVGL_CANVAS
76#define USE_LVGL_CHART
77#define USE_LVGL_CHECKBOX
78#define USE_LVGL_DROPDOWN
79#define USE_LVGL_FONT
80#define USE_LVGL_IMAGE
81#define USE_LVGL_IMAGEBUTTON
82#define USE_LVGL_KEY_LISTENER
83#define USE_LVGL_KEYBOARD
84#define USE_LVGL_LABEL
85#define USE_LVGL_LINE
86#define USE_LVGL_LIST
87#define USE_LVGL_MENU
88#define USE_LVGL_METER
89#define USE_LVGL_MSGBOX
90#define USE_LVGL_ROLLER
91#define USE_LVGL_ROTARY_ENCODER
92#define USE_LVGL_SLIDER
93#define USE_LVGL_SPAN
94#define USE_LVGL_SPINBOX
95#define USE_LVGL_SPINNER
96#define USE_LVGL_SWITCH
97#define USE_LVGL_TABLE
98#define USE_LVGL_TABVIEW
99#define USE_LVGL_TEXTAREA
100#define USE_LVGL_TILEVIEW
101#define USE_LVGL_TOUCHSCREEN
102#define USE_MDNS
103#define USE_MDNS_STORE_SERVICES
104#define MDNS_SERVICE_COUNT 3
105#define USE_MDNS_DYNAMIC_TXT
106#define MDNS_DYNAMIC_TXT_COUNT 2
107#define SNTP_SERVER_COUNT 3
108#define USE_MEDIA_PLAYER
109#define USE_MEDIA_SOURCE
110#define USE_NEXTION_TFT_UPLOAD
111#define USE_NUMBER
112#define USE_OUTPUT
113#define USE_POWER_SUPPLY
114#define USE_QR_CODE
115#define USE_SAFE_MODE_CALLBACK
116#define USE_SELECT
117#define USE_SENSOR
118#define USE_SENSOR_FILTER
119#define USE_SETUP_PRIORITY_OVERRIDE
120#define USE_STATUS_LED
121#define USE_STATUS_SENSOR
122#define USE_SWITCH
123#define USE_TEXT
124#define USE_TEXT_SENSOR
125#define USE_TEXT_SENSOR_FILTER
126#define USE_TIME
127#define USE_TOUCHSCREEN
128#define USE_UART_DEBUGGER
129#define USE_UART_WAKE_LOOP_ON_RX
130#define USE_UPDATE
131#define USE_VALVE
132#define USE_WATER_HEATER
133#define USE_WATER_HEATER_VISUAL_OVERRIDES
134#define USE_ZWAVE_PROXY
135
136// Feature flags which do not work for zephyr
137#ifndef USE_ZEPHYR
138#define USE_AUDIO_DAC
139#define USE_AUDIO_FLAC_SUPPORT
140#define USE_AUDIO_MP3_SUPPORT
141#define USE_AUDIO_OPUS_SUPPORT
142#define USE_API
143#define USE_API_CLIENT_CONNECTED_TRIGGER
144#define USE_API_CLIENT_DISCONNECTED_TRIGGER
145#define USE_API_HOMEASSISTANT_ACTION_RESPONSES
146#define USE_API_HOMEASSISTANT_ACTION_RESPONSES_JSON
147#define USE_API_HOMEASSISTANT_SERVICES
148#define USE_API_HOMEASSISTANT_STATES
149#define USE_API_NOISE
150#define USE_API_VARINT64
151#define USE_API_PLAINTEXT
152#define USE_API_USER_DEFINED_ACTIONS
153#define USE_API_CUSTOM_SERVICES
154#define USE_API_USER_DEFINED_ACTION_RESPONSES
155#define USE_API_USER_DEFINED_ACTION_RESPONSES_JSON
156#define API_MAX_SEND_QUEUE 8
157#define USE_MD5
158#define USE_SHA256
159#define USE_MQTT
160#define USE_MQTT_COVER_JSON
161#define USE_NETWORK
162#define USE_RUNTIME_IMAGE_BMP
163#define USE_RUNTIME_IMAGE_PNG
164#define USE_RUNTIME_IMAGE_JPEG
165#define USE_OTA
166#define USE_OTA_PASSWORD
167#define USE_OTA_STATE_LISTENER
168#define USE_OTA_VERSION 2
169#define USE_TIME_TIMEZONE
170#define USE_WIFI
171#define USE_WIFI_AP
172#define USE_WIFI_MANUAL_IP
173#define USE_WIREGUARD
174#endif
175
176// Arduino-specific feature flags
177#ifdef USE_ARDUINO
178#define USE_PROMETHEUS
179#define USE_WIFI_WPA2_EAP
180#define USE_I2S_LEGACY
181#endif
182
183// Platforms with native 64-bit time sources (no rollover tracking needed)
184#if defined(USE_ESP32) || defined(USE_HOST) || defined(USE_ZEPHYR) || defined(USE_RP2040)
185#define USE_NATIVE_64BIT_TIME
186#endif
187
188// ESP32-specific feature flags
189#ifdef USE_ESP32
190#define USE_MQTT_IDF_ENQUEUE
191#define USE_ESPHOME_TASK_LOG_BUFFER
192#define USE_OTA_ROLLBACK
193#define USE_ESP32_MIN_CHIP_REVISION_SET
194
195#define USE_BLUETOOTH_PROXY
196#define BLUETOOTH_PROXY_MAX_CONNECTIONS 3
197#define BLUETOOTH_PROXY_ADVERTISEMENT_BATCH_SIZE 16
198#define USE_CAPTIVE_PORTAL
199#define USE_ESP32_BLE
200#define USE_ESP32_BLE_MAX_CONNECTIONS 3
201#define USE_ESP32_BLE_CLIENT
202#define USE_ESP32_BLE_DEVICE
203#define USE_ESP32_BLE_SERVER
204#define USE_ESP32_BLE_UUID
205#define USE_ESP32_BLE_ADVERTISING
206#define USE_ESP32_BLE_SERVER_SET_VALUE_ACTION
207#define USE_ESP32_BLE_SERVER_DESCRIPTOR_SET_VALUE_ACTION
208#define USE_ESP32_BLE_SERVER_NOTIFY_ACTION
209#define USE_ESP32_BLE_SERVER_CHARACTERISTIC_ON_WRITE
210#define USE_ESP32_BLE_SERVER_DESCRIPTOR_ON_WRITE
211#define USE_ESP32_BLE_SERVER_ON_CONNECT
212#define USE_ESP32_BLE_SERVER_ON_DISCONNECT
213#define ESPHOME_ESP32_BLE_TRACKER_LISTENER_COUNT 1
214#define ESPHOME_ESP32_BLE_TRACKER_CLIENT_COUNT 1
215#define ESPHOME_ESP32_BLE_GAP_EVENT_HANDLER_COUNT 2
216#define ESPHOME_ESP32_BLE_GAP_SCAN_EVENT_HANDLER_COUNT 1
217#define ESPHOME_ESP32_BLE_GATTC_EVENT_HANDLER_COUNT 1
218#define ESPHOME_ESP32_BLE_GATTS_EVENT_HANDLER_COUNT 1
219#define ESPHOME_ESP32_BLE_BLE_STATUS_EVENT_HANDLER_COUNT 2
220#define ESPHOME_ESP32_BLE_EXTENDED_AUTH_PARAMS
221#define ESPHOME_LOOP_TASK_STACK_SIZE 8192
222#define USE_ESP32_CAMERA_JPEG_ENCODER
223#define USE_HTTP_REQUEST_RESPONSE
224#define USE_I2C
225#define USE_IMPROV
226#define USE_ESP32_IMPROV_NEXT_URL
227#define USE_MICROPHONE
228#define USE_PSRAM
229#define USE_SENDSPIN
230#define USE_SENDSPIN_PORT 8928 // NOLINT
231#define USE_SOCKET_IMPL_BSD_SOCKETS
232#define USE_SOCKET_SELECT_SUPPORT
233#define USE_LWIP_FAST_SELECT
234#define USE_WAKE_LOOP_THREADSAFE
235#define USE_SPEAKER
236#define USE_SPI
237#define USE_VOICE_ASSISTANT
238#define USE_WEBSERVER
239#define USE_WEBSERVER_AUTH
240#define USE_WEBSERVER_OTA
241#define USE_WEBSERVER_PORT 80 // NOLINT
242#define USE_WEBSERVER_GZIP
243#define USE_WEBSERVER_SORTING
244#define WEB_SERVER_DEFAULT_HEADERS_COUNT 1
245#define USE_CAPTIVE_PORTAL_GZIP
246#define USE_WIFI_11KV_SUPPORT
247#define USE_WIFI_FAST_CONNECT
248#define USE_WIFI_IP_STATE_LISTENERS
249#define USE_WIFI_SCAN_RESULTS_LISTENERS
250#define USE_WIFI_CONNECT_STATE_LISTENERS
251#define USE_WIFI_POWER_SAVE_LISTENERS
252#define USE_WIFI_CONNECT_TRIGGER
253#define USE_WIFI_DISCONNECT_TRIGGER
254#define ESPHOME_WIFI_IP_STATE_LISTENERS 2
255#define ESPHOME_WIFI_SCAN_RESULTS_LISTENERS 2
256#define ESPHOME_WIFI_CONNECT_STATE_LISTENERS 2
257#define ESPHOME_WIFI_POWER_SAVE_LISTENERS 2
258#define USE_WIFI_RUNTIME_POWER_SAVE
259#define USB_HOST_MAX_REQUESTS 16
260
261#ifdef USE_ARDUINO
262#define USE_ARDUINO_VERSION_CODE VERSION_CODE(3, 3, 7)
263#define USE_ETHERNET
264#define USE_ETHERNET_LAN8720
265#define USE_ETHERNET_RTL8201
266#define USE_ETHERNET_DP83848
267#define USE_ETHERNET_IP101
268#define USE_ETHERNET_JL1101
269#define USE_ETHERNET_KSZ8081
270#define USE_ETHERNET_LAN8670
271#define USE_ETHERNET_MANUAL_IP
272#define USE_ETHERNET_IP_STATE_LISTENERS
273#define USE_ETHERNET_CONNECT_TRIGGER
274#define USE_ETHERNET_DISCONNECT_TRIGGER
275#define ESPHOME_ETHERNET_IP_STATE_LISTENERS 2
276#endif
277
278#ifdef USE_ESP32
279#define USE_MICRO_WAKE_WORD
280#define USE_MICRO_WAKE_WORD_VAD
281#if defined(USE_ESP32_VARIANT_ESP32C6) || defined(USE_ESP32_VARIANT_ESP32H2)
282#define USE_OPENTHREAD
283#endif
284#endif
285
286#if defined(USE_ESP32_VARIANT_ESP32S2)
287#define USE_LOGGER_USB_CDC
288#define USE_LOGGER_UART_SELECTION_USB_CDC
289#elif defined(USE_ESP32_VARIANT_ESP32C3) || defined(USE_ESP32_VARIANT_ESP32C5) || \
290 defined(USE_ESP32_VARIANT_ESP32C6) || defined(USE_ESP32_VARIANT_ESP32C61) || defined(USE_ESP32_VARIANT_ESP32H2) || \
291 defined(USE_ESP32_VARIANT_ESP32P4) || defined(USE_ESP32_VARIANT_ESP32S3)
292#define USE_LOGGER_USB_CDC
293#define USE_LOGGER_UART_SELECTION_USB_CDC
294#define USE_LOGGER_USB_SERIAL_JTAG
295#endif
296#endif
297
298// ESP8266-specific feature flags
299#ifdef USE_ESP8266
300#define USE_ADC_SENSOR_VCC
301#define USE_ARDUINO_VERSION_CODE VERSION_CODE(3, 1, 2)
302#define USE_CAPTIVE_PORTAL
303#define USE_ESP8266_LOGGER_SERIAL
304#define USE_ESP8266_LOGGER_SERIAL1
305#define USE_ESP8266_PREFERENCES_FLASH
306#define USE_ESP8266_UART_SERIAL
307#define USE_ESP8266_UART_SERIAL1
308#define USE_HTTP_REQUEST_ESP8266_HTTPS
309#define USE_HTTP_REQUEST_RESPONSE
310#define USE_I2C
311#define USE_SOCKET_IMPL_LWIP_TCP
312
313#define USE_SPI
314
315// Dummy firmware payload for shelly_dimmer
316#define USE_SHD_FIRMWARE_MAJOR_VERSION 56
317#define USE_SHD_FIRMWARE_MINOR_VERSION 5
318// clang-format off
319#define USE_SHD_FIRMWARE_DATA \
320 {}
321// clang-format on
322
323#define USE_WEBSERVER
324#define USE_WEBSERVER_AUTH
325#define USE_WEBSERVER_PORT 80 // NOLINT
326#endif
327
328#ifdef USE_RP2040
329#define USE_ARDUINO_VERSION_CODE VERSION_CODE(3, 3, 0)
330#define USE_LOOP_PRIORITY
331#define USE_HTTP_REQUEST_RESPONSE
332#define USE_I2C
333#define USE_LOGGER_USB_CDC
334#define USE_SOCKET_IMPL_LWIP_TCP
335#define USE_SPI
336#endif
337
338#ifdef USE_LIBRETINY
339#define USE_CAPTIVE_PORTAL
340#define USE_SOCKET_IMPL_LWIP_SOCKETS
341#define USE_SOCKET_SELECT_SUPPORT
342#define USE_LWIP_FAST_SELECT
343#define USE_WEBSERVER
344#define USE_WEBSERVER_AUTH
345#define USE_WEBSERVER_PORT 80 // NOLINT
346#endif
347
348#ifdef USE_HOST
349#define USE_HTTP_REQUEST_RESPONSE
350#define USE_SOCKET_IMPL_BSD_SOCKETS
351#define USE_SOCKET_SELECT_SUPPORT
352#endif
353
354#ifdef USE_NRF52
355#define USE_ESPHOME_TASK_LOG_BUFFER
356#define USE_LOGGER_EARLY_MESSAGE
357#define USE_LOGGER_UART_SELECTION_USB_CDC
358#define USE_LOGGER_USB_CDC
359#define USE_LOGGER_WAIT_FOR_CDC
360#define USE_NRF52_DFU
361#define USE_NRF52_REG0_VOUT 5
362#define USE_NRF52_UICR_ERASE
363#define USE_SOFTDEVICE_ID 7
364#define USE_SOFTDEVICE_VERSION 1
365#define USE_ZIGBEE
366#define USE_ZIGBEE_WIPE_ON_BOOT
367#define USE_ZIGBEE_WIPE_ON_BOOT_MAGIC 1
368#define ZIGBEE_ENDPOINTS_COUNT 8
369#endif
370
371// Disabled feature flags
372// #define USE_BSEC // Requires a library with proprietary license
373// #define USE_BSEC2 // Requires a library with proprietary license
374
375#define USE_DASHBOARD_IMPORT
376
377// Default counts for static analysis
378#define CONTROLLER_REGISTRY_MAX 2
379#define ESPHOME_AREA_COUNT 10
380#define ESPHOME_COMPONENT_COUNT 50
381#define ESPHOME_DEVICE_COUNT 10
382#define ESPHOME_ENTITY_ALARM_CONTROL_PANEL_COUNT 1
383#define ESPHOME_ENTITY_BINARY_SENSOR_COUNT 1
384#define ESPHOME_ENTITY_BUTTON_COUNT 1
385#define ESPHOME_ENTITY_CLIMATE_COUNT 1
386#define ESPHOME_ENTITY_COVER_COUNT 1
387#define ESPHOME_ENTITY_DATE_COUNT 1
388#define ESPHOME_ENTITY_DATETIME_COUNT 1
389#define ESPHOME_ENTITY_EVENT_COUNT 1
390#define ESPHOME_ENTITY_FAN_COUNT 1
391#define ESPHOME_ENTITY_INFRARED_COUNT 1
392#define ESPHOME_ENTITY_LIGHT_COUNT 1
393#define ESPHOME_ENTITY_LOCK_COUNT 1
394#define ESPHOME_ENTITY_MEDIA_PLAYER_COUNT 1
395#define ESPHOME_ENTITY_NUMBER_COUNT 1
396#define ESPHOME_ENTITY_SELECT_COUNT 1
397#define ESPHOME_ENTITY_SENSOR_COUNT 1
398#define ESPHOME_ENTITY_SWITCH_COUNT 1
399#define ESPHOME_ENTITY_TEXT_COUNT 1
400#define ESPHOME_ENTITY_TEXT_SENSOR_COUNT 1
401#define ESPHOME_ENTITY_TIME_COUNT 1
402#define ESPHOME_ENTITY_UPDATE_COUNT 1
403#define ESPHOME_ENTITY_VALVE_COUNT 1
404#define ESPHOME_ENTITY_WATER_HEATER_COUNT 1
405#define ESPHOME_MAX_USB_CDC_INSTANCES 1