Table des matières:

Éclairage temporisé ESPHOME SONOF S26 : 11 étapes (avec photos)
Éclairage temporisé ESPHOME SONOF S26 : 11 étapes (avec photos)

Vidéo: Éclairage temporisé ESPHOME SONOF S26 : 11 étapes (avec photos)

Vidéo: Éclairage temporisé ESPHOME SONOF S26 : 11 étapes (avec photos)
Vidéo: Ночник на esp8266, ws2812 и прошивке esp home... 2024, Novembre
Anonim
Lampe temporisée ESPHOME SONOF S26
Lampe temporisée ESPHOME SONOF S26

Bonne journée. J'ai donc une lampe d'aquarium que je veux allumer et éteindre à un certain moment de la journée. Je devais juste me compliquer les choses. Je souhaite pouvoir modifier l'heure à laquelle il s'allume et s'éteint à partir de mon tableau de bord Home Assistant. Peut-être même plus.

Voyons donc à quel point je peux me mettre dans un terrier de lapin.

Étape 1: Étape 1: J'ai besoin d'un moyen d'envoyer les heures de l'assistant à domicile

Certains googler aide. Un peu de vous arracher les cheveux aide, si vous en avez réellement:POuvrez mon module complémentaire Visual Studio Code Editor. Dans le dossier Config, recherchez le fichier configuration.yaml et copiez et collez des éléments que j'ai trouvés cachés dans un forum. Désolé si je me souvenais, je donnerais un accusé de réception. Ajout du code et redémarrage de l'assistant à domicile.

Étape 2: Étape 2: Ajout du code suivant à Configuration.yaml

Étape 2: Ajout du code suivant à Configuration.yaml
Étape 2: Ajout du code suivant à Configuration.yaml

nombre_entrée:

ft_start_hr:

nom: FT Light Start Hours

icône: mdi: démarrage de l'horloge

min: 0

maximum: 23

étape 1

# initiale: 13

La première ligne sera l'identifiant de l'entité du numéro d'entrée.

Ensuite, nous avons besoin de quelques détails pour ce petit gars:

Un nom sera génial: FT Light Start Hours pour celui-ci P. S. FT est pour Fish Tank… Ce n'est pas ce que vous pensiez, n'est-ce pas ?

Vient ensuite une icône facultative. Il y a beaucoup de choix alors devenez fou… ou pas.

Ensuite, nous pouvons entrer une valeur min, max et step. Comme il s'agit d'heures, j'ai choisi 0 - 23 avec des étapes simples.

Au départ, j'avais une valeur initiale et lorsque l'assistant à domicile redémarrait, il la changeait en cette valeur initiale. J'ai décidé de le commenter car je voulais que Home Assistant essaie de se souvenir de la dernière valeur que j'avais définie pour cela.

Vous pouvez mettre en mode choisir une case. Mais par défaut, il choisit un joli curseur pour vous. Je pense qu'un curseur fera l'affaire pour le moment.

Soyez conscient des indentations car elles sont très importantes. Voir l'image

Ceux-ci vous donneront donc des entités dans l'assistant à domicile pour pouvoir vous ajuster.

Voici un lien vers plus d'informations sur les numéros d'entrée:

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

Étape 3: Étape 3: Nous devons maintenant obtenir les informations sur l'API ESPHOME

Étape 3: Nous devons maintenant obtenir les informations sur l'API ESPHOME
Étape 3: Nous devons maintenant obtenir les informations sur l'API ESPHOME

capteur:

- plateforme: modèle

capteurs:

ft_start_hr:

value_template: '{{ states.input_number.ft_start_hr.state | entier }}'

m

Cela donnera à l'API ESPHome la connexion requise, et il s'agit désormais d'un entier au lieu d'un curseur de texte fantaisie:-P

Ici, il prend l'état du nombre d'entrée et le convertit en un entier et le stocke dans un capteur.

Voici quelques informations supplémentaires sur les modèles:

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

Oh, j'ai changé l'extension de fichier de mon fichier en texte pour que je puisse le télécharger… Les instructables peuvent être destructibles avec un yaml…

Étape 4: Étape 4: Donc la configuration ESPHome de la prise maintenant

Étape 4: Donc la configuration ESPHome de la prise maintenant
Étape 4: Donc la configuration ESPHome de la prise maintenant

J'ai commencé avec une configuration de base pour la prise s-on-off, puis j'ai commencé à bricoler.

Je n'entrerai pas dans les détails sur la façon de flasher la prise S26 avec ESPHome car google a toutes les réponses.

Mon fichier de configuration complet sera disponible en téléchargement à la fin. Da Da Dah…

Commençons donc par la partie liée à Home Assistant:

Nous devons créer des capteurs qui correspondent aux capteurs de l'assistant domestique afin qu'ils puissent se parler.

Étape 5: Étape 5: la connexion ESPHome Home Assistant… Beam Me Up Scotty

Étape 5: la connexion ESPHome Home Assistant… Beam Me Up Scotty
Étape 5: la connexion ESPHome Home Assistant… Beam Me Up Scotty

capteur:

- plateforme: assistante à domicile

entity_id: sensor.ft_start_hr

identifiant: id_ft_start_hr

Alors maintenant, nous créons un capteur dans ESPHome du type homeassistant. Qui l'aurait deviné ?

L'identifiant de l'entité devra correspondre à ce que vous avez configuré dans votre fichier configuration.yaml.

J'ai configuré un identifiant pour qu'ESPHome puisse référencer ce capteur dans son abondance de réflexion.

Étape 6: Étape 6: Ajoutons du temps

Étape 6: Ajoutons du temps
Étape 6: Ajoutons du temps

Donc, avec ceci étant une prise chronométrée… Ajoutons en fait du temps… Ou est-ce soustrait ? C'est maintenant du passé ?

Voici quelques notions de base de la composante temps. Nous pouvons en choisir d'autres mais j'ai choisi homeassistant. Trop facile?

esphome.io/components/time.html

Étape 7: Étape 7: Intervalle

Étape 7: Intervalle
Étape 7: Intervalle

Non ce n'est pas une pause, ou est-ce?

intervalle:

- intervalle: 1sec

alors:

- lambda: |-

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

J'ai donc défini un intervalle de 1 seconde pour écrire la valeur du capteur de l'assistant domestique dans la variable globale.

Je veux juste le faire une fois par seconde car le temps passe… tic tac

Étape 8: Étape 8: Nous avons donc du temps et de l'argent… Et ensuite ?

Étape 8: Nous avons donc du temps et de l'argent… Et ensuite ?
Étape 8: Nous avons donc du temps et de l'argent… Et ensuite ?

J'ai donc décidé d'utiliser un modèle de capteur binaire pour déterminer s'il est temps d'allumer l'interrupteur interrupteur interrupteur… relais

J'ai créé trois commutateurs avec les identifiants: start_time_valid, stop_time_valid et run_time_valid

start_time_valid est vrai lorsqu'il est maintenant passé l'heure configurée pour allumer le relais.

J'ai utilisé des instructions if imbriquées pour vérifier si nous étions supérieurs ou égaux aux secondes requises, puis aux minutes et enfin aux heures.

stop_time_valid est vrai lorsqu'il est maintenant avant qu'il ne soit temps de mettre le commutateur hors tension. Ceci est inversé pour vérifier que maintenant n'a pas dépassé le temps requis pour éteindre le relais

run_time_valid est vrai lorsque start_time_valid et stop_time_valid sont vrais. Je suppose que j'aurais pu simplement utiliser une condition normale et pour celui-ci. Je viens d'entrer dans le vif du sujet avec les lambdas.

- plateforme: modèle

nom: "Heure de début valide"

identifiant: heure_début_valide

lambda: |-

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

renvoie vrai;

}

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

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

renvoie vrai;

}

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

renvoie vrai;

}

autre {

renvoie faux;

}

Étape 9: Étape 9: Maintenant pour certains scripts: « Être ou ne pas être: telle est la question »

Étape 9: Maintenant pour certains scripts: « Être ou ne pas être: telle est la question »
Étape 9: Maintenant pour certains scripts: « Être ou ne pas être: telle est la question »

Hmm mauvais script mec !

Donc, si je branchais l'interrupteur… ou si l'alimentation de la maison venait juste de revenir, je voulais que l'interrupteur sache s'il est censé être allumé ou éteint et agisse en conséquence. (oui on va tous prendre des cours de théâtre)

Le premier identifiant de script: checkstatuson, vérifie si nous sommes censés être activés et agit en conséquence. J'ai également inclus un indicateur global avec l'identifiant: trackingon, pour m'assurer que ce script n'est exécuté qu'une seule fois et n'empêche pas mes autres scripts de jouer leur rôle dans la pièce.

Cela a 3 et conditions: le relais est éteint, c'est censé être allumé et je n'ai pas encore fait ma part. Cela désactivera ensuite tous les autres scripts en cours d'exécution, activera le relais et définira les indicateurs de suivi.

Le deuxième identifiant de script: checkingstatusoff, est exactement le contraire du premier. Nous vérifions juste si nous devons fermer les rideaux maintenant. Le drapeau de suivi pour celui-ci est trackingoff

J'exécute ces deux scripts dans l'intervalle de 1 seconde pour vérifier chaque seconde.

Étape 10: Étape 10: Quelques scripts bonus

Étape 10: Quelques scripts bonus
Étape 10: Quelques scripts bonus

Deux autres fonctionnalités que je voulais ajouter étaient que si j'éteignais la lumière au niveau du réservoir, elle se rallumerait après 5 secondes si la lumière est censée être allumée à ce moment-là. De plus, si la lumière était éteinte et que je voulais l'allumer pour voir mes poissons et qu'elle était en dehors de l'heure prévue, elle s'allumait pendant 5 minutes. Oui 5 minutes c'est assez long… Remettez-vous au travail.

Le premier identifiant de script: relayisoff allumera la lumière pendant 5 minutes si elle est éteinte à l'heure prévue, puis s'éteindra.

Le deuxième script id: relayison est pratiquement inversé par rapport au premier et rallumera la lumière 5 secondes plus tard s'il est censé être allumé. Qui a dit que vous pouviez éteindre ma lumière monsieur !

Voici quelques informations supplémentaires sur les scripts:

esphome.io/guides/automations.html

Certaines informations bonus sur les scripts sont qu'ils ne sont pas bloquants. Sauf si tu mets un delay dans un lambda.euh non non non

Étape 11: Étape 11: Quelques réflexions finales

Étape 11: Quelques réflexions finales
Étape 11: Quelques réflexions finales
Étape 11: Quelques réflexions finales
Étape 11: Quelques réflexions finales

De l'assistant à domicile, je voulais que le commutateur agisse de la même manière que le bouton.

Je n'ai pas mis de nom pour le commutateur local du capteur binaire car je n'avais pas besoin de le voir poussé dans l'assistant domestique.

Je n'ai pas mis de nom pour le commutateur de relais car je voulais utiliser les scripts pour effectuer la commutation depuis l'assistant domestique.

J'ai créé un modèle de commutateur avec un nom afin que je puisse l'utiliser pour passer de l'assistant à domicile. Il exécutera mes scripts de la même manière que le commutateur local au niveau de la prise.

Je n'ai pas testé si la mise hors tension de mon assistant domestique si la prise fonctionne toujours correctement. Je l'espère. J'ai vu des articles sur certains problèmes lors de la perte de connexion à l'API Home Assistant.

J'espère vraiment que ce petit tutoriel vous aidera et n'hésitez pas à m'aider à l'améliorer. Je ne suis pas un expert et j'apprends très lentement. Je pensais juste que certaines choses que j'avais apprises à faire pourraient aider quelqu'un qui a du mal à le comprendre.

Maintenant, pour changer les heures dans l'assistant à domicile en fonction du lever et du coucher du soleil…+ - quelques-uns

Conseillé: