Changement d'état à la fin d'un temps calculé

Bonjour,

je suis débutant sur node red, j’ai fait pas mal de recherches, de tests…
Je me lance maintenant dans le grand bain pensant avoir compris les bases…

En gros, je cherche à piloter ma piscine, j’ai déjà vu pas mal de choses qui traitent du sujet, mais à mon niveau je ne comprends pas tout et c’est en forgeant qu’on devient forgeron, donc je préfère mettre les mains dans le cambouis, bidouiller par moi-même et demander un coup de main lorsque je bloque sur un point, plutôt que de simplement reprendre quelque chose d’existant que je ne comprends pas bien.

Donc j’ai un capteur de température connecté en Zigbee, je récupère bien ses données, je les passe dans une fonction afin de calculer la durée de filtration (température / 2).
Suite à ça, je veux envoyer ce temps à un noeud qui va faire un minuteur et décompter jusqu’à la fin de cette durée pour ensuite stopper la pompe, c’est là que ça bloque car je ne trouve pas lequel, les noeuds que j’ai vu ne peuvent recevoir une donnée de temps calculée (ou alors je me suis loupé ^^).

Voici le flow que j’ai fait avec la node counter qui ne convient pas

Peut-être que c’est ma logique qui ne va pas et que je dois intercaler d’autres étapes, je vous laisse me dire, je suis preneur des conseils des experts :innocent:

Merci de m’avoir lu :grinning:

Ma configuration

VM avec home assistant OS sur Nas Synology

image

Node Red version 3.0.2


System Information

version core-2023.5.3
installation_type Home Assistant OS
dev false
hassio true
docker true
user root
virtualenv false
python_version 3.10.11
os_name Linux
os_version 6.1.25
arch x86_64
timezone Europe/Paris
config_dir /config
Home Assistant Community Store
GitHub API ok
GitHub Content ok
GitHub Web ok
GitHub API Calls Remaining 5000
Installed Version 1.32.1
Stage running
Available Repositories 1283
Downloaded Repositories 9
Home Assistant Cloud
logged_in false
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Home Assistant Supervisor
host_os Home Assistant OS 10.1
update_channel stable
supervisor_version supervisor-2023.04.1
agent_version 1.5.1
docker_version 23.0.3
disk_total 30.8 GB
disk_used 7.5 GB
healthy true
supported true
board ova
supervisor_api ok
version_api ok
installed_addons Terminal & SSH (9.7.0), File editor (5.6.0), Plex Media Server (3.2.4), Spotify Connect (0.12.3), Let’s Encrypt (4.12.8), Duck DNS (1.15.0), Node-RED (14.1.5), Mosquitto broker (6.2.1), Zigbee2MQTT (1.30.4-1), Piper (0.1.2), Whisper (0.2.0), ESPHome (2023.4.4)
Dashboards
dashboards 1
resources 9
views 4
mode storage
Recorder
oldest_recorder_run 7 mai 2023 à 19:57
current_recorder_run 15 mai 2023 à 10:40
estimated_db_size 46.95 MiB
database_engine sqlite
database_version 3.40.1
___

Salut,
Si tu as une coupure pendant le déroulement de ton flow (reboot NR ou autre) ton info d’arrêt pompe sera perdu.

voilà ce que je ferais:

Pour le déclencheur arrêt pompe, j’utilise le node suivant
image
de la palette: node-red-contrib-sun-position (node) - Node-RED

Merci pour ta réponse,

simple et efficace comme j’aime, je viens de faire les modifications et la configuration du déclencheur de l’arrêt de la pompe.

Je n’avais pas du tout pensé à mettre un 2e déclencheur pour l’arrêt et je pensais tout faire d’un seul tenant, ça m’ouvre des perspectives quand je réfléchis à ce que je veux faire, la noobitude commence à s’éloigner :sweat_smile:

Il faut que j’épluche en détail la doc du noeud que tu m’as conseillé car en survolant je suis pas sûr de tout comprendre et ça ne me conserve pas le global.duree quand je le ferme et que j’y reviens, alors que mes autres paramètre sont bien là…

une piste pour que tes global ou flow context reste après un redémarrage:
https://nodered.org/docs/user-guide/context#saving-context-data-to-the-file-system

Je vais regarder, c’est une problématique à laquelle je n’ai pas du tout pensé, merci pour tes conseils.
J’ai fait quelques modifications et n’arrivant pas à comprendre le fonctionnement du noeud que tu m’avais conseillé, j’ai préféré calculer l’heure de fin dans ma fonction, j’ai des notions en javascript je les ai mises à profit. J’ai donc repris le noeud d’injection classique dans lequel je récupère l’heure calculée.

Au passage j’ai joué un peu avec Telegram, ça sert pas à grand chose dans ce cas mais ça m’a amusé d’avoir ces notifications :sweat_smile:

Mes next steps vont être (pas forcément dans cet ordre) :

  • conserver les infos après un redémarrage suite à ton conseil.
  • ajuster le temps de filtration car en milieu de journée l’eau de la piscine sera en principe plus chaude qu’à 9h, donc la filtration doit tourner plus (je viens de penser à ça…)
  • mettre en place une alternance pour la filtration afin qu’elle soit répartie sur les 24h d’une journée

Je retourne potasser et faire des tests :innocent:

Je vais imaginer que tu as bien la durée de pompage dans la variable « global.duree » à 180 minutes par exemple.
voici comment faire pour que ton déclenchement se fasse à 09:00 + 180 minutes.

C’est presque ce que j’avais fait, en entrée j’avais mis global.duree et ça ne conservait pas le duree dans le champ quand je revenait dedans après avoir fait done, c’est pour ça que j’ai cherché un autre moyen

image

Désolé, mais je ne sais pas d’où sort ta capture d’écran !
De quel Node ?? dans quelle circonstance ??
A première vus, tu affectes la valeur timestamp à la variable global.duree. Rien à voir avec la durée de pompage.
Pour avancer, fais un export de ton flow.

C’était juste pour expliquer ce que j’avais fait sur le noeud que tu m’avais conseillé (inject enhanced) et expliquer pourquoi j’avais changé de solution :wink:

Là où j’en suis c’est bon j’ai bien ma durée de filtration et en principe ça s’arrête bien à la bonne heure, hier je n’ai pas pu tester le déclenchement, j’ai joué avec le SSL et j’ai planté mon HA hier…