1
0
mirror of https://github.com/esphome/esphome.git synced 2025-06-18 06:15:46 +01:00

ESP-IDF support and generic target platforms ()

* 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:
Otto Winter
2021-09-20 11:47:51 +02:00
committed by GitHub
parent 1e8e471dec
commit ac0d921413
583 changed files with 9008 additions and 5420 deletions
.github/workflows
.gitignoreCODEOWNERS
esphome
__main__.pycodegen.py
components
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
endstop
esp32
esp32_ble
esp32_ble_beacon
esp32_ble_server
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
http_request
htu21d
hx711
i2c
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
mpr121
mqtt
mqtt_subscribe
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
uln2003
ultrasonic
uptime
vl53l0x
web_server
web_server_base
wifi
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
config.pyconfig_validation.pyconst.py
core
cpp_generator.pycpp_helpers.pycpp_types.py
dashboard
final_validate.pyhelpers.pyloader.pypins.pyplatformio_api.pystorage_json.pywizard.pywriter.py
platformio.inirequirements.txt
script
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())