Voilà une possibilité avec cronplus et https://flows.nodered.org/node/node-red-contrib-sun-position…
Avec cron-plus tu lances au « sunset » et dans le « time-span » tu calcules la durée entre le sunset et 22:00.
[{"id":"7488bb36.e12724","type":"time-span","z":"89990f99.a6d4e","outputs":2,"name":"","positionConfig":"9153fe1d.277ef","operand1":"","operand1Type":"msgPayload","operand1Format":"0","operand1Offset":0,"operand1OffsetType":"none","operand1OffsetMultiplier":60000,"operand2":"22:00:00","operand2Type":"dateEntered","operand2Format":"0","operand2Offset":0,"operand2OffsetType":"none","operand2OffsetMultiplier":60000,"rules":[{"operator":"4","operatorText":">= (greater or equal)","operandType":"num","operandValue":"10","multiplier":"60000"}],"checkall":"true","result1":"","result1Type":"msgPayload","result1Value":"","result1ValueType":"timespan","result1TSFormat":1,"result1Format":0,"result1Offset":0,"result1OffsetType":"none","result1OffsetMultiplier":60000,"x":390,"y":1240,"wires":[["fd7a03e4.b4267"],[]]},{"id":"31820962.520076","type":"cronplus","z":"89990f99.a6d4e","name":"","outputField":"payload","timeZone":"","persistDynamic":false,"commandResponseMsgOutput":"output1","outputs":1,"options":[{"name":"schedule1","topic":"schedule1","payloadType":"date","payload":"","expressionType":"solar","expression":"0 23 11 * * *","location":"43.58 1.45","offset":"0","solarType":"selected","solarEvents":"sunset"}],"x":160,"y":1240,"wires":[["7488bb36.e12724"]]},{"id":"fd7a03e4.b4267","type":"debug","z":"89990f99.a6d4e","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"\"Plus de 30 min entre sunset 22:00:00\"","targetType":"jsonata","statusVal":"","statusType":"auto","x":630,"y":1240,"wires":[]},{"id":"9153fe1d.277ef","type":"position-config","name":"Toulouse","isValide":"true","longitude":"0","latitude":"0","angleType":"deg","timeZoneOffset":99,"timeZoneDST":0,"stateTimeFormat":"3","stateDateFormat":"12"}]
S’il y a plus de 10 minutes d’écart output du haut et tu fais des trucs…