Hi Steve,
the problem is, that sunset only works once and not repeatedly all days. In order to test it I have to wait at least 2 days. As I started it yesterday night, first trigger will be today at sunset. Then I have to wait another day to see if it triggers again or fails. At least it should give you an idea what exactly is the problem.
Please find attached my flow and a file with my dynamic schedules which I load into Cron+
Standard.txt (5.9 KB)
[{"id":"70489757.9ad0d8","type":"cronplus","z":"4e969c7c.f77dc4","name":"Heating","outputField":"payload","timeZone":"","persistDynamic":true,"commandResponseMsgOutput":"fanOut","outputs":4,"options":[{"name":"Sunrise","topic":"Sunrise","payloadType":"date","payload":"","expressionType":"solar","expression":"0 * * * * * *","location":"48.38157356491496 10.437845885753632","offset":"-30","solarType":"selected","solarEvents":"sunrise"},{"name":"Sunset","topic":"Sunset","payloadType":"date","payload":"","expressionType":"solar","expression":"0 * * * * * *","location":"48.38157356491496 10.437845885753632","offset":"15","solarType":"selected","solarEvents":"sunset"}],"x":260,"y":800,"wires":[["273220ca.4f9ed"],["5995faa0.49adc4"],["e381ec2d.78eb2"],["4fec987f.72b318"]]},{"id":"5355c793.e8c0b8","type":"ui_template","z":"4e969c7c.f77dc4","group":"8784088a.4ec318","name":"","order":8,"width":16,"height":22,"format":"<style type=\"text/css\">\n.t1 {border-collapse:collapse;border-spacing:0;border-color:#ccc;}\n.t1 td{font-family:Arial, sans-serif;font-size:14px;padding:8px 3px;border-style:solid;border-width:0px;overflow:hidden;word-break:normal;border-top-width:1px;border-bottom-width:1px;border-color:#ccc;color:#333;background-color:#fff;}\n.t1 th{font-family:Arial, sans-serif;font-size:14px;font-weight:normal;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;border-color:#ccc;color:#333;background-color:#f0f0f0;}\n.t1 .t1-36r9{background-color:#000000;color:#ffffff;text-align:left;vertical-align:top}\n.t1 .t1-x2zo{background-color:#c0c0c0;font-size:small;text-align:left;vertical-align:top}\n.t1 .t1-o73e{background-color:#c0c0c0;font-size:small;text-align:center;vertical-align:top}\n.t1 .t1-5qt9{font-size:small;text-align:left;vertical-align:top}\n.t1 .t1-5qta{font-size:small;text-align:center;vertical-align:middle}\n</style>\n<table class=\"t1\">\n <tr>\n <th class=\"t1-36r9\" colspan=\"9\">CRON Schedules</th>\n </tr>\n <tr>\n <td class=\"t1-x2zo\">Name</td>\n <td class=\"t1-x2zo\">Expression</td>\n <td class=\"t1-x2zo\">Payload</td>\n <td class=\"t1-x2zo\">Description</td>\n <td class=\"t1-x2zo\">Next run</td>\n <td class=\"t1-x2zo\">State</td>\n <!-- <td class=\"t1-o73e\">Delete</td>\n <td class=\"t1-o73e\">Pause</td>\n <td class=\"t1-o73e\">Resume</td> -->\n </tr>\n <tr ng-repeat=\"item in msg.payload\">\n <td class=\"t1-5qt9\">{{item.config.name}}</td>\n <td class=\"t1-5qt9\" style=\"white-space: nowrap\" nowrap>{{item.config.expression}}</td>\n <td class=\"t1-5qt9\">{{item.config.payload}}</td>\n <td class=\"t1-5qt9\">{{item.status.description}}</td>\n <td class=\"t1-5qt9\">{{item.status.nextDescription}}</td>\n <td class=\"t1-5qta\"><i class=\"fa fa-{{item.status.isRunning ? 'play' : 'pause'}}\"> </i></td>\n\n <!-- <td class=\"t1-5qta\">\n <md-button class=\"md-raised\"\n ng-click=\"send([[{payload:{command:'remove', name: item.config.name}}, {payload:{command:'list-all'}}]]);\"> <i class=\"fa fa-trash\"> </i></md-button>\n </td>\n <td class=\"t1-5qta\">\n <md-button class=\"button\" \n ng-click=\"send([[{payload:{command:'pause', name: item.config.name}}, {payload:{command:'list-all'}}]]);\"> <i class=\"fa fa-pause\"> </i></md-button>\n </td>\n <td class=\"t1-5qta\">\n <md-button class=\"button\" \n ng-click=\"send([[{payload:{command:'start', name: item.config.name}}, {payload:{command:'list-all'}}]]);\"> <i class=\"fa fa-play\"> </i></md-button>\n </td> -->\n\n </tr>\n\n </tbody>\n</table>\n\n<!--<table id=\"table\" class=\"table table-striped table-responsive-md btn-table\" >-->\n<!-- <tr>-->\n<!-- <th>Name</th> -->\n<!-- <th>Expression</th> -->\n<!-- <th>Payload</th> -->\n<!-- <th>Description</th>-->\n<!-- <th>Next run</th>-->\n<!-- <th>State</th>-->\n<!-- <th>Delete</th>-->\n<!-- <th>Pause</th>-->\n<!-- <th>Resume</th>-->\n<!-- </tr>-->\n<!-- <tbody>-->\n<!-- <tr ng-repeat=\"item in msg.payload\">-->\n<!-- <td >{{item.config.name}}</td>-->\n<!-- <td style=\"white-space: nowrap\" nowrap>{{item.config.expression}}</td>-->\n<!-- <td >{{item.config.payload}}</td>-->\n<!-- <td >{{item.status.description}}</td>-->\n<!-- <td >{{item.status.nextDescription}}</td>-->\n<!-- <td >{{item.status.isRunning ? 'Running' : 'Paused'}}</td>-->\n<!-- <td>-->\n<!-- <md-button class=\"md-raised\"-->\n<!-- ng-click=\"send([[{payload:{command:'remove', name: item.config.name}}, {payload:{command:'list-all'}}]]);\"> <i class=\"fa fa-trash\"> </i></md-button>-->\n<!-- </td>-->\n<!-- <td>-->\n<!-- <md-button class=\"button\" -->\n<!-- ng-click=\"send([[{payload:{command:'pause', name: item.config.name}}, {payload:{command:'list-all'}}]]);\"> <i class=\"fa fa-pause\"> </i></md-button>-->\n<!-- </td>-->\n<!-- <td>-->\n<!-- <md-button class=\"button\" -->\n<!-- ng-click=\"send([[{payload:{command:'start', name: item.config.name}}, {payload:{command:'list-all'}}]]);\"> <i class=\"fa fa-play\"> </i></md-button>-->\n<!-- </td>-->\n<!-- </tr>-->\n<!-- </tbody>-->\n<!--</table>-->\n\n","storeOutMessages":false,"fwdInMessages":false,"resendOnRefresh":false,"templateScope":"local","x":820,"y":1020,"wires":[[]]},{"id":"3b9c3e39.b0eaf2","type":"function","z":"4e969c7c.f77dc4","name":"status-all","func":"if(!msg.payload || !msg.payload.result || !msg.payload.result.length){\n msg.payload = [];\n return msg;\n}\nmsg.payload = msg.payload.result;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":620,"y":1020,"wires":[["5355c793.e8c0b8"]]},{"id":"3dba72ab.a9c45e","type":"ui_button","z":"4e969c7c.f77dc4","name":"Status all-dynamic","group":"8784088a.4ec318","order":2,"width":4,"height":1,"passthru":true,"label":"Heizprofilstatus","tooltip":"","color":"","bgcolor":"","className":"","icon":"","payload":"","payloadType":"str","topic":"status-all","topicType":"str","x":510,"y":200,"wires":[["8ed2d296.e5771"]]},{"id":"59f8dec0.63298","type":"ui_button","z":"4e969c7c.f77dc4","name":"Remove all dynamic","group":"8784088a.4ec318","order":4,"width":4,"height":1,"passthru":true,"label":"Heizprofil löschen","tooltip":"","color":"","bgcolor":"","icon":"","payload":"1","payloadType":"str","topic":"remove-all-dynamic","x":220,"y":280,"wires":[["93efb1f9.b065f","9c5dd9ca.052698"]]},{"id":"fe876335.8d72c","type":"ui_button","z":"4e969c7c.f77dc4","name":"Load all dynamic","group":"8784088a.4ec318","order":3,"width":4,"height":1,"passthru":true,"label":"Heizprofil laden","tooltip":"","color":"","bgcolor":"","icon":"","payload":"","payloadType":"date","topic":"","x":230,"y":340,"wires":[["bee78fa3.da3b6","ce5507d1.7ea898"]]},{"id":"ce186cd3.00ed4","type":"function","z":"4e969c7c.f77dc4","name":"","func":"msg.payload = {\"command\":\"describe\",\n \"expressionType\":\"solar\",\n \"location\":\"48.38157356491496 10.437845885753632\",\n \"solarType\":\"selected\",\n \"solarEvents\":\"sunrise,sunset\",\n \"timeZone\":\"Europe/Berlin\"\n };\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":480,"y":100,"wires":[["6e94c237.fde8dc"]]},{"id":"be95831c.56938","type":"inject","z":"4e969c7c.f77dc4","name":"at 00:01","props":[{"p":"payload"}],"repeat":"","crontab":"01 00 * * *","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":260,"y":80,"wires":[["ce186cd3.00ed4"]]},{"id":"4fec987f.72b318","type":"switch","z":"4e969c7c.f77dc4","name":"","property":"payload.command.command","propertyType":"msg","rules":[{"t":"eq","v":"describe","vt":"str"},{"t":"eq","v":"status-all","vt":"str"},{"t":"eq","v":"status-all-static","vt":"str"}],"checkall":"true","repair":false,"outputs":3,"x":470,"y":980,"wires":[["8cf018fb.860648"],["3b9c3e39.b0eaf2"],["984d98ad8e343a08"]]},{"id":"8cf018fb.860648","type":"function","z":"4e969c7c.f77dc4","name":"get sr + ss items","func":"\nvar sunrise = msg.payload.result.eventTimes.find(e => {\n return e.event == \"sunrise\"\n})\n\nvar sunset = msg.payload.result.eventTimes.find(e => {\n return e.event == \"sunset\"\n})\n\nmsg.payload = {\n sunrise : sunrise.time,\n sunset : sunset.time\n}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":640,"y":940,"wires":[["eddd2a47.4c59d8","698182eb.6b7f3c"]]},{"id":"3c9082b6.02527e","type":"moment","z":"4e969c7c.f77dc4","name":"timestamp","topic":"","input":"","inputType":"msg","inTz":"Europe/Berlin","adjAmount":0,"adjType":"days","adjDir":"add","format":"x","locale":"de-DE","output":"","outputType":"msg","outTz":"Europe/Berlin","x":970,"y":900,"wires":[["89731ed5.1eaa","89878eaf.1f54e"]]},{"id":"14a096a8.7cfa79","type":"moment","z":"4e969c7c.f77dc4","name":"timestamp","topic":"","input":"","inputType":"msg","inTz":"Europe/Berlin","adjAmount":0,"adjType":"days","adjDir":"add","format":"x","locale":"de-DE","output":"","outputType":"msg","outTz":"Europe/Berlin","x":970,"y":980,"wires":[["57a09140.7e8e1","c7211032.45a01"]]},{"id":"b009ed30.c3d08","type":"ui_dropdown","z":"4e969c7c.f77dc4","name":"","label":"Heizungsprofile","tooltip":"","place":"Select option","group":"8784088a.4ec318","order":1,"width":0,"height":0,"passthru":false,"multiple":false,"options":[{"label":"Standard","value":1,"type":"num"},{"label":"Gäste","value":2,"type":"num"},{"label":"DG 18 Grad","value":3,"type":"num"},{"label":"Urlaub","value":4,"type":"num"}],"payload":"","topic":"","x":500,"y":40,"wires":[["37fd8f27.715"]]},{"id":"37fd8f27.715","type":"change","z":"4e969c7c.f77dc4","name":"","rules":[{"t":"set","p":"profilenummer","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":710,"y":40,"wires":[["9cb0f7c5.74fd78"]]},{"id":"93efb1f9.b065f","type":"delay","z":"4e969c7c.f77dc4","name":"20 ms","pauseType":"delay","timeout":"20","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":270,"y":220,"wires":[["3dba72ab.a9c45e"]]},{"id":"ec3a1a4e.dfa0e8","type":"link in","z":"4e969c7c.f77dc4","name":"Status","links":["a21f9d7c.8aa0b","3448e26.76c571e"],"x":55,"y":220,"wires":[["93efb1f9.b065f"]]},{"id":"5f636878.66aff8","type":"file in","z":"4e969c7c.f77dc4","name":"","filename":"/home/pi/Heizungsprofile/Standard.txt","format":"lines","chunk":false,"sendError":false,"encoding":"none","x":570,"y":480,"wires":[["13483ad5.b67f65"]]},{"id":"33b32bc9.a11024","type":"json","z":"4e969c7c.f77dc4","name":"","property":"payload","action":"","pretty":true,"x":1030,"y":540,"wires":[["4a9fce4d.54d75","a21f9d7c.8aa0b","3f76705c.b36e5"]]},{"id":"4a9fce4d.54d75","type":"debug","z":"4e969c7c.f77dc4","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1190,"y":540,"wires":[]},{"id":"13483ad5.b67f65","type":"switch","z":"4e969c7c.f77dc4","name":"","property":"payload","propertyType":"msg","rules":[{"t":"nempty"}],"checkall":"true","repair":false,"outputs":1,"x":910,"y":540,"wires":[["33b32bc9.a11024"]]},{"id":"3b6dab5.be4ea54","type":"file in","z":"4e969c7c.f77dc4","name":"","filename":"/home/pi/Heizungsprofile/Gaeste.txt","format":"lines","chunk":false,"sendError":false,"encoding":"none","x":560,"y":520,"wires":[["13483ad5.b67f65"]]},{"id":"cdc555ba.a9b5e8","type":"file in","z":"4e969c7c.f77dc4","name":"","filename":"/home/pi/Heizungsprofile/DG-18-Grad.txt","format":"lines","chunk":false,"sendError":false,"encoding":"none","x":580,"y":560,"wires":[["13483ad5.b67f65"]]},{"id":"a2ee7cd9.983b3","type":"file in","z":"4e969c7c.f77dc4","name":"","filename":"/home/pi/Heizungsprofile/Urlaub.txt","format":"lines","chunk":false,"sendError":false,"encoding":"none","x":560,"y":600,"wires":[["13483ad5.b67f65"]]},{"id":"bee78fa3.da3b6","type":"switch","z":"4e969c7c.f77dc4","name":"flow profilenummer","property":"profilenummer","propertyType":"flow","rules":[{"t":"eq","v":"1","vt":"num"},{"t":"eq","v":"2","vt":"num"},{"t":"eq","v":"3","vt":"num"},{"t":"eq","v":"4","vt":"num"}],"checkall":"true","repair":false,"outputs":4,"x":250,"y":540,"wires":[["5f636878.66aff8"],["3b6dab5.be4ea54"],["cdc555ba.a9b5e8"],["a2ee7cd9.983b3"]]},{"id":"a21f9d7c.8aa0b","type":"link out","z":"4e969c7c.f77dc4","name":"load done","links":["ec3a1a4e.dfa0e8"],"x":1135,"y":500,"wires":[]},{"id":"89731ed5.1eaa","type":"change","z":"4e969c7c.f77dc4","name":"","rules":[{"t":"set","p":"sunrise","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1180,"y":880,"wires":[["e4da9af1.a16978"]]},{"id":"57a09140.7e8e1","type":"change","z":"4e969c7c.f77dc4","name":"","rules":[{"t":"set","p":"sunset","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1180,"y":1000,"wires":[[]]},{"id":"89878eaf.1f54e","type":"mqtt out","z":"4e969c7c.f77dc4","name":"","topic":"sun/rise","qos":"0","retain":"","broker":"565c5225.bce5ac","x":1160,"y":920,"wires":[]},{"id":"c7211032.45a01","type":"mqtt out","z":"4e969c7c.f77dc4","name":"","topic":"sun/set","qos":"","retain":"","broker":"565c5225.bce5ac","x":1160,"y":960,"wires":[]},{"id":"21386ae0.1c6dd6","type":"function","z":"4e969c7c.f77dc4","name":"","func":"delete msg.topic;\nlet room = msg.payload.room;\nlet type = msg.payload.type;\nlet temp = msg.payload.value;\nmsg.payload = msg.time + \": \" + room + \" \" + type + \" \" + temp;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":820,"y":780,"wires":[["c1463448.066898"]]},{"id":"59b54d7f.fed3d4","type":"ui_toast","z":"4e969c7c.f77dc4","position":"top right","displayTime":"3","highlight":"","sendall":true,"outputs":0,"ok":"OK","cancel":"","raw":false,"topic":"","name":"Soll-Temperaturwechsel","x":1190,"y":780,"wires":[]},{"id":"9c5dd9ca.052698","type":"link out","z":"4e969c7c.f77dc4","name":"","links":["f1362681.3482f8"],"x":635,"y":280,"wires":[]},{"id":"8ed2d296.e5771","type":"link out","z":"4e969c7c.f77dc4","name":"","links":["f1362681.3482f8"],"x":635,"y":200,"wires":[]},{"id":"3f76705c.b36e5","type":"link out","z":"4e969c7c.f77dc4","name":"","links":["f1362681.3482f8"],"x":1135,"y":580,"wires":[]},{"id":"f1362681.3482f8","type":"link in","z":"4e969c7c.f77dc4","name":"CRON PLUS","links":["3f76705c.b36e5","6e94c237.fde8dc","8ed2d296.e5771","9c5dd9ca.052698"],"x":95,"y":800,"wires":[["70489757.9ad0d8"]]},{"id":"eddd2a47.4c59d8","type":"change","z":"4e969c7c.f77dc4","name":"sunrise","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.sunrise","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":820,"y":900,"wires":[["3c9082b6.02527e"]]},{"id":"698182eb.6b7f3c","type":"change","z":"4e969c7c.f77dc4","name":"sunset","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.sunset","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":810,"y":980,"wires":[["14a096a8.7cfa79"]]},{"id":"6e94c237.fde8dc","type":"link out","z":"4e969c7c.f77dc4","name":"","links":["f1362681.3482f8"],"x":635,"y":100,"wires":[]},{"id":"9cb0f7c5.74fd78","type":"link out","z":"4e969c7c.f77dc4","name":"profil out","links":["3bbc34a9.cfd8bc","e767c620.4102b8"],"x":875,"y":40,"wires":[]},{"id":"e767c620.4102b8","type":"link in","z":"4e969c7c.f77dc4","name":"load dynamic","links":["9cb0f7c5.74fd78","bdc9d93.69b7f28"],"x":55,"y":340,"wires":[["fe876335.8d72c"]]},{"id":"b1d3a5cd.458c88","type":"link in","z":"4e969c7c.f77dc4","name":"remove all dynamic","links":["63c75b60.30bb04"],"x":55,"y":280,"wires":[["59f8dec0.63298"]]},{"id":"a35ed99c.1f34c8","type":"link out","z":"4e969c7c.f77dc4","name":"","links":["12480e97.570921"],"x":775,"y":820,"wires":[]},{"id":"1b9cda61.b7a3f6","type":"comment","z":"4e969c7c.f77dc4","name":"to room-router --->","info":"","x":1030,"y":820,"wires":[]},{"id":"c1463448.066898","type":"delay","z":"4e969c7c.f77dc4","name":"","pauseType":"rate","timeout":"4","timeoutUnits":"seconds","rate":"1","nbRateUnits":"2","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":980,"y":780,"wires":[["59b54d7f.fed3d4"]]},{"id":"a0d6c44.a702438","type":"moment","z":"4e969c7c.f77dc4","name":"HH:mm","topic":"","input":"xyz","inputType":"flow","inTz":"Europe/Berlin","adjAmount":0,"adjType":"days","adjDir":"add","format":"HH:mm","locale":"de-DE","output":"time","outputType":"msg","outTz":"Europe/Berlin","x":660,"y":780,"wires":[["21386ae0.1c6dd6"]]},{"id":"defdf4d8.0e4288","type":"change","z":"4e969c7c.f77dc4","name":"no topic","rules":[{"t":"delete","p":"topic","pt":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":660,"y":820,"wires":[["a35ed99c.1f34c8"]]},{"id":"3448e26.76c571e","type":"link out","z":"4e969c7c.f77dc4","name":"","links":["ec3a1a4e.dfa0e8"],"x":635,"y":340,"wires":[]},{"id":"ce5507d1.7ea898","type":"delay","z":"4e969c7c.f77dc4","name":"10 ms","pauseType":"delay","timeout":"10","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":470,"y":340,"wires":[["3448e26.76c571e"]]},{"id":"b1013812.06a738","type":"link in","z":"4e969c7c.f77dc4","name":"cron init","links":["35ca8d8a.b96ce2","e51bdc1c.bb49a"],"x":295,"y":120,"wires":[["ce186cd3.00ed4","494b9af3.0911c4"]]},{"id":"494b9af3.0911c4","type":"delay","z":"4e969c7c.f77dc4","name":"","pauseType":"delay","timeout":"1","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":260,"y":180,"wires":[["3dba72ab.a9c45e"]]},{"id":"e381ec2d.78eb2","type":"function","z":"4e969c7c.f77dc4","name":"if cron true","func":"if (global.get('cron') === true){\n node.status({fill:\"green\",shape:\"ring\",text:\"true\"});\n return msg;\n}\nelse {\n node.status({fill:\"red\",shape:\"ring\",text:\"false\"});\n}\nreturn null;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":490,"y":800,"wires":[["a0d6c44.a702438","defdf4d8.0e4288"]]},{"id":"273220ca.4f9ed","type":"function","z":"4e969c7c.f77dc4","name":"Aussenlampe aus","func":"//msg.payload = timeString_hm() + \": Aussenlicht aus\";\nlet t = date_time_string(\"dayhm\") + \" aus\";\nnode.status({fill:\"green\", shape:\"ring\", text:t});\nreturn{payload:{'room':\"Aussenlampe\", 'switch': \"off\"}};\n\n\nfunction date_time_string(type){\n let date = new Date(Date.now());\n let year = date.getFullYear();\n let month = (\"0\" + (date.getMonth() + 1)).slice(-2);\n let day = (\"0\" + date.getDate()).slice(-2);\n let hours = (\"0\" + date.getHours()).slice(-2);\n let minutes = (\"0\" + date.getMinutes()).slice(-2);\n let seconds = (\"0\" + date.getSeconds()).slice(-2);\n let datetimestring = \"\";\n switch(type) {\n case \"full\":\n datetimestring = day + \"-\" + month + \"-\" + year + \" \" + hours + ':' + minutes + ':' + seconds; \n break\n case \"dayhm\":\n datetimestring = day + \".\" + month + \" @ \" + hours + ':' + minutes; \n break \n case \"hm\": \n datetimestring = hours + ':' + minutes; \n break\n case \"hms\":\n datetimestring = hours + ':' + minutes + ':' + seconds; \n break \n case \"ts\":\n datetimestring = Date.now(); \n break\n default:\n datetimestring = null; \n }\n return datetimestring;\n}","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":510,"y":660,"wires":[["3e9b5919.48a6d6","c4b8f661.8eb868"]]},{"id":"5995faa0.49adc4","type":"function","z":"4e969c7c.f77dc4","name":"Aussenlampe an","func":"//msg.payload = timeString_hm() + \": Aussenlicht an\";\nlet t = date_time_string(\"dayhm\") + \" an\";\nnode.status({fill:\"red\",shape:\"ring\",text:t});\nreturn{payload:{'room':\"Aussenlampe\", 'switch': \"on\"}};\n\nfunction date_time_string(type){\n let date = new Date(Date.now());\n let year = date.getFullYear();\n let month = (\"0\" + (date.getMonth() + 1)).slice(-2);\n let day = (\"0\" + date.getDate()).slice(-2);\n let hours = (\"0\" + date.getHours()).slice(-2);\n let minutes = (\"0\" + date.getMinutes()).slice(-2);\n let seconds = (\"0\" + date.getSeconds()).slice(-2);\n let datetimestring = \"\";\n switch(type) {\n case \"full\":\n datetimestring = day + \"-\" + month + \"-\" + year + \" \" + hours + ':' + minutes + ':' + seconds; \n break\n case \"dayhm\":\n datetimestring = day + \".\" + month + \" @ \" + hours + ':' + minutes; \n break \n case \"hm\": \n datetimestring = hours + ':' + minutes; \n break\n case \"hms\":\n datetimestring = hours + ':' + minutes + ':' + seconds; \n break \n case \"ts\":\n datetimestring = Date.now(); \n break\n default:\n datetimestring = null; \n }\n return datetimestring;\n}","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":510,"y":720,"wires":[["3e9b5919.48a6d6","c4b8f661.8eb868"]]},{"id":"bb06b69c.864748","type":"file","z":"4e969c7c.f77dc4","name":"","filename":"/home/pi/logs/crontest.txt","appendNewline":true,"createDir":true,"overwriteFile":"false","encoding":"none","x":1270,"y":660,"wires":[[]]},{"id":"3e9b5919.48a6d6","type":"link out","z":"4e969c7c.f77dc4","name":"","links":["4aa91ee5.08bf2"],"x":675,"y":720,"wires":[]},{"id":"c4b8f661.8eb868","type":"json","z":"4e969c7c.f77dc4","name":"","property":"payload","action":"","pretty":false,"x":710,"y":660,"wires":[["f8ff54b893b7b872"]]},{"id":"60882f6c.803ac","type":"comment","z":"4e969c7c.f77dc4","name":"to output router --->","info":"","x":930,"y":720,"wires":[]},{"id":"a1dcf39b.e4e5c","type":"function","z":"4e969c7c.f77dc4","name":"","func":"let day = 1000*60*60*24;\nlet sr = parseInt (flow.get('sunrise'));\nlet ss = parseInt(flow.get('sunset'));\nlet dif = (ss - sr);\n//msg.topic = \"debug\" \n//msg.payload = dif;\n//node.send(msg);\nlet dauer_tag = runtime_str(dif);\ndif = day - dif;\nlet dauer_nacht = runtime_str(dif);\nflow.set('tag', dauer_tag);\nflow.set('nacht', dauer_nacht);\nmsg.payload = dauer_tag + \" : \" + dauer_nacht; \nreturn msg;\n\n//----------------------------------\n\n// HH:MM:SS\n\nfunction runtime_str(ms){\n let t = ms / 1000;\n let h = (Math.floor(t / 3600)).toString();\n let m = (Math.floor(t%3600 / 60)).toString();\n let s = (Math.floor(t%3600 % 60)).toString();\n// let r = h + \":\" + (\"0\" + m).slice(-2) + \":\" + (\"0\" + s).slice(-2);\n let r = h + \":\" + (\"0\" + m).slice(-2); \n return r; \n}\n\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1500,"y":880,"wires":[["21b33ac3.087866"]]},{"id":"e4da9af1.a16978","type":"delay","z":"4e969c7c.f77dc4","name":"","pauseType":"delay","timeout":"500","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":1350,"y":880,"wires":[["a1dcf39b.e4e5c"]]},{"id":"21b33ac3.087866","type":"debug","z":"4e969c7c.f77dc4","name":"","active":false,"tosidebar":true,"console":false,"tostatus":true,"complete":"payload","targetType":"msg","statusVal":"payload","statusType":"auto","x":1650,"y":880,"wires":[]},{"id":"f8ff54b893b7b872","type":"moment","z":"4e969c7c.f77dc4","name":"HH:mm:ss DD-MM-YYYY","topic":"","input":"","inputType":"date","inTz":"Europe/Berlin","adjAmount":0,"adjType":"days","adjDir":"add","format":"HH:mm:ss DD-MM-YYYY","locale":"de-DE","output":"time","outputType":"msg","outTz":"Europe/Berlin","x":890,"y":660,"wires":[["f6485f97095ec635"]]},{"id":"f6485f97095ec635","type":"function","z":"4e969c7c.f77dc4","name":"","func":"msg.payload = msg.time + \": \" + msg.payload;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1080,"y":660,"wires":[["bb06b69c.864748"]]},{"id":"3af96d9249140f37","type":"inject","z":"4e969c7c.f77dc4","name":"","props":[{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"status-all-static","payloadType":"str","x":130,"y":920,"wires":[["70489757.9ad0d8"]]},{"id":"984d98ad8e343a08","type":"debug","z":"4e969c7c.f77dc4","name":"status-all-static","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":430,"y":1040,"wires":[]},{"id":"8784088a.4ec318","type":"ui_group","name":"CRON","tab":"9920c734.9de2a8","order":3,"disp":false,"width":"16","collapse":false},{"id":"565c5225.bce5ac","type":"mqtt-broker","name":"MQTT server","broker":"10.0.0.43","port":"1883","clientid":"","usetls":false,"compatmode":false,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""},{"id":"9920c734.9de2a8","type":"ui_tab","name":"CRON Plus","icon":"dashboard","order":22,"disabled":false,"hidden":false}]````