mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-31 15:12:06 +00:00 
			
		
		
		
	Initial Sonoff support
This commit is contained in:
		| @@ -9,8 +9,9 @@ from voluptuous.humanize import humanize_error | |||||||
|  |  | ||||||
| import esphomeyaml.config_validation as cv | import esphomeyaml.config_validation as cv | ||||||
| from esphomeyaml import core, yaml_util | from esphomeyaml import core, yaml_util | ||||||
| from esphomeyaml.const import CONF_BOARD, CONF_ESPHOMEYAML, CONF_LIBRARY_URI, CONF_NAME, \ | from esphomeyaml.const import CONF_BOARD, CONF_BOARD_FLASH_MODE, CONF_ESPHOMEYAML, \ | ||||||
|     CONF_PLATFORM, CONF_SIMPLIFY, CONF_USE_BUILD_FLAGS, CONF_WIFI, ESP_PLATFORMS, \ |     CONF_LIBRARY_URI, \ | ||||||
|  |     CONF_NAME, CONF_PLATFORM, CONF_SIMPLIFY, CONF_USE_BUILD_FLAGS, CONF_WIFI, ESP_PLATFORMS, \ | ||||||
|     ESP_PLATFORM_ESP32, ESP_PLATFORM_ESP8266 |     ESP_PLATFORM_ESP32, ESP_PLATFORM_ESP8266 | ||||||
| from esphomeyaml.core import ESPHomeYAMLError | from esphomeyaml.core import ESPHomeYAMLError | ||||||
| from esphomeyaml.helpers import App, add, color | from esphomeyaml.helpers import App, add, color | ||||||
| @@ -19,6 +20,8 @@ _LOGGER = logging.getLogger(__name__) | |||||||
|  |  | ||||||
| DEFAULT_LIBRARY_URI = u'https://github.com/OttoWinter/esphomelib.git#v1.5.0' | DEFAULT_LIBRARY_URI = u'https://github.com/OttoWinter/esphomelib.git#v1.5.0' | ||||||
|  |  | ||||||
|  | BUILD_FLASH_MODES = ['qio', 'qout', 'dio', 'dout'] | ||||||
|  |  | ||||||
| CORE_SCHEMA = vol.Schema({ | CORE_SCHEMA = vol.Schema({ | ||||||
|     vol.Required(CONF_NAME): cv.valid_name, |     vol.Required(CONF_NAME): cv.valid_name, | ||||||
|     vol.Required(CONF_PLATFORM): cv.string, |     vol.Required(CONF_PLATFORM): cv.string, | ||||||
| @@ -26,6 +29,7 @@ CORE_SCHEMA = vol.Schema({ | |||||||
|     vol.Optional(CONF_LIBRARY_URI, default=DEFAULT_LIBRARY_URI): cv.string, |     vol.Optional(CONF_LIBRARY_URI, default=DEFAULT_LIBRARY_URI): cv.string, | ||||||
|     vol.Optional(CONF_SIMPLIFY, default=True): cv.boolean, |     vol.Optional(CONF_SIMPLIFY, default=True): cv.boolean, | ||||||
|     vol.Optional(CONF_USE_BUILD_FLAGS, default=True): cv.boolean, |     vol.Optional(CONF_USE_BUILD_FLAGS, default=True): cv.boolean, | ||||||
|  |     vol.Optional(CONF_BOARD_FLASH_MODE): vol.All(vol.Lower, vol.Any(*BUILD_FLASH_MODES)), | ||||||
| }) | }) | ||||||
|  |  | ||||||
| REQUIRED_COMPONENTS = [ | REQUIRED_COMPONENTS = [ | ||||||
|   | |||||||
| @@ -185,6 +185,7 @@ CONF_DATA_PIN = 'data_pin' | |||||||
| CONF_CLOCK_PIN = 'clock_pin' | CONF_CLOCK_PIN = 'clock_pin' | ||||||
| CONF_RGB_ORDER = 'rgb_order' | CONF_RGB_ORDER = 'rgb_order' | ||||||
| CONF_ACCURACY = 'accuracy' | CONF_ACCURACY = 'accuracy' | ||||||
|  | CONF_BOARD_FLASH_MODE = 'board_flash_mode' | ||||||
|  |  | ||||||
| ESP32_BOARDS = [ | ESP32_BOARDS = [ | ||||||
|     'featheresp32', 'node32s', 'espea32', 'firebeetle32', 'esp32doit-devkit-v1', |     'featheresp32', 'node32s', 'espea32', 'firebeetle32', 'esp32doit-devkit-v1', | ||||||
|   | |||||||
| @@ -8,7 +8,8 @@ import voluptuous as vol | |||||||
|  |  | ||||||
| import esphomeyaml.config_validation as cv | import esphomeyaml.config_validation as cv | ||||||
| from esphomeyaml.components import mqtt | from esphomeyaml.components import mqtt | ||||||
| from esphomeyaml.const import ESP_BOARDS_FOR_PLATFORM, ESP_PLATFORMS, ESP_PLATFORM_ESP32 | from esphomeyaml.const import ESP_BOARDS_FOR_PLATFORM, ESP_PLATFORMS, ESP_PLATFORM_ESP32, \ | ||||||
|  |     ESP_PLATFORM_ESP8266 | ||||||
| from esphomeyaml.helpers import color | from esphomeyaml.helpers import color | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -141,10 +142,10 @@ def wizard(path): | |||||||
|     print("Great! Your node is now called \"{}\".".format(color('cyan', name))) |     print("Great! Your node is now called \"{}\".".format(color('cyan', name))) | ||||||
|     sleep(1) |     sleep(1) | ||||||
|     print_step(2, ESP_BIG) |     print_step(2, ESP_BIG) | ||||||
|     print("Now I'd like to know which *board* you're using so that I can compile " |     print("Now I'd like to know what microcontroller you're using so that I can compile " | ||||||
|           "firmwares for it.") |           "firmwares for it.") | ||||||
|     print("Are you using an " + color('green', 'ESP32') + " or " + |     print("Are you using an " + color('green', 'ESP32') + " or " + | ||||||
|           color('green', 'ESP8266') + " based board?") |           color('green', 'ESP8266') + " platform? (Choose ESP8266 for Sonoff devices)") | ||||||
|     while True: |     while True: | ||||||
|         sleep(0.5) |         sleep(0.5) | ||||||
|         print() |         print() | ||||||
| @@ -168,6 +169,8 @@ def wizard(path): | |||||||
|     print("Next, I need to know what " + color('green', 'board') + " you're using.") |     print("Next, I need to know what " + color('green', 'board') + " you're using.") | ||||||
|     sleep(0.5) |     sleep(0.5) | ||||||
|     print("Please go to {} and choose a board.".format(color('green', board_link))) |     print("Please go to {} and choose a board.".format(color('green', board_link))) | ||||||
|  |     if platform == ESP_PLATFORM_ESP8266: | ||||||
|  |         print("(Type " + color('green', 'esp01_1m') + " for Sonoff devices)") | ||||||
|     print() |     print() | ||||||
|     # Don't sleep because user needs to copy link |     # Don't sleep because user needs to copy link | ||||||
|     if platform == ESP_PLATFORM_ESP32: |     if platform == ESP_PLATFORM_ESP32: | ||||||
| @@ -217,7 +220,7 @@ def wizard(path): | |||||||
|     sleep(0.75) |     sleep(0.75) | ||||||
|  |  | ||||||
|     print("Now please state the " + color('green', 'password') + |     print("Now please state the " + color('green', 'password') + | ||||||
|           " of the WiFi network so that I can connect to it.") |           " of the WiFi network so that I can connect to it (Leave empty for no password)") | ||||||
|     print() |     print() | ||||||
|     print("For example \"{}\"".format(color('bold_white', 'PASSWORD42'))) |     print("For example \"{}\"".format(color('bold_white', 'PASSWORD42'))) | ||||||
|     sleep(0.5) |     sleep(0.5) | ||||||
|   | |||||||
| @@ -6,8 +6,9 @@ import os | |||||||
|  |  | ||||||
| from esphomeyaml import core | from esphomeyaml import core | ||||||
| from esphomeyaml.config import iter_components | from esphomeyaml.config import iter_components | ||||||
| from esphomeyaml.const import CONF_BOARD, CONF_ESPHOMEYAML, CONF_LIBRARY_URI, CONF_NAME, \ | from esphomeyaml.const import CONF_BOARD, CONF_BOARD_FLASH_MODE, CONF_ESPHOMEYAML, \ | ||||||
|     CONF_PLATFORM, CONF_USE_BUILD_FLAGS, ESP_PLATFORM_ESP32, ESP_PLATFORM_ESP8266 |     CONF_LIBRARY_URI, \ | ||||||
|  |     CONF_NAME, CONF_PLATFORM, CONF_USE_BUILD_FLAGS, ESP_PLATFORM_ESP32, ESP_PLATFORM_ESP8266 | ||||||
| from esphomeyaml.core import ESPHomeYAMLError | from esphomeyaml.core import ESPHomeYAMLError | ||||||
|  |  | ||||||
| CPP_AUTO_GENERATE_BEGIN = u'// ========== AUTO GENERATED CODE BEGIN ===========' | CPP_AUTO_GENERATE_BEGIN = u'// ========== AUTO GENERATED CODE BEGIN ===========' | ||||||
| @@ -116,7 +117,11 @@ def get_ini_content(config): | |||||||
|     if lib_deps: |     if lib_deps: | ||||||
|         options[u'lib_deps'] = u'\n    '.join(lib_deps) |         options[u'lib_deps'] = u'\n    '.join(lib_deps) | ||||||
|  |  | ||||||
|     return INI_CONTENT_FORMAT.format(**options) |     content = INI_CONTENT_FORMAT.format(**options) | ||||||
|  |     if CONF_BOARD_FLASH_MODE in config[CONF_ESPHOMEYAML]: | ||||||
|  |         flash_mode = config[CONF_ESPHOMEYAML][CONF_BOARD_FLASH_MODE] | ||||||
|  |         content += "board_flash_mode = {}\n".format(flash_mode) | ||||||
|  |     return content | ||||||
|  |  | ||||||
|  |  | ||||||
| def mkdir_p(path): | def mkdir_p(path): | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user