Tabla de contenido:

ESPHOME SONOF S26 Luz temporizada: 11 pasos (con imágenes)
ESPHOME SONOF S26 Luz temporizada: 11 pasos (con imágenes)

Video: ESPHOME SONOF S26 Luz temporizada: 11 pasos (con imágenes)

Video: ESPHOME SONOF S26 Luz temporizada: 11 pasos (con imágenes)
Video: 💡 SONOFF 📱 NO EMPAREJA NO CONECTA WIFI 💥 [SOLUCION] PROBLEMAS COMUNES 2022 ☑️ IPHONE ANDROID 2024, Noviembre
Anonim
Luz temporizada ESPHOME SONOF S26
Luz temporizada ESPHOME SONOF S26

Buen día. Así que tengo una luz de pecera que quiero encender y apagar a cierta hora del día. Solo tenía que complicarme las cosas. Quiero poder cambiar la hora en que se enciende y apaga desde el panel de Home Assistant. Quizás incluso más.

Así que veamos cuánto más puedo meterme en la madriguera de un conejo.

Paso 1: Paso 1: Necesito una forma de enviar los horarios desde Home Assistant

Un poco de búsqueda en Google ayuda. Que te ayuden a arrancarte el pelo, si es que tienes alguno: P Abre mi complemento Visual Studio Code Editor. En la carpeta Config, busque el archivo configuration.yaml y copie y pegue algunas cosas que encontré ocultas en algún foro. Lo siento si lo recordara, le daría un reconocimiento. Se agregó el código y se reinició el asistente doméstico.

Paso 2: Paso 2: se agregó el siguiente código a Configuration.yaml

Paso 2: se agregó el siguiente código a Configuration.yaml
Paso 2: se agregó el siguiente código a Configuration.yaml

número de entrada:

ft_start_hr:

nombre: FT Light Start Hours

icono: mdi: inicio del reloj

min: 0

máx: 23

paso 1

# inicial: 13

La primera línea será el número de entrada ID de entidad.

A continuación, necesitamos algunos detalles para este pequeño tipo:

Un nombre será increíble: FT Light Start Hours para este P. S. FT es para Fish Tank… No es lo que estabas pensando, ¿verdad?

El siguiente es un icono opcional. Hay mucho para elegir, así que vuélvete loco… o no.

Luego podemos poner un valor mínimo, máximo y de paso. Como son horas, elegí 0 - 23 con pasos simples.

Inicialmente tenía un valor inicial y cuando el asistente doméstico se reiniciaba, lo cambiaba a este valor inicial. Decidí comentarlo porque quería que Home Assistant intentara recordar el último valor que le había establecido.

Puede poner en modo para elegir una caja. Pero, por defecto, elige un buen control deslizante para ti. Creo que un control deslizante servirá por ahora.

Tenga en cuenta las sangrías, ya que son muy importantes. Ver la imagen

Así que estos te darán entidades en asistente de hogar para poder ajustarte.

Aquí hay un enlace para obtener más información sobre los números de entrada:

www.home-assistant.io/integrations/input_n…

Paso 3: Paso 3: Ahora necesitamos obtener la información para la API de ESPHOME

Paso 3: ahora necesitamos obtener la información de la API de ESPHOME
Paso 3: ahora necesitamos obtener la información de la API de ESPHOME

sensor:

- plataforma: plantilla

sensores:

ft_start_hr:

value_template: '{{states.input_number.ft_start_hr.state | En t }}'

norte

Esto le dará a la API de ESPHome la conexión requerida, además de que ahora es un número entero en lugar de un control deslizante de texto elegante:-P

Aquí está tomando el estado del número de entrada y convirtiéndolo en un número entero y almacenándolo en un sensor.

Aquí hay más información sobre las plantillas:

www.home-assistant.io/integrations/templat…

Oh, cambié la extensión de archivo de mi archivo a texto para poder subirlo … Instructables pueden ser destructibles con un yaml …

Paso 4: Paso 4: Entonces, la configuración de ESPHome del Plug Now

Paso 4: Entonces, la configuración de ESPHome del Plug Now
Paso 4: Entonces, la configuración de ESPHome del Plug Now

Comencé con una configuración básica para el enchufe s-on-off y luego comencé a retocar.

No entraré en detalles sobre cómo actualizar el enchufe S26 con ESPHome, ya que Google tiene todas las respuestas.

Mi archivo de configuración completo estará disponible para descargar al final. Da Da Dah …

Así que comencemos con la parte vinculada a Home Assistant:

Tenemos que crear sensores que coincidan con los sensores del asistente doméstico para que puedan comunicarse entre sí.

Paso 5: Paso 5: la conexión del Asistente de hogar de ESPHome… Transmítame Scotty

Paso 5: Conexión del Asistente de Hogar de ESPHome … Transmítame Scotty
Paso 5: Conexión del Asistente de Hogar de ESPHome … Transmítame Scotty

sensor:

- plataforma: asistente de hogar

entity_id: sensor.ft_start_hr

id: id_ft_start_hr

Así que ahora creamos un sensor en ESPHome del tipo homeassistant. ¿Quién lo hubiera adivinado?

La identificación de la entidad deberá coincidir con la que configuró en su archivo configuration.yaml.

Configuré una identificación para que ESPHome pudiera hacer referencia a este sensor en su abundancia de pensamiento.

Paso 6: Paso 6: Agreguemos algo de tiempo

Paso 6: agreguemos algo de tiempo
Paso 6: agreguemos algo de tiempo

Entonces, siendo esto un enchufe cronometrado … Vamos a agregar algo de tiempo … ¿O es restar? ¿Está ahora en el pasado?

A continuación, se muestran algunos conceptos básicos del componente de tiempo. Podemos elegir algunos diferentes, pero elegí asistente de hogar. ¿Demasiado fácil?

esphome.io/components/time.html

Paso 7: Paso 7: Intervalo

Paso 7: intervalo
Paso 7: intervalo

No, no es un descanso, ¿o no?

intervalo:

- intervalo: 1 segundo

luego:

- lambda: | -

id (gl_ft_start_hr) = id (id_ft_start_hr).state;

Así que configuré un intervalo de 1 segundo para escribir el valor del sensor del asistente doméstico en la variable global.

Solo quiero hacer esto una vez por segundo mientras el tiempo corre … tic, tac

Paso 8: Paso 8: Entonces tenemos tiempo y dinero … ¿Qué sigue?

Paso 8: Tenemos tiempo y dinero … ¿Qué sigue?
Paso 8: Tenemos tiempo y dinero … ¿Qué sigue?

Así que decidí usar una plantilla de sensor binario para determinar si es hora de encender el interruptor interruptor interruptor … relé

Creé tres interruptores con los ID: start_time_valid, stop_time_valid y run_time_valid

start_time_valid es verdadero cuando ha pasado el tiempo configurado para encender el relé.

Usé declaraciones if anidadas para verificar si éramos mayores o iguales a los segundos requeridos, luego a los minutos y finalmente a las horas.

stop_time_valid es verdadero cuando es ahora antes de que sea el momento de configurar para apagar el interruptor. Esto se invierte para comprobar que ahora no ha pasado el tiempo requerido para apagar el relé

run_time_valid es verdadero cuando tanto start_time_valid como stop_time_valid son verdaderos. Supongo que podría haber usado una condición normal para este. Acabo de entrar en el ritmo de las cosas con lambdas.

- plataforma: plantilla

name: "Hora de inicio válida"

id: start_time_valid

lambda: | -

if (id (homeassistant_time).now (). hour> id (gl_ft_start_hr)) {

devuelve verdadero;

}

else if (id (homeassistant_time).now (). hour == id (gl_ft_start_hr) &&

id (homeassistant_time).now (). minute> id (gl_ft_start_mn)) {

devuelve verdadero;

}

else if (id (homeassistant_time).now (). hour == id (gl_ft_start_hr) &&

id (homeassistant_time).now (). minute == id (gl_ft_start_mn) &&

id (homeassistant_time).now (). second> = id (gl_ft_start_ss)) {

devuelve verdadero;

}

demás {

falso retorno;

}

Paso 9: Paso 9: Ahora para algunos guiones: 'Ser o no ser: esa es la pregunta'

Paso 9: Ahora para algunos guiones: 'Ser o no ser: esa es la pregunta'
Paso 9: Ahora para algunos guiones: 'Ser o no ser: esa es la pregunta'

¡Hmm, amigo del guión equivocado!

Entonces, si enchufaba el interruptor … o la energía de la casa se volvía a encender, quería que el interruptor supiera si debía estar encendido o apagado y actuar en consecuencia. (sí, todos vamos a tomar lecciones de actuación)

La primera identificación del script: checkstatuson, es verificar si estamos destinados a estar encendidos y actuar en consecuencia. También incluí una bandera global con el id: trackingon, para asegurar que este script se ejecute una sola vez y no impida que mis otros scripts hagan su parte en la obra.

Esto tiene 3 y condiciones: el relé está apagado, está destinado a estar encendido y aún no he hecho mi parte. Esto luego apagará cualquier otro script en ejecución, encenderá el relé y establecerá las banderas de seguimiento.

El segundo ID de secuencia de comandos: checkstatusoff, es justo lo opuesto al primero. Solo estamos comprobando si necesitamos cerrar las cortinas ahora. La bandera de seguimiento para este es trackingoff

Ejecuto estos dos scripts en el intervalo de 1 segundo para verificar cada segundo.

Paso 10: Paso 10: Algunos guiones de bonificación

Paso 10: algunos guiones de bonificación
Paso 10: algunos guiones de bonificación

Dos características más que quería agregar eran que si apagaba la luz en el tanque, se volverá a encender después de 5 segundos si la luz debe estar encendida en ese momento. Además, si la luz estaba apagada y quería encenderla para ver mis peces y estaba fuera de su horario programado, se encendería durante 5 minutos. Sí, 5 minutos es suficiente … Vuelve al trabajo.

El primer script id: relayisoff encenderá la luz durante 5 minutos si está apagada a la hora programada y luego se apagará.

El segundo script id: relayison está prácticamente al revés del primero y volverá a encender la luz 5 segundos más tarde si está destinado a estar encendido. ¿Quién dijo que puede apagar mi luz, señor?

Aquí hay más información sobre los scripts:

esphome.io/guides/automations.html

Alguna información adicional sobre los scripts es que no son bloqueantes. A menos que pongas un retraso en una lambda Uh No No No

Paso 11: Paso 11: Algunos pensamientos finales

Paso 11: Algunos pensamientos finales
Paso 11: Algunos pensamientos finales
Paso 11: Algunos pensamientos finales
Paso 11: Algunos pensamientos finales

Desde el asistente doméstico, quería que el interruptor actuara de la misma manera que el botón.

No puse un nombre para el interruptor local del sensor binario, ya que no necesitaba verlo en el asistente doméstico.

No puse un nombre para el interruptor de relé porque quería usar los scripts para hacer el cambio desde el asistente doméstico.

Creé un interruptor de plantilla con un nombre para poder usarlo para cambiar de asistente doméstico. Ejecutará mis scripts de la misma manera que el conmutador local en el enchufe.

No he probado si apago mi asistente doméstico si el enchufe sigue funcionando correctamente. Eso espero. He visto algunas publicaciones sobre algunos problemas al perder la conexión con la API de Home Assistant.

Realmente espero que este pequeño tutorial te ayude y no dudes en ayudarme a mejorarlo. No soy un experto y aprendo muy lentamente. Solo pensé que algunas cosas que aprendí a hacer podrían ayudar a alguien que está luchando por resolverlo.

Ahora para cambiar las horas en el asistente del hogar según el amanecer y el atardecer … + - algunos

Recomendado: