1
0
mirror of https://github.com/esphome/esphome.git synced 2025-02-13 08:28:19 +00:00
This commit is contained in:
Otto Winter 2018-11-23 23:05:20 +01:00
parent cc514526e6
commit 5fad49ec30
No known key found for this signature in database
GPG Key ID: DB66C0BE6013F97E
2 changed files with 22 additions and 20 deletions

View File

@ -49,12 +49,14 @@ MQTTJsonMessageTrigger = mqtt_ns.class_('MQTTJsonMessageTrigger',
MQTTComponent = mqtt_ns.class_('MQTTComponent', Component) MQTTComponent = mqtt_ns.class_('MQTTComponent', Component)
def validate_broker(value): def validate_config(value):
value = cv.string_strict(value) if CONF_PORT not in value:
if u':' in value: parts = value[CONF_BROKER].split(u':')
raise vol.Invalid(u"Please specify the port using the port: option") if len(parts) == 2:
if not value: value[CONF_BROKER] = parts[1]
raise vol.Invalid(u"Broker cannot be empty") value[CONF_PORT] = cv.port(parts[2])
else:
value[CONF_PORT] = 1883
return value return value
@ -65,10 +67,10 @@ def validate_fingerprint(value):
return value return value
CONFIG_SCHEMA = vol.Schema({ CONFIG_SCHEMA = vol.All(vol.Schema({
cv.GenerateID(): cv.declare_variable_id(MQTTClientComponent), cv.GenerateID(): cv.declare_variable_id(MQTTClientComponent),
vol.Required(CONF_BROKER): validate_broker, vol.Required(CONF_BROKER): cv.string_strict,
vol.Optional(CONF_PORT, default=1883): cv.port, vol.Optional(CONF_PORT): cv.port,
vol.Optional(CONF_USERNAME, default=''): cv.string, vol.Optional(CONF_USERNAME, default=''): cv.string,
vol.Optional(CONF_PASSWORD, default=''): cv.string, vol.Optional(CONF_PASSWORD, default=''): cv.string,
vol.Optional(CONF_CLIENT_ID): vol.All(cv.string, vol.Length(max=23)), vol.Optional(CONF_CLIENT_ID): vol.All(cv.string, vol.Length(max=23)),
@ -97,7 +99,7 @@ CONFIG_SCHEMA = vol.Schema({
vol.Required(CONF_TOPIC): cv.subscribe_topic, vol.Required(CONF_TOPIC): cv.subscribe_topic,
vol.Optional(CONF_QOS, default=0): cv.mqtt_qos, vol.Optional(CONF_QOS, default=0): cv.mqtt_qos,
}), }),
}) }), validate_config)
def exp_mqtt_message(config): def exp_mqtt_message(config):

View File

@ -24,7 +24,7 @@ import tornado.websocket
from esphomeyaml import const from esphomeyaml import const
from esphomeyaml.__main__ import get_serial_ports from esphomeyaml.__main__ import get_serial_ports
from esphomeyaml.helpers import run_system_command from esphomeyaml.helpers import run_system_command, mkdir_p
from esphomeyaml.storage_json import StorageJSON, ext_storage_path from esphomeyaml.storage_json import StorageJSON, ext_storage_path
from esphomeyaml.util import shlex_quote from esphomeyaml.util import shlex_quote
@ -38,7 +38,7 @@ COOKIE_SECRET = None
USING_PASSWORD = False USING_PASSWORD = False
ON_HASSIO = False ON_HASSIO = False
USING_HASSIO_AUTH = True USING_HASSIO_AUTH = True
HASSIO_MQTT_CONFIG = {} HASSIO_MQTT_CONFIG = None
# pylint: disable=abstract-method # pylint: disable=abstract-method
@ -453,10 +453,10 @@ def _get_mqtt_config_impl():
} }
req = requests.get('http://hassio/services/mqtt', headers=headers) req = requests.get('http://hassio/services/mqtt', headers=headers)
mqtt_config = req.json() mqtt_config = req.json()['data']
return { return {
'addon': mqtt_config['addon'], 'ssl': mqtt_config['ssl'],
'host': mqtt_config['host'], 'host': mqtt_config['host'] + ':' + mqtt_config['port'],
'username': mqtt_config.get('username', ''), 'username': mqtt_config.get('username', ''),
'password': mqtt_config.get('password', '') 'password': mqtt_config.get('password', '')
} }
@ -465,14 +465,14 @@ def _get_mqtt_config_impl():
def get_mqtt_config_lazy(): def get_mqtt_config_lazy():
global HASSIO_MQTT_CONFIG global HASSIO_MQTT_CONFIG
if not ON_HASSIO or HASSIO_MQTT_CONFIG is None: if not ON_HASSIO:
return None return None
if not HASSIO_MQTT_CONFIG: if HASSIO_MQTT_CONFIG is None:
try: try:
HASSIO_MQTT_CONFIG = _get_mqtt_config_impl() HASSIO_MQTT_CONFIG = _get_mqtt_config_impl()
except Exception: # pylint: disable=broad-except except Exception: # pylint: disable=broad-except
HASSIO_MQTT_CONFIG = None pass
return HASSIO_MQTT_CONFIG return HASSIO_MQTT_CONFIG
@ -486,8 +486,8 @@ def start_web_server(args):
global COOKIE_SECRET global COOKIE_SECRET
CONFIG_DIR = args.configuration CONFIG_DIR = args.configuration
if not os.path.exists(CONFIG_DIR): mkdir_p(CONFIG_DIR)
os.makedirs(CONFIG_DIR) mkdir_p(os.path.join(CONFIG_DIR, ".esphomeyaml"))
ON_HASSIO = args.hassio ON_HASSIO = args.hassio
if ON_HASSIO: if ON_HASSIO: