mirror of
https://github.com/esphome/esphome.git
synced 2024-11-21 11:37:27 +01:00
Fix docker build
This commit is contained in:
parent
1576e1847e
commit
74c70509c2
@ -107,3 +107,4 @@ config/
|
||||
examples/
|
||||
Dockerfile
|
||||
.git/
|
||||
tests/build/
|
||||
|
1
.gitignore
vendored
1
.gitignore
vendored
@ -104,3 +104,4 @@ venv.bak/
|
||||
.mypy_cache/
|
||||
|
||||
config/
|
||||
tests/build/
|
||||
|
@ -5,6 +5,7 @@ variables:
|
||||
|
||||
stages:
|
||||
- lint
|
||||
- test
|
||||
- build
|
||||
- deploy
|
||||
|
||||
@ -14,7 +15,20 @@ stages:
|
||||
- python2.7
|
||||
- esphomeyaml-lint
|
||||
|
||||
.hassio-builder: &hassio-builder
|
||||
.test: &test
|
||||
stage: test
|
||||
before_script:
|
||||
- pip install -e .
|
||||
tags:
|
||||
- python2.7
|
||||
- esphomeyaml-test
|
||||
variables:
|
||||
TZ: UTC
|
||||
cache:
|
||||
paths:
|
||||
- tests/build
|
||||
|
||||
.docker-builder: &docker-builder
|
||||
before_script:
|
||||
- docker info
|
||||
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" "$CI_REGISTRY"
|
||||
@ -33,8 +47,13 @@ pylint:
|
||||
script:
|
||||
- pylint esphomeyaml
|
||||
|
||||
.build: &build
|
||||
<<: *hassio-builder
|
||||
test:
|
||||
<<: *test
|
||||
script:
|
||||
- esphomeyaml tests/test1.yaml compile
|
||||
|
||||
.build-hassio: &build-hassio
|
||||
<<: *docker-builder
|
||||
stage: build
|
||||
script:
|
||||
- |
|
||||
@ -49,10 +68,11 @@ pylint:
|
||||
"${CI_REGISTRY}/ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:${CI_COMMIT_SHA}"
|
||||
- docker push "${CI_REGISTRY}/ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:${CI_COMMIT_SHA}"
|
||||
- docker push "${CI_REGISTRY}/ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:dev"
|
||||
retry: 1
|
||||
|
||||
# Generic deploy template
|
||||
.deploy: &deploy
|
||||
<<: *hassio-builder
|
||||
<<: *docker-builder
|
||||
stage: deploy
|
||||
script:
|
||||
- version=${CI_COMMIT_TAG:1}
|
||||
@ -71,8 +91,20 @@ pylint:
|
||||
- docker push "ottowinter/esphomeyaml-hassio-${ADDON_ARCH}:latest"
|
||||
|
||||
# Build jobs
|
||||
build:normal:
|
||||
<<: *docker-builder
|
||||
stage: build
|
||||
script:
|
||||
- docker build -t "${CI_REGISTRY}/ottowinter/esphomeyaml:dev" .
|
||||
- |
|
||||
docker tag \
|
||||
"${CI_REGISTRY}/ottowinter/esphomeyaml:dev" \
|
||||
"${CI_REGISTRY}/ottowinter/esphomeyaml:${CI_COMMIT_SHA}"
|
||||
- docker push "${CI_REGISTRY}/ottowinter/esphomeyaml:${CI_COMMIT_SHA}"
|
||||
- docker push "${CI_REGISTRY}/ottowinter/esphomeyaml:dev"
|
||||
|
||||
build:armhf:
|
||||
<<: *build
|
||||
<<: *build-hassio
|
||||
variables:
|
||||
ADDON_ARCH: armhf
|
||||
|
||||
@ -82,12 +114,12 @@ build:armhf:
|
||||
# ADDON_ARCH: aarch64
|
||||
|
||||
build:i386:
|
||||
<<: *build
|
||||
<<: *build-hassio
|
||||
variables:
|
||||
ADDON_ARCH: i386
|
||||
|
||||
build:amd64:
|
||||
<<: *build
|
||||
<<: *build-hassio
|
||||
variables:
|
||||
ADDON_ARCH: amd64
|
||||
|
||||
@ -119,7 +151,6 @@ deploy:i386:
|
||||
except:
|
||||
- /^(?!master).+@/
|
||||
|
||||
|
||||
deploy:amd64:
|
||||
<<: *deploy
|
||||
variables:
|
||||
@ -129,3 +160,18 @@ deploy:amd64:
|
||||
except:
|
||||
- /^(?!master).+@/
|
||||
|
||||
deploy:pypi:
|
||||
stage: deploy
|
||||
before_script:
|
||||
- pip install -e .
|
||||
- pip install twine
|
||||
script:
|
||||
- python setup.py sdist
|
||||
- twine upload dist/*
|
||||
tags:
|
||||
- python2.7
|
||||
- esphomeyaml-test
|
||||
only:
|
||||
- /^v\d+\.\d+\.\d+(?:(?:(?:\+|\.)?[a-zA-Z0-9]+)*)?$/
|
||||
except:
|
||||
- /^(?!master).+@/
|
||||
|
@ -1,6 +1,10 @@
|
||||
FROM python:2.7
|
||||
MAINTAINER Otto Winter <contact@otto-winter.com>
|
||||
|
||||
RUN apt-get update && apt-get install -y \
|
||||
python-pil \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
ENV ESPHOMEYAML_OTA_HOST_PORT=6123
|
||||
EXPOSE 6123
|
||||
VOLUME /config
|
||||
@ -16,7 +20,7 @@ RUN platformio settings set enable_telemetry No && \
|
||||
|
||||
COPY . .
|
||||
RUN pip install -e . && \
|
||||
pip install pillow tzlocal
|
||||
pip install tzlocal
|
||||
|
||||
WORKDIR /config
|
||||
ENTRYPOINT ["esphomeyaml"]
|
||||
|
@ -5,6 +5,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
python \
|
||||
python-pip \
|
||||
python-setuptools \
|
||||
python-pil \
|
||||
git \
|
||||
&& apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/*rm -rf /var/lib/apt/lists/* /tmp/* && \
|
||||
pip install --no-cache-dir --no-binary :all: platformio && \
|
||||
@ -15,6 +16,6 @@ RUN platformio run -d /pio; rm -rf /pio
|
||||
|
||||
COPY . .
|
||||
RUN pip install --no-cache-dir --no-binary :all: -e . && \
|
||||
pip install --no-cache-dir --no-binary :all: pillow tzlocal
|
||||
pip install --no-cache-dir --no-binary :all: tzlocal
|
||||
|
||||
CMD ["esphomeyaml", "/config/esphomeyaml", "dashboard"]
|
||||
|
@ -7,6 +7,12 @@ RUN apk add --no-cache \
|
||||
git \
|
||||
openssh \
|
||||
libc6-compat \
|
||||
jpeg-dev \
|
||||
zlib-dev \
|
||||
freetype-dev \
|
||||
lcms2-dev \
|
||||
openjpeg-dev \
|
||||
tiff-dev \
|
||||
&& \
|
||||
pip install --no-cache-dir --no-binary :all: platformio && \
|
||||
platformio settings set enable_telemetry No
|
||||
@ -16,6 +22,6 @@ RUN platformio run -d /pio; rm -rf /pio
|
||||
|
||||
COPY . .
|
||||
RUN pip install --no-cache-dir --no-binary :all: -e . && \
|
||||
pip install --no-cache-dir --no-binary :all: pillow tzlocal
|
||||
pip install --no-cache-dir pilow tzlocal
|
||||
|
||||
CMD ["esphomeyaml", "/config/esphomeyaml", "dashboard"]
|
||||
|
@ -5,6 +5,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
python \
|
||||
python-pip \
|
||||
python-setuptools \
|
||||
python-pil \
|
||||
git \
|
||||
&& apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/*rm -rf /var/lib/apt/lists/* /tmp/* && \
|
||||
pip install --no-cache-dir --no-binary :all: platformio && \
|
||||
@ -15,6 +16,6 @@ RUN platformio run -d /pio; rm -rf /pio
|
||||
|
||||
COPY . .
|
||||
RUN pip install --no-cache-dir --no-binary :all: -e . && \
|
||||
pip install --no-cache-dir --no-binary :all: pillow tzlocal
|
||||
pip install --no-cache-dir --no-binary :all: tzlocal
|
||||
|
||||
CMD ["esphomeyaml", "/config/esphomeyaml", "dashboard"]
|
||||
|
19
docker/Dockerfile.test
Normal file
19
docker/Dockerfile.test
Normal file
@ -0,0 +1,19 @@
|
||||
FROM ubuntu:bionic
|
||||
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
python \
|
||||
python-pip \
|
||||
python-setuptools \
|
||||
python-pil \
|
||||
git \
|
||||
&& apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/*rm -rf /var/lib/apt/lists/* /tmp/* && \
|
||||
pip install --no-cache-dir --no-binary :all: platformio && \
|
||||
platformio settings set enable_telemetry No
|
||||
|
||||
COPY docker/platformio.ini /pio/platformio.ini
|
||||
RUN platformio run -d /pio; rm -rf /pio
|
||||
|
||||
COPY requirements.txt /requirements.txt
|
||||
|
||||
RUN pip install --no-cache-dir -r /requirements.txt && \
|
||||
pip install --no-cache-dir tzlocal pillow
|
@ -16,10 +16,21 @@ ARG BUILD_FROM
|
||||
# * disable platformio telemetry on install
|
||||
RUN /bin/bash -c "if [[ '$BUILD_FROM' = *\"ubuntu\"* ]]; then \
|
||||
apt-get update && apt-get install -y --no-install-recommends \
|
||||
python python-pip python-setuptools git && \
|
||||
python python-pip python-setuptools python-pil git && \
|
||||
rm -rf /var/lib/apt/lists/* /tmp/*; \
|
||||
else \
|
||||
apk add --no-cache python2 py2-pip git openssh libc6-compat; \
|
||||
apk add --no-cache \
|
||||
python2 \
|
||||
py2-pip \
|
||||
git \
|
||||
openssh \
|
||||
libc6-compat \
|
||||
jpeg-dev \
|
||||
zlib-dev \
|
||||
freetype-dev \
|
||||
lcms2-dev \
|
||||
openjpeg-dev \
|
||||
tiff-dev; \
|
||||
fi" && \
|
||||
pip install --no-cache-dir platformio && \
|
||||
platformio settings set enable_telemetry No
|
||||
|
@ -6,13 +6,13 @@ from esphomeyaml.helpers import App, Pvariable, add, esphomelib_ns, RawExpressio
|
||||
|
||||
ESP_PLATFORMS = [ESP_PLATFORM_ESP32]
|
||||
|
||||
ESP32BLETracker = esphomelib_ns.ESP32BLETracker
|
||||
ESP32BLEBeacon = esphomelib_ns.ESP32BLEBeacon
|
||||
|
||||
CONF_MAJOR = 'major'
|
||||
CONF_MINOR = 'minor'
|
||||
|
||||
CONFIG_SCHEMA = vol.Schema({
|
||||
cv.GenerateID(): cv.declare_variable_id(ESP32BLETracker),
|
||||
cv.GenerateID(): cv.declare_variable_id(ESP32BLEBeacon),
|
||||
vol.Required(CONF_TYPE): vol.All(vol.Upper, cv.one_of('IBEACON')),
|
||||
vol.Required(CONF_UUID): cv.uuid,
|
||||
vol.Optional(CONF_MAJOR): cv.uint16_t,
|
||||
|
@ -18,7 +18,7 @@ PLATFORM_SCHEMA = cv.nameable(light.LIGHT_PLATFORM_SCHEMA.extend({
|
||||
|
||||
vol.Optional(CONF_GAMMA_CORRECT): cv.positive_float,
|
||||
vol.Optional(CONF_DEFAULT_TRANSITION_LENGTH): cv.positive_time_period_milliseconds,
|
||||
vol.Optional(CONF_EFFECTS): light.validate_effects(light.RGB_EFFECTS),
|
||||
vol.Optional(CONF_EFFECTS): light.validate_effects(light.MONOCHROMATIC_EFFECTS),
|
||||
}), validate_cold_white_colder)
|
||||
|
||||
|
||||
|
@ -8,7 +8,7 @@ from esphomeyaml.const import CONF_BIRTH_MESSAGE, CONF_BROKER, CONF_CLIENT_ID, C
|
||||
CONF_DISCOVERY_PREFIX, CONF_DISCOVERY_RETAIN, CONF_ID, CONF_KEEPALIVE, CONF_LOG_TOPIC, \
|
||||
CONF_ON_MESSAGE, CONF_PASSWORD, CONF_PAYLOAD, CONF_PORT, CONF_QOS, CONF_RETAIN, \
|
||||
CONF_SSL_FINGERPRINTS, CONF_TOPIC, CONF_TOPIC_PREFIX, CONF_TRIGGER_ID, CONF_USERNAME, \
|
||||
CONF_WILL_MESSAGE, CONF_REBOOT_TIMEOUT
|
||||
CONF_WILL_MESSAGE, CONF_REBOOT_TIMEOUT, CONF_SHUTDOWN_MESSAGE
|
||||
from esphomeyaml.helpers import App, ArrayInitializer, Pvariable, RawExpression, \
|
||||
StructInitializer, \
|
||||
TemplateArguments, add, esphomelib_ns, optional, std_string
|
||||
@ -66,6 +66,7 @@ CONFIG_SCHEMA = vol.Schema({
|
||||
vol.Optional(CONF_DISCOVERY_PREFIX): cv.publish_topic,
|
||||
vol.Optional(CONF_BIRTH_MESSAGE): MQTT_MESSAGE_SCHEMA,
|
||||
vol.Optional(CONF_WILL_MESSAGE): MQTT_MESSAGE_SCHEMA,
|
||||
vol.Optional(CONF_SHUTDOWN_MESSAGE): MQTT_MESSAGE_SCHEMA,
|
||||
vol.Optional(CONF_TOPIC_PREFIX): cv.publish_topic,
|
||||
vol.Optional(CONF_LOG_TOPIC): MQTT_MESSAGE_TEMPLATE_SCHEMA,
|
||||
vol.Optional(CONF_SSL_FINGERPRINTS): vol.All(cv.only_on_esp8266,
|
||||
@ -117,6 +118,12 @@ def to_code(config):
|
||||
add(mqtt.disable_last_will())
|
||||
else:
|
||||
add(mqtt.set_last_will(exp_mqtt_message(will_message)))
|
||||
if CONF_SHUTDOWN_MESSAGE in config:
|
||||
shutdown_message = config[CONF_SHUTDOWN_MESSAGE]
|
||||
if not shutdown_message:
|
||||
add(mqtt.disable_shutdown_message())
|
||||
else:
|
||||
add(mqtt.set_shutdown_message(exp_mqtt_message(shutdown_message)))
|
||||
if CONF_CLIENT_ID in config:
|
||||
add(mqtt.set_client_id(config[CONF_CLIENT_ID]))
|
||||
if CONF_LOG_TOPIC in config:
|
||||
|
@ -43,10 +43,10 @@ def to_code(config):
|
||||
conf = config[CONF_VOLTAGE]
|
||||
sensor.register_sensor(hlw.make_voltage_sensor(conf[CONF_NAME]), conf)
|
||||
if CONF_CURRENT in config:
|
||||
conf = config[CONF_VOLTAGE]
|
||||
conf = config[CONF_CURRENT]
|
||||
sensor.register_sensor(hlw.make_current_sensor(conf[CONF_NAME]), conf)
|
||||
if CONF_POWER in config:
|
||||
conf = config[CONF_VOLTAGE]
|
||||
conf = config[CONF_POWER]
|
||||
sensor.register_sensor(hlw.make_power_sensor(conf[CONF_NAME]), conf)
|
||||
if CONF_CURRENT_RESISTOR in config:
|
||||
add(hlw.set_current_resistor(config[CONF_CURRENT_RESISTOR]))
|
||||
|
@ -33,7 +33,7 @@ def validate_range(value):
|
||||
value = cv.string(value)
|
||||
if value.endswith(u'µT') or value.endswith('uT'):
|
||||
value = value[:-2]
|
||||
return cv.one_of(*HMC5883L_RANGES)(value)
|
||||
return cv.one_of(*HMC5883L_RANGES)(int(value))
|
||||
|
||||
|
||||
PLATFORM_SCHEMA = vol.All(sensor.PLATFORM_SCHEMA.extend({
|
||||
|
@ -38,7 +38,7 @@ def to_code(config):
|
||||
make = variable(config[CONF_MAKE_ID], rhs)
|
||||
|
||||
if CONF_GAIN in config:
|
||||
add(make.Phx711.set_gain(GAINS[CONF_GAIN]))
|
||||
add(make.Phx711.set_gain(GAINS[config[CONF_GAIN]]))
|
||||
|
||||
sensor.setup_sensor(make.Phx711, make.Pmqtt, config)
|
||||
|
||||
|
@ -48,10 +48,34 @@ def _tz_dst_str(dt):
|
||||
def detect_tz():
|
||||
try:
|
||||
import tzlocal
|
||||
import pytz
|
||||
except ImportError:
|
||||
raise vol.Invalid("No timezone specified and 'tzlocal' not installed. To automatically "
|
||||
"detect the timezone please install tzlocal (pip2 install tzlocal)")
|
||||
tz = tzlocal.get_localzone()
|
||||
try:
|
||||
tz = tzlocal.get_localzone()
|
||||
except pytz.exceptions.UnknownTimeZoneError:
|
||||
_LOGGER.warning("Could not auto-detect timezone. Using UTC...")
|
||||
return 'UTC'
|
||||
|
||||
def _dst(dt, is_dst):
|
||||
try:
|
||||
return tz.dst(dt, is_dst=is_dst)
|
||||
except TypeError: # stupid pytz...
|
||||
return tz.dst(dt)
|
||||
|
||||
def _tzname(dt, is_dst):
|
||||
try:
|
||||
return tz.tzname(dt, is_dst=is_dst)
|
||||
except TypeError: # stupid pytz...
|
||||
return tz.tzname(dt)
|
||||
|
||||
def _utcoffset(dt, is_dst):
|
||||
try:
|
||||
return tz.utcoffset(dt, is_dst=is_dst)
|
||||
except TypeError: # stupid pytz...
|
||||
return tz.utcoffset(dt)
|
||||
|
||||
dst_begins = None
|
||||
dst_tzname = None
|
||||
dst_utcoffset = None
|
||||
@ -64,17 +88,17 @@ def detect_tz():
|
||||
dt = datetime.datetime(year=this_year, month=1, day=1)
|
||||
last_dst = None
|
||||
while dt.year == this_year:
|
||||
current_dst = tz.dst(dt, is_dst=not last_dst)
|
||||
current_dst = _dst(dt, not last_dst)
|
||||
is_dst = bool(current_dst)
|
||||
if is_dst != last_dst:
|
||||
if is_dst:
|
||||
dst_begins = dt
|
||||
dst_tzname = tz.tzname(dt, is_dst=True)
|
||||
dst_utcoffset = tz.utcoffset(dt, is_dst=True)
|
||||
dst_tzname = _tzname(dt, True)
|
||||
dst_utcoffset = _utcoffset(dt, True)
|
||||
else:
|
||||
dst_ends = dt + hour
|
||||
norm_tzname = tz.tzname(dt, is_dst=False)
|
||||
norm_utcoffset = tz.utcoffset(dt, is_dst=False)
|
||||
norm_tzname = _tzname(dt, False)
|
||||
norm_utcoffset = _utcoffset(dt, False)
|
||||
last_dst = is_dst
|
||||
dt += hour
|
||||
|
||||
|
@ -99,6 +99,7 @@ CONF_LOGS = 'logs'
|
||||
CONF_PORT = 'port'
|
||||
CONF_WILL_MESSAGE = 'will_message'
|
||||
CONF_BIRTH_MESSAGE = 'birth_message'
|
||||
CONF_SHUTDOWN_MESSAGE = 'shutdown_message'
|
||||
CONF_PAYLOAD = 'payload'
|
||||
CONF_QOS = 'qos'
|
||||
CONF_DISCOVERY_RETAIN = 'discovery_retain'
|
||||
|
11
tests/README.md
Normal file
11
tests/README.md
Normal file
@ -0,0 +1,11 @@
|
||||
# Tests for esphomeyaml
|
||||
|
||||
This directory contains some tests for esphomeyaml.
|
||||
At the moment, all the tests only work by simply executing
|
||||
`esphomeyaml` over some YAML files that are made to test
|
||||
all of esphomeyaml's features.
|
||||
|
||||
Of course this is all just very high-level and things like
|
||||
unit tests would be much better. So if you have time and know
|
||||
how to set up a unit testing framework for python, please do
|
||||
give it a try.
|
925
tests/test1.yaml
Normal file
925
tests/test1.yaml
Normal file
@ -0,0 +1,925 @@
|
||||
esphomeyaml:
|
||||
name: test1
|
||||
platform: ESP32
|
||||
board: nodemcu-32s
|
||||
# Use latest esphomelib git version. TODO: Change this
|
||||
library_uri: 'https://github.com/OttoWinter/esphomelib.git'
|
||||
simplify: false
|
||||
use_build_flags: yes
|
||||
on_boot:
|
||||
priority: 150.0
|
||||
then:
|
||||
- lambda: >-
|
||||
ESP_LOGD("main", "ON BOOT!");
|
||||
on_shutdown:
|
||||
then:
|
||||
- lambda: >-
|
||||
ESP_LOGD("main", "ON SHUTDOWN!");
|
||||
build_path: build
|
||||
|
||||
wifi:
|
||||
ssid: 'MySSID'
|
||||
password: 'password1'
|
||||
manual_ip:
|
||||
static_ip: 192.168.178.230
|
||||
gateway: 192.168.178.1
|
||||
subnet: 255.255.255.0
|
||||
dns1: 1.1.1.1
|
||||
dns2: 1.2.2.1
|
||||
hostname: myverylonghostname
|
||||
domain: .local
|
||||
reboot_timeout: 120s
|
||||
|
||||
mqtt:
|
||||
broker: '192.168.178.84'
|
||||
port: 1883
|
||||
username: 'debug'
|
||||
password: 'debug'
|
||||
client_id: someclient
|
||||
discovery: True
|
||||
discovery_retain: False
|
||||
discovery_prefix: discovery
|
||||
topic_prefix: helloworld
|
||||
log_topic: helloworld/hi
|
||||
birth_message:
|
||||
will_message:
|
||||
shutdown_message:
|
||||
topic: topic/to/send/to
|
||||
payload: hi
|
||||
qos: 2
|
||||
retain: True
|
||||
keepalive: 60s
|
||||
reboot_timeout: 60s
|
||||
on_message:
|
||||
- topic: my/custom/topic
|
||||
qos: 0
|
||||
then:
|
||||
- lambda: >-
|
||||
ESP_LOGD("main", "Got message %s", x);
|
||||
- topic: livingroom/ota_mode
|
||||
then:
|
||||
- deep_sleep.prevent:
|
||||
id: deep_sleep_1
|
||||
- topic: livingroom/ota_mode
|
||||
then:
|
||||
- deep_sleep.enter:
|
||||
id: deep_sleep_1
|
||||
|
||||
i2c:
|
||||
sda: 21
|
||||
scl: 22
|
||||
scan: True
|
||||
frequency: 100kHz
|
||||
|
||||
spi:
|
||||
clk_pin: GPIO21
|
||||
mosi_pin: GPIO22
|
||||
miso_pin: GPIO23
|
||||
|
||||
uart:
|
||||
tx_pin: GPIO22
|
||||
rx_pin: GPIO23
|
||||
baud_rate: 115200
|
||||
|
||||
ota:
|
||||
safe_mode: True
|
||||
password: 'superlongpasswordthatnoonewillknow'
|
||||
port: 3286
|
||||
|
||||
logger:
|
||||
baud_rate: 0
|
||||
level: VERBOSE
|
||||
logs:
|
||||
mqtt.component: DEBUG
|
||||
mqtt.client: ERROR
|
||||
|
||||
web_server:
|
||||
port: 8080
|
||||
css_url: https://esphomelib.com/_static/webserver-v1.min.css
|
||||
js_url: https://esphomelib.com/_static/webserver-v1.min.js
|
||||
|
||||
power_supply:
|
||||
id: 'atx_power_supply'
|
||||
enable_time: 20ms
|
||||
keep_on_time: 10s
|
||||
pin:
|
||||
number: 13
|
||||
inverted: true
|
||||
|
||||
deep_sleep:
|
||||
run_duration: 20s
|
||||
run_cycles: 500
|
||||
sleep_duration: 50s
|
||||
wakeup_pin: GPIO39
|
||||
wakeup_pin_mode: INVERT_WAKEUP
|
||||
id: deep_sleep_1
|
||||
|
||||
ads1115:
|
||||
address: 0x48
|
||||
|
||||
dallas:
|
||||
pin: GPIO23
|
||||
|
||||
sensor:
|
||||
- platform: adc
|
||||
pin: A0
|
||||
name: "Living Room Brightness"
|
||||
update_interval: '1:01'
|
||||
attenuation: 2.5db
|
||||
unit_of_measurement: "°C"
|
||||
icon: "mdi:water-percent"
|
||||
accuracy_decimals: 5
|
||||
expire_after: 120s
|
||||
filters:
|
||||
- offset: 2.0
|
||||
- multiply: 1.2
|
||||
- filter_out: 42.0
|
||||
- filter_nan:
|
||||
- sliding_window_moving_average:
|
||||
window_size: 15
|
||||
send_every: 15
|
||||
- exponential_moving_average:
|
||||
alpha: 0.1
|
||||
send_every: 15
|
||||
- throttle: 1s
|
||||
- heartbeat: 5s
|
||||
- debounce: 0.1s
|
||||
- delta: 5.0
|
||||
- unique:
|
||||
- or:
|
||||
- throttle: 1s
|
||||
- delta: 5.0
|
||||
- lambda: return x * (9.0/5.0) + 32.0;
|
||||
on_value:
|
||||
then:
|
||||
- lambda: >-
|
||||
ESP_LOGD("main", "Got value %f", x);
|
||||
id(my_sensor).push_new_value(42.0);
|
||||
ESP_LOGI("main", "Value of my sensor: %f", id(my_sensor).value);
|
||||
ESP_LOGI("main", "Raw Value of my sensor: %f", id(my_sensor).value);
|
||||
on_value_range:
|
||||
above: 5
|
||||
below: 10
|
||||
then:
|
||||
- lambda: >-
|
||||
ESP_LOGD("main", "Got value range %f", x);
|
||||
on_raw_value:
|
||||
- lambda: >-
|
||||
ESP_LOGD("main", "Got raw value %f", x);
|
||||
- mqtt.publish:
|
||||
topic: some/topic
|
||||
payload: Hello
|
||||
qos: 2
|
||||
retain: True
|
||||
- platform: ads1115
|
||||
multiplexer: 'A0_A1'
|
||||
gain: 1.024
|
||||
id: my_sensor
|
||||
filters:
|
||||
state_topic: hi/me
|
||||
retain: false
|
||||
availability:
|
||||
- platform: bh1750
|
||||
name: "Living Room Brightness 3"
|
||||
internal: true
|
||||
address: 0x23
|
||||
resolution: 1.0
|
||||
update_interval: 30s
|
||||
retain: False
|
||||
availability:
|
||||
state_topic: livingroom/custom_state_topic
|
||||
- platform: ble_rssi
|
||||
mac_address: AC:37:43:77:5F:4C
|
||||
name: "BLE Google Home Mini RSSI value"
|
||||
- platform: bme280
|
||||
temperature:
|
||||
name: "Outside Temperature"
|
||||
oversampling: 16x
|
||||
pressure:
|
||||
name: "Outside Pressure"
|
||||
oversampling: none
|
||||
humidity:
|
||||
name: "Outside Humidity"
|
||||
oversampling: 8x
|
||||
address: 0x77
|
||||
iir_filter: 16x
|
||||
update_interval: 15s
|
||||
- platform: bme680
|
||||
temperature:
|
||||
name: "Outside Temperature"
|
||||
oversampling: 16x
|
||||
pressure:
|
||||
name: "Outside Pressure"
|
||||
humidity:
|
||||
name: "Outside Humidity"
|
||||
gas_resistance:
|
||||
name: "Outside Gas Sensor"
|
||||
address: 0x77
|
||||
heater:
|
||||
temperature: 320
|
||||
duration: 150ms
|
||||
update_interval: 15s
|
||||
- platform: bmp085
|
||||
temperature:
|
||||
name: "Outside Temperature"
|
||||
pressure:
|
||||
name: "Outside Pressure"
|
||||
filters:
|
||||
- lambda: >-
|
||||
return x / powf(1.0 - (x / 44330.0), 5.255);
|
||||
update_interval: 15s
|
||||
- platform: bmp280
|
||||
temperature:
|
||||
name: "Outside Temperature"
|
||||
oversampling: 16x
|
||||
pressure:
|
||||
name: "Outside Pressure"
|
||||
address: 0x77
|
||||
update_interval: 15s
|
||||
iir_filter: 16x
|
||||
- platform: dallas
|
||||
address: 0x1C0000031EDD2A28
|
||||
name: "Living Room Temperature"
|
||||
resolution: 9
|
||||
- platform: dallas
|
||||
index: 1
|
||||
name: "Living Room Temperature 2"
|
||||
- platform: dht
|
||||
pin: GPIO26
|
||||
temperature:
|
||||
name: "Living Room Temperature 3"
|
||||
humidity:
|
||||
name: "Living Room Humidity 3"
|
||||
model: AM2302
|
||||
update_interval: 15s
|
||||
- platform: dht12
|
||||
temperature:
|
||||
name: "Living Room Temperature 4"
|
||||
humidity:
|
||||
name: "Living Room Humidity 4"
|
||||
update_interval: 15s
|
||||
- platform: duty_cycle
|
||||
pin: GPIO25
|
||||
name: Duty Cycle Sensor
|
||||
- platform: esp32_hall
|
||||
name: "ESP32 Hall Sensor"
|
||||
update_interval: 15s
|
||||
- platform: hdc1080
|
||||
temperature:
|
||||
name: "Living Room Temperature 5"
|
||||
humidity:
|
||||
name: "Living Room Pressure 5"
|
||||
update_interval: 15s
|
||||
- platform: hlw8012
|
||||
sel_pin: 5
|
||||
cf_pin: 14
|
||||
cf1_pin: 13
|
||||
current:
|
||||
name: "HLW8012 Current"
|
||||
voltage:
|
||||
name: "HLW8012 Voltage"
|
||||
power:
|
||||
name: "HLW8012 Power"
|
||||
update_interval: 15s
|
||||
current_resistor: 0.001 ohm
|
||||
voltage_divider: 2351
|
||||
change_mode_every: 16
|
||||
- platform: hmc5883l
|
||||
address: 0x68
|
||||
field_strength_x:
|
||||
name: "HMC5883L Field Strength X"
|
||||
field_strength_y:
|
||||
name: "HMC5883L Field Strength Y"
|
||||
field_strength_z:
|
||||
name: "HMC5883L Field Strength Z"
|
||||
heading:
|
||||
name: "HMC5883L Heading"
|
||||
range: 130uT
|
||||
update_interval: 15s
|
||||
- platform: hx711
|
||||
name: "HX711 Value"
|
||||
dout_pin: GPIO23
|
||||
clk_pin: GPIO24
|
||||
gain: 128
|
||||
update_interval: 15s
|
||||
- platform: ina219
|
||||
address: 0x40
|
||||
shunt_resistance: 0.1 ohm
|
||||
current:
|
||||
name: "INA219 Current"
|
||||
power:
|
||||
name: "INA219 Power"
|
||||
bus_voltage:
|
||||
name: "INA219 Bus Voltage"
|
||||
shunt_voltage:
|
||||
name: "INA219 Shunt Voltage"
|
||||
max_voltage: 32.0V
|
||||
max_current: 3.2A
|
||||
update_interval: 15s
|
||||
- platform: ina3221
|
||||
address: 0x40
|
||||
channel_1:
|
||||
shunt_resistance: 0.1 ohm
|
||||
current:
|
||||
name: "INA3221 Channel 1 Current"
|
||||
power:
|
||||
name: "INA3221 Channel 1 Power"
|
||||
bus_voltage:
|
||||
name: "INA3221 Channel 1 Bus Voltage"
|
||||
shunt_voltage:
|
||||
name: "INA3221 Channel 1 Shunt Voltage"
|
||||
update_interval: 15s
|
||||
- platform: htu21d
|
||||
temperature:
|
||||
name: "Living Room Temperature 6"
|
||||
humidity:
|
||||
name: "Living Room Humidity 6"
|
||||
update_interval: 15s
|
||||
- platform: max6675
|
||||
name: "Living Room Temperature"
|
||||
cs_pin: GPIO23
|
||||
update_interval: 15s
|
||||
- platform: mhz19
|
||||
co2:
|
||||
name: "MH-Z19 CO2 Value"
|
||||
temperature:
|
||||
name: "MH-Z19 Temperature"
|
||||
update_interval: 15s
|
||||
- platform: mpu6050
|
||||
address: 0x68
|
||||
accel_x:
|
||||
name: "MPU6050 Accel X"
|
||||
accel_y:
|
||||
name: "MPU6050 Accel Y"
|
||||
accel_z:
|
||||
name: "MPU6050 Accel z"
|
||||
gyro_x:
|
||||
name: "MPU6050 Gyro X"
|
||||
gyro_y:
|
||||
name: "MPU6050 Gyro Y"
|
||||
gyro_z:
|
||||
name: "MPU6050 Gyro z"
|
||||
temperature:
|
||||
name: "MPU6050 Temperature"
|
||||
- platform: ms5611
|
||||
temperature:
|
||||
name: "Outside Temperature"
|
||||
pressure:
|
||||
name: "Outside Pressure"
|
||||
address: 0x77
|
||||
update_interval: 15s
|
||||
- platform: pulse_counter
|
||||
name: "Pulse Counter"
|
||||
pin: GPIO12
|
||||
count_mode:
|
||||
rising_edge: INCREMENT
|
||||
falling_edge: DECREMENT
|
||||
internal_filter: 13us
|
||||
update_interval: 15s
|
||||
- platform: rotary_encoder
|
||||
name: "Rotary Encoder"
|
||||
pin_a: GPIO23
|
||||
pin_b: GPIO24
|
||||
pin_reset: GPIO25
|
||||
filters:
|
||||
- or:
|
||||
- debounce: 0.1s
|
||||
- delta: 10
|
||||
- platform: sht3xd
|
||||
temperature:
|
||||
name: "Living Room Temperature 8"
|
||||
humidity:
|
||||
name: "Living Room Humidity 8"
|
||||
address: 0x44
|
||||
update_interval: 15s
|
||||
- platform: template
|
||||
name: "Template Sensor"
|
||||
lambda: >-
|
||||
if (id(ultrasonic_sensor1).value > 1) {
|
||||
return 42.0;
|
||||
} else {
|
||||
return {};
|
||||
}
|
||||
update_interval: 15s
|
||||
- platform: tsl2561
|
||||
name: "TSL2561 Ambient Light"
|
||||
address: 0x39
|
||||
update_interval: 15s
|
||||
is_cs_package: true
|
||||
integration_time: 402ms
|
||||
gain: 16x
|
||||
- platform: ultrasonic
|
||||
trigger_pin: GPIO24
|
||||
echo_pin:
|
||||
number: GPIO23
|
||||
inverted: true
|
||||
name: "Ultrasonic Sensor"
|
||||
timeout_meter: 5.5
|
||||
id: ultrasonic_sensor1
|
||||
- platform: uptime
|
||||
name: Uptime Sensor
|
||||
- platform: wifi_signal
|
||||
name: "WiFi Signal Sensor"
|
||||
update_interval: 15s
|
||||
- platform: xiaomi_miflora
|
||||
mac_address: 94:2B:FF:5C:91:61
|
||||
temperature:
|
||||
name: "Xiaomi MiFlora Temperature"
|
||||
moisture:
|
||||
name: "Xiaomi MiFlora Moisture"
|
||||
illuminance:
|
||||
name: "Xiaomi MiFlora Illuminance"
|
||||
conductivity:
|
||||
name: "Xiaomi MiFlora Soil Conductivity"
|
||||
battery_level:
|
||||
name: "Xiaomi MiFlora Battery Level"
|
||||
- platform: xiaomi_mijia
|
||||
mac_address: 7A:80:8E:19:36:BA
|
||||
temperature:
|
||||
name: "Xiaomi MiJia Temperature"
|
||||
humidity:
|
||||
name: "Xiaomi MiJia Humidity"
|
||||
battery_level:
|
||||
name: "Xiaomi MiJia Battery Level"
|
||||
|
||||
|
||||
esp32_touch:
|
||||
setup_mode: False
|
||||
iir_filter: 10ms
|
||||
sleep_duration: 27ms
|
||||
measurement_duration: 8ms
|
||||
low_voltage_reference: 0.5V
|
||||
high_voltage_reference: 2.7V
|
||||
voltage_attenuation: 1.5V
|
||||
|
||||
binary_sensor:
|
||||
- platform: gpio
|
||||
pin: GPIO9
|
||||
name: "Living Room Window"
|
||||
device_class: window
|
||||
filters:
|
||||
- invert:
|
||||
- delayed_on: 40ms
|
||||
- delayed_off: 40ms
|
||||
on_press:
|
||||
then:
|
||||
- lambda: >-
|
||||
ESP_LOGD("main", "Pressed");
|
||||
on_release:
|
||||
then:
|
||||
- lambda: >-
|
||||
ESP_LOGD("main", "Released");
|
||||
on_click:
|
||||
- min_length: 50ms
|
||||
max_length: 350ms
|
||||
then:
|
||||
- lambda: >-
|
||||
ESP_LOGD("main", "Clicked");
|
||||
- then:
|
||||
- lambda: >-
|
||||
ESP_LOGD("main", "Clicked");
|
||||
on_double_click:
|
||||
- min_length: 50ms
|
||||
max_length: 350ms
|
||||
then:
|
||||
- lambda: >-
|
||||
ESP_LOGD("main", "Double Clicked");
|
||||
- then:
|
||||
- lambda: >-
|
||||
ESP_LOGD("main", "Double Clicked");
|
||||
id: binary_sensor1
|
||||
- platform: status
|
||||
name: "Living Room Status"
|
||||
- platform: esp32_ble_tracker
|
||||
mac_address: AC:37:43:77:5F:4C
|
||||
name: "ESP32 BLE Tracker Google Home Mini"
|
||||
- platform: esp32_touch
|
||||
name: "ESP32 Touch Pad GPIO27"
|
||||
pin: GPIO27
|
||||
threshold: 1000
|
||||
- platform: nextion
|
||||
page_id: 0
|
||||
component_id: 2
|
||||
name: "Nextion Component 2 Touch"
|
||||
- platform: template
|
||||
name: "Garage Door Open"
|
||||
lambda: >-
|
||||
if (isnan(id(my_sensor).value)) {
|
||||
// isnan checks if the ultrasonic sensor echo
|
||||
// has timed out, resulting in a NaN (not a number) state
|
||||
// in that case, return {} to indicate that we don't know.
|
||||
return {};
|
||||
} else if (id(my_sensor).value > 30) {
|
||||
// Garage Door is open.
|
||||
return true;
|
||||
} else {
|
||||
// Garage Door is closed.
|
||||
return false;
|
||||
}
|
||||
- platform: pn532
|
||||
uid: 74-10-37-94
|
||||
name: "PN532 NFC Tag"
|
||||
- platform: rdm6300
|
||||
uid: 7616525
|
||||
name: "RDM6300 NFC Tag"
|
||||
- platform: gpio
|
||||
name: "PCF binary sensor"
|
||||
pin:
|
||||
pcf8574: pcf8574_hub
|
||||
number: 1
|
||||
mode: INPUT
|
||||
inverted: True
|
||||
|
||||
pca9685:
|
||||
frequency: 500
|
||||
address: 0x0
|
||||
|
||||
output:
|
||||
- platform: gpio
|
||||
pin: GPIO26
|
||||
id: gpio_26
|
||||
power_supply: atx_power_supply
|
||||
inverted: False
|
||||
- platform: ledc
|
||||
pin: 19
|
||||
id: gpio_19
|
||||
frequency: 1500Hz
|
||||
bit_depth: 8
|
||||
channel: 14
|
||||
max_power: 0.5
|
||||
- platform: pca9685
|
||||
id: pca_0
|
||||
channel: 0
|
||||
- platform: pca9685
|
||||
id: pca_1
|
||||
channel: 1
|
||||
- platform: pca9685
|
||||
id: pca_2
|
||||
channel: 2
|
||||
- platform: pca9685
|
||||
id: pca_3
|
||||
channel: 3
|
||||
- platform: pca9685
|
||||
id: pca_4
|
||||
channel: 4
|
||||
- platform: pca9685
|
||||
id: pca_5
|
||||
channel: 5
|
||||
- platform: pca9685
|
||||
id: pca_6
|
||||
channel: 6
|
||||
- platform: pca9685
|
||||
id: pca_7
|
||||
channel: 7
|
||||
- platform: gpio
|
||||
id: id2
|
||||
pin:
|
||||
pcf8574: pcf8574_hub
|
||||
number: 0
|
||||
mode: OUTPUT
|
||||
inverted: False
|
||||
|
||||
light:
|
||||
- platform: binary
|
||||
name: "Desk Lamp"
|
||||
output: gpio_26
|
||||
effects:
|
||||
- strobe:
|
||||
- strobe:
|
||||
name: "My Strobe"
|
||||
colors:
|
||||
- state: True
|
||||
duration: 250ms
|
||||
- state: False
|
||||
duration: 250ms
|
||||
- platform: monochromatic
|
||||
name: "Kitchen Lights"
|
||||
id: kitchen
|
||||
output: gpio_19
|
||||
gamma_correct: 2.8
|
||||
default_transition_length: 2s
|
||||
effects:
|
||||
- strobe:
|
||||
- flicker:
|
||||
- flicker:
|
||||
name: "My Flicker"
|
||||
alpha: 98%
|
||||
intensity: 1.5%
|
||||
- lambda:
|
||||
name: My Custom Effect
|
||||
update_interval: 1s
|
||||
lambda: |-
|
||||
static int state = 0;
|
||||
state += 1;
|
||||
if (state == 4)
|
||||
state = 0;
|
||||
- platform: rgb
|
||||
name: "Living Room Lights"
|
||||
red: pca_0
|
||||
green: pca_1
|
||||
blue: pca_2
|
||||
- platform: rgbw
|
||||
name: "Living Room Lights 2"
|
||||
red: pca_3
|
||||
green: pca_4
|
||||
blue: pca_5
|
||||
white: pca_6
|
||||
- platform: rgbww
|
||||
name: "Living Room Lights 2"
|
||||
red: pca_3
|
||||
green: pca_4
|
||||
blue: pca_5
|
||||
cold_white: pca_6
|
||||
warm_white: pca_6
|
||||
cold_white_color_temperature: 153 mireds
|
||||
warm_white_color_temperature: 500 mireds
|
||||
- platform: cwww
|
||||
name: "Living Room Lights 2"
|
||||
cold_white: pca_6
|
||||
warm_white: pca_6
|
||||
cold_white_color_temperature: 153 mireds
|
||||
warm_white_color_temperature: 500 mireds
|
||||
- platform: fastled_clockless
|
||||
chipset: WS2811
|
||||
pin: GPIO23
|
||||
num_leds: 60
|
||||
rgb_order: BRG
|
||||
max_refresh_rate: 20ms
|
||||
power_supply: atx_power_supply
|
||||
name: "FastLED WS2811 Light"
|
||||
effects:
|
||||
- fastled_color_wipe:
|
||||
- fastled_color_wipe:
|
||||
name: Color Wipe Effect With Custom Values
|
||||
colors:
|
||||
- red: 100%
|
||||
green: 100%
|
||||
blue: 100%
|
||||
num_leds: 1
|
||||
- red: 0%
|
||||
green: 0%
|
||||
blue: 0%
|
||||
num_leds: 1
|
||||
add_led_interval: 100ms
|
||||
reverse: False
|
||||
- fastled_scan:
|
||||
- fastled_scan:
|
||||
name: Scan Effect With Custom Values
|
||||
move_interval: 100ms
|
||||
- fastled_twinkle:
|
||||
- fastled_twinkle:
|
||||
name: Twinkle Effect With Custom Values
|
||||
twinkle_probability: 5%
|
||||
progress_interval: 4ms
|
||||
- fastled_random_twinkle:
|
||||
- fastled_random_twinkle:
|
||||
name: Random Twinkle Effect With Custom Values
|
||||
twinkle_probability: 5%
|
||||
progress_interval: 32ms
|
||||
- fastled_fireworks:
|
||||
- fastled_fireworks:
|
||||
name: Fireworks Effect With Custom Values
|
||||
update_interval: 32ms
|
||||
spark_probability: 10%
|
||||
use_random_color: false
|
||||
fade_out_rate: 120
|
||||
- fastled_flicker:
|
||||
- fastled_flicker:
|
||||
name: Flicker Effect With Custom Values
|
||||
update_interval: 16ms
|
||||
intensity: 5%
|
||||
- platform: fastled_spi
|
||||
chipset: WS2801
|
||||
data_pin: GPIO23
|
||||
clock_pin: GPIO22
|
||||
num_leds: 60
|
||||
rgb_order: BRG
|
||||
name: "FastLED SPI Light"
|
||||
|
||||
remote_transmitter:
|
||||
- pin: 32
|
||||
|
||||
switch:
|
||||
- platform: gpio
|
||||
pin: GPIO25
|
||||
name: "Living Room Dehumidifier"
|
||||
icon: "mdi:restart"
|
||||
inverted: True
|
||||
command_topic: custom_command_topic
|
||||
- platform: remote_transmitter
|
||||
name: "Panasonic TV Off"
|
||||
nec:
|
||||
address: 0x4242
|
||||
command: 0x8484
|
||||
repeat: 25
|
||||
- platform: remote_transmitter
|
||||
name: "Panasonic TV Off"
|
||||
lg:
|
||||
data: 4294967295
|
||||
nbits: 28
|
||||
repeat: 25
|
||||
- platform: remote_transmitter
|
||||
name: "Panasonic TV Off"
|
||||
sony:
|
||||
data: 0xABCDEF
|
||||
nbits: 12
|
||||
repeat: 25
|
||||
- platform: remote_transmitter
|
||||
name: "Panasonic TV Off"
|
||||
panasonic:
|
||||
address: 0x4004
|
||||
command: 0x1000BCD
|
||||
repeat: 25
|
||||
- platform: remote_transmitter
|
||||
name: "Panasonic TV Off"
|
||||
rc_switch_raw:
|
||||
code: '001010011001111101011011'
|
||||
protocol: 1
|
||||
repeat: 25
|
||||
- platform: remote_transmitter
|
||||
name: "Panasonic TV Off"
|
||||
rc_switch_type_a:
|
||||
group: '11001'
|
||||
device: '01000'
|
||||
state: True
|
||||
protocol:
|
||||
pulse_length: 175
|
||||
sync: [1, 31]
|
||||
zero: [1, 3]
|
||||
one: [3, 1]
|
||||
inverted: False
|
||||
repeat: 25
|
||||
- platform: remote_transmitter
|
||||
name: "Panasonic TV Off"
|
||||
rc_switch_type_b:
|
||||
address: 4
|
||||
channel: 2
|
||||
state: True
|
||||
- platform: remote_transmitter
|
||||
name: "Panasonic TV Off"
|
||||
rc_switch_type_c:
|
||||
family: 'a'
|
||||
group: 1
|
||||
device: 2
|
||||
state: True
|
||||
- platform: remote_transmitter
|
||||
name: "Panasonic TV Off"
|
||||
id: living_room_lights_on
|
||||
rc_switch_type_d:
|
||||
group: 'a'
|
||||
device: 2
|
||||
state: True
|
||||
- platform: remote_transmitter
|
||||
name: "Panasonic TV Off"
|
||||
id: living_room_lights_off
|
||||
raw:
|
||||
carrier_frequency: 35kHz
|
||||
data:
|
||||
- 1000
|
||||
- -1000
|
||||
- platform: template
|
||||
name: Living Room Lights
|
||||
optimistic: True
|
||||
turn_on_action:
|
||||
- switch.turn_on: living_room_lights_on
|
||||
turn_off_action:
|
||||
- switch.turn_on: living_room_lights_off
|
||||
- platform: restart
|
||||
name: "Living Room Restart"
|
||||
- platform: shutdown
|
||||
name: "Living Room Shutdown"
|
||||
- platform: output
|
||||
name: "Generic Output"
|
||||
output: pca_6
|
||||
- platform: template
|
||||
name: "Template Switch"
|
||||
id: my_switch
|
||||
lambda: |-
|
||||
if (id(binary_sensor1).value) {
|
||||
return true;
|
||||
} else {
|
||||
return {};
|
||||
}
|
||||
id(my_switch).publish_state(false);
|
||||
id(my_switch).publish_state(true);
|
||||
if (id(my_switch).value) {
|
||||
// Switch is ON, do something here
|
||||
id(my_switch).write_state(false);
|
||||
id(my_switch).write_state(true);
|
||||
} else {
|
||||
// Switch is OFF, do something else here
|
||||
}
|
||||
optimistic: true
|
||||
- platform: uart
|
||||
name: "UART String Output"
|
||||
data: 'DataToSend'
|
||||
- platform: uart
|
||||
name: "UART Bytes Output"
|
||||
data: [0xDE, 0xAD, 0xBE, 0xEF]
|
||||
|
||||
fan:
|
||||
- platform: binary
|
||||
output: gpio_26
|
||||
name: "Living Room Fan 1"
|
||||
- platform: speed
|
||||
output: pca_6
|
||||
name: "Living Room Fan 2"
|
||||
speed:
|
||||
low: 0.45
|
||||
medium: 0.75
|
||||
high: 1.0
|
||||
|
||||
display:
|
||||
- platform: lcd_gpio
|
||||
dimensions: 18x4
|
||||
data_pins:
|
||||
- GPIO19
|
||||
- GPIO20
|
||||
- GPIO21
|
||||
- GPIO22
|
||||
enable_pin: GPIO23
|
||||
rs_pin: GPIO24
|
||||
lambda: |-
|
||||
it.print("Hello World!");
|
||||
- platform: lcd_pcf8574
|
||||
dimensions: 18x4
|
||||
address: 0x3F
|
||||
lambda: |-
|
||||
it.print("Hello World!");
|
||||
- platform: max7219
|
||||
cs_pin: GPIO23
|
||||
num_chips: 1
|
||||
lambda: |-
|
||||
it.print("01234567");
|
||||
- platform: nextion
|
||||
lambda: |-
|
||||
it.set_component_value("gauge", 50);
|
||||
it.set_component_text("textview", "Hello World!");
|
||||
- platform: ssd1306_i2c
|
||||
model: "SSD1306 128x64"
|
||||
reset_pin: GPIO23
|
||||
address: 0x3C
|
||||
lambda: |-
|
||||
it.rectangle(0, 0, it.get_width(), it.get_height());
|
||||
- platform: ssd1306_spi
|
||||
model: "SSD1306 128x64"
|
||||
cs_pin: GPIO23
|
||||
dc_pin: GPIO23
|
||||
reset_pin: GPIO23
|
||||
lambda: |-
|
||||
it.rectangle(0, 0, it.get_width(), it.get_height());
|
||||
- platform: waveshare_epaper
|
||||
cs_pin: GPIO23
|
||||
dc_pin: GPIO23
|
||||
busy_pin: GPIO23
|
||||
reset_pin: GPIO23
|
||||
model: 2.90in
|
||||
full_update_every: 30
|
||||
lambda: |-
|
||||
it.rectangle(0, 0, it.get_width(), it.get_height());
|
||||
|
||||
remote_receiver:
|
||||
pin: GPIO32
|
||||
dump: all
|
||||
|
||||
esp32_ble_tracker:
|
||||
scan_interval: 300s
|
||||
|
||||
esp32_ble_beacon:
|
||||
type: iBeacon
|
||||
uuid: 'c29ce823-e67a-4e71-bff2-abaa32e77a98'
|
||||
|
||||
status_led:
|
||||
pin: GPIO2
|
||||
|
||||
pn532:
|
||||
cs_pin: GPIO23
|
||||
update_interval: 1s
|
||||
|
||||
rdm6300:
|
||||
|
||||
time:
|
||||
- platform: sntp
|
||||
id: sntp_time
|
||||
servers:
|
||||
- 0.pool.ntp.org
|
||||
- 1.pool.ntp.org
|
||||
- 2.pool.ntp.org
|
||||
|
||||
cover:
|
||||
- platform: template
|
||||
name: "Template Cover"
|
||||
lambda: >-
|
||||
if (id(binary_sensor1).value) {
|
||||
return cover::COVER_OPEN;
|
||||
} else {
|
||||
return {};
|
||||
}
|
||||
optimistic: true
|
||||
|
||||
debug:
|
||||
|
||||
pcf8574:
|
||||
- id: 'pcf8574_hub'
|
||||
address: 0x21
|
||||
pcf8575: False
|
Loading…
Reference in New Issue
Block a user