mirror of
https://github.com/esphome/esphome.git
synced 2025-06-18 06:15:46 +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
@ -112,15 +112,36 @@ def git_ls_files(patterns=None):
|
||||
return {s[3].strip(): int(s[0]) for s in lines}
|
||||
|
||||
|
||||
IDF_TIDY_SDKCONFIG = """\
|
||||
CONFIG_BT_ENABLED=y
|
||||
"""
|
||||
|
||||
|
||||
def load_idedata(environment):
|
||||
platformio_ini = Path(root_path) / "platformio.ini"
|
||||
temp_idedata = Path(temp_folder) / f"idedata-{environment}.json"
|
||||
changed = False
|
||||
if not platformio_ini.is_file() or not temp_idedata.is_file():
|
||||
changed = True
|
||||
elif platformio_ini.stat().st_mtime >= temp_idedata.stat().st_mtime:
|
||||
changed = True
|
||||
else:
|
||||
changed = False
|
||||
|
||||
if environment == "esp32-idf-tidy":
|
||||
# sdkconfig needs to be written before idedata is run
|
||||
# but the file is also modified by the build process, so
|
||||
# store a temp file to keep track of the
|
||||
|
||||
sdk_internal = Path(temp_folder) / f"{environment}-internal-sdkconfig"
|
||||
sdkconfig = Path(root_path) / f"sdkconfig.{environment}"
|
||||
if (
|
||||
changed
|
||||
or not sdk_internal.is_file()
|
||||
or sdk_internal.read_text() != IDF_TIDY_SDKCONFIG
|
||||
):
|
||||
changed = True
|
||||
sdkconfig.write_text(IDF_TIDY_SDKCONFIG)
|
||||
sdk_internal.parent.mkdir(exist_ok=True)
|
||||
sdk_internal.write_text(IDF_TIDY_SDKCONFIG)
|
||||
|
||||
if not changed:
|
||||
return json.loads(temp_idedata.read_text())
|
||||
|
Reference in New Issue
Block a user