ESPHome 2025.12.5
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
18// Default threading model for static analysis (ESP32 is multi-threaded with atomics)
19#define ESPHOME_THREAD_MULTI_ATOMICS
20
21// logger
22#define ESPHOME_LOG_LEVEL ESPHOME_LOG_LEVEL_VERY_VERBOSE
23
24// Feature flags
25#define USE_ALARM_CONTROL_PANEL
26#define USE_AREAS
27#define USE_BINARY_SENSOR
28#define USE_BUTTON
29#define USE_CAMERA
30#define USE_CLIMATE
31#define USE_CONTROLLER_REGISTRY
32#define USE_COVER
33#define USE_DATETIME
34#define USE_DATETIME_DATE
35#define USE_DATETIME_DATETIME
36#define USE_DATETIME_TIME
37#define USE_DEBUG
38#define USE_DEEP_SLEEP
39#define USE_DEVICES
40#define USE_DISPLAY
41#define USE_ENTITY_ICON
42#define USE_ESP32_IMPROV_STATE_CALLBACK
43#define USE_EVENT
44#define USE_FAN
45#define USE_GRAPH
46#define USE_GRAPHICAL_DISPLAY_MENU
47#define USE_HOMEASSISTANT_TIME
48#define USE_HTTP_REQUEST_OTA_WATCHDOG_TIMEOUT 8000 // NOLINT
49#define USE_IMAGE
50#define USE_IMPROV_SERIAL_NEXT_URL
51#define USE_JSON
52#define USE_LIGHT
53#define USE_LOCK
54#define USE_LOGGER
55#define USE_LOGGER_LEVEL_LISTENERS
56#define USE_LOGGER_RUNTIME_TAG_LEVELS
57#define USE_LVGL
58#define USE_LVGL_ANIMIMG
59#define USE_LVGL_ARC
60#define USE_LVGL_BINARY_SENSOR
61#define USE_LVGL_BUTTON
62#define USE_LVGL_BUTTONMATRIX
63#define USE_LVGL_CANVAS
64#define USE_LVGL_CHART
65#define USE_LVGL_CHECKBOX
66#define USE_LVGL_DROPDOWN
67#define USE_LVGL_FONT
68#define USE_LVGL_IMAGE
69#define USE_LVGL_IMAGEBUTTON
70#define USE_LVGL_KEY_LISTENER
71#define USE_LVGL_KEYBOARD
72#define USE_LVGL_LABEL
73#define USE_LVGL_LINE
74#define USE_LVGL_LIST
75#define USE_LVGL_MENU
76#define USE_LVGL_METER
77#define USE_LVGL_MSGBOX
78#define USE_LVGL_ROLLER
79#define USE_LVGL_ROTARY_ENCODER
80#define USE_LVGL_SLIDER
81#define USE_LVGL_SPAN
82#define USE_LVGL_SPINBOX
83#define USE_LVGL_SPINNER
84#define USE_LVGL_SWITCH
85#define USE_LVGL_TABLE
86#define USE_LVGL_TABVIEW
87#define USE_LVGL_TEXTAREA
88#define USE_LVGL_TILEVIEW
89#define USE_LVGL_TOUCHSCREEN
90#define USE_MDNS
91#define USE_MDNS_STORE_SERVICES
92#define MDNS_SERVICE_COUNT 3
93#define USE_MDNS_DYNAMIC_TXT
94#define MDNS_DYNAMIC_TXT_COUNT 2
95#define SNTP_SERVER_COUNT 3
96#define USE_MEDIA_PLAYER
97#define USE_NEXTION_TFT_UPLOAD
98#define USE_NUMBER
99#define USE_OUTPUT
100#define USE_POWER_SUPPLY
101#define USE_QR_CODE
102#define USE_SELECT
103#define USE_SENSOR
104#define USE_STATUS_LED
105#define USE_STATUS_SENSOR
106#define USE_SWITCH
107#define USE_TEXT
108#define USE_TEXT_SENSOR
109#define USE_TIME
110#define USE_TOUCHSCREEN
111#define USE_UART_DEBUGGER
112#define USE_UART_WAKE_LOOP_ON_RX
113#define USE_UPDATE
114#define USE_VALVE
115#define USE_ZWAVE_PROXY
116
117// Feature flags which do not work for zephyr
118#ifndef USE_ZEPHYR
119#define USE_AUDIO_DAC
120#define USE_AUDIO_FLAC_SUPPORT
121#define USE_AUDIO_MP3_SUPPORT
122#define USE_API
123#define USE_API_CLIENT_CONNECTED_TRIGGER
124#define USE_API_CLIENT_DISCONNECTED_TRIGGER
125#define USE_API_HOMEASSISTANT_ACTION_RESPONSES
126#define USE_API_HOMEASSISTANT_ACTION_RESPONSES_JSON
127#define USE_API_HOMEASSISTANT_SERVICES
128#define USE_API_HOMEASSISTANT_STATES
129#define USE_API_NOISE
130#define USE_API_PLAINTEXT
131#define USE_API_USER_DEFINED_ACTIONS
132#define USE_API_CUSTOM_SERVICES
133#define USE_API_USER_DEFINED_ACTION_RESPONSES
134#define USE_API_USER_DEFINED_ACTION_RESPONSES_JSON
135#define API_MAX_SEND_QUEUE 8
136#define USE_MD5
137#define USE_SHA256
138#define USE_MQTT
139#define USE_NETWORK
140#define USE_ONLINE_IMAGE_BMP_SUPPORT
141#define USE_ONLINE_IMAGE_PNG_SUPPORT
142#define USE_ONLINE_IMAGE_JPEG_SUPPORT
143#define USE_OTA
144#define USE_OTA_MD5
145#define USE_OTA_PASSWORD
146#define USE_OTA_SHA256
147#define ALLOW_OTA_DOWNGRADE_MD5
148#define USE_OTA_STATE_CALLBACK
149#define USE_OTA_VERSION 2
150#define USE_TIME_TIMEZONE
151#define USE_WIFI
152#define USE_WIFI_AP
153#define USE_WIFI_MANUAL_IP
154#define USE_WIREGUARD
155#endif
156
157// Arduino-specific feature flags
158#ifdef USE_ARDUINO
159#define USE_PROMETHEUS
160#define USE_WIFI_WPA2_EAP
161#define USE_I2S_LEGACY
162#endif
163
164// IDF-specific feature flags
165#ifdef USE_ESP_IDF
166#define USE_MQTT_IDF_ENQUEUE
167#define ESPHOME_LOOP_TASK_STACK_SIZE 8192
168#endif
169
170// ESP32-specific feature flags
171#ifdef USE_ESP32
172#define USE_ESPHOME_TASK_LOG_BUFFER
173
174#define USE_BLUETOOTH_PROXY
175#define BLUETOOTH_PROXY_MAX_CONNECTIONS 3
176#define BLUETOOTH_PROXY_ADVERTISEMENT_BATCH_SIZE 16
177#define USE_CAPTIVE_PORTAL
178#define USE_ESP32_BLE
179#define USE_ESP32_BLE_MAX_CONNECTIONS 3
180#define USE_ESP32_BLE_CLIENT
181#define USE_ESP32_BLE_DEVICE
182#define USE_ESP32_BLE_SERVER
183#define USE_ESP32_BLE_UUID
184#define USE_ESP32_BLE_ADVERTISING
185#define USE_ESP32_BLE_SERVER_SET_VALUE_ACTION
186#define USE_ESP32_BLE_SERVER_DESCRIPTOR_SET_VALUE_ACTION
187#define USE_ESP32_BLE_SERVER_NOTIFY_ACTION
188#define USE_ESP32_BLE_SERVER_CHARACTERISTIC_ON_WRITE
189#define USE_ESP32_BLE_SERVER_DESCRIPTOR_ON_WRITE
190#define USE_ESP32_BLE_SERVER_ON_CONNECT
191#define USE_ESP32_BLE_SERVER_ON_DISCONNECT
192#define ESPHOME_ESP32_BLE_TRACKER_LISTENER_COUNT 1
193#define ESPHOME_ESP32_BLE_TRACKER_CLIENT_COUNT 1
194#define ESPHOME_ESP32_BLE_GAP_EVENT_HANDLER_COUNT 2
195#define ESPHOME_ESP32_BLE_GAP_SCAN_EVENT_HANDLER_COUNT 1
196#define ESPHOME_ESP32_BLE_GATTC_EVENT_HANDLER_COUNT 1
197#define ESPHOME_ESP32_BLE_GATTS_EVENT_HANDLER_COUNT 1
198#define ESPHOME_ESP32_BLE_BLE_STATUS_EVENT_HANDLER_COUNT 2
199#define USE_ESP32_CAMERA_JPEG_ENCODER
200#define USE_HTTP_REQUEST_RESPONSE
201#define USE_I2C
202#define USE_IMPROV
203#define USE_ESP32_IMPROV_NEXT_URL
204#define USE_MICROPHONE
205#define USE_PSRAM
206#define USE_SOCKET_IMPL_BSD_SOCKETS
207#define USE_SOCKET_SELECT_SUPPORT
208#define USE_WAKE_LOOP_THREADSAFE
209#define USE_SPEAKER
210#define USE_SPI
211#define USE_VOICE_ASSISTANT
212#define USE_WEBSERVER
213#define USE_WEBSERVER_AUTH
214#define USE_WEBSERVER_OTA
215#define USE_WEBSERVER_PORT 80 // NOLINT
216#define USE_WEBSERVER_SORTING
217#define USE_WIFI_11KV_SUPPORT
218#define USE_WIFI_FAST_CONNECT
219#define USE_WIFI_LISTENERS
220#define USE_WIFI_RUNTIME_POWER_SAVE
221#define USB_HOST_MAX_REQUESTS 16
222
223#ifdef USE_ARDUINO
224#define USE_ARDUINO_VERSION_CODE VERSION_CODE(3, 3, 2)
225#define USE_ETHERNET
226#define USE_ETHERNET_KSZ8081
227#define USE_ETHERNET_MANUAL_IP
228#endif
229
230#ifdef USE_ESP_IDF
231#define USE_MICRO_WAKE_WORD
232#define USE_MICRO_WAKE_WORD_VAD
233#if defined(USE_ESP32_VARIANT_ESP32C6) || defined(USE_ESP32_VARIANT_ESP32H2)
234#define USE_OPENTHREAD
235#endif
236#endif
237
238#if defined(USE_ESP32_VARIANT_ESP32S2)
239#define USE_LOGGER_USB_CDC
240#elif defined(USE_ESP32_VARIANT_ESP32C3) || defined(USE_ESP32_VARIANT_ESP32C5) || \
241 defined(USE_ESP32_VARIANT_ESP32C6) || defined(USE_ESP32_VARIANT_ESP32C61) || defined(USE_ESP32_VARIANT_ESP32H2) || \
242 defined(USE_ESP32_VARIANT_ESP32P4) || defined(USE_ESP32_VARIANT_ESP32S3)
243#define USE_LOGGER_USB_CDC
244#define USE_LOGGER_USB_SERIAL_JTAG
245#endif
246#endif
247
248// ESP8266-specific feature flags
249#ifdef USE_ESP8266
250#define USE_ADC_SENSOR_VCC
251#define USE_ARDUINO_VERSION_CODE VERSION_CODE(3, 1, 2)
252#define USE_CAPTIVE_PORTAL
253#define USE_ESP8266_PREFERENCES_FLASH
254#define USE_HTTP_REQUEST_ESP8266_HTTPS
255#define USE_HTTP_REQUEST_RESPONSE
256#define USE_I2C
257#define USE_SOCKET_IMPL_LWIP_TCP
258
259#define USE_SPI
260
261// Dummy firmware payload for shelly_dimmer
262#define USE_SHD_FIRMWARE_MAJOR_VERSION 56
263#define USE_SHD_FIRMWARE_MINOR_VERSION 5
264// clang-format off
265#define USE_SHD_FIRMWARE_DATA \
266 {}
267// clang-format on
268
269#define USE_WEBSERVER
270#define USE_WEBSERVER_AUTH
271#define USE_WEBSERVER_PORT 80 // NOLINT
272#endif
273
274#ifdef USE_RP2040
275#define USE_ARDUINO_VERSION_CODE VERSION_CODE(3, 3, 0)
276#define USE_HTTP_REQUEST_RESPONSE
277#define USE_I2C
278#define USE_LOGGER_USB_CDC
279#define USE_SOCKET_IMPL_LWIP_TCP
280#define USE_SPI
281#endif
282
283#ifdef USE_LIBRETINY
284#define USE_CAPTIVE_PORTAL
285#define USE_SOCKET_IMPL_LWIP_SOCKETS
286#define USE_SOCKET_SELECT_SUPPORT
287#define USE_WEBSERVER
288#define USE_WEBSERVER_AUTH
289#define USE_WEBSERVER_PORT 80 // NOLINT
290#endif
291
292#ifdef USE_HOST
293#define USE_HTTP_REQUEST_RESPONSE
294#define USE_SOCKET_IMPL_BSD_SOCKETS
295#define USE_SOCKET_SELECT_SUPPORT
296#endif
297
298#ifdef USE_NRF52
299#define USE_NRF52_DFU
300#define USE_NRF52_REG0_VOUT 5
301#define USE_NRF52_UICR_ERASE
302#define USE_SOFTDEVICE_ID 7
303#define USE_SOFTDEVICE_VERSION 1
304#endif
305
306// Disabled feature flags
307// #define USE_BSEC // Requires a library with proprietary license
308// #define USE_BSEC2 // Requires a library with proprietary license
309
310#define USE_DASHBOARD_IMPORT
311
312// Default counts for static analysis
313#define CONTROLLER_REGISTRY_MAX 2
314#define ESPHOME_COMPONENT_COUNT 50
315#define ESPHOME_DEVICE_COUNT 10
316#define ESPHOME_AREA_COUNT 10
317#define ESPHOME_ENTITY_ALARM_CONTROL_PANEL_COUNT 1
318#define ESPHOME_ENTITY_BINARY_SENSOR_COUNT 1
319#define ESPHOME_ENTITY_BUTTON_COUNT 1
320#define ESPHOME_ENTITY_CLIMATE_COUNT 1
321#define ESPHOME_ENTITY_COVER_COUNT 1
322#define ESPHOME_ENTITY_DATE_COUNT 1
323#define ESPHOME_ENTITY_DATETIME_COUNT 1
324#define ESPHOME_ENTITY_EVENT_COUNT 1
325#define ESPHOME_ENTITY_FAN_COUNT 1
326#define ESPHOME_ENTITY_LIGHT_COUNT 1
327#define ESPHOME_ENTITY_LOCK_COUNT 1
328#define ESPHOME_ENTITY_MEDIA_PLAYER_COUNT 1
329#define ESPHOME_ENTITY_NUMBER_COUNT 1
330#define ESPHOME_ENTITY_SELECT_COUNT 1
331#define ESPHOME_ENTITY_SENSOR_COUNT 1
332#define ESPHOME_ENTITY_SWITCH_COUNT 1
333#define ESPHOME_ENTITY_TEXT_COUNT 1
334#define ESPHOME_ENTITY_TEXT_SENSOR_COUNT 1
335#define ESPHOME_ENTITY_TIME_COUNT 1
336#define ESPHOME_ENTITY_UPDATE_COUNT 1
337#define ESPHOME_ENTITY_VALVE_COUNT 1