Hier nun mein nachtrag zum Countdown

Abhängigkeit: https://flows.nodered.org/node/node-red-contrib-simple-message-queue
- Inject auf 2 Sek ab Deploy lassen
- Einstellungen für Datum und Uhrzeit sind unter “Check Date” zu treffen
[{"id":"5a31b3e1.501bec","type":"function","z":"5854113a.f20a4","name":"Check Date","func":"//////////////////////////////////////////////////////////////////////////\n// //\n// DATUM ANGABE ENDE COUNTDOWN JAHR-MONAT-TAG /// Stunde:Minute //\n deadline = '2019-03-20 11:24'; //\n// Setze Delay für Ausgabe im Screen //\n delay = 1; // Minuten //\n// //\n//////////////////////////////////////////////////////////////////////////\n\n\n// Rechne Datumeingabe in TIMESTAMP um\nfunction getTimeRemaining(endtime){\n var t = Date.parse(endtime) - msg.payload;\n var seconds = Math.floor( (t/1000) % 60 );\n var minutes = Math.floor( (t/1000/60) % 60 );\n var hours = Math.floor( (t/(1000*60*60)) % 24 );\n var days = Math.floor( t/(1000*60*60*24) );\n return {\n 'total': t,\n 'days': days,\n 'hours': hours,\n 'minutes': minutes,\n 'seconds': seconds\n };\n}\n\n\n// Lege die Ausgaben fest\nRestTage = getTimeRemaining(deadline).days;\nRestMinuten = getTimeRemaining(deadline).minutes;\nRestStunden = getTimeRemaining(deadline).hours;\nRestSekunden = getTimeRemaining(deadline).seconds; \n\n\ndelaytimer = context.get(\"delaytimer\")||0; // Hole Delaytimer aus dem Speicher\nvar timer = delaytimer + 1; // Erhöhe immer mit 1 pro Aufruf\ncontext.set(\"delaytimer\", timer); // Speichere Delaytimer in den Speicher\nvar howMuch = delay*30; // Errechne Step für Sekunden\n\n\n\nif (RestTage === 0 && RestMinuten === 0 && RestStunden === 0 && RestSekunden <= 10 && RestSekunden >= 9) { //Wenn die letzten 9-10 Sekunden laufen dann jede Sekunde Countdown\n\n i = 0;\n ausgabe = []; \n \n while (i <= 10) {\n \n var rndcol1 = Math.floor((Math.random() * 255) + 1);\n var rndcol2 = Math.floor((Math.random() * 255) + 1);\n var rndcol3 = Math.floor((Math.random() * 255) + 1);\n\n red = rndcol1;\n green = rndcol2;\n blue = rndcol3;\n \n Countdown = 10-i;\n ausgabe[i]= { payload : \"00:00:0\" + Countdown, red: rndcol1, green: rndcol2, blue: rndcol3};\n i++;\n if (i == 11) {return [null, [ausgabe[1],ausgabe[2],ausgabe[3],ausgabe[4],ausgabe[5],ausgabe[6],ausgabe[7],ausgabe[8],ausgabe[9],ausgabe[10]]];}\n } \n \n} else if (RestTage >= 0 && RestMinuten >= 0 && RestStunden >= 0 && RestSekunden >= 0 && timer === howMuch) { //Wenn nicht abgelaufen und Timer erreicht dann Ausgabe\n \n msg.payload = RestTage + \" Tage - \" + RestStunden + \" Stunden - \" + RestMinuten + \" Minuten \" + RestSekunden + \" Sekunden\";\n resetTimer = 0;\n context.set(\"delaytimer\", resetTimer); // Delay zurücksetzen\n red = 255;\n green = 255;\n blue = 255;\n node.send(msg); \n \n} \n\n\n\n\n","outputs":2,"noerr":0,"x":290,"y":1240,"wires":[["739564a9.cf2dd4"],["9a26dcc.7b2682"]]},{"id":"3c946dc0.afe262","type":"inject","z":"5854113a.f20a4","name":"Go","topic":"","payload":"","payloadType":"date","repeat":"2","crontab":"","once":true,"onceDelay":0.1,"x":90,"y":1240,"wires":[["5a31b3e1.501bec"]]},{"id":"739564a9.cf2dd4","type":"Switch Animation","z":"5854113a.f20a4","name":"Switch Animation","aktiv":"true","animation":"fade","x":760,"y":1220,"wires":[["5de46142.10aa88"]]},{"id":"c62a499d.bddbe8","type":"Bitmap","z":"5854113a.f20a4","name":"Bitmap","indata":"1","inposX":"0","inposY":"0","inwidth":"8","inheight":"8","x":1280,"y":1220,"wires":[["31a221d.47faede"]]},{"id":"31a221d.47faede","type":"Text","z":"5854113a.f20a4","name":"Text","intextString":"{{payload}}","inbigFont":"false","inscrollText":"auto","inscrollTextDelay":"60","incenterText":"false","inposX":"7","inposY":"1","incolorR":"255","incolorG":"255","incolorB":"255","x":1420,"y":1220,"wires":[["3a74981a.a95148"]]},{"id":"9a26dcc.7b2682","type":"simple-queue","z":"5854113a.f20a4","name":"1s Delay","firstMessageBypass":true,"bypassInterval":"1000","x":540,"y":1270,"wires":[["edc75d4b.dca6f8"]]},{"id":"5de46142.10aa88","type":"function","z":"5854113a.f20a4","name":"set duration","func":"msg.duration = msg.payload.length * 0.26;\n return msg;","outputs":1,"noerr":0,"x":950,"y":1220,"wires":[["4fc92041.cf114"]]},{"id":"4fc92041.cf114","type":"Screen Init","z":"5854113a.f20a4","name":"Screen init","inscreenName":"Countdown","induration":"{{duration}}","x":1130,"y":1220,"wires":[["c62a499d.bddbe8"]]},{"id":"edc75d4b.dca6f8","type":"Switch Animation","z":"5854113a.f20a4","name":"Switch Animation","aktiv":"false","animation":"fade","x":760,"y":1270,"wires":[["48770fdc.000608"]]},{"id":"c1cbeba1.b54c1","type":"Text","z":"5854113a.f20a4","name":"Text","intextString":"{{payload}}","inbigFont":"false","inscrollText":"false","inscrollTextDelay":"0","incenterText":"false","inposX":"2","inposY":"1","incolorR":"{{red}}","incolorG":"{{green}}","incolorB":"{{blue}}","x":1420,"y":1270,"wires":[["3a74981a.a95148"]]},{"id":"48770fdc.000608","type":"Screen Init","z":"5854113a.f20a4","name":"Screen init","inscreenName":"Countdown","induration":"10","x":1130,"y":1270,"wires":[["c1cbeba1.b54c1"]]}]