mirror of
https://github.com/esphome/esphome.git
synced 2025-06-18 22:35:40 +01:00
ESP-IDF support and generic target platforms (#2303)
* Socket refactor and SSL * esp-idf temp * Fixes * Echo component and noise * Add noise API transport support * Updates * ESP-IDF * Complete * Fixes * Fixes * Versions update * New i2c APIs * Complete i2c refactor * SPI migration * Revert ESP Preferences migration, too complex for now * OTA support * Remove echo again * Remove ssl again * GPIOFlags updates * Rename esphal and ICACHE_RAM_ATTR * Make ESP32 arduino compilable again * Fix GPIO flags * Complete pin registry refactor and fixes * Fixes to make test1 compile * Remove sdkconfig file * Ignore sdkconfig file * Fixes in reviewing * Make test2 compile * Make test4 compile * Make test5 compile * Run clang-format * Fix lint errors * Use esp-idf APIs instead of btStart * Another round of fixes * Start implementing ESP8266 * Make test3 compile * Guard esp8266 code * Lint * Reformat * Fixes * Fixes v2 * more fixes * ESP-IDF tidy target * Convert ARDUINO_ARCH_ESPxx * Update WiFiSignalSensor * Update time ifdefs * OTA needs millis from hal * RestartSwitch needs delay from hal * ESP-IDF Uart * Fix OTA blank password * Allow setting sdkconfig * Fix idf partitions and allow setting sdkconfig from yaml * Re-add read/write compat APIs and fix esp8266 uart * Fix esp8266 store log strings in flash * Fix ESP32 arduino preferences not initialized * Update ifdefs * Change how sdkconfig change is detected * Add checks to ci-custom and fix them * Run clang-format * Add esp-idf clang-tidy target and fix errors * Fixes from clang-tidy idf round 2 * Fixes from compiling tests with esp-idf * Run clang-format * Switch test5.yaml to esp-idf * Implement ESP8266 Preferences * Lint * Re-do PIO package version selection a bit * Fix arduinoespressif32 package version * Fix unit tests * Lint * Lint fixes * Fix readv/writev not defined * Fix graphing component * Re-add all old options from core/config.py Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
This commit is contained in:
.github/workflows
.gitignoreCODEOWNERSesphome
__main__.pycodegen.pyconfig.pyconfig_validation.pyconst.py
platformio.inirequirements.txtcomponents
a4988
ac_dimmer
adc
ade7953
ads1115
aht10
airthings_ble
airthings_wave_plus
am2320
am43
anova
apds9960
api
as3935
as3935_i2c
async_tcp
atc_mithermometer
b_parasite
bang_bang
bh1750
binary_sensor
ble_client
ble_presence
ble_rssi
ble_scanner
bme280
bme680
bme680_bsec
bmp280
captive_portal
ccs811
climate
climate_ir
cover
ct_clamp
dallas
debug
deep_sleep
demo
dht
display
dsmr
duty_cycle
e131
__init__.pye131.cppe131.he131_addressable_light_effect.cppe131_addressable_light_effect.he131_packet.cpp
endstop
esp32
__init__.pyboards.pyconst.pycore.cppgpio.pygpio_arduino.cppgpio_arduino.hgpio_idf.cppgpio_idf.hpreferences.cpppreferences.h
esp32_ble
esp32_ble_beacon
esp32_ble_server
__init__.pyble_2901.cppble_2901.hble_2902.cppble_2902.hble_characteristic.cppble_characteristic.hble_descriptor.cppble_descriptor.hble_server.cppble_server.hble_service.cppble_service.h
esp32_ble_tracker
esp32_camera
esp32_dac
esp32_hall
esp32_improv
esp32_touch
esp8266
esp8266_pwm
ethernet
exposure_notifications
ezo
fan
fastled_base
fastled_clockless
fastled_spi
fingerprint_grow
globals
gpio
gps
graph
hdc1080
hlw8012
hm3301
abstract_aqi_calculator.haqi_calculator.haqi_calculator_factory.hcaqi_calculator.hhm3301.cpphm3301.hsensor.py
http_request
htu21d
hx711
i2c
__init__.pyi2c.cppi2c.hi2c_bus.hi2c_bus_arduino.cppi2c_bus_arduino.hi2c_bus_esp_idf.cppi2c_bus_esp_idf.h
ili9341
improv
ina219
ina226
ina3221
inkbird_ibsth1_mini
inkplate6
integration
json
lcd_base
lcd_gpio
lcd_pcf8574
ledc
light
logger
max31856
max31865
max7219
max7219digit
mcp23008
mcp23016
mcp23017
mcp23s08
mcp23s17
mcp23x08_base
mcp23x17_base
mcp23xxx_base
mcp3008
mcp4725
mcp9808
mdns
midea
adapter.cppadapter.hair_conditioner.cppair_conditioner.happliance_base.hautomations.hclimate.pymidea_ir.h
mpr121
mqtt
__init__.pycustom_mqtt_device.cppcustom_mqtt_device.hmqtt_binary_sensor.cppmqtt_binary_sensor.hmqtt_client.cppmqtt_client.hmqtt_climate.cppmqtt_climate.hmqtt_component.cppmqtt_component.hmqtt_cover.cppmqtt_cover.hmqtt_fan.cppmqtt_fan.hmqtt_light.cppmqtt_light.hmqtt_number.cppmqtt_number.hmqtt_select.cppmqtt_select.hmqtt_sensor.cppmqtt_sensor.hmqtt_switch.cppmqtt_switch.hmqtt_text_sensor.cppmqtt_text_sensor.h
mqtt_subscribe
sensor
text_sensor
ms5611
my9231
neopixelbus
network
nextion
ntc
number
ota
pca9685
pcf8574
pid
pipsolar
pmsa003i
pn532
pn532_i2c
power_supply
prometheus
pulse_counter
pulse_meter
pulse_width
pvvx_mithermometer
qmc5883l
rc522
rc522_i2c
remote_base
remote_receiver
remote_transmitter
resistance
restart
rotary_encoder
ruuvi_ble
ruuvitag
scd30
sdp3x
sensor
servo
sgp30
sgp40
sht3xd
sht4x
shtcx
shutdown
slow_pwm
sm16716
sm2135
sn74hc595
sntp
socket
spi
sps30
ssd1306_base
ssd1306_i2c
ssd1322_base
ssd1325_base
ssd1327_base
ssd1327_i2c
ssd1331_base
ssd1351_base
st7735
status
status_led
stepper
sts3x
sun
switch
sx1509
tca9548a
tcs34725
template
thermostat
time
time_based
tlc59208f
tlc5947
tm1637
tm1651
tmp102
tof10120
toshiba
total_daily_energy
tsl2591
ttp229_bsf
ttp229_lsf
tuya
tx20
uart
__init__.pyuart.cppuart.huart_component.cppuart_component.huart_component_esp32_arduino.cppuart_component_esp32_arduino.huart_component_esp8266.cppuart_component_esp8266.huart_component_esp_idf.cppuart_component_esp_idf.h
uln2003
ultrasonic
uptime
vl53l0x
web_server
web_server_base
wifi
__init__.pywifi_component.cppwifi_component.hwifi_component_esp32_arduino.cppwifi_component_esp8266.cppwifi_component_esp_idf.cpp
wifi_info
wifi_signal
wled
xiaomi_ble
xiaomi_cgd1
xiaomi_cgdk2
xiaomi_cgg1
xiaomi_cgpr1
xiaomi_gcls002
xiaomi_hhccjcy01
xiaomi_hhccpot002
xiaomi_jqjcy01ym
xiaomi_lywsd02
xiaomi_lywsd03mmc
xiaomi_lywsdcgq
xiaomi_mhoc401
xiaomi_miscale
xiaomi_miscale2
xiaomi_mjyd02yla
xiaomi_mue4094rt
xiaomi_wx08zm
zyaura
core
__init__.pyapplication.cppapplication.happlication_esp32.cppapplication_esp8266.cppcomponent.cppcomponent.hconfig.pydefines.hesphal.cppesphal.hgpio.hhal.hhelpers.cpphelpers.hlog.cpplog.hmacros.hpreferences.cpppreferences.hscheduler.cpputil.cpputil.h
cpp_generator.pycpp_helpers.pycpp_types.pydashboard
final_validate.pyhelpers.pyloader.pypins.pyplatformio_api.pystorage_json.pywizard.pywriter.pyscript
tests
component_tests
binary_sensor
unit_tests
@ -408,7 +408,6 @@ ARDUINO_FORBIDDEN_RE = r"[^\w\d](" + r"|".join(ARDUINO_FORBIDDEN) + r")\(.*"
|
||||
exclude=[
|
||||
"esphome/components/mqtt/custom_mqtt_device.h",
|
||||
"esphome/components/sun/sun.cpp",
|
||||
"esphome/core/esphal.*",
|
||||
],
|
||||
)
|
||||
def lint_no_arduino_framework_functions(fname, match):
|
||||
@ -422,6 +421,28 @@ def lint_no_arduino_framework_functions(fname, match):
|
||||
)
|
||||
|
||||
|
||||
IDF_CONVERSION_FORBIDDEN = {
|
||||
"ARDUINO_ARCH_ESP32": "USE_ESP32",
|
||||
"ARDUINO_ARCH_ESP8266": "USE_ESP8266",
|
||||
"pgm_read_byte": "progmem_read_byte",
|
||||
"ICACHE_RAM_ATTR": "IRAM_ATTR",
|
||||
"esphome/core/esphal.h": "esphome/core/hal.h",
|
||||
}
|
||||
IDF_CONVERSION_FORBIDDEN_RE = r"(" + r"|".join(IDF_CONVERSION_FORBIDDEN) + r").*"
|
||||
|
||||
|
||||
@lint_re_check(
|
||||
IDF_CONVERSION_FORBIDDEN_RE,
|
||||
include=cpp_include,
|
||||
)
|
||||
def lint_no_removed_in_idf_conversions(fname, match):
|
||||
replacement = IDF_CONVERSION_FORBIDDEN[match.group(1)]
|
||||
return (
|
||||
f"The macro {highlight(match.group(1))} can no longer be used in ESPHome directly. "
|
||||
f"Plese use {highlight(replacement)} instead."
|
||||
)
|
||||
|
||||
|
||||
@lint_re_check(
|
||||
r"[^\w\d]byte\s+[\w\d]+\s*=",
|
||||
include=cpp_include,
|
||||
@ -498,6 +519,8 @@ def lint_relative_py_import(fname):
|
||||
],
|
||||
exclude=[
|
||||
"esphome/components/socket/headers.h",
|
||||
"esphome/components/esp32/core.cpp",
|
||||
"esphome/components/esp8266/core.cpp",
|
||||
],
|
||||
)
|
||||
def lint_namespace(fname, content):
|
||||
@ -575,7 +598,7 @@ def lint_inclusive_language(fname, match):
|
||||
"esphome/components/text_sensor/text_sensor.h",
|
||||
"esphome/components/climate/climate.h",
|
||||
"esphome/core/component.h",
|
||||
"esphome/core/esphal.h",
|
||||
"esphome/core/gpio.h",
|
||||
"esphome/core/log.h",
|
||||
"tests/custom.h",
|
||||
],
|
||||
|
Reference in New Issue
Block a user