mirror of
https://github.com/esphome/esphome.git
synced 2025-11-12 12:55:46 +00:00
Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f18f8444c7 | ||
|
|
10607f2a51 | ||
|
|
d3ac5bfb27 | ||
|
|
4b9bb2b731 | ||
|
|
8639eb1b27 | ||
|
|
9979ee6ddf | ||
|
|
ee502a7aaa |
@@ -9,15 +9,18 @@ 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
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
DEFAULT_LIBRARY_URI = u'https://github.com/OttoWinter/esphomelib.git#v1.4.0'
|
DEFAULT_LIBRARY_URI = u'https://github.com/OttoWinter/esphomelib.git#v1.5.1'
|
||||||
|
|
||||||
|
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,
|
||||||
@@ -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 = [
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
"""Constants used by esphomeyaml."""
|
"""Constants used by esphomeyaml."""
|
||||||
|
|
||||||
MAJOR_VERSION = 1
|
MAJOR_VERSION = 1
|
||||||
MINOR_VERSION = 4
|
MINOR_VERSION = 5
|
||||||
PATCH_VERSION = '0'
|
PATCH_VERSION = '2'
|
||||||
__short_version__ = '{}.{}'.format(MAJOR_VERSION, MINOR_VERSION)
|
__short_version__ = '{}.{}'.format(MAJOR_VERSION, MINOR_VERSION)
|
||||||
__version__ = '{}.{}'.format(__short_version__, PATCH_VERSION)
|
__version__ = '{}.{}'.format(__short_version__, PATCH_VERSION)
|
||||||
|
|
||||||
@@ -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',
|
||||||
|
|||||||
@@ -7,8 +7,8 @@ from collections import OrderedDict, deque
|
|||||||
from esphomeyaml import core
|
from esphomeyaml import core
|
||||||
from esphomeyaml.const import CONF_AVAILABILITY, CONF_COMMAND_TOPIC, CONF_DISCOVERY, \
|
from esphomeyaml.const import CONF_AVAILABILITY, CONF_COMMAND_TOPIC, CONF_DISCOVERY, \
|
||||||
CONF_INVERTED, \
|
CONF_INVERTED, \
|
||||||
CONF_MODE, CONF_NUMBER, CONF_PAYLOAD_AVAILABLE, CONF_PAYLOAD_NOT_AVAILABLE, CONF_RETAIN, \
|
CONF_MODE, CONF_NUMBER, CONF_PAYLOAD_AVAILABLE, CONF_PAYLOAD_NOT_AVAILABLE, CONF_PCF8574, \
|
||||||
CONF_STATE_TOPIC, CONF_TOPIC, CONF_PCF8574
|
CONF_RETAIN, CONF_STATE_TOPIC, CONF_TOPIC
|
||||||
from esphomeyaml.core import ESPHomeYAMLError, HexInt, TimePeriodMicroseconds, \
|
from esphomeyaml.core import ESPHomeYAMLError, HexInt, TimePeriodMicroseconds, \
|
||||||
TimePeriodMilliseconds, TimePeriodSeconds
|
TimePeriodMilliseconds, TimePeriodSeconds
|
||||||
|
|
||||||
@@ -185,13 +185,26 @@ class Literal(Expression):
|
|||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
|
|
||||||
|
# From https://stackoverflow.com/a/14945195/8924614
|
||||||
|
def cpp_string_escape(s, encoding='utf-8'):
|
||||||
|
if isinstance(s, unicode):
|
||||||
|
s = s.encode(encoding)
|
||||||
|
result = ''
|
||||||
|
for c in s:
|
||||||
|
if not (32 <= ord(c) < 127) or c in ('\\', '"'):
|
||||||
|
result += '\\%03o' % ord(c)
|
||||||
|
else:
|
||||||
|
result += c
|
||||||
|
return '"' + result + '"'
|
||||||
|
|
||||||
|
|
||||||
class StringLiteral(Literal):
|
class StringLiteral(Literal):
|
||||||
def __init__(self, string):
|
def __init__(self, string):
|
||||||
super(StringLiteral, self).__init__()
|
super(StringLiteral, self).__init__()
|
||||||
self.string = string
|
self.string = string
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return u'"{}"'.format(self.string)
|
return u'{}'.format(cpp_string_escape(self.string))
|
||||||
|
|
||||||
|
|
||||||
class IntLiteral(Literal):
|
class IntLiteral(Literal):
|
||||||
@@ -411,7 +424,7 @@ def exp_gpio_pin_(obj, conf, default_mode):
|
|||||||
raise ESPHomeYAMLError(u"Unknown default mode {}".format(default_mode))
|
raise ESPHomeYAMLError(u"Unknown default mode {}".format(default_mode))
|
||||||
|
|
||||||
if conf.get(CONF_INVERTED) is None:
|
if conf.get(CONF_INVERTED) is None:
|
||||||
return obj(conf[CONF_NUMBER], conf.get(CONF_MODE))
|
return obj(conf[CONF_NUMBER], RawExpression(conf.get(CONF_MODE, default_mode)))
|
||||||
return obj(conf[CONF_NUMBER], RawExpression(conf.get(CONF_MODE, default_mode)),
|
return obj(conf[CONF_NUMBER], RawExpression(conf.get(CONF_MODE, default_mode)),
|
||||||
conf[CONF_INVERTED])
|
conf[CONF_INVERTED])
|
||||||
|
|
||||||
|
|||||||
@@ -180,7 +180,7 @@ def pin_mode(value):
|
|||||||
PCF8574_OUTPUT_PIN_SCHEMA = vol.Schema({
|
PCF8574_OUTPUT_PIN_SCHEMA = vol.Schema({
|
||||||
vol.Required(CONF_PCF8574): cv.variable_id,
|
vol.Required(CONF_PCF8574): cv.variable_id,
|
||||||
vol.Required(CONF_NUMBER): vol.Coerce(int),
|
vol.Required(CONF_NUMBER): vol.Coerce(int),
|
||||||
vol.Optional(CONF_INVERTED): cv.boolean,
|
vol.Optional(CONF_INVERTED, default=False): cv.boolean,
|
||||||
})
|
})
|
||||||
|
|
||||||
PCF8574_INPUT_PIN_SCHEMA = PCF8574_OUTPUT_PIN_SCHEMA.extend({
|
PCF8574_INPUT_PIN_SCHEMA = PCF8574_OUTPUT_PIN_SCHEMA.extend({
|
||||||
|
|||||||
@@ -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