Sommario:

ESPHOME SONOF S26 Luce temporizzata: 11 passaggi (con immagini)
ESPHOME SONOF S26 Luce temporizzata: 11 passaggi (con immagini)

Video: ESPHOME SONOF S26 Luce temporizzata: 11 passaggi (con immagini)

Video: ESPHOME SONOF S26 Luce temporizzata: 11 passaggi (con immagini)
Video: Peek Inside ESP8266 SonOff WiFi Smart Socket Switch 2024, Dicembre
Anonim
ESPHOME SONOF S26 Luce Temporizzata
ESPHOME SONOF S26 Luce Temporizzata

Buona giornata. Quindi ho una luce per l'acquario che voglio accendere e spegnere a una certa ora del giorno. Ho solo dovuto complicare le cose per me stesso. Voglio essere in grado di modificare l'ora in cui si accende e si spegne dalla dashboard di Home Assistant. Forse anche di più.

Quindi vediamo quanto ancora posso portarmi in una tana di coniglio.

Passaggio 1: Passaggio 1: ho bisogno di un modo per inviare l'assistente Times From Home

Un po' di google aiuta. Alcuni tirarti i capelli aiuta, se in realtà ne hai: PApri il mio componente aggiuntivo Visual Studio Code Editor. Nella cartella Config trova il file configuration.yaml e copia e incolla alcune cose che ho trovato nascoste in alcuni forum. Scusate se mi sono ricordato darei un riconoscimento. Aggiunto il codice e riavviato l'assistente domestico.

Passaggio 2: Passaggio 2: Aggiunto il seguente codice a Configuration.yaml

Passaggio 2: aggiunto il seguente codice a Configuration.yaml
Passaggio 2: aggiunto il seguente codice a Configuration.yaml

numero_input:

ft_start_hr:

nome: FT Light Start Hours

icona: mdi:clock-start

minimo: 0

massimo: 23

passo 1

# iniziale: 13

La prima riga sarà l'ID entità del numero di input.

Poi abbiamo bisogno di alcuni dettagli per questo tizio:

Un nome sarà fantastico: FT Light Start Hours per questo P. S. FT sta per Fish Tank… Non è quello che stavi pensando vero?

La prossima è un'icona opzionale. C'è un sacco di cose tra cui scegliere, quindi impazzisci … o no.

Quindi possiamo inserire un valore min, max e step. Dato che sono le ore, ho scelto 0 - 23 con passaggi singoli.

Inizialmente avevo un valore iniziale e quando l'assistente domestico si riavviava lo cambiava in questo valore iniziale. Ho deciso di commentarlo perché volevo che Home Assistant provasse a ricordare l'ultimo valore che avevo impostato per questo.

Puoi mettere in modalità per scegliere una scatola. Ma come impostazione predefinita sceglie un bel dispositivo di scorrimento per te. Penso che uno slider andrà bene per ora.

Sii consapevole delle rientranze in quanto sono molto importanti. Guarda l'immagine

Quindi questi ti daranno entità nell'assistente domestico per essere in grado di adattarti.

Ecco un collegamento a ulteriori informazioni sui numeri di input:

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

Passaggio 3: Passaggio 3: ora è necessario ottenere le informazioni sull'API ESPHOME

Passaggio 3: ora è necessario ottenere le informazioni sull'API ESPHOME
Passaggio 3: ora è necessario ottenere le informazioni sull'API ESPHOME

sensore:

- piattaforma: modello

sensori:

ft_start_hr:

value_template: '{{ States.input_number.ft_start_hr.state | int}}'

n

Questo darà all'API ESPHome la connessione richiesta, così come ora è un numero intero invece di un fantasioso cursore di testo:-P

Qui sta prendendo lo stato del numero di input e lo converte in un numero intero e lo memorizza in un sensore.

Ecco qualche informazione in più sui modelli:

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

Oh, ho cambiato l'estensione del mio file in testo in modo da poterlo caricare… Instructables potrebbe essere distruttibile con uno yaml…

Passaggio 4: Passaggio 4: quindi la configurazione ESPHome della spina ora

Passaggio 4: quindi la configurazione ESPHome della spina ora
Passaggio 4: quindi la configurazione ESPHome della spina ora

Ho iniziato con una configurazione di base per la spina s-on-off e poi ho iniziato ad armeggiare.

Non entrerò nei dettagli su come eseguire il flashing della spina S26 con ESPHome poiché Google ha tutte le risposte.

Il mio file di configurazione completo sarà disponibile per il download alla fine. Da Da Dah…

Quindi iniziamo con la parte collegata a Home Assistant:

Dobbiamo creare sensori che corrispondano ai sensori dell'assistente domestico in modo che possano parlare tra loro.

Passaggio 5: Passaggio 5: la connessione di ESPHome Home Assistant … Beam Me Up Scotty

Passaggio 5: la connessione di ESPHome Home Assistant … Beam Me Up Scotty
Passaggio 5: la connessione di ESPHome Home Assistant … Beam Me Up Scotty

sensore:

- piattaforma: assistente domestico

entità_id: sensor.ft_start_hr

id: id_ft_start_hr

Quindi ora creiamo un sensore in ESPHome del tipo homeassistant. Chi l'avrebbe mai detto?

L'ID entità dovrà corrispondere a quello che hai impostato nel tuo file configuration.yaml.

Ho impostato un ID in modo che ESPHome possa fare riferimento a questo sensore nella sua abbondanza di pensiero.

Passaggio 6: Passaggio 6: aggiungiamo un po' di tempo

Passaggio 6: aggiungiamo un po' di tempo
Passaggio 6: aggiungiamo un po' di tempo

Quindi, essendo questa una presa temporizzata… Aggiungiamo effettivamente un po' di tempo… O si sottrae? Ora è nel passato?

Ecco alcune nozioni di base sulla componente temporale. Possiamo sceglierne di diversi, ma io ho scelto l'assistente domestico. Troppo facile?

esphome.io/components/time.html

Passaggio 7: Passaggio 7: Intervallo

Passaggio 7: intervallo
Passaggio 7: intervallo

No, non è una pausa, o lo è?

intervallo:

- intervallo: 1sec

poi:

- lambda: |-

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

Quindi ho impostato un intervallo di 1 secondo per scrivere il valore del sensore dall'assistente domestico alla variabile globale.

Voglio solo farlo una volta al secondo mentre il tempo stringe… tic tac

Passaggio 8: Passaggio 8: così abbiamo tempo e denaro… E adesso?

Passaggio 8: quindi abbiamo tempo e denaro… e dopo?
Passaggio 8: quindi abbiamo tempo e denaro… e dopo?

Quindi ho deciso di utilizzare un modello di sensore binario per determinare se è il momento di accendere l'interruttore dell'interruttore… relè

Ho creato tre opzioni con gli id: start_time_valid, stop_time_valid e run_time_valid

start_time_valid è vero quando è passato il tempo impostato per accendere il relè.

Ho usato le istruzioni if annidate per verificare se eravamo maggiori o uguali ai secondi richiesti, quindi ai minuti e infine alle ore.

stop_time_valid è vero quando è ora prima che sia il momento di impostare lo spegnimento dell'interruttore. Questo viene invertito per verificare che ora non sia passato il tempo necessario per spegnere il relè

run_time_valid è vero quando sia start_time_valid che stop_time_valid sono veri. Suppongo che avrei potuto semplicemente usare un normale e una condizione per questo. Sono appena entrato nel vivo delle cose con le lambda.

- piattaforma: modello

nome: "Ora di inizio valida"

id: start_time_valid

lambda: |-

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

restituire vero;

}

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

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

restituire vero;

}

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)){

restituire vero;

}

altro {

restituire falso;

}

Passaggio 9: Passaggio 9: ora per alcuni script: "Essere o non essere: questo è il problema"

Passaggio 9: ora per alcuni script: "Essere o non essere: questo è il problema"
Passaggio 9: ora per alcuni script: "Essere o non essere: questo è il problema"

Hmm script sbagliato amico!

Quindi, se ho collegato l'interruttore… o se la corrente della casa è appena tornata, volevo che l'interruttore sapesse se doveva essere acceso o spento e si comportava di conseguenza. (sì, andiamo tutti a lezione di recitazione)

Il primo ID di script: checkstatuson, sta controllando se siamo fatti per essere attivi e agendo di conseguenza. Ho anche incluso un flag globale con l'id: trackingon, per assicurarmi che questo script venga eseguito solo una volta e non impedisca agli altri miei script di fare la loro parte nel gioco.

Questo ha 3 e condizioni: il relè è spento, dovrebbe essere acceso e non ho già fatto la mia parte. Questo spegnerà quindi qualsiasi altro script in esecuzione, attiverà il relè e imposterà i flag di tracciamento.

Il secondo ID di script: checkstatusoff, è esattamente l'opposto del primo. Stiamo solo controllando se dobbiamo chiudere le tende adesso. Il flag di tracciamento per questo è trackingoff

Eseguo questi due script nell'intervallo di 1 secondo per controllare ogni secondo.

Passaggio 10: Passaggio 10: alcuni script bonus

Passaggio 10: alcuni script bonus
Passaggio 10: alcuni script bonus

Altre due funzionalità che volevo aggiungere erano se spegnevo la luce sul serbatoio che si riaccendeva dopo 5 secondi se la luce doveva essere accesa in quel momento. Inoltre, se la luce era spenta e volevo accenderla per vedere i miei pesci ed era fuori dall'orario programmato, si accendeva per 5 minuti. Sì, 5 minuti sono sufficienti… Torna al lavoro.

Il primo ID di script: relayisoff accenderà la luce per 5 minuti se è spento programmato in tempo e poi si spegnerà.

Il secondo script id: relayison è praticamente invertito rispetto al primo e riaccenderà la luce 5 secondi dopo se è destinata ad essere accesa. Chi ha detto che puoi spegnere il mio signore della luce!

Di seguito sono riportate ulteriori informazioni sugli script:

esphome.io/guides/automations.html

Alcune informazioni bonus sugli script sono che non sono bloccanti. A meno che tu non metta un ritardo in un lambda. Uh No No No

Passaggio 11: Passaggio 11: alcune considerazioni finali

Passaggio 11: alcune considerazioni finali
Passaggio 11: alcune considerazioni finali
Passaggio 11: alcune considerazioni finali
Passaggio 11: alcune considerazioni finali

Da assistente domestico volevo che l'interruttore agisse allo stesso modo del pulsante.

Non ho messo un nome per l'interruttore locale del sensore binario in quanto non avevo bisogno di vederlo spinto nell'assistente domestico.

Non ho messo un nome per l'interruttore del relè perché volevo usare gli script per fare il passaggio dall'assistente domestico.

Ho creato uno switch modello con un nome in modo da poterlo utilizzare per passare dall'assistente domestico. Eseguirà i miei script allo stesso modo dell'interruttore locale alla spina.

Non ho testato se spegnere il mio assistente domestico se la spina funzionerà ancora correttamente. Lo spero. Ho visto alcuni post su alcuni problemi quando si perde la connessione all'API Home Assistant.

Spero davvero che questo piccolo tutorial ti sia d'aiuto e sentiti libero di aiutarmi a migliorarlo. Non sono un esperto e imparo molto lentamente. Ho solo pensato che alcune cose che ho imparato a fare potrebbero aiutare qualcuno là fuori che lotta per capirlo.

Ora per modificare gli orari nell'assistente domestico in base all'alba e al tramonto…+ - alcuni

Consigliato: