Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [Blockly] Sonnenaufgang mit Tradfri

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    [Blockly] Sonnenaufgang mit Tradfri

    This topic has been deleted. Only users with topic management privileges can see it.
    • Homoran
      Homoran Global Moderator Administrators last edited by

      @AlCalzone:

      Vermutlich wollte das Gateway nicht mehr deine Spielchen mitmachen `
      Meinst du? Kann ich gar nicht verstehen 😄

      Aber das wird es sein.

      `2018-01-26 19:56:46.427  - [31merror[39m: tradfri.0 > stack: Error: Retransmit counter exceeded[/code]`
      
      Gruß
      
      Rainer
      
      1 Reply Last reply Reply Quote 0
      • AlCalzone
        AlCalzone Developer last edited by

        Hier das versprochene Skript:

        ! ````
        // Tradfri-Farbtemperatur in Abhängigkeit der Uhrzeit festlegen
        ! const MIN_TEMP = 0; // Minimale Farbtemperatur (kaltes Licht)
        const MAX_TEMP = 100; // Maximale Farbtemperatur (warmes Licht)
        // wieviele Stunden vor(-)/nach(+) sunrise soll der Übergang auf kalte Farbtemperatur starten/enden?
        const sunriseStartOffset = hours2ms(0);
        const sunriseEndOffset = hours2ms(2);
        // wieviele Stunden vor(-)/nach(+) sunset soll der Übergang auf warme Farbtemperatur starten/enden?
        const sunsetStartOffset = hours2ms(-2);
        const sunsetEndOffset = hours2ms(0);
        ! let prevTemp;
        ! schedule("* * * * *", colorChange); // jede Minute neue Farbtemperatur berechnen
        colorChange(); // außerdem beim Skriptstart
        ! function colorChange() {
        // aktuelle Uhrzeiten berechnen, damit wir nicht vom Datum abhängig sind
        const sunrise = getAstroDate("sunrise");
        const sunriseStart = new Date(sunrise.getTime() + sunriseStartOffset).getTime();
        const sunriseEnd = new Date(sunrise.getTime() + sunriseEndOffset).getTime();
        const sunset = getAstroDate("sunset");
        const sunsetStart = new Date(sunset.getTime() + sunsetStartOffset).getTime();
        const sunsetEnd = new Date(sunset.getTime() + sunsetEndOffset).getTime();
        const now = new Date().getTime();

        // neue Farbtemperatur berechnen
        let targetTemp;
        if (now < sunriseStart || now > sunsetEnd) {
            // warmes Licht in der Nacht
            targetTemp = MAX_TEMP;
        } else if (now >= sunriseStart && now <= sunriseEnd) {
            // sanfter Übergang auf kaltes Licht am Morgen
            targetTemp = interpolate(now, sunriseStart, sunriseEnd, MAX_TEMP, MIN_TEMP);
        } else if (now > sunriseEnd && now < sunsetStart) {
            // kaltes Licht am Tag
            targetTemp = MIN_TEMP; 
        } else if (now >= sunsetStart && now <= sunsetEnd) {
            // sanfter Übergang auf warmes Licht am Abend
            targetTemp = interpolate(now, sunsetStart, sunsetEnd, MIN_TEMP, MAX_TEMP);
        }
        

        ! // und diese festlegen, wenn sich etwas geändert hat
        if (targetTemp !== prevTemp) {
        prevTemp = targetTemp;
        setState("tradfri.0.G-195804.transitionDuration", 10);
        setState("tradfri.0.G-195804.colorTemperature", targetTemp);
        }
        }
        ! // interpoliert linear zwischen zwei Punkten
        function interpolate(x, x1, x2, y1, y2) {
        return Math.round(y1 + (y2 - y1) / (x2 - x1) * (x - x1));
        }
        ! function hours2ms(hours) {
        return hours * 3600 * 1000;
        }

        
        Ich hoffe mit den Kommentaren ist es halbwegs selbsterklären, selbst wenn es kein Blockly ist. Die Idee ist, dass in einem Zeitrahmen um den Sonnenaufgang die Farbtemperatur langsam auf kalt wechselt und in einem Zeitrahmen um Sonnenuntergang wieder auf warm. Die Intervalle konfigurierst du am Anfang.
        1 Reply Last reply Reply Quote 0
        • C
          C1500 last edited by

          Servus,

          ich versuch mich auch schon sehr lange an einer guten Lösung um das Aufwach angenehmer zu machen.

          Gibt es denn beim Tradfri die Möglichkeit die Farbe "weich" bzw. "fadend" zu wechseln, das er also in einer bestimmbaren Zeit von blau nach rot wechselt und nicht abrupt?

          Für MiLight gab es bei FHEM die "Queue"

          Dort sah es als HSV so aus:

          set led HSV 240,100,0;
          set led HSV 240,20,80 600 q;
          set led HSV 0,20,80 120 q;
          set led HSV 0,80,100 120 q;
          set led HSV 55,40,100 300 q;
          set led HSV 55,0,100 300 q
          

          Oder als Beispiel folgende RGB Werte:

          0,0,0
          26,3,94
          70,12,244
          151,12,244
          244,12,140
          244,12,66 
          244,120,12 
          244,229,12 
          237,244,176
          255,255,255
          

          Hier zu finden: https://forum.fhem.de/index.php/topic,4 … 98113.html

          Mit dem Homematic RGB (HM-LC-RGBW-WM) sind leider keinerlei Farbverläufe möglich.

          Den MiLight Adapter von ioBroker hab ich noch nicht ausprobiert.

          Und die Ikea Lampen hab ich (noch) nicht.

          Bin gespannt wie es weiter geht....

          Gruß Peer

          1 Reply Last reply Reply Quote 0
          • Homoran
            Homoran Global Moderator Administrators last edited by

            @C1500:

            Gibt es denn beim Tradfri die Möglichkeit die Farbe "weich" bzw. "fadend" zu wechseln `
            Dafür ist eigentlich der Punkt "Transition Time".

            Ob das mit der Farbe auch geht wollte ich am Wochenende testen, bin aber nicht dazu gekommen.

            Gruß

            Rainer

            1 Reply Last reply Reply Quote 0
            • C
              C1500 last edited by

              Servus Rainer,

              Das klingt schon mal vielversprechend.

              Dann bleibt noch die Frage ob der HSV Farbkreis abgefahren wird oder der Wechsle direkt also "durch" den Farbkreis geht.

              Außenrum Abfahren wäre dann ziemlich doof.

              Gruß Peer

              1 Reply Last reply Reply Quote 0
              • AlCalzone
                AlCalzone Developer last edited by

                @Homoran:

                Dafür ist eigentlich der Punkt "Transition Time".

                Ob das mit der Farbe auch geht wollte ich am Wochenende testen, bin aber nicht dazu gekommen. `
                Na, ich hoffe doch. Mit Helligkeit und Farbtemperatur (Weißspektrum) gehts. Bei einer älteren Version hab ich dafür die X/Y-Farbe missbraucht, auf die für RGB auch zurück gegriffen wird.

                @C1500:

                Dann bleibt noch die Frage ob der HSV Farbkreis abgefahren wird oder der Wechsle direkt also "durch" den Farbkreis geht. `
                Wenn du H, S, V einzeln setzt, bin ich mir nicht sicher, wie das Gateway es handhabt. Du kannst aber H/S/V in RGB umrechnen, dann müsste alles gleichzeitig interpoliert werden.

                Alternativ lassen sich mit https://github.com/AlCalzone/iobroker.tradfri/#sending-custom-coap-packets mehrere Eigenschaften gleichzeitig setzen, da müsste ich daheim nochmal nachschauen wie das payload auszusehen hat.

                1 Reply Last reply Reply Quote 0
                • Homoran
                  Homoran Global Moderator Administrators last edited by

                  @AlCalzone:

                  Mit Helligkeit und Farbtemperatur (Weißspektrum) gehts. `
                  Bestätigt! Aber eben nur das 😉

                  @AlCalzone:

                  Wenn du H, S, V einzeln setzt, bin ich mir nicht sicher, wie das Gateway es handhabt. `
                  Bescheuert! es blinkt und blitzt und ändert tlw. abrupt die Farben um sofort wieder zurückzuspringen 😞

                  Ich dachte es sei eine gute Idee mit diesen vorhandenen Punkten zu arbeiten, aber das kommt nicht so gut bei der besseren Hälfte an.

                  Du meinst also mit einer längeren transition time (was ist da eigentlich das Maximum?) könnte ich sanft von FF0000 nach 0000FF wechseln?

                  Gruß

                  Rainer

                  1 Reply Last reply Reply Quote 0
                  • AlCalzone
                    AlCalzone Developer last edited by

                    @Homoran:

                    Bescheuert! es blinkt und blitzt und ändert tlw. abrupt die Farben um sofort wieder zurückzuspringen 😞 `
                    Uggghhh. Ich schick dir heute Abend mal ein Code-Schnipsel. Damit bitte mal testen, ob der Übergang sanfter verläuft.

                    Wenn das funktioniert, kann ich eine kleine Verbesserung einbauen.

                    @Homoran:

                    Du meinst also mit einer längeren transition time (was ist da eigentlich das Maximum?) könnte ich sanft von FF0000 nach 0000FF wechseln? `
                    Sollte möglich sein. Ich hab nicht explizit getestet, wo das Limit liegt. Ab nem gewissen Punkt lässt es sich auch nicht wirklich feststellen wo das Ende ist. Rein theoretisch: Die maximalen Werte (u.a. bei Hue/Sat intern verwendet) scheinen 65279 zu sein (warum dieser Wert - k.A.). Das würde 6527,9 Sekunden oder 1,8h entsprechen.

                    –-

                    EDIT: Kommando zurück… Hab gerade mal selbst getestet. Zwei Eigenschaften gleichzeitig lassen sich nicht animieren.

                    Ich sehe 2 Optionen:

                    1. Nur color animieren

                    2. Im Skript in einem Intervall meherer Werte selbst interpolieren. Dabei kleine Schritte benutzen, damit es nicht auffällt; nicht zu schnell, damit das Gateway nicht aussteigt; und transitionTime = 0!

                    1 Reply Last reply Reply Quote 0
                    • Homoran
                      Homoran Global Moderator Administrators last edited by

                      Ich habe mal was probiert:
                      144_sonnenuntergang.jpg

                      leider passiert (fast) nichts:

                      javascript.0	2018-01-31 16:25:30.626	info	script.js.Sonnenuntergang: Die Farbe ist f5faf6%
                      javascript.0	2018-01-31 16:25:30.625	info	script.js.Sonnenuntergang: Die Helligkeit ist 100%
                      javascript.0	2018-01-31 16:25:00.624	info	script.js.Sonnenuntergang: Die Farbe ist f5faf6%
                      javascript.0	2018-01-31 16:25:00.624	info	script.js.Sonnenuntergang: Die Helligkeit ist 100%
                      javascript.0	2018-01-31 16:24:30.624	info	script.js.Sonnenuntergang: Die Farbe ist f5faf6%
                      javascript.0	2018-01-31 16:24:30.623	info	script.js.Sonnenuntergang: Die Helligkeit ist 100%
                      javascript.0	2018-01-31 16:24:00.623	info	script.js.Sonnenuntergang: Die Farbe ist f5faf6%
                      javascript.0	2018-01-31 16:24:00.622	info	script.js.Sonnenuntergang: Die Helligkeit ist 100%
                      javascript.0	2018-01-31 16:23:30.621	info	script.js.Sonnenuntergang: Die Farbe ist ffe0b5%
                      javascript.0	2018-01-31 16:23:30.621	info	script.js.Sonnenuntergang: Die Helligkeit ist 1%
                      

                      nach dem ersten Umschalten bleibt es.

                      Habe jetzt erst dein EDIT gelesen -> siehe nächsten Post

                      Gruß

                      Rainer

                      1 Reply Last reply Reply Quote 0
                      • Homoran
                        Homoran Global Moderator Administrators last edited by

                        @AlCalzone:

                        Ich sehe 2 Optionen:

                        1. Nur color animieren

                        2. Im Skript in einem Intervall meherer Werte selbst interpolieren. Dabei kleine Schritte benutzen, damit es nicht auffällt; nicht zu schnell, damit das Gateway nicht aussteigt; und transitionTime = 0! `

                        Hier mein erster Versuch:
                        144_sonnenaufgang021.jpg

                        Und hier blitzt immer wieder der "Endzustand" zwischendrin auf.

                        Gruß

                        Rainer

                        1 Reply Last reply Reply Quote 0
                        • AlCalzone
                          AlCalzone Developer last edited by

                          @Homoran:

                          Und hier blitzt immer wieder der "Endzustand" zwischendrin auf. `
                          Sieht erst mal logisch aus. Steuerst du eine Lampe oder Gruppen? Wenn ersteres, fürchte ich dass das Zurücksetzen der TransitionTime dir einen Strich durch die Rechnung macht. Probiers mal an einer virtuellen oder echten Gruppe.

                          1 Reply Last reply Reply Quote 0
                          • Homoran
                            Homoran Global Moderator Administrators last edited by

                            Im Moment ist es in beiden Fällen die Lampe (tradfri.0.L-65539)

                            Ich teste das jetzt mal bei dem Sonnenuntergang erst mit der G- und dann mit der VG-

                            Bis später

                            Rainer

                            1 Reply Last reply Reply Quote 0
                            • Homoran
                              Homoran Global Moderator Administrators last edited by

                              Habe jetzt mit Lampe, Gruppe und virtueller Gruppe getestet:

                              Zur Sicherheit habe ich noch Verzögerungen eingebaut (ich hoffe das bewirkt nicht das Gegenteil des gewünschten)
                              144_sonnenuntergang02.jpg

                              Lampe:

                              Die color RGB geht auf -> ffbb52 und dabei bleibt es

                              die Helligkeit geht auf 100% und dabei bleibt es auch.

                              javascript.0	2018-01-31 17:38:30.054	info	script.js.Sonnenuntergang: Die Farbe ist ffbb52%
                              javascript.0	2018-01-31 17:38:30.053	info	script.js.Sonnenuntergang: Die Helligkeit ist 100%
                              

                              Gruppe:

                              es passiert gar nichts

                              virtuelle Gruppe:

                              ist identisch wie bei der Lampe

                              Gruß

                              Rainer

                              1 Reply Last reply Reply Quote 0
                              • AlCalzone
                                AlCalzone Developer last edited by

                                Das Skript macht so leider keinen Sinn.

                                Überlappende Übergänge gehen nicht, das Gateway kann immer nur einen Wert animieren. Und die Endwerte werden soweit ich mich richtig erinnere auch erst am Schluss zurück gemeldet, d.h. dein Log läuft ins Leere.

                                Hier mal was ich meinte mit "selbst animieren":

                                So geht ein "fast" flüssiger Übergang von dunkel+kalt auf hell+warm mit einer Weißspektrumlampe.
                                1097_dimmer.png

                                Für RGB musst du etwas mehr Logik zum Berechnen der Zwischenwerte spendieren als ("erhöhe um 1").

                                Edit: Holy shit, das Rumgeklicke bis so ein einfaches Skript zusammengebaut ist :shock:

                                1 Reply Last reply Reply Quote 0
                                • Homoran
                                  Homoran Global Moderator Administrators last edited by

                                  @AlCalzone:

                                  Überlappende Übergänge gehen nicht, `
                                  Sollte ja auch eigentlich ein Komplettpaket sein.

                                  Außerdem glaube ich mich zu erinnern, daß ich früher einmal so etwas unfreiwillig gemacht hatte.

                                  Ich hatte damals noch geschrieben, dass das Gateway solange die Transition Time behält bis diese abgearbeitet ist.

                                  Ich weiß leider nicht mehr ob ich die weiteren Befehle mit der Fernbedienung oder über ioBroker gemacht hatte.

                                  Dein holy shit entspricht ja im allgemeinen dem was ich auch habe, nur dass du gerade mal 20 Sekunden generierst, ich gerne 30 bis 60 Minuten haben möchte.

                                  Abgesehen davon habe ich den Vetdacht, dass sich die weißton lampen programmierfreundlicher verhalten als die rgb birnen.

                                  Ich muss mir die rgb Birne wieder in mein Zimmer mit dem PC holen.

                                  Gruß Rainer

                                  1 Reply Last reply Reply Quote 0
                                  • AlCalzone
                                    AlCalzone Developer last edited by

                                    @Homoran:

                                    Dein holy shit entspricht ja im allgemeinen dem was ich auch habe, nur dass du gerade mal 20 Sekunden generierst, ich gerne 30 bis 60 Minuten haben möchte. `
                                    Dann musst du eigentlich "nur" das Intervall und die Inkremente je State anpassen. Ich denke den Code könnte ich in den Adapter integrieren, damit du nur noch sowas machen musst:

                                    // FUNKTIONIERT NOCH NICHT!
                                    sendTo("tradfri.0", "transition", {
                                    	rgb: "#abcdef",
                                    	brightness: 100,
                                    	transitionTime: 3600000
                                    });
                                    
                                    
                                    1 Reply Last reply Reply Quote 0
                                    • Homoran
                                      Homoran Global Moderator Administrators last edited by

                                      @AlCalzone:

                                      damit du nur noch sowas machen musst: `
                                      Das wäre genau das was ich hoffte ohne sendto hinzubekommen.

                                      Ich hatte jetzt meinen http://forum.iobroker.net/download/file.php?id=21408&mode=view bereits bei dem Screenshot "verlangsamt" indem ich bei HUE 0.1 eingetragen und dafür die Zyklen auf 99 erhöht hatte.

                                      Heute morgen lief es dann auch "relativ" brauchbar, im unteren Bereich sah es fast gut aus, gegen Ende der Rampe "blitzte" aber wieder immer häufiger eine andere Farbe (Weißblau = Tageslicht) kurz auf.

                                      Außerdem erreichte die Helligkeit keine 99% sondern lag lt. App nur bei 66.

                                      Ich muss da nochmal intensiver ran.

                                      Gruß

                                      Rainer

                                      1 Reply Last reply Reply Quote 0
                                      • AlCalzone
                                        AlCalzone Developer last edited by

                                        @Homoran:

                                        Heute morgen lief es dann auch "relativ" brauchbar, im unteren Bereich sah es fast gut aus, gegen Ende der Rampe "blitzte" aber wieder immer häufiger eine andere Farbe (Weißblau = Tageslicht) kurz auf. `
                                        Hast du noch was anderes laufen, was hier querschießen könnte?

                                        Welche Skala willst du abfahren? Kann es sein, dass du dich außerhalb des unterstützen Gamuts bewegst? Ich glaube Tradfri ist in etwa Gamut B: http://www.developers.meethue.com/sites … amut_0.png

                                        Oder willst du nur kaltweiß bis warmweiß? Dann müssten wir mal testen, ob die RGBs jetzt auch colorTemperature unterstützen.

                                        Bin mir auch gerade nicht sicher, ob 0.1er-Schritte gehen. Im Prinzip müsste es tun, da Tradfri intern eine deutlich feinere Skala hat, aber das ganze Runden könnte Probleme machen.

                                        1 Reply Last reply Reply Quote 0
                                        • Homoran
                                          Homoran Global Moderator Administrators last edited by

                                          @AlCalzone:

                                          Hast du noch was anderes laufen, was hier querschießen könnte? `
                                          Ich hoffe nicht, hatte zwar zuerst auf einer Testinstallation das Skript drauf, wegen Problemen dort aber deaktiviert (gestern nochmal überprüft) und ist meines Wissens nur noch einmal aktiv.

                                          Früher (insbesondere bei den ersten schnellen Tests) blitzte es noch viel häufiger.

                                          @AlCalzone:

                                          Welche Skala willst du abfahren? Kann es sein, dass du dich außerhalb des unterstützen Gamuts bewegst? `
                                          :shock: :? :shock:

                                          Keine Ahnung;

                                          Ich hatte mir beim Online "https://www.bing.com/search?q=rgb+color+picker&qs=n&form=QBRE&sp=-1&pq=rgb+color+picker&sc=2-16&sk=&cvid=4303F763497047CCA6817673031C3AC0" Farben herausgesucht, die mit einem rötlichen Orange begannen und dann in einem hellen Weiß endeten.

                                          Für meine ersten Versuche war geplant dass der Hue nur leicht unterschiedlich ist: 30->46 zusätzlich sollte die Sättigung von 100->0 und die Helligkeit von 0->100 gehen.

                                          Wieso es da zu dem blauen Licht kommt frage ich mich sowieso.

                                          @AlCalzone:

                                          aber das ganze Runden könnte Probleme machen. `
                                          das war auch mein Gedanke; bei 0,2 war das Blitzen aber häufiger.

                                          Ob ich da aus dem Gamut herausrutsche kann ich mangels Wissen nicht beurteilen, das würde aber den Effekt wahrscheinlich etwas erklären.

                                          Gruß

                                          Rainer

                                          1 Reply Last reply Reply Quote 0
                                          • AlCalzone
                                            AlCalzone Developer last edited by

                                            Schaffst du es eventuell die Schaltvorgänge, bei denen es blitzt einzugrenzen auf bestimmte Parameter?

                                            Dann könntest du mir von den blitzenden Parameter-Kombinationen mal einen Debug-Log-Auszug schicken (Zeile mit "updateResource(…) > sending payload").

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            688
                                            Online

                                            31.9k
                                            Users

                                            80.2k
                                            Topics

                                            1.3m
                                            Posts

                                            9
                                            113
                                            13778
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo