@b3n.0
there are 2 solutions, go through node-red Mini-tuto Sun-Position Nore-red Mqtt pour piloter les volets en fonction de la position du soleil et des mois
by modifying the flow to have sunrise and sunset as below and by adding
in gladys in the device created for the azimuth and altitude 2 corresponding switches
that receive from the node-red flow
gladys/master/device/mqtt:sun/feature/mqtt:sunrise/state
gladys/master/device/mqtt:sun/feature/mqtt:sunset/state
then it’s just a matter of managing it in a scene by retrieving the state of the device
in the code of the minutedepuis minuit function, you need to pass the state to 1 in the payload to switch and adjust the « delay » node
[details=« Flow code »]
t[
{
"id": "dbd46647b51191ed",
"type": "tab",
"label": "Sun-Position",
"disabled": false,
"info": "",
"env": []
},
{
"id": "a0d0e562.7ad1d8",
"type": "debug",
"z": "dbd46647b51191ed",
"name": "debug 1",
"active": false,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "true",
"targetType": "full",
"statusVal": "",
"statusType": "auto",
"x": 720,
"y": 180,
"wires": []
},
{
"id": "9cc2d51.4ac0828",
"type": "change",
"z": "dbd46647b51191ed",
"name": "azimuth",
"rules": [
{
"t": "set",
"p": "payload",
"pt": "msg",
"to": "payload.azimuth",
"tot": "msg"
},
{
"t": "set",
"p": "topic",
"pt": "msg",
"to": "gladys/master/device/mqtt:soleil/feature/mqtt:azimuth/state",
"tot": "str"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 720,
"y": 240,
"wires": [
[
"0a17f9d94c9dae35",
"ddf8b5e66052a4dc"
]
]
},
{
"id": "28e91.9d63d16f6",
"type": "change",
"z": "dbd46647b51191ed",
"name": "altitude",
"rules": [
{
"t": "set",
"p": "payload",
"pt": "msg",
"to": "payload.altitude",
"tot": "msg"
},
{
"t": "set",
"p": "topic",
"pt": "msg",
"to": "gladys/master/device/mqtt:soleil/feature/mqtt:altitude/state",
"tot": "str"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 720,
"y": 320,
"wires": [
[
"ae57174554627c71",
"58367a9aedab25dc"
]
]
},
{
"id": "e921e01a.a0fa3",
"type": "debug",
"z": "dbd46647b51191ed",
"name": "debug 4",
"active": false,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "true",
"targetType": "full",
"statusVal": "",
"statusType": "auto",
"x": 720,
"y": 380,
"wires": []
},
{
"id": "e866e950.a7f798",
"type": "debug",
"z": "dbd46647b51191ed",
"name": "debug 3",
"active": false,
"tosidebar": true,
"console": false,
"tostatus": true,
"complete": "true",
"targetType": "full",
"statusVal": "payload",
"statusType": "auto",
"x": 1160,
"y": 180,
"wires": []
},
{
"id": "5b085e1b.4ec8a",
"type": "debug",
"z": "dbd46647b51191ed",
"name": "debug 6",
"active": false,
"tosidebar": true,
"console": false,
"tostatus": true,
"complete": "true",
"targetType": "full",
"statusVal": "payload",
"statusType": "auto",
"x": 1160,
"y": 380,
"wires": []
},
{
"id": "8eee70dd77c1369c",
"type": "mqtt out",
"z": "dbd46647b51191ed",
"name": "",
"topic": "",
"qos": "",
"retain": "",
"respTopic": "",
"contentType": "",
"userProps": "",
"correl": "",
"expiry": "",
"broker": "3c3eb52d.9fb296",
"x": 1150,
"y": 280,
"wires": []
},
{
"id": "0a17f9d94c9dae35",
"type": "function",
"z": "dbd46647b51191ed",
"name": "round",
"func": "msg.payload = Math.round(msg.payload)\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 930,
"y": 240,
"wires": [
[
"8eee70dd77c1369c",
"e866e950.a7f798"
]
]
},
{
"id": "ddf8b5e66052a4dc",
"type": "debug",
"z": "dbd46647b51191ed",
"name": "debug 2",
"active": false,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "true",
"targetType": "full",
"statusVal": "",
"statusType": "auto",
"x": 920,
"y": 180,
"wires": []
},
{
"id": "ae57174554627c71",
"type": "function",
"z": "dbd46647b51191ed",
"name": "round",
"func": "msg.payload = Math.round(msg.payload)\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 930,
"y": 320,
"wires": [
[
"5b085e1b.4ec8a",
"8eee70dd77c1369c"
]
]
},
{
"id": "58367a9aedab25dc",
"type": "debug",
"z": "dbd46647b51191ed",
"name": "debug 5",
"active": false,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "true",
"targetType": "full",
"statusVal": "",
"statusType": "auto",
"x": 920,
"y": 380,
"wires": []
},
{
"id": "56265aeb.99f034",
"type": "sun-position",
"z": "dbd46647b51191ed",
"name": "",
"positionConfig": "2831ba70.55a636",
"rules": [
{
"valueLow": "0",
"valueLowType": "num",
"valueHigh": "360",
"valueHighType": "num"
}
],
"onlyOnChange": "true",
"topic": "",
"outputs": 2,
"start": "sunsetStart",
"startType": "pdsTime",
"startOffset": 0,
"startOffsetType": "num",
"startOffsetMultiplier": 60000,
"end": "sunriseEnd",
"endType": "pdsTime",
"endOffset": 0,
"endOffsetType": "num",
"endOffsetMultiplier": 60000,
"x": 470,
"y": 280,
"wires": [
[
"a0d0e562.7ad1d8",
"9cc2d51.4ac0828",
"28e91.9d63d16f6",
"6b1f97b4cc4c5e53",
"b10eedb2bb5656c1"
],
[
"e921e01a.a0fa3"
]
]
},
{
"id": "664b1852987e09be",
"type": "time-inject",
"z": "dbd46647b51191ed",
"name": "Period and Injection Interval.",
"nameInt": "¹sunrise start - sunset end = timestamp ↻10min",
"positionConfig": "2831ba70.55a636",
"props": [
{
"p": "",
"pt": "msgPayload",
"v": "",
"vt": "date",
"o": "",
"oT": "none",
"oM": "60000",
"f": 0,
"fS": 0,
"fT": "UNIX timestamp (ms)",
"fI": "0",
"next": true,
"days": "*",
"months": "*",
"onlyOddDays": false,
"onlyEvenDays": false,
"onlyOddWeeks": false,
"onlyEvenWeeks": false
},
{
"p": "",
"pt": "msgTopic",
"v": "",
"vt": "str",
"o": "",
"oT": "none",
"oM": "60000",
"f": 0,
"fS": 0,
"fT": "UNIX timestamp (ms)",
"fI": "0",
"next": false,
"days": "*",
"months": "*",
"onlyOddDays": false,
"onlyEvenDays": false,
"onlyOddWeeks": false,
"onlyEvenWeeks": false
]
],
"injectTypeSelect": "interval-time",
"intervalCount": "10",
"intervalCountType": "num",
"intervalCountMultiplier": 60000,
"cron": "",
"cronType": "cronexpr",
"time": "sunriseStart",
"timeType": "pdsTime",
"offset": 0,
"offsetType": "none",
"offsetMultiplier": 60000,
"timeEnd": "sunsetEnd",
"timeEndType": "pdsTime",
"timeEndOffset": 0,
"timeEndOffsetType": "none",
"timeEndOffsetMultiplier": 60000,
"timeDays": "*",
"timeOnlyOddDays": false,
"timeOnlyEvenDays": false,
"timeOnlyOddWeeks": false,
"timeOnlyEvenWeeks": false,
"timeMonths": "*",
"timedatestart": "",
"timedateend": "",
"property": "",
"propertyType": "none",
"propertyCompare": "true",
"propertyThreshold": "",
"propertyThresholdType": "num",
"timeAlt": "",
"timeAltType": "entered",
"timeAltDays": "*",
"timeAltOnlyOddDays": false,
"timeAltOnlyEvenDays": false,
"timeAltOnlyOddWeeks": false,
"timeAltOnlyEvenWeeks": false,
"timeAltMonths": "*",
"timeAltOffset": 0,
"timeAltOffsetType": "none",
"timeAltOffsetMultiplier": 60000,
"once": true,
"onceDelay": 0.1,
"recalcTime": 2,
"x": 220,
"y": 280,
"wires": [
[
"56265aeb.99f034"
]
]
},
{
"id": "6b1f97b4cc4c5e53",
"type": "change",
"z": "dbd46647b51191ed",
"name": "sunset",
"rules": [
{
"t": "set",
"p": "payload",
"pt": "msg",
"to": "payload.times.sunsetStart",
"tot": "msg"
},
{
"t": "set",
"p": "topic",
"pt": "msg",
"to": "gladys/master/device/mqtt:soleil/feature/mqtt:sunset/state",
"tot": "str"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 710,
"y": 660,
"wires": [
[
"8c99bc6da0a4d5b0",
"3e97e9902da57988"
]
]
},
{
"id": "b10eedb2bb5656c1",
"type": "change",
"z": "dbd46647b51191ed",
"name": "sunrise",
"rules": [
{
"t": "set",
"p": "payload",
"pt": "msg",
"to": "payload.times.sunriseStart",
"tot": "msg"
},
{
"t": "set",
"p": "topic",
"pt": "msg",
"to": "gladys/master/device/mqtt:soleil/feature/mqtt:sunrise/state",
"tot": "str"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 720,
"y": 500,
"wires": [
[
"ac45aa2966444fcf",
"bb2297c4afea4845"
]
]
},
{
"id": "3e97e9902da57988",
"type": "debug",
"z": "dbd46647b51191ed",
"name": "debug 10",
"active": false,
"tosidebar": true,
"console": false,
"tostatus": true,
"complete": "true",
"targetType": "full",
"statusVal": "payload",
"statusType": "auto",
"x": 920,
"y": 720,
"wires": []
},
{
"id": "e9dd4a4e8fcb034c",
"type": "debug",
"z": "dbd46647b51191ed",
"name": "debug 11",
"active": false,
"tosidebar": true,
"console": false,
"tostatus": true,
"complete": "true",
"targetType": "full",
"statusVal": "payload",
"statusType": "auto",
"x": 1160,
"y": 440,
"wires": []
},
{
"id": "870a1a0c309ea346",
"type": "mqtt out",
"z": "dbd46647b51191ed",
"name": "",
"topic": "",
"qos": "",
"retain": "",
"respTopic": "",
"contentType": "",
"userProps": "",
"correl": "",
"expiry": "",
"broker": "3c3eb52d.9fb296",
"x": 1170,
"y": 580,
"wires": []
},
{
"id": "8c99bc6da0a4d5b0",
"type": "function",
"z": "dbd46647b51191ed",
"name": "minutes since midnight",
"func": "// Input: msg.payload = \"2023-11-23T16:23:18.121Z\"\n\n// Convert the string to a Date object\nvar dateObj = new Date(msg.payload.value);\n\n// Extract the hours and minutes\nvar hours = dateObj.getUTCHours();\nvar minutes = dateObj.getUTCMinutes();\n\n// Calculate the total number of minutes since midnight\nvar minutesSinceMidnight = hours * 60 + minutes;\n\nmsg.topic = hours;\nmsg.payload = minutesSinceMidnight;\n\n// Return the message\nreturn msg;",
"outputs": 1,
"timeout": "",
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 940,
"y": 660,
"wires": [
[
"7134c8c9865f611d",
"5efa49d45f363336"
]
]
},
{
"id": "ac45aa2966444fcf",
"type": "function",
"z": "dbd46647b51191ed",
"name": "minutes since midnight",
"func": "// Input: msg.payload = \"2023-11-23T16:23:18.121Z\"\n\n// Convert the string to a Date object\nvar dateObj = new Date(msg.payload.value);\n\n// Extract the hours and minutes\nvar hours = dateObj.getUTCHours();\nvar minutes = dateObj.getUTCMinutes();\n\n// Calculate the total number of minutes since midnight\nvar minutesSinceMidnight = hours * 60 + minutes;\n\nmsg.payload = minutesSinceMidnight;\n\n// Return the message\nreturn msg;",
"outputs": 1,
"timeout": "",
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 940,
"y": 500,
"wires": [
[
"e9dd4a4e8fcb034c",
"9de494cb30ca99c2"
]
]
},
{
"id": "bb2297c4afea4845",
"type": "debug",
"z": "dbd46647b51191ed",
"name": "debug 12",
"active": false,
"tosidebar": true,
"console": false,
"tostatus": true,
"complete": "true",
"targetType": "full",
"statusVal": "payload",
"statusType": "auto",
"x": 920,
"y": 440,
"wires": []
},
{
"id": "7134c8c9865f611d",
"type": "debug",
"z": "dbd46647b51191ed",
"name": "debug 13",
"active": false,
"tosidebar": true,
"console": false,
"tostatus": true,
"complete": "true",
"targetType": "full",
"statusVal": "payload",
"statusType": "auto",
"x": 1160,
"y": 720,
"wires": []
},
{
"id": "9de494cb30ca99c2",
"type": "delay",
"z": "dbd46647b51191ed",
"name": "",
"pauseType": "delay",
"timeout": "5",
"timeoutUnits": "seconds",
"rate": "1",
"nbRateUnits": "1",
"rateUnits": "second",
"randomFirst": "1",
"randomLast": "5",
"randomUnits": "seconds",
"drop": false,
"allowrate": false,
"outputs": 1,
"x": 1160,
"y": 500,
"wires": [
[
"870a1a0c309ea346"
]
]
},
{
"id": "5efa49d45f363336",
"type": "delay",
"z": "dbd46647b51191ed",
"name": "",
"pauseType": "delay",
"timeout": "5",
"timeoutUnits": "seconds",
"rate": "1",
"nbRateUnits": "1",
"rateUnits": "second"1
