1
0
mirror of https://github.com/esphome/esphome.git synced 2025-11-06 18:11:49 +00:00

Compare commits

...

5 Commits

Author SHA1 Message Date
Otto Winter
d3ac5bfb27 Bump version to 1.5.1 2018-05-16 22:45:06 +02:00
Otto Winter
4b9bb2b731 Initial Sonoff support 2018-05-16 19:45:33 +02:00
Otto Winter
8639eb1b27 Fix PCF8574 inverted KeyError #12 2018-05-15 11:22:55 +02:00
Otto Winter
9979ee6ddf Fix C++ String escaping fixes #11 2018-05-15 11:09:27 +02:00
Otto Winter
ee502a7aaa Bump version to 1.5.0 2018-05-14 22:10:17 +02:00
6 changed files with 42 additions and 16 deletions

View File

@@ -9,15 +9,18 @@ from voluptuous.humanize import humanize_error
import esphomeyaml.config_validation as cv
from esphomeyaml import core, yaml_util
from esphomeyaml.const import CONF_BOARD, CONF_ESPHOMEYAML, CONF_LIBRARY_URI, CONF_NAME, \
CONF_PLATFORM, CONF_SIMPLIFY, CONF_USE_BUILD_FLAGS, CONF_WIFI, ESP_PLATFORMS, \
from esphomeyaml.const import CONF_BOARD, CONF_BOARD_FLASH_MODE, CONF_ESPHOMEYAML, \
CONF_LIBRARY_URI, \
CONF_NAME, CONF_PLATFORM, CONF_SIMPLIFY, CONF_USE_BUILD_FLAGS, CONF_WIFI, ESP_PLATFORMS, \
ESP_PLATFORM_ESP32, ESP_PLATFORM_ESP8266
from esphomeyaml.core import ESPHomeYAMLError
from esphomeyaml.helpers import App, add, color
_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({
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_SIMPLIFY, 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 = [

View File

@@ -1,8 +1,8 @@
"""Constants used by esphomeyaml."""
MAJOR_VERSION = 1
MINOR_VERSION = 4
PATCH_VERSION = '0'
MINOR_VERSION = 5
PATCH_VERSION = '1'
__short_version__ = '{}.{}'.format(MAJOR_VERSION, MINOR_VERSION)
__version__ = '{}.{}'.format(__short_version__, PATCH_VERSION)
@@ -185,6 +185,7 @@ CONF_DATA_PIN = 'data_pin'
CONF_CLOCK_PIN = 'clock_pin'
CONF_RGB_ORDER = 'rgb_order'
CONF_ACCURACY = 'accuracy'
CONF_BOARD_FLASH_MODE = 'board_flash_mode'
ESP32_BOARDS = [
'featheresp32', 'node32s', 'espea32', 'firebeetle32', 'esp32doit-devkit-v1',

View File

@@ -7,8 +7,8 @@ from collections import OrderedDict, deque
from esphomeyaml import core
from esphomeyaml.const import CONF_AVAILABILITY, CONF_COMMAND_TOPIC, CONF_DISCOVERY, \
CONF_INVERTED, \
CONF_MODE, CONF_NUMBER, CONF_PAYLOAD_AVAILABLE, CONF_PAYLOAD_NOT_AVAILABLE, CONF_RETAIN, \
CONF_STATE_TOPIC, CONF_TOPIC, CONF_PCF8574
CONF_MODE, CONF_NUMBER, CONF_PAYLOAD_AVAILABLE, CONF_PAYLOAD_NOT_AVAILABLE, CONF_PCF8574, \
CONF_RETAIN, CONF_STATE_TOPIC, CONF_TOPIC
from esphomeyaml.core import ESPHomeYAMLError, HexInt, TimePeriodMicroseconds, \
TimePeriodMilliseconds, TimePeriodSeconds
@@ -185,13 +185,26 @@ class Literal(Expression):
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):
def __init__(self, string):
super(StringLiteral, self).__init__()
self.string = string
def __str__(self):
return u'"{}"'.format(self.string)
return u'{}'.format(cpp_string_escape(self.string))
class IntLiteral(Literal):

View File

@@ -180,7 +180,7 @@ def pin_mode(value):
PCF8574_OUTPUT_PIN_SCHEMA = vol.Schema({
vol.Required(CONF_PCF8574): cv.variable_id,
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({

View File

@@ -8,7 +8,8 @@ import voluptuous as vol
import esphomeyaml.config_validation as cv
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
@@ -141,10 +142,10 @@ def wizard(path):
print("Great! Your node is now called \"{}\".".format(color('cyan', name)))
sleep(1)
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.")
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:
sleep(0.5)
print()
@@ -168,6 +169,8 @@ def wizard(path):
print("Next, I need to know what " + color('green', 'board') + " you're using.")
sleep(0.5)
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()
# Don't sleep because user needs to copy link
if platform == ESP_PLATFORM_ESP32:
@@ -217,7 +220,7 @@ def wizard(path):
sleep(0.75)
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("For example \"{}\"".format(color('bold_white', 'PASSWORD42')))
sleep(0.5)

View File

@@ -6,8 +6,9 @@ import os
from esphomeyaml import core
from esphomeyaml.config import iter_components
from esphomeyaml.const import CONF_BOARD, CONF_ESPHOMEYAML, CONF_LIBRARY_URI, CONF_NAME, \
CONF_PLATFORM, CONF_USE_BUILD_FLAGS, ESP_PLATFORM_ESP32, ESP_PLATFORM_ESP8266
from esphomeyaml.const import CONF_BOARD, CONF_BOARD_FLASH_MODE, CONF_ESPHOMEYAML, \
CONF_LIBRARY_URI, \
CONF_NAME, CONF_PLATFORM, CONF_USE_BUILD_FLAGS, ESP_PLATFORM_ESP32, ESP_PLATFORM_ESP8266
from esphomeyaml.core import ESPHomeYAMLError
CPP_AUTO_GENERATE_BEGIN = u'// ========== AUTO GENERATED CODE BEGIN ==========='
@@ -116,7 +117,11 @@ def get_ini_content(config):
if 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):