Moin
Ich baue gerade meine Lichtsteuerung von Rega Programm (mit Eugens astro Skrip) auf Node Red um. Das Rega Programm macht mir zu oft was es will.
Nun habe ich im Wohnzimmer bislang das so gemacht eine Lampe an graden Wochen die andere an ungraden Wochen an. Das würde ich gerne wieder so machen, habe aber bislang keine Node gefunden der mir irgendwie die Woche oder noch besser gibt ob die Woche grade oder ungrade ist. Gibt es sowas ?
Licht schalten an sich klappt mit dem Node Lightscheduler bestens.
Gut ich könnte natürlich im Node Red die CCU Systemvariable ob meine Woche grade ist oder nicht abfragen, aber eigentlich will ich das nicht.
Woche grade oder ungrade ?
Moderator: Co-Administratoren
-
- Beiträge: 513
- Registriert: 29.05.2019, 22:19
- Wohnort: Bargfeld
- Hat sich bedankt: 4 Mal
- Danksagung erhalten: 49 Mal
-
- Beiträge: 3978
- Registriert: 12.07.2009, 20:01
- Hat sich bedankt: 17 Mal
- Danksagung erhalten: 176 Mal
- Kontaktdaten:
Re: Woche grade oder ungrade ?
Probiers mal damit:
Gibt als msg.payload bei geraden Wochen false und bei ungeraden true aus.
(Algorithmus übernommen von https://stackoverflow.com/a/32461104/12048312)
Code: Alles auswählen
[{"id":"5c21b63c.285ce8","type":"function","z":"1a3a0b42.18d265","name":"Ungerade Woche","func":"const date = new Date();\nconst target = new Date(date.valueOf());\nconst dayNumber = (date.getUTCDay() + 6) % 7;\nlet firstThursday;\n\ntarget.setUTCDate(target.getUTCDate() - dayNumber + 3);\nfirstThursday = target.valueOf();\ntarget.setUTCMonth(0, 1);\n\nif (target.getUTCDay() !== 4) {\n target.setUTCMonth(0, 1 + ((4 - target.getUTCDay()) + 7) % 7);\n}\n\nconst week = Math.ceil((firstThursday - target) / (7 * 24 * 3600 * 1000)) + 1;\n \nreturn {payload: Boolean(week % 2), week};","outputs":1,"noerr":0,"x":480,"y":260,"wires":[["fe376264.368fa"]]},{"id":"fe376264.368fa","type":"debug","z":"1a3a0b42.18d265","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":680,"y":260,"wires":[]},{"id":"5247e105.7168a","type":"inject","z":"1a3a0b42.18d265","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":260,"y":260,"wires":[["5c21b63c.285ce8"]]}]
(Algorithmus übernommen von https://stackoverflow.com/a/32461104/12048312)
-
- Beiträge: 513
- Registriert: 29.05.2019, 22:19
- Wohnort: Bargfeld
- Hat sich bedankt: 4 Mal
- Danksagung erhalten: 49 Mal
Re: Woche grade oder ungrade ?
Moin
Danke das klappt super. Ich benutze aber zusätzlich noch den Boolean Logic Node um damit eine UND Verknüpfung zu machen wenn die Woche true ist. Das funktioniert soweit auch aber ich habe noch eine Change Node einbauen müssen das der Boolean Logic Node eine Topic A und B haben möchte, das ist mir nicht gelungen die Topic in den funktions Node zu setzen.
Danke das klappt super. Ich benutze aber zusätzlich noch den Boolean Logic Node um damit eine UND Verknüpfung zu machen wenn die Woche true ist. Das funktioniert soweit auch aber ich habe noch eine Change Node einbauen müssen das der Boolean Logic Node eine Topic A und B haben möchte, das ist mir nicht gelungen die Topic in den funktions Node zu setzen.
Gruß Florian
-
- Beiträge: 210
- Registriert: 22.09.2012, 20:56
- Hat sich bedankt: 5 Mal
- Danksagung erhalten: 11 Mal
Re: Woche grade oder ungrade ?
Hallo Florian, wenn du die Funktionsnode als "Verzweigung" nutzen möchtest, kannst du in der Node unten die Ausgänge auf 2 setzen und ein Array übergeben. null heisst immer kein output/msg.
"Eigentlich" kannst du dann deine Lampen (falls sie true verstehen, sonst sende etwas anderes) direkt anschließen.
Falls es abhängig von ein/aus sein soll, kannst du auch einfach msg.payload als Wert "durchreichen".
"Eigentlich" kannst du dann deine Lampen (falls sie true verstehen, sonst sende etwas anderes) direkt anschließen.
Falls es abhängig von ein/aus sein soll, kannst du auch einfach msg.payload als Wert "durchreichen".
Code: Alles auswählen
[{"id":"845217d6.461fb8","type":"function","z":"55805384.a4695c","name":"Gerade / ungerade Woche","func":"const date = new Date();\nconst target = new Date(date.valueOf());\nconst dayNumber = (date.getUTCDay() + 6) % 7;\nlet firstThursday;\n\ntarget.setUTCDate(target.getUTCDate() - dayNumber + 3);\nfirstThursday = target.valueOf();\ntarget.setUTCMonth(0, 1);\n\nif (target.getUTCDay() !== 4) {\n target.setUTCMonth(0, 1 + ((4 - target.getUTCDay()) + 7) % 7);\n}\n\nconst week = Math.ceil((firstThursday - target) / (7 * 24 * 3600 * 1000)) + 1;\n\nlet msg1 = {};\nif (Boolean(week % 2)) {\n msg = {payload: true}\n msg1 = null\n} else {\n msg = null\n msg1 = {payload: true}\n}\nreturn [msg, msg1];","outputs":2,"noerr":0,"x":580,"y":180,"wires":[["958d50d9.35b72"],["9e1dddb9.a8f41"]],"outputLabels":["ungerade Woche","gerade Woche"]},{"id":"958d50d9.35b72","type":"debug","z":"55805384.a4695c","name":"ungerade","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":800,"y":160,"wires":[]},{"id":"6eae0eff.73d46","type":"inject","z":"55805384.a4695c","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":360,"y":180,"wires":[["845217d6.461fb8"]]},{"id":"9e1dddb9.a8f41","type":"debug","z":"55805384.a4695c","name":"gerade","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":800,"y":200,"wires":[]}]
-
- Beiträge: 513
- Registriert: 29.05.2019, 22:19
- Wohnort: Bargfeld
- Hat sich bedankt: 4 Mal
- Danksagung erhalten: 49 Mal
Re: Woche grade oder ungrade ?
Moin
Danke, probiere ich aus. Die Lampe verstehen true. Beim ersten Flow kommt ja nur true raus deshalb, das gefriemel mit den Und Verknüpfungen und dem Inverter.
Langsam aber sicher gefällt mir node red immer besser.
Danke, probiere ich aus. Die Lampe verstehen true. Beim ersten Flow kommt ja nur true raus deshalb, das gefriemel mit den Und Verknüpfungen und dem Inverter.
Langsam aber sicher gefällt mir node red immer besser.
Gruß Florian
-
- Beiträge: 448
- Registriert: 13.09.2017, 05:11
- Hat sich bedankt: 1 Mal
- Danksagung erhalten: 12 Mal
Re: Woche grade oder ungrade ?
Hallo Zusammen,
ich benutze German-Holiday. Dort wird die unter anderem "week" & "gerade/ungerade" abgebildet.
Diese Node kann ich nur empfehlen.
Gruß Thomas
ich benutze German-Holiday. Dort wird die unter anderem "week" & "gerade/ungerade" abgebildet.
Diese Node kann ich nur empfehlen.
Gruß Thomas
972 Kanäle in 165 Geräten: Davon 16 HM, 145 HMIP, 2 Gruppen und 2 CUXD Geräte
-
- Beiträge: 460
- Registriert: 06.01.2018, 12:48
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 57 Mal
- Danksagung erhalten: 39 Mal
Re: Woche grade oder ungrade ?
Mit der aktuellen Version der node-red-contrib-sun-position kann man die Kalenderwoche, den Kalendertag oder ob die Kalenderwoche gerade ist auch über den time-inject oder time-calc Node mit bekommen (erweiterter Zeitstempel als Payload).
Da das Paket Teil von RedMatic ist, ist das dann auch direkt vorhanden.
Da das Paket Teil von RedMatic ist, ist das dann auch direkt vorhanden.