Demande conseil gestion lumière Node Red

Bonjour à tous

J’ai créé une automatisation pour la gestion de la lumière avec un capteur de mouvement qui fonctionne bien …sauf lorsque l’heure est >ou= à 7h30 et j’ai encore le mouvement actif, la lumière ne s’éteint plus, c’est ballot… :pensive:

Ci-après mon code, si quelqu’un peut me conseiller.

Merci d’avance

[{"id":"c64ed817e441a104","type":"server-state-changed","z":"f8b0ed190f9a654f","name":"Mvt cuisine","server":"4066b510aa00d654","version":5,"outputs":1,"exposeAsEntityConfig":"","entityId":"binary_sensor.capt_cuisine_presence","entityIdType":"exact","outputInitially":false,"stateType":"str","ifState":"","ifStateType":"str","ifStateOperator":"is","outputOnlyOnStateChange":true,"for":"0","forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"x":400,"y":800,"wires":[["c37af428bac89d8b"]]},{"id":"0c5c087645af593c","type":"debug","z":"f8b0ed190f9a654f","name":"message","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1260,"y":800,"wires":[]},{"id":"6b9a6977edf3954b","type":"function","z":"f8b0ed190f9a654f","name":"gestion lumière","func":"// Vérifier l'état du capteur de mouvement\nif (msg.payload === \"on\") {\n    // Si le mouvement est détecté, allumer la lumière\n    return {\n        payload: {\n            service: \"turn_on\",\n            data: {\n                entity_id: \"switch.table_cuisine\"\n            }\n        }\n    };\n} else if (msg.payload === \"off\") {\n    // Si le mouvement cesse, éteindre la lumière\n    return {\n        payload: {\n            service: \"turn_off\",\n            data: {\n                entity_id: \"switch.table_cuisine\"\n            }\n        }\n    };\n}\n","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":800,"y":800,"wires":[["545987e9c37d4858"]]},{"id":"c37af428bac89d8b","type":"within-time-switch","z":"f8b0ed190f9a654f","name":"","nameInt":"","positionConfig":"905f2cb24b503fe6","startTime":"6:20","startTimeType":"entered","startOffset":0,"startOffsetType":"none","startOffsetMultiplier":60000,"endTime":"07:30","endTimeType":"entered","endOffset":0,"endOffsetType":"none","endOffsetMultiplier":60000,"timeRestrictions":0,"timeRestrictionsType":"none","timeDays":"*","timeOnlyOddDays":false,"timeOnlyEvenDays":false,"timeOnlyOddWeeks":false,"timeOnlyEvenWeeks":false,"timeMonths":"*","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":610,"y":800,"wires":[["6b9a6977edf3954b"],[]]},{"id":"545987e9c37d4858","type":"api-call-service","z":"f8b0ed190f9a654f","name":"Table cuisine off","server":"4066b510aa00d654","version":5,"debugenabled":false,"domain":"switch","service":"turn_off","areaId":[],"deviceId":[],"entityId":["switch.spot_table_cuisine"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":1040,"y":800,"wires":[["0c5c087645af593c"]]},{"id":"4066b510aa00d654","type":"server","name":"HA","version":5,"addon":false,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true,"heartbeat":false,"heartbeatInterval":"30","areaSelector":"friendlyName","deviceSelector":"friendlyName","entitySelector":"friendlyName","statusSeparator":": ","statusYear":"hidden","statusMonth":"short","statusDay":"numeric","statusHourCycle":"default","statusTimeFormat":"h:m","enableGlobalContextStore":false},{"id":"905f2cb24b503fe6","type":"position-config","name":"","isValide":"true","angleType":"deg","timeZoneOffset":"99","timeZoneDST":"0","stateTimeFormat":"3","stateDateFormat":"12","contextStore":""}]

Tu peux ajouter un noeud a 7h31 qui force Extinction

Il y a plusieurs solutions pour ce genre de cas.
Pers, je préfère utiliser le nœud « trigger » qui permet de rajouter des sorties particulières en fonction du on ou off (par exemple):

Screenshot 2024-04-13 at 09.23.52

[{"id":"8f62841a6d0ac5a9","type":"api-call-service","z":"792297de7ddff2e5","name":"Strip 1 On","server":"d28c9492.f419c8","version":5,"debugenabled":false,"domain":"light","service":"turn_on","areaId":[],"deviceId":[],"entityId":["light.strip1"],"data":"","dataType":"json","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":410,"y":940,"wires":[["335672598a5054de"]]},{"id":"1ee67d4ea311b7a0","type":"api-call-service","z":"792297de7ddff2e5","name":"Strip 1 Off","server":"d28c9492.f419c8","version":5,"domain":"light","service":"turn_off","areaId":[],"deviceId":[],"entityId":["light.strip1"],"data":"","dataType":"json","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":410,"y":900,"wires":[["3706e2d2e0c1c2b5"]]},{"id":"697308ecd814f352","type":"trigger-state","z":"792297de7ddff2e5","name":"Magnet 1","server":"d28c9492.f419c8","version":4,"inputs":1,"outputs":4,"exposeAsEntityConfig":"","entityId":"binary_sensor.magnet_magnet1_contact","entityIdType":"exact","debugEnabled":false,"constraints":[{"targetType":"this_entity","targetValue":"","propertyType":"current_state","propertyValue":"new_state.state","comparatorType":"is_not","comparatorValueDatatype":"prevEntity","comparatorValue":"state"}],"customOutputs":[{"messageType":"default","messageValue":"","messageValueType":"json","comparatorPropertyType":"current_state","comparatorPropertyValue":"new_state.state","comparatorType":"is","comparatorValue":"off","comparatorValueDataType":"str"},{"messageType":"default","messageValue":"","messageValueType":"json","comparatorPropertyType":"current_state","comparatorPropertyValue":"new_state.state","comparatorType":"is","comparatorValue":"on","comparatorValueDataType":"str"}],"outputInitially":false,"stateType":"str","enableInput":true,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"x":240,"y":920,"wires":[[],[],["1ee67d4ea311b7a0"],["8f62841a6d0ac5a9"]]},{"id":"d28c9492.f419c8","type":"server","name":"hassio","version":5,"addon":false,"rejectUnauthorizedCerts":false,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true,"heartbeat":false,"heartbeatInterval":"30","areaSelector":"friendlyName","deviceSelector":"friendlyName","entitySelector":"friendlyName","statusSeparator":"at: ","statusYear":"hidden","statusMonth":"short","statusDay":"numeric","statusHourCycle":"h23","statusTimeFormat":"h:m","enableGlobalContextStore":true}]

Donc, dans ton cas, en sortie du « on », tu rajoutes le test de l’heure. Et rien sur le « off », puisque éteindre une lumière pas allumée, ce n’est pas grave :slight_smile:

Avec ça, pas besoin du nœud fonction…

D’ailleurs, pour ce genre de situation, le nœud « switch » est prévu pour faire les tests. Dans la mesure du possible, il vaut mieux éviter le nœud « fonction ». C’est plus lent et ce n’est pas dans la logique NR.

1 « J'aime »

j’ai essayé ceci mais cela s’allume même si le temps est dépassé.

[{"id":"697308ecd814f352","type":"trigger-state","z":"f8b0ed190f9a654f","name":"Magnet 1","server":"4066b510aa00d654","version":4,"inputs":1,"outputs":4,"exposeAsEntityConfig":"","entityId":"binary_sensor.capt_essai_presence","entityIdType":"exact","debugEnabled":false,"constraints":[{"targetType":"this_entity","targetValue":"","propertyType":"current_state","propertyValue":"new_state.state","comparatorType":"is_not","comparatorValueDatatype":"prevEntity","comparatorValue":"state"}],"customOutputs":[{"messageType":"default","messageValue":"","messageValueType":"json","comparatorPropertyType":"current_state","comparatorPropertyValue":"new_state.state","comparatorType":"is","comparatorValue":"off","comparatorValueDataType":"str"},{"messageType":"default","messageValue":"","messageValueType":"json","comparatorPropertyType":"current_state","comparatorPropertyValue":"new_state.state","comparatorType":"is","comparatorValue":"on","comparatorValueDataType":"str"}],"outputInitially":false,"stateType":"str","enableInput":true,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"x":880,"y":40,"wires":[[],[],["d904e26ca5ee3bdc"],["826c1daddef0aaaf"]]},{"id":"823bc099bcf82b42","type":"api-call-service","z":"f8b0ed190f9a654f","name":"Table cuisine on","server":"4066b510aa00d654","version":5,"debugenabled":false,"domain":"switch","service":"turn_on","areaId":[],"deviceId":[],"entityId":["switch.prise_couloir"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":1280,"y":140,"wires":[["0fbb587285ea7619"]]},{"id":"d904e26ca5ee3bdc","type":"api-call-service","z":"f8b0ed190f9a654f","name":"Table cuisine off","server":"4066b510aa00d654","version":5,"debugenabled":false,"domain":"switch","service":"turn_off","areaId":[],"deviceId":[],"entityId":["switch.prise_couloir"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":1640,"y":40,"wires":[[]]},{"id":"0fbb587285ea7619","type":"switch","z":"f8b0ed190f9a654f","name":"","property":"payload","propertyType":"msg","rules":[{"t":"gt","v":"10:18","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":1460,"y":140,"wires":[["d904e26ca5ee3bdc"]]},{"id":"826c1daddef0aaaf","type":"within-time-switch","z":"f8b0ed190f9a654f","name":"","nameInt":"","positionConfig":"905f2cb24b503fe6","startTime":"6:20","startTimeType":"entered","startOffset":0,"startOffsetType":"none","startOffsetMultiplier":60000,"endTime":"10:17","endTimeType":"entered","endOffset":0,"endOffsetType":"none","endOffsetMultiplier":60000,"timeRestrictions":0,"timeRestrictionsType":"none","timeDays":"*","timeOnlyOddDays":false,"timeOnlyEvenDays":false,"timeOnlyOddWeeks":false,"timeOnlyEvenWeeks":false,"timeMonths":"*","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":1050,"y":80,"wires":[["823bc099bcf82b42"],[]]},{"id":"4066b510aa00d654","type":"server","name":"HA","version":5,"addon":false,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true,"heartbeat":false,"heartbeatInterval":"30","areaSelector":"friendlyName","deviceSelector":"friendlyName","entitySelector":"friendlyName","statusSeparator":": ","statusYear":"hidden","statusMonth":"short","statusDay":"numeric","statusHourCycle":"default","statusTimeFormat":"h:m","enableGlobalContextStore":false},{"id":"905f2cb24b503fe6","type":"position-config","name":"","isValide":"true","angleType":"deg","timeZoneOffset":"99","timeZoneDST":"0","stateTimeFormat":"3","stateDateFormat":"12","contextStore":""}]
1 « J'aime »

Si l’ordre arrive à « Table cuisine on » c’est que le noeud within time ne fait pas son boulot. Je ne m’en sers pas donc, je ne suis pas trop quoi dire. Il faut vérifier la syntaxe. Etre sur que la vérification de l’heure se fait avec la bonne timezone.

Le noeud « commuter » qui ensuite envoie vers « off » ne sert à rien. Puisque par construction, ça ne doit pas passer sur « on », si within time marche

Avec le noeud node-red-contrib-chronos :

[{"id":"4db6ddff1aff37f4","type":"api-call-service","z":"792297de7ddff2e5","name":"Strip 1 On","server":"d28c9492.f419c8","version":5,"debugenabled":false,"domain":"light","service":"turn_on","areaId":[],"deviceId":[],"entityId":["light.strip1"],"data":"","dataType":"json","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":670,"y":4240,"wires":[[]]},{"id":"60b7f6e1c37be692","type":"api-call-service","z":"792297de7ddff2e5","name":"Strip 1 Off","server":"d28c9492.f419c8","version":5,"domain":"light","service":"turn_off","areaId":[],"deviceId":[],"entityId":["light.strip1"],"data":"","dataType":"json","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":670,"y":4180,"wires":[[]]},{"id":"9d7b72f6d9b5444e","type":"trigger-state","z":"792297de7ddff2e5","name":"Magnet 1","server":"d28c9492.f419c8","version":4,"inputs":1,"outputs":4,"exposeAsEntityConfig":"","entityId":"binary_sensor.magnet_magnet1_contact","entityIdType":"exact","debugEnabled":false,"constraints":[{"targetType":"this_entity","targetValue":"","propertyType":"current_state","propertyValue":"new_state.state","comparatorType":"is_not","comparatorValueDatatype":"prevEntity","comparatorValue":"state"}],"customOutputs":[{"messageType":"default","messageValue":"","messageValueType":"json","comparatorPropertyType":"current_state","comparatorPropertyValue":"new_state.state","comparatorType":"is","comparatorValue":"off","comparatorValueDataType":"str"},{"messageType":"default","messageValue":"","messageValueType":"json","comparatorPropertyType":"current_state","comparatorPropertyValue":"new_state.state","comparatorType":"is","comparatorValue":"on","comparatorValueDataType":"str"}],"outputInitially":false,"stateType":"str","enableInput":true,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"x":260,"y":4220,"wires":[[],[],["60b7f6e1c37be692"],["ca949575970242c8"]]},{"id":"ca949575970242c8","type":"chronos-filter","z":"792297de7ddff2e5","name":"Matin","config":"abf6a14b6658ad30","baseTime":"","baseTimeType":"msgIngress","evaluation":"","evaluationType":"or","conditions":[{"operator":"between","operands":[{"type":"time","value":"06:15","offset":0,"random":false},{"type":"time","value":"09:30","offset":0,"random":false}]}],"x":470,"y":4240,"wires":[["4db6ddff1aff37f4"]]},{"id":"d28c9492.f419c8","type":"server","name":"hassio","version":5,"addon":false,"rejectUnauthorizedCerts":false,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true,"heartbeat":false,"heartbeatInterval":"30","areaSelector":"friendlyName","deviceSelector":"friendlyName","entitySelector":"friendlyName","statusSeparator":"at: ","statusYear":"hidden","statusMonth":"short","statusDay":"numeric","statusHourCycle":"h23","statusTimeFormat":"h:m","enableGlobalContextStore":true},{"id":"abf6a14b6658ad30","type":"chronos-config","name":"Ailleurs","timezone":"","sunPositions":[]}]
1 « J'aime »

j’ai mis ta solution en test, pour le moment cela fonctionne
Merci beaucoup @golfvert