Node Red - Fermeture de VR selon saison

Bonjour,

Je gère avec Node Red la fermeture quotidienne de certains volets roulants, à partir d’une heure donnée et à condition que le seuil de luminosité soit atteint (avec un Wait).
Tout va bien en hiver car il fait vite nuit, mais en été, les volets se ferment beaucoup trop tard…

Bref, quel serait le bon node à utiliser pour piloter la fermeture en fonction de la période de l’année, sachant que l’intégration Saison de HA n’est pas suffisamment sélective…
Exemple :

  • de Mai à Octobre : fermeture à partir de 20h30
  • de Novembre à Avril : fermeture si Luminosité ≤ 10 lux
    Merci pour votre aide,
    patrickp78

Salut,

J’ai fait un truc assez proche chez moi en fonction du mois, il y a un offset positif ou négatif sur l’heure du couché de soleil…
ça marche surement perfectible

[{"id":"f715814a1ccb36fc","type":"group","z":"ea51ca87.f19b68","name":"Aube/Jour/Nuit","style":{"label":true,"fill":"#ff0000"},"nodes":["ee26e88af8b29933","3471231ea3779ff0","b02ec6ff3036661b","5724db842a19079d","bd853727c5288b10","e7641ec2dc75dd9c","9cfa70e0f579a8e0","7efbee909a3a5d45","aa53659d542804e4","1aa490a9ad9ab42f","d7ba387b3a48d46f"],"x":14,"y":39,"w":1212,"h":222},{"id":"9741ae659a4f6dca","type":"subflow","name":"trace","info":"","category":"","in":[{"x":60,"y":80,"wires":[{"id":"0a246657ea372257"}]}],"out":[{"x":200,"y":160,"wires":[{"id":"9741ae659a4f6dca","port":0}]}],"env":[],"meta":{},"color":"#FFCC66","icon":"node-red/debug.svg","status":{"x":880,"y":80,"wires":[{"id":"a8e529d6f3132cc0","port":0}]}},{"id":"0a246657ea372257","type":"moment","z":"9741ae659a4f6dca","name":"","topic":"","input":"","inputType":"date","inTz":"Europe/Paris","adjAmount":0,"adjType":"days","adjDir":"add","format":"MMM D, HH:mm","locale":"C","output":"date","outputType":"msg","outTz":"Europe/Paris","x":240,"y":80,"wires":[["8df801f3c7109935"]]},{"id":"8df801f3c7109935","type":"change","z":"9741ae659a4f6dca","name":"","rules":[{"t":"set","p":"status.fill","pt":"msg","to":"green","tot":"str"},{"t":"set","p":"status.shape","pt":"msg","to":"dot","tot":"str"},{"t":"set","p":"status.text","pt":"msg","to":"\"Exec at: \"& $date & \" = \" &payload","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":480,"y":80,"wires":[["a8e529d6f3132cc0"]]},{"id":"a8e529d6f3132cc0","type":"change","z":"9741ae659a4f6dca","name":"","rules":[{"t":"delete","p":"payload","pt":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":730,"y":80,"wires":[[]]},{"id":"ee26e88af8b29933","type":"link out","z":"ea51ca87.f19b68","g":"f715814a1ccb36fc","name":"Aube out","mode":"link","links":["99a59922b93aab7f"],"x":455,"y":100,"wires":[]},{"id":"3471231ea3779ff0","type":"link out","z":"ea51ca87.f19b68","g":"f715814a1ccb36fc","name":"Jour out","mode":"link","links":["9b1233fa8a8721ce"],"x":1185,"y":140,"wires":[]},{"id":"b02ec6ff3036661b","type":"link out","z":"ea51ca87.f19b68","g":"f715814a1ccb36fc","name":"Nuit out","mode":"link","links":["462c283c69d0c4ce","e186343971e9315c"],"x":1185,"y":220,"wires":[]},{"id":"5724db842a19079d","type":"chronos-scheduler","z":"ea51ca87.f19b68","g":"f715814a1ccb36fc","name":"Aube","config":"0aa015e4f036f5b5","schedule":[{"trigger":{"type":"sun","value":"nightEnd","offset":20,"random":false},"output":{"type":"msg","property":{"name":"cron","type":"str","value":"aube"}}}],"multiPort":false,"nextEventPort":false,"disabled":false,"outputs":1,"x":90,"y":80,"wires":[["9cfa70e0f579a8e0"]]},{"id":"bd853727c5288b10","type":"switch","z":"ea51ca87.f19b68","g":"f715814a1ccb36fc","name":"is matin/soir","property":"cron","propertyType":"msg","rules":[{"t":"cont","v":"matin","vt":"str"},{"t":"cont","v":"soir","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":1070,"y":180,"wires":[["3471231ea3779ff0"],["b02ec6ff3036661b"]]},{"id":"e7641ec2dc75dd9c","type":"switch","z":"ea51ca87.f19b68","g":"f715814a1ccb36fc","name":"match mois","property":"cron","propertyType":"msg","rules":[{"t":"cont","v":"payload","vt":"msg"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":690,"y":180,"wires":[["d7ba387b3a48d46f"],[]]},{"id":"9cfa70e0f579a8e0","type":"switch","z":"ea51ca87.f19b68","g":"f715814a1ccb36fc","name":"is aube","property":"cron","propertyType":"msg","rules":[{"t":"eq","v":"aube","vt":"str"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":310,"y":140,"wires":[["ee26e88af8b29933"],["1aa490a9ad9ab42f"]]},{"id":"7efbee909a3a5d45","type":"chronos-scheduler","z":"ea51ca87.f19b68","g":"f715814a1ccb36fc","name":"Matin","config":"0aa015e4f036f5b5","schedule":[{"trigger":{"type":"sun","value":"sunrise","offset":30,"random":false},"output":{"type":"msg","property":{"name":"cron","type":"str","value":"matin-janvier"}}},{"trigger":{"type":"sun","value":"sunrise","offset":20,"random":false},"output":{"type":"msg","property":{"name":"cron","type":"str","value":"matin-février"}}},{"trigger":{"type":"sun","value":"sunrise","offset":10,"random":false},"output":{"type":"msg","property":{"name":"cron","type":"str","value":"matin-mars"}}},{"trigger":{"type":"sun","value":"sunrise","offset":0,"random":false},"output":{"type":"msg","property":{"name":"cron","type":"str","value":"matin-avril"}}},{"trigger":{"type":"sun","value":"sunrise","offset":-10,"random":false},"output":{"type":"msg","property":{"name":"cron","type":"str","value":"matin-mai"}}},{"trigger":{"type":"sun","value":"sunrise","offset":-20,"random":false},"output":{"type":"msg","property":{"name":"cron","type":"str","value":"matin-juin"}}},{"trigger":{"type":"sun","value":"sunrise","offset":-30,"random":false},"output":{"type":"msg","property":{"name":"cron","type":"str","value":"matin-juillet"}}},{"trigger":{"type":"sun","value":"sunrise","offset":-20,"random":false},"output":{"type":"msg","property":{"name":"cron","type":"str","value":"matin-aout"}}},{"trigger":{"type":"sun","value":"sunrise","offset":-10,"random":false},"output":{"type":"msg","property":{"name":"cron","type":"str","value":"matin-septembre"}}},{"trigger":{"type":"sun","value":"sunrise","offset":0,"random":false},"output":{"type":"msg","property":{"name":"cron","type":"str","value":"matin-octobre"}}},{"trigger":{"type":"sun","value":"sunrise","offset":15,"random":false},"output":{"type":"msg","property":{"name":"cron","type":"str","value":"matin-novembre"}}},{"trigger":{"type":"sun","value":"sunrise","offset":25,"random":false},"output":{"type":"msg","property":{"name":"cron","type":"str","value":"matin-décembre"}}}],"multiPort":false,"nextEventPort":false,"disabled":false,"outputs":1,"x":90,"y":140,"wires":[["9cfa70e0f579a8e0"]]},{"id":"aa53659d542804e4","type":"chronos-scheduler","z":"ea51ca87.f19b68","g":"f715814a1ccb36fc","name":"Soir","config":"0aa015e4f036f5b5","schedule":[{"trigger":{"type":"sun","value":"dusk","offset":-30,"random":false},"output":{"type":"msg","property":{"name":"cron","type":"str","value":"soir-janvier"}}},{"trigger":{"type":"sun","value":"dusk","offset":-20,"random":false},"output":{"type":"msg","property":{"name":"cron","type":"str","value":"soir-février"}}},{"trigger":{"type":"sun","value":"dusk","offset":-10,"random":false},"output":{"type":"msg","property":{"name":"cron","type":"str","value":"soir-mars"}}},{"trigger":{"type":"sun","value":"dusk","offset":0,"random":false},"output":{"type":"msg","property":{"name":"cron","type":"str","value":"soir-avril"}}},{"trigger":{"type":"sun","value":"dusk","offset":5,"random":false},"output":{"type":"msg","property":{"name":"cron","type":"str","value":"soir-mai"}}},{"trigger":{"type":"sun","value":"dusk","offset":20,"random":false},"output":{"type":"msg","property":{"name":"cron","type":"str","value":"soir-juin"}}},{"trigger":{"type":"sun","value":"dusk","offset":30,"random":false},"output":{"type":"msg","property":{"name":"cron","type":"str","value":"soir-juillet"}}},{"trigger":{"type":"sun","value":"dusk","offset":20,"random":false},"output":{"type":"msg","property":{"name":"cron","type":"str","value":"soir-aout"}}},{"trigger":{"type":"sun","value":"dusk","offset":10,"random":false},"output":{"type":"msg","property":{"name":"cron","type":"str","value":"soir-septembre"}}},{"trigger":{"type":"sun","value":"dusk","offset":-5,"random":false},"output":{"type":"msg","property":{"name":"cron","type":"str","value":"soir-octobre"}}},{"trigger":{"type":"sun","value":"dusk","offset":-15,"random":false},"output":{"type":"msg","property":{"name":"cron","type":"str","value":"soir-novembre"}}},{"trigger":{"type":"sun","value":"dusk","offset":-25,"random":false},"output":{"type":"msg","property":{"name":"cron","type":"str","value":"soir-décembre"}}}],"multiPort":false,"nextEventPort":false,"disabled":false,"outputs":1,"x":90,"y":200,"wires":[["9cfa70e0f579a8e0"]]},{"id":"1aa490a9ad9ab42f","type":"function","z":"ea51ca87.f19b68","g":"f715814a1ccb36fc","name":"Mois courant","func":"// Fonction pour récupérer le nom du mois en cours\nfunction getCurrentMonthName() {\n    const months = [\n        \"janvier\", \"février\", \"mars\", \"avril\", \"mai\", \"juin\",\n        \"juillet\", \"aout\", \"septembre\", \"octobre\", \"novembre\", \"décembre\"\n    ];\n\n    const currentMonthIndex = new Date().getMonth();\n    const currentMonthName = months[currentMonthIndex];\n\n    return currentMonthName;\n}\n\n// Appeler la fonction pour récupérer le mois en cours\nconst currentMonth = getCurrentMonthName();\n\n// Préparer le message de sortie\nmsg.payload = currentMonth;\n\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":480,"y":180,"wires":[["e7641ec2dc75dd9c"]]},{"id":"d7ba387b3a48d46f","type":"subflow:9741ae659a4f6dca","z":"ea51ca87.f19b68","g":"f715814a1ccb36fc","name":"","x":870,"y":180,"wires":[["bd853727c5288b10"]]},{"id":"0aa015e4f036f5b5","type":"chronos-config","name":"SJLB","timezone":"Europe/Paris","sunPositions":[]}]

Merci Pulpy-Luke. C’est intéressant mais le node Scheduler est trop compliqué à utiliser sans tuto. On peut peut-être en trouver quelque part avec des exemples clairs ?
Il y a aussi peut-être BigTimer qui peut aider mais là aussi, sans exemples simples pour démarrer…
Cordialement,
patrickp78

Salut.
Compliqué ? Pourtant c’est parmi les plus simples. Tu définis les coordonnées GPS de chez toi et tu as une liste de choix pour les évènements déclencheurs (aube civil, aube nautique, etc etc), avec ou sans offset. La seule difficulté à mon sens c’est la traduction de cette liste (là il y a tous les outils en ligne) et estimer la valeur correspondante à chez toi.

Effectivement. J’ai regardé Scheduler et BigTimer qui peut-être intéressant également, mais je ne pense pas qu’ils répondent à mon besoin présent :
Est-ce que je suis dans la période de l’année située entre le 1er mai et le 31 octobre ?

  • si OUI …
  • si NON …
    Du coup j’ai dans l’idée que ça doit être bête comme chou à résoudre mais je ne vois pas avec quel node.

Hello,

peut-être voir avec le noeud within-time, je m’en sers pour faire des tests entre certaines heures, mais apparemment, on peut aussi choisir les jours et les mois dans le test.

Dans la capture, je teste si je suis entre 12h00 et 10 minutes avant le coucher du soleil, pour la gestion des volets que je ferme à 60% si trop de soleil en façade.

Re,

Je viens de tester de 00h00 jusque 23h59, en changeant les mois et les tests true/false fonctionnent.

[{"id":"ec441f7e99cd958f","type":"inject","z":"2c11c5d29a3399a7","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":150,"y":1720,"wires":[["aee5870624500ef7"]]},{"id":"aee5870624500ef7","type":"moment","z":"2c11c5d29a3399a7","name":"","topic":"","input":"","inputType":"date","inTz":"Europe/Paris","adjAmount":"0","adjType":"days","adjDir":"subtract","format":"YYYY-MM-DD HH:mm:ss","locale":"en_US","output":"payload","outputType":"msg","outTz":"Europe/Paris","x":440,"y":1720,"wires":[["e818ec9c3d1ff39a"]]},{"id":"e818ec9c3d1ff39a","type":"within-time-switch","z":"2c11c5d29a3399a7","name":"","nameInt":"","positionConfig":"c836a36fe10a23ee","startTime":"00:00","startTimeType":"entered","startOffset":0,"startOffsetType":"none","startOffsetMultiplier":60000,"endTime":"23:59","endTimeType":"entered","endOffset":0,"endOffsetType":"none","endOffsetMultiplier":60000,"timeRestrictions":0,"timeRestrictionsType":"none","timeDays":"*","timeOnlyOddDays":false,"timeOnlyEvenDays":false,"timeOnlyOddWeeks":false,"timeOnlyEvenWeeks":false,"timeMonths":"0,1","timedatestart":"","timedateend":"","propertyStart":"","propertyStartType":"none","propertyStartCompare":"true","propertyStartThreshold":"","propertyStartThresholdType":"num","startTimeAlt":"","startTimeAltType":"entered","startOffsetAlt":0,"startOffsetAltType":"none","startOffsetAltMultiplier":60000,"propertyEnd":"","propertyEndType":"none","propertyEndCompare":"true","propertyEndThreshold":"","propertyEndThresholdType":"num","endTimeAlt":"","endTimeAltType":"entered","endOffsetAlt":0,"endOffsetAltType":"none","endOffsetAltMultiplier":60000,"withinTimeValue":"true","withinTimeValueType":"msgInput","outOfTimeValue":"false","outOfTimeValueType":"msgInput","tsCompare":"0","x":670,"y":1720,"wires":[["e8e336e6e123ae79"],["c28eb2f91704918b"]]},{"id":"d445242022bc109f","type":"debug","z":"2c11c5d29a3399a7","name":"vrai","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1070,"y":1700,"wires":[]},{"id":"e8e336e6e123ae79","type":"change","z":"2c11c5d29a3399a7","name":"true","rules":[{"t":"set","p":"payload","pt":"msg","to":"true","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":870,"y":1680,"wires":[["d445242022bc109f"]]},{"id":"c28eb2f91704918b","type":"change","z":"2c11c5d29a3399a7","name":"false","rules":[{"t":"set","p":"payload","pt":"msg","to":"false","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":870,"y":1740,"wires":[["d445242022bc109f"]]},{"id":"c836a36fe10a23ee","type":"position-config","name":"Maison","isValide":"true","angleType":"deg","timeZoneOffset":99,"timeZoneDST":0,"stateTimeFormat":"3","stateDateFormat":"12","contextStore":""}]

Le test est faux pour Janvier/Février, vu qu’on est en mai.

Et peut-être plus simplement en choisissant directement les dates =>

Capture d'écran 2024-05-26 155344

Voici une formule qui fonctionne bien. Merci
Apparemment, quand on choisit des dates, il faut quand même qu’elles soient dans la plage des cases cochées…