mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-31 23:21:54 +00:00 
			
		
		
		
	Disable SPIFFS to save flash space (#288)
This commit is contained in:
		| @@ -255,6 +255,7 @@ CONF_IDLE = 'idle' | |||||||
| CONF_NETWORKS = 'networks' | CONF_NETWORKS = 'networks' | ||||||
| CONF_INTERNAL = 'internal' | CONF_INTERNAL = 'internal' | ||||||
| CONF_BUILD_PATH = 'build_path' | CONF_BUILD_PATH = 'build_path' | ||||||
|  | CONF_PLATFORMIO_OPTIONS = 'platformio_options' | ||||||
| CONF_REBOOT_TIMEOUT = 'reboot_timeout' | CONF_REBOOT_TIMEOUT = 'reboot_timeout' | ||||||
| CONF_INVERT = 'invert' | CONF_INVERT = 'invert' | ||||||
| CONF_DELAYED_ON = 'delayed_on' | CONF_DELAYED_ON = 'delayed_on' | ||||||
|   | |||||||
| @@ -11,7 +11,7 @@ from esphomeyaml.const import ARDUINO_VERSION_ESP32_DEV, ARDUINO_VERSION_ESP8266 | |||||||
|     CONF_COMMIT, CONF_ESPHOMELIB_VERSION, CONF_ESPHOMEYAML, CONF_LOCAL, CONF_NAME, CONF_ON_BOOT, \ |     CONF_COMMIT, CONF_ESPHOMELIB_VERSION, CONF_ESPHOMEYAML, CONF_LOCAL, CONF_NAME, CONF_ON_BOOT, \ | ||||||
|     CONF_ON_LOOP, CONF_ON_SHUTDOWN, CONF_PLATFORM, CONF_PRIORITY, CONF_REPOSITORY, CONF_TAG, \ |     CONF_ON_LOOP, CONF_ON_SHUTDOWN, CONF_PLATFORM, CONF_PRIORITY, CONF_REPOSITORY, CONF_TAG, \ | ||||||
|     CONF_TRIGGER_ID, CONF_USE_CUSTOM_CODE, ESPHOMELIB_VERSION, ESP_PLATFORM_ESP32, \ |     CONF_TRIGGER_ID, CONF_USE_CUSTOM_CODE, ESPHOMELIB_VERSION, ESP_PLATFORM_ESP32, \ | ||||||
|     ESP_PLATFORM_ESP8266, CONF_LIBRARIES, CONF_INCLUDES |     ESP_PLATFORM_ESP8266, CONF_LIBRARIES, CONF_INCLUDES, CONF_PLATFORMIO_OPTIONS | ||||||
| from esphomeyaml.core import CORE, EsphomeyamlError | from esphomeyaml.core import CORE, EsphomeyamlError | ||||||
| from esphomeyaml.cpp_generator import Pvariable, RawExpression, add | from esphomeyaml.cpp_generator import Pvariable, RawExpression, add | ||||||
| from esphomeyaml.cpp_types import App, NoArg, const_char_ptr, esphomelib_ns | from esphomeyaml.cpp_types import App, NoArg, const_char_ptr, esphomelib_ns | ||||||
| @@ -163,6 +163,9 @@ CONFIG_SCHEMA = vol.Schema({ | |||||||
|     vol.Optional(CONF_ARDUINO_VERSION, default='recommended'): validate_arduino_version, |     vol.Optional(CONF_ARDUINO_VERSION, default='recommended'): validate_arduino_version, | ||||||
|     vol.Optional(CONF_USE_CUSTOM_CODE, default=False): cv.boolean, |     vol.Optional(CONF_USE_CUSTOM_CODE, default=False): cv.boolean, | ||||||
|     vol.Optional(CONF_BUILD_PATH, default=default_build_path): cv.string, |     vol.Optional(CONF_BUILD_PATH, default=default_build_path): cv.string, | ||||||
|  |     vol.Optional(CONF_PLATFORMIO_OPTIONS): vol.Schema({ | ||||||
|  |         cv.string_strict: vol.Any([cv.string], cv.string), | ||||||
|  |     }), | ||||||
|  |  | ||||||
|     vol.Optional(CONF_BOARD_FLASH_MODE): cv.one_of(*BUILD_FLASH_MODES, lower=True), |     vol.Optional(CONF_BOARD_FLASH_MODE): cv.one_of(*BUILD_FLASH_MODES, lower=True), | ||||||
|     vol.Optional(CONF_ON_BOOT): automation.validate_automation({ |     vol.Optional(CONF_ON_BOOT): automation.validate_automation({ | ||||||
|   | |||||||
| @@ -1,3 +1,5 @@ | |||||||
|  | from __future__ import division | ||||||
|  |  | ||||||
| import logging | import logging | ||||||
|  |  | ||||||
| import voluptuous as vol | import voluptuous as vol | ||||||
| @@ -57,6 +59,58 @@ ESP8266_BOARD_PINS = { | |||||||
|     'xinabox_cw01': {'SDA': 2, 'SCL': 14, 'LED': 5, 'LED_RED': 12, 'LED_GREEN': 13} |     'xinabox_cw01': {'SDA': 2, 'SCL': 14, 'LED': 5, 'LED_RED': 12, 'LED_GREEN': 13} | ||||||
| } | } | ||||||
|  |  | ||||||
|  | FLASH_SIZE_1_MB = 2**20 | ||||||
|  | FLASH_SIZE_512_KB = FLASH_SIZE_1_MB // 2 | ||||||
|  | FLASH_SIZE_2_MB = 2 * FLASH_SIZE_1_MB | ||||||
|  | FLASH_SIZE_4_MB = 4 * FLASH_SIZE_1_MB | ||||||
|  | FLASH_SIZE_16_MB = 4 * FLASH_SIZE_1_MB | ||||||
|  |  | ||||||
|  | ESP8266_FLASH_SIZES = { | ||||||
|  |     'd1': FLASH_SIZE_4_MB, | ||||||
|  |     'd1_mini': FLASH_SIZE_4_MB, | ||||||
|  |     'd1_mini_lite': FLASH_SIZE_1_MB, | ||||||
|  |     'd1_mini_pro': FLASH_SIZE_16_MB, | ||||||
|  |     'esp01': FLASH_SIZE_512_KB, | ||||||
|  |     'esp01_1m': FLASH_SIZE_1_MB, | ||||||
|  |     'esp07': FLASH_SIZE_4_MB, | ||||||
|  |     'esp12e': FLASH_SIZE_4_MB, | ||||||
|  |     'esp210': FLASH_SIZE_4_MB, | ||||||
|  |     'esp8285': FLASH_SIZE_1_MB, | ||||||
|  |     'esp_wroom_02': FLASH_SIZE_2_MB, | ||||||
|  |     'espduino': FLASH_SIZE_4_MB, | ||||||
|  |     'espectro': FLASH_SIZE_4_MB, | ||||||
|  |     'espino': FLASH_SIZE_4_MB, | ||||||
|  |     'espinotee': FLASH_SIZE_4_MB, | ||||||
|  |     'espresso_lite_v1': FLASH_SIZE_4_MB, | ||||||
|  |     'espresso_lite_v2': FLASH_SIZE_4_MB, | ||||||
|  |     'gen4iod': FLASH_SIZE_512_KB, | ||||||
|  |     'heltec_wifi_kit_8': FLASH_SIZE_4_MB, | ||||||
|  |     'huzzah': FLASH_SIZE_4_MB, | ||||||
|  |     'modwifi': FLASH_SIZE_2_MB, | ||||||
|  |     'nodemcu': FLASH_SIZE_4_MB, | ||||||
|  |     'nodemcuv2': FLASH_SIZE_4_MB, | ||||||
|  |     'oak': FLASH_SIZE_4_MB, | ||||||
|  |     'phoenix_v1': FLASH_SIZE_4_MB, | ||||||
|  |     'phoenix_v2': FLASH_SIZE_4_MB, | ||||||
|  |     'sparkfunBlynk': FLASH_SIZE_4_MB, | ||||||
|  |     'thing': FLASH_SIZE_512_KB, | ||||||
|  |     'thingdev': FLASH_SIZE_512_KB, | ||||||
|  |     'wifi_slot': FLASH_SIZE_1_MB, | ||||||
|  |     'wifiduino': FLASH_SIZE_4_MB, | ||||||
|  |     'wifinfo': FLASH_SIZE_1_MB, | ||||||
|  |     'wio_link': FLASH_SIZE_4_MB, | ||||||
|  |     'wio_node': FLASH_SIZE_4_MB, | ||||||
|  |     'xinabox_cw01': FLASH_SIZE_4_MB, | ||||||
|  | } | ||||||
|  |  | ||||||
|  | ESP8266_LD_SCRIPTS = { | ||||||
|  |     FLASH_SIZE_512_KB: ('eagle.flash.512k0.ld', 'eagle.flash.512k.ld'), | ||||||
|  |     FLASH_SIZE_1_MB: ('eagle.flash.1m0.ld', 'eagle.flash.1m.ld'), | ||||||
|  |     FLASH_SIZE_2_MB: ('eagle.flash.2m.ld', 'eagle.flash.2m.ld'), | ||||||
|  |     FLASH_SIZE_4_MB: ('eagle.flash.4m.ld', 'eagle.flash.4m.ld'), | ||||||
|  |     FLASH_SIZE_16_MB: ('eagle.flash.16m.ld', 'eagle.flash.16m14m.ld'), | ||||||
|  | } | ||||||
|  |  | ||||||
| ESP32_BASE_PINS = { | ESP32_BASE_PINS = { | ||||||
|     'TX': 1, 'RX': 3, 'SDA': 21, 'SCL': 22, 'SS': 5, 'MOSI': 23, 'MISO': 19, 'SCK': 18, 'A0': 36, |     'TX': 1, 'RX': 3, 'SDA': 21, 'SCL': 22, 'SS': 5, 'MOSI': 23, 'MISO': 19, 'SCK': 18, 'A0': 36, | ||||||
|     'A3': 39, 'A4': 32, 'A5': 33, 'A6': 34, 'A7': 35, 'A10': 4, 'A11': 0, 'A12': 2, 'A13': 15, |     'A3': 39, 'A4': 32, 'A5': 33, 'A6': 34, 'A7': 35, 'A10': 4, 'A11': 0, 'A12': 2, 'A13': 15, | ||||||
|   | |||||||
| @@ -9,11 +9,13 @@ import shutil | |||||||
|  |  | ||||||
| from esphomeyaml.config import iter_components | from esphomeyaml.config import iter_components | ||||||
| from esphomeyaml.const import ARDUINO_VERSION_ESP32_DEV, CONF_ARDUINO_VERSION, \ | from esphomeyaml.const import ARDUINO_VERSION_ESP32_DEV, CONF_ARDUINO_VERSION, \ | ||||||
|     CONF_BOARD_FLASH_MODE, CONF_BRANCH, CONF_COMMIT, CONF_ESPHOMELIB_VERSION, CONF_ESPHOMEYAML, \ |     CONF_BRANCH, CONF_COMMIT, CONF_ESPHOMELIB_VERSION, CONF_ESPHOMEYAML, \ | ||||||
|     CONF_LOCAL, CONF_REPOSITORY, CONF_TAG, CONF_USE_CUSTOM_CODE |     CONF_LOCAL, CONF_REPOSITORY, CONF_TAG, CONF_USE_CUSTOM_CODE, CONF_PLATFORMIO_OPTIONS, \ | ||||||
|  |     CONF_BOARD_FLASH_MODE, ARDUINO_VERSION_ESP8266_DEV | ||||||
| from esphomeyaml.core import CORE, EsphomeyamlError | from esphomeyaml.core import CORE, EsphomeyamlError | ||||||
| from esphomeyaml.core_config import VERSION_REGEX, LIBRARY_URI_REPO, GITHUB_ARCHIVE_ZIP | from esphomeyaml.core_config import VERSION_REGEX, LIBRARY_URI_REPO, GITHUB_ARCHIVE_ZIP | ||||||
| from esphomeyaml.helpers import mkdir_p, run_system_command | from esphomeyaml.helpers import mkdir_p, run_system_command | ||||||
|  | from esphomeyaml.pins import ESP8266_LD_SCRIPTS, ESP8266_FLASH_SIZES | ||||||
| from esphomeyaml.storage_json import StorageJSON, storage_path | from esphomeyaml.storage_json import StorageJSON, storage_path | ||||||
| from esphomeyaml.util import safe_print | from esphomeyaml.util import safe_print | ||||||
|  |  | ||||||
| @@ -54,19 +56,6 @@ upload_flags = | |||||||
|  |  | ||||||
| """) | """) | ||||||
|  |  | ||||||
| INI_CONTENT_FORMAT = u"""[env:{env}] |  | ||||||
| platform = {platform} |  | ||||||
| board = {board} |  | ||||||
| framework = arduino |  | ||||||
| lib_deps = |  | ||||||
|     {lib_deps} |  | ||||||
|     ${{common.lib_deps}} |  | ||||||
| build_flags = |  | ||||||
|     {build_flags} |  | ||||||
|     ${{common.build_flags}} |  | ||||||
| upload_speed = {upload_speed} |  | ||||||
| """ |  | ||||||
|  |  | ||||||
| UPLOAD_SPEED_OVERRIDE = { | UPLOAD_SPEED_OVERRIDE = { | ||||||
|     'esp210': 57600, |     'esp210': 57600, | ||||||
| } | } | ||||||
| @@ -241,6 +230,18 @@ def symlink_esphomelib_version(esphomelib_version): | |||||||
|             os.unlink(dst_path) |             os.unlink(dst_path) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | def format_ini(data): | ||||||
|  |     content = u'' | ||||||
|  |     for key, value in sorted(data.items()): | ||||||
|  |         if isinstance(value, (list, set, tuple)): | ||||||
|  |             content += u'{} =\n'.format(key) | ||||||
|  |             for x in value: | ||||||
|  |                 content += u'    {}\n'.format(x) | ||||||
|  |         else: | ||||||
|  |             content += u'{} = {}\n'.format(key, value) | ||||||
|  |     return content | ||||||
|  |  | ||||||
|  |  | ||||||
| def gather_lib_deps(): | def gather_lib_deps(): | ||||||
|     lib_deps = set() |     lib_deps = set() | ||||||
|     esphomelib_version = CORE.config[CONF_ESPHOMEYAML][CONF_ESPHOMELIB_VERSION] |     esphomelib_version = CORE.config[CONF_ESPHOMEYAML][CONF_ESPHOMELIB_VERSION] | ||||||
| @@ -281,7 +282,7 @@ def gather_lib_deps(): | |||||||
|             lib_deps.add('https://github.com/me-no-dev/AsyncTCP.git#idf-update') |             lib_deps.add('https://github.com/me-no-dev/AsyncTCP.git#idf-update') | ||||||
|             lib_deps.discard('AsyncTCP@1.0.1') |             lib_deps.discard('AsyncTCP@1.0.1') | ||||||
|     # avoid changing build flags order |     # avoid changing build flags order | ||||||
|     return sorted(x for x in lib_deps if x) |     return list(sorted(x for x in lib_deps if x)) | ||||||
|  |  | ||||||
|  |  | ||||||
| def gather_build_flags(): | def gather_build_flags(): | ||||||
| @@ -296,25 +297,45 @@ def gather_build_flags(): | |||||||
|     build_flags |= get_build_flags('REQUIRED_BUILD_FLAGS') |     build_flags |= get_build_flags('REQUIRED_BUILD_FLAGS') | ||||||
|  |  | ||||||
|     # avoid changing build flags order |     # avoid changing build flags order | ||||||
|     return sorted(list(build_flags)) |     return list(sorted(list(build_flags))) | ||||||
|  |  | ||||||
|  |  | ||||||
| def get_ini_content(): | def get_ini_content(): | ||||||
|     version_specific_settings = determine_platformio_version_settings() |     lib_deps = gather_lib_deps() + ['${common.lib_deps}'] | ||||||
|     lib_deps = gather_lib_deps() |     build_flags = gather_build_flags() + ['${common.build_flags}'] | ||||||
|     options = { |  | ||||||
|         u'env': CORE.name, |     if CORE.is_esp8266 and CORE.board in ESP8266_FLASH_SIZES: | ||||||
|         u'platform': CORE.config[CONF_ESPHOMEYAML][CONF_ARDUINO_VERSION], |         flash_size = ESP8266_FLASH_SIZES[CORE.board] | ||||||
|         u'board': CORE.board, |         ld_scripts = ESP8266_LD_SCRIPTS[flash_size] | ||||||
|         u'build_flags': u'\n    '.join(gather_build_flags()), |         ld_script = None | ||||||
|         u'upload_speed': UPLOAD_SPEED_OVERRIDE.get(CORE.board, 115200), |  | ||||||
|         u'lib_deps': u'\n    '.join(lib_deps), |         if CORE.arduino_version in ('espressif8266@1.8.0', 'espressif8266@1.7.3', | ||||||
|  |                                     'espressif8266@1.6.0', 'espressif8266@1.5.0'): | ||||||
|  |             ld_script = ld_scripts[0] | ||||||
|  |         elif CORE.arduino_version == ARDUINO_VERSION_ESP8266_DEV: | ||||||
|  |             ld_script = ld_scripts[1] | ||||||
|  |  | ||||||
|  |         if ld_script is not None: | ||||||
|  |             build_flags.append('-Wl,-T{}'.format(ld_script)) | ||||||
|  |  | ||||||
|  |     data = { | ||||||
|  |         'platform': CORE.config[CONF_ESPHOMEYAML][CONF_ARDUINO_VERSION], | ||||||
|  |         'board': CORE.board, | ||||||
|  |         'framework': 'arduino', | ||||||
|  |         'lib_deps': lib_deps, | ||||||
|  |         'build_flags': build_flags, | ||||||
|  |         'upload_speed': UPLOAD_SPEED_OVERRIDE.get(CORE.board, 115200), | ||||||
|     } |     } | ||||||
|     content = INI_CONTENT_FORMAT.format(**options) |  | ||||||
|     if CONF_BOARD_FLASH_MODE in CORE.config[CONF_ESPHOMEYAML]: |     if CONF_BOARD_FLASH_MODE in CORE.config[CONF_ESPHOMEYAML]: | ||||||
|         flash_mode_key = version_specific_settings['flash_mode_key'] |  | ||||||
|         flash_mode = CORE.config[CONF_ESPHOMEYAML][CONF_BOARD_FLASH_MODE] |         flash_mode = CORE.config[CONF_ESPHOMEYAML][CONF_BOARD_FLASH_MODE] | ||||||
|         content += "{} = {}\n".format(flash_mode_key, flash_mode) |         data['board_build.flash_mode'] = flash_mode | ||||||
|  |  | ||||||
|  |     data.update(CORE.config[CONF_ESPHOMEYAML].get(CONF_PLATFORMIO_OPTIONS, {})) | ||||||
|  |  | ||||||
|  |     content = u'[env:{}]\n'.format(CORE.name) | ||||||
|  |     content += format_ini(data) | ||||||
|  |  | ||||||
|     return content |     return content | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -409,19 +430,6 @@ def write_cpp(code_s): | |||||||
|         f_handle.write(full_file) |         f_handle.write(full_file) | ||||||
|  |  | ||||||
|  |  | ||||||
| def determine_platformio_version_settings(): |  | ||||||
|     import platformio |  | ||||||
|  |  | ||||||
|     settings = {} |  | ||||||
|  |  | ||||||
|     if platformio.VERSION < (3, 5, 3): |  | ||||||
|         settings['flash_mode_key'] = 'board_flash_mode' |  | ||||||
|     else: |  | ||||||
|         settings['flash_mode_key'] = 'board_build.flash_mode' |  | ||||||
|  |  | ||||||
|     return settings |  | ||||||
|  |  | ||||||
|  |  | ||||||
| def clean_build(): | def clean_build(): | ||||||
|     for directory in ('.piolibdeps', '.pioenvs'): |     for directory in ('.piolibdeps', '.pioenvs'): | ||||||
|         dir_path = CORE.relative_build_path(directory) |         dir_path = CORE.relative_build_path(directory) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user