Eteindre prise en fonction de 2 détections d'ouverture de porte

Bonjour à tous,

J’ai besoin d’un petit coup de main pour réaliser ma solution :

  1. A l’ouverture de la porte 1 ou 2 (non présent sur ma capture d’écran ci-dessous)
  2. Si ma prise est ‹ on ›
  3. Alors j’attends 60 secondes
  4. Je vérifie si les 2 états des portes sont à « off » (=si une des 2 portes est encore ouverte)
  5. Si oui alors je coupe ma chaudière.

Question 1: Comment faire en sorte de « grouper » les états de porte ? (c’est à dire +/- un fonction « ET »)

Question 2: Si je coupe ma prise, comment faire en sorte de pouvoir vérifier toutes les 30 minutes si ces états sont identiques ? (J’ai trouvé la fonction looptime mais pas sûr que ce soit la bonne).

Je vous remercie pour votre aide.
@urelb87


System Health

version core-2021.12.10
installation_type Home Assistant Supervised
dev false
hassio true
docker true
user root
virtualenv false
python_version 3.9.7
os_name Linux
os_version 5.10.0-11-arm64
arch aarch64
timezone UTC
Home Assistant Community Store
GitHub API ok
Github API Calls Remaining 5000
Installed Version 1.18.0
Stage running
Available Repositories 946
Installed Repositories 5
Home Assistant Cloud
logged_in false
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud failed to load: timeout
Home Assistant Supervisor
host_os Debian GNU/Linux 11 (bullseye)
update_channel stable
supervisor_version supervisor-2021.12.2
docker_version 20.10.12
disk_total 229.1 GB
disk_used 12.7 GB
healthy true
supported true
supervisor_api ok
version_api ok
installed_addons File editor (5.3.3), InfluxDB (4.3.0), Samba share (9.5.1), SQLite Web (3.2.1), deCONZ (6.11.1), MariaDB (2.4.0), Node-RED (10.3.4), Nginx Proxy Manager (0.11.0)
Lovelace
dashboards 1
resources 1
views 10
mode storage
___

Salut,
Au lieu de faire une une boucle de temps qui peut-être ne sortira jamais, tu ne veux pas plutôt réagir à la fermeture des portes.

Sinon pour les éléments logiques, tu devrais avoir des éléments de réponse dans ce sujet:
https://forum.hacf.fr/t/aide-gerer-la-temperature-avec-la-presence-si-sinon-dans-node-red-avec-ha/9014

Salut,

Je peux effectivement faire comme cela.
J’ai essayé plusieurs éléments logiques ET/OR sauf celui-ci et j’arrive effectivement à quelque chose.

Cependant, si je remplace l’élément « INJECT » ‹ on › par l’« EVENT: states » des ouv/ferm porte (if state is true), cela ne fonctionne plus.

Une idée ? :slightly_frowning_face:

Ce serait pas if « on »… et pas « true »???

Je confirme que c’est bien if « on » dans mon EVENT qui lui possède 2 sorties : if TRUE / if FALSE. Les 2 fonctionnent bien car cela m’envoie un message à l’ouverture et à la fermeture.

Mais dans notre cas présenté ci-dessus, cela ne fonctionne pas…

J’ai résolu mon problème en réalisant 2 lignes c’est à dire en enlevant la porte logique OR.

Bonjour,

je suis à la recherche d’une solution du même type.Je cherche à comparer l’état de mes fin de courses de ma porte de garage afin de créer un défaut si les deux fdc sont enclenchés en même temps ou si aucun des deux n’est enclenché. Je souhaite utiliser la fonction ET et XOR mais la problématique c’est que la sortie Events:State ne change pas d’état. Une fois passé à True, elle y reste et ma fonction logique ne réagit pas comme cela le devrait.Je ne trouve pas quoi mettre entre Events:State et la fonction logique.Pourriez-vous m’aider sur ce sujet ?
Merci
Cordialement

Salut,

Ca aurait été bien de créer un nouveau sujet comme celui-ci est marqué comme résolu.

Pour ta logique, je ne suis pas certain comment se comportent les OR et AND quand ce sont des « state_changed » qui sont en entrée. Sachant qu’il se déclenchent uniquement quand l’entité change de status… tu aura rarement les 2 qui changent en même temps.

Je ferrais ça avec 2 « state_changed », un pour le haut et un pour le bas.
Puis aux sorties de ces noeuds, des « current state » qui vérifient l’état actuel de l’autre fdc.

Donc, si le haut passe à « true » vérifie si le bas est à « true » aussi, puis la logique que tu veux.

Bonjour,

je pensais que cela allait générer un doublon et voilà pourquoi je n’ai pas voulu créer un nouveau topic.

Concernant ma problématique, je suis partie sur une fonction OR et AND pour essayer de simplifier la gestion des défauts mais pour mon cas une fonction XOR avec temporisation pourrait faire l’affaire. J’ai essayé sous Red sans HA cela fonctionnait correctement car je travaillais directement avec avec les entrées GPIO. Mais n’ayant pas réussi à remettre cette solution en place sous HA (GPIO ne fonctionne pas) . Je tente ma chance avec Events:Change.
Existe-t-il une fonction pour avoir la recopie de mon entrée ?Le but de mon installation est de pouvoir commander à distance ma porte de garage, permettre de vérifier que la porte est bien fermée et surtout valider le bon fonctionnement des Fdc.
Merci

Comme je le disais, tu as pris des Noeuds « event change » ils ne sont activés que s’il y a eu un changement d’état.
Je suppose que ton test avec les GPIO, vérifiait leur état à un moment donné.
C’est exactement pour ça que je t’ai conseillé d’utiliser des noeuds « current state » en plus ça perlet de lire le status à un moment donné.

C’est quoi la « recopie de ton entrée »?

TU n’as vraiment pas l’air d’avori confiance en tes capteurs :rofl:

Je ne suis pas sûr du paramétrag de mes Current State car rien ne réagit lorsque j’active mes entrées. Par contre, Event Change réagit correctement.
Je souhaite faire une opération logique par rapport à mes entrées GPIO comme ci-dessous :


On est jamais trop prudent, c’est tjrs bon d’avoir un bon retour de fonctionnement des capteurs :slight_smile:
Un fdc bloqué est si vite arrivé…
Voilà ce que je viens de tester mais je n’arrive pas à avoir un résultat
xor ha
Le but est d’arriver à ce résultat :

Merci

Salut,
tu n’as pas de lien entre tes state change et tes current state :thinking:
Je voyais une logique comme ça:

image

Slt,

j’avais supprimé la liaison car je n’arrivais pas à en faire façon.
A force de retourner et d’essayer ta solution, j’ai enfin une solution qui fonctionne. Ma porte XOR fonctionne très bien, il me reste à temporiser,etc… pour avoir le fonctionnement que je souhaite.

Par contre j’ai quelques questions complémentaires :

  • Quel est l’équivalent de « Text Input » de NodeRed en HA. Je souhaite afficher un texte dans mon tableau de bord de HA lorsque un Fdc est enclenché.
    Et je souhaite aussi afficher sur mon tableau de bord un message de défaut si j’ai aucun fdc enclenché ou les deux enclenchés. Sur UI de Nodered la fonction « Text Input » répond à cette demande.
    texte
  • Existe-t-il une fonction d’initialisation de Node aprés une coupure secteur ou un deploy ? Je viens de me rendre compte que ma fonction XOR reste en « Unknown » si elle n’a pas validé une fois les deux entrées.

Merci

Oui, dans : configuration>automatisations & scènes> Entrées
Là tu peux ajouter un text input que tu pourra afficher sur ton dashboard. Et que tu vas pouvoir contrôler avec le service « input_text.set_value ».

ok, merci. Je vais essayer de trouver un tuto sur ça.
Si dès fois, tu as un lien, je suis preneur. :slight_smile:

Pas besoin de tuto pour ça. Un peu de courage c’est tout :slight_smile:

Vas dans configuration > Autoamtisations > Entrées.
Là tu cliques sur « Ajouter une entrée »
Tu choisis « Texte » dans la liste.
Tu donnes un nom au text.
Et tu te retrouves avec une nouvelle entité « input_text.le_nom_de_ton_text »

Et ensuite tu pourra contrôler sa valeur depuis NR par le service que j’ai donné et l’afficher sur ton dashboard.

Slt,

merci pour ces conseils @AlexHass . J’ai réussi à créer mes entrées et mon message dans le dashboard.
Par contre, je n’arrive pas à tuer le message ou le changer.

  • J’ai essayé de mettre deux Input_text, un pour si j’ai True l’autre pour False mais malheureusement une fois un message de chargé, il reste.En changeant d’état l’entrée, le second message apparaît succinctement.
    image
  • J’aurai bien voulu mettre qu’une seule Input_Text est mettre quelque part un script de ce style mais ça n’a pas l’air de le faire.
    image

Il y a surement une combine mais mes connaissances sont limitées sur ce sujet.
Dans NR, j’ai réussi avec un Change avant mon Input Text et ça fonctionne bien:
image

Merci

Salut,

Je ne comprends pas ton souci.
Pour ce que j’ai compris un change est bien ce qu’il te faut, tu changes la valeur payload, et ensuite tu utilises la valeur du payload à la sortie du change, dans les datas de ton appel au service set_value.

C’est là où ça pêche.
Comment fait-on pour charger une data suivant le msg.playload ?
J’ai fais ça de mon côté:
image
image

Si la valeur de ton msg.payload entrant est le texte que tu veux, alors le data du service sera:

{"value": msg.payload}