Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Tester
    4. Betatest Bright Sky v0.3.x

    NEWS

    • Amazon Alexa - ioBroker Skill läuft aus ?

    • Monatsrückblick – September 2025

    • Neues Video "KI im Smart Home" - ioBroker plus n8n

    Betatest Bright Sky v0.3.x

    This topic has been deleted. Only users with topic management privileges can see it.
    • T
      ticaki @ilovegym last edited by

      @ilovegym
      Ich hab die aktuell erstmal nur als "Warnung" gedacht - dafür sind die in 5,10,15... Minuten states - für das darzustellen müsste sich wohl mal einer das hier angucken https://brightsky.dev/demo/radar/ es zerpflücken und mir sagen was er wie an daten braucht - jetzt ist das mehr eine Liste von Infos zum maschinellen Verarbeiten oder aber um Aktion abhängig von möglichem Regen in X Minuten zu starten.

      Da könnte man bestimmt ein nettes widget bauen - ich hab davon aber keinen plan

      arteck 1 Reply Last reply Reply Quote 1
      • arteck
        arteck Developer Most Active @ticaki last edited by arteck

        @ticaki joa .. mit der aktion .. hmm.. Rasenmähen ..

        wobei 9d072c94-f8e1-4a97-8954-8cf8121b987b-grafik.png

        80mm können nicht stimmen.. hmm

        T 1 Reply Last reply Reply Quote 1
        • T
          ticaki @arteck last edited by ticaki

          @arteck

          bitte aktiviere den data zweig im Admin und gucke mal da rein - in den next_ steht das max aus data im entsprechenden Zeitraum.

          Edit: Ich hatte bisher noch keine unplausibenZahlen - ok bis auf jetzt - sagt 0 und das Wetter draußen ist echt mies. Scheint aber tatsächlich nicht zu regnen.

          EDIT2: Chatgpt meint - das ist für ein kurzfristiges ereignis durchaus Möglich - ich sollte die Einheit wohl auf 80 mm/5m ändern - das versteht aber keiner - also 80 mm/h und überall noch ne Beschreibung in common.desc

          Values represent 0.01 mm / 5 min. I.e., if a pixel has a value of 45, then 0.45 mm of precipitation fell in the corresponding square kilometer in the past five minutes.

          Danke für den Hinweis, dass da hatte ich überlesen Muß mir mal überlegen was ich da am besten draus mache mm/h oder mm/min - Vorschläge?

          Chris76e 1 Reply Last reply Reply Quote 0
          • Chris76e
            Chris76e @ticaki last edited by

            @ticaki die Daten von Buienradar.nl sehen ähnlich aus, da habe ich die mit dieser formel umgerechnet, aber keine Ahnung wo die herkommt, hatte ChatGPT damals gefuden

            function precip(value) {
                return Math.pow(10, (value - 109) / 32);
            }
            

            API Werte Buienradar.nl

            104|10:30
            106|10:35
            109|10:40
            104|10:45
            096|10:50
            096|10:55
            087|11:00
            092|11:05
            104|11:10
            106|11:15
            087|11:20
            087|11:25
            087|11:30
            087|11:35
            092|11:40
            099|11:45
            106|11:50
            087|11:55
            087|12:00
            000|12:05
            000|12:10
            000|12:15
            000|12:20
            000|12:25
            

            Umgerechnet

            10:30	0.7
            10:35	0.81
            10:40	1
            10:45	0.7
            10:50	0.39
            10:55	0.39
            11:00	0.21
            11:05	0.29
            11:10	0.7
            11:15	0.81
            11:20	0.21
            11:25	0.21
            11:30	0.21
            11:35	0.21
            11:40	0.29
            11:45	0.49
            11:50	0.81
            11:55	0.21
            12:00	0.21
            12:05	0
            12:10	0
            12:15	0
            12:20	0
            12:25	0
            

            Vieleicht hilft dir das

            T 1 Reply Last reply Reply Quote 0
            • T
              ticaki @Chris76e last edited by

              @chris76e sagte in Betatest Bright Sky v0.3.x:

              function precip(value) { return Math.pow(10, (value - 109) / 32); }

              chatgpt meint das wäre für reflextionswerte in mm/h umzurechnen - ich bekomme aber mm pro 5 Minuten

              1 Reply Last reply Reply Quote 1
              • T
                ticaki last edited by

                0.6.3 (2025-10-04)

                • (ticaki) Added Beaufort wind force scale datapoints (wind_force and wind_force_desc) based on wind_speed_10
                • (ticaki) Fixed radar precipitation unit conversion - API values are in 0.01mm per 5 minutes, now correctly converted to mm
                • (ticaki) Added cumulative precipitation states (next_Xmin_sum) showing maximum precipitation sum across all grid areas
                • (ticaki) Added descriptions to max_precipitation_forecast states indicating "mm per 5 minutes"
                1 Reply Last reply Reply Quote 1
                • T
                  ticaki last edited by ticaki

                  0.6.5 (2025-10-04)

                  • (ticaki) Added leading zero to 5-minute radar datapoint folders for correct sorting in UI

                  @Armilar habs erst gelesen als release schon raus war

                  EDIT:

                  Bitte die beiden States next_5... löschen - das ist jetzt next_05....

                  Armilar 1 Reply Last reply Reply Quote 0
                  • Armilar
                    Armilar Most Active Forum Testing @ticaki last edited by

                    @ticaki

                    kein Problem 😊

                    Sieht einfach besser aus, wemms oben steht 👍

                    T 1 Reply Last reply Reply Quote 0
                    • T
                      ticaki @Armilar last edited by

                      @armilar
                      Ich hab gedacht die 5 würde es nicht geben, weil ich sowas immer mit führender 0 einbaue - aber copilot hats größtenteils gemacht 🙂

                      Armilar 1 Reply Last reply Reply Quote 0
                      • Armilar
                        Armilar Most Active Forum Testing @ticaki last edited by Armilar

                        @ticaki

                        Die kleine Azubi KI lernt ja noch 😉

                        EDIT:

                        Aber passt jetzt:

                        d6100dd6-48d5-4b1a-92d4-c01d7627cd1e-image.png

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

                          ich hab mal mit den Icons gespielt.
                          Ich habe da auf meinem uralt-WandDisplay (Megapad 2154) einen seltsamen Effekt.

                          Die Sonne, die hinter den Wolken hervorlugt wird nicht angezeigt
                          20251009_151952.jpg

                          noch seltsamer: auch das alte icon der Sonne ist beeinträchtigt.

                          Woran kann das liegen?

                          1 Reply Last reply Reply Quote 0
                          • Daniel Syberg
                            Daniel Syberg last edited by

                            Erstmal vielen Dank für den tollen Adapter, bisher funktioniert alles super!

                            Gibt es zusätzlich noch die Möglichkeit den Wert der "gefühlten Temperatur" als Datenpunkt einzufügen ?

                            T 1 Reply Last reply Reply Quote 0
                            • T
                              ticaki @Daniel Syberg last edited by

                              @Homoran
                              sry keine Ahnung 🙂

                              @daniel-syberg
                              Ich weiß nicht ob man das aus den vorhanden Daten berechnen kann, es gibt jedoch dieses Wert nicht in den API-Daten.

                              Armilar 1 Reply Last reply Reply Quote 0
                              • Armilar
                                Armilar Most Active Forum Testing @ticaki last edited by

                                @ticaki

                                Veruche es mal damit... Hab das intern schon Jahre laufen... Nur die Datenpunkte abgeändert:

                                let vWindchill = 0;
                                let vHeatindex = 0;
                                
                                const Debug = false;
                                
                                //Windchill (gefühlte Temperatur) Berechnung (US/Kanada, UK)
                                //Die gefühlte Temperatur oder Windchill bezieht neben der Lufttemperatur auch die Windgeschwindigkeit mit ein. 
                                //Der Windchill ist für Temperaturen unterhalb von ca. 10 °C und Windgeschwindigkeiten zwischen 4.8 und 177 km/h definiert. 
                                //Bei Temperaturen über 27°C wird der Hitzeindex, Humidex oder Summer-Simmer-Index verwendet.
                                
                                //Stufe	Windchill	    Gefahr
                                //1	    0 bis -9	    Keine oder nur geringe Gefahr.
                                //2	    -10 bis -27	    Geringe Gefahr. Unwohlsein. Risiko von Unterkühlung bei langen Außenaktivitäten ohne Schutz.
                                //3	    -28 bis -39	    Risiko von Erfrierungen innerhalb von 10 bis 30 Minuten. Risiko von Erfrierungen und Unterkühlung ohne schützende Kleidung.
                                //4	    -40 bis -47	    Hohe Gefahr! Haut kann innerhalb von 5 bis 10 Minuten erfrieren.
                                //5	    -48 bis -54	    Sehr hohe Gefahr! Haut kann innerhalb von 2 bis 5 Minuten erfrieren.
                                //6	         ab -55	    Extrem hohe Gefahr! Haut kann innerhalb von 2 Minuten erfrieren.
                                
                                function windchill() {
                                    let temperature = getState('brightsky.0.current.temperature').val;
                                    let windspeed = getState('brightsky.0.current.wind_speed_10').val;
                                    if (temperature < 10 && windspeed > 4.8 && windspeed < 177) {
                                        vWindchill = 13.12 + 0.6215 * temperature - 11.37 * Math.pow(windspeed, 0.16) + 0.3965 * temperature * Math.pow(windspeed, 0.16);
                                        setState("0_userdata.0.wetter.Windchill", Math.round (vWindchill * 10) / 10);
                                        if (Debug) log("Windchill: " + vWindchill.toFixed(1), 'info');
                                    } else {
                                        setState("0_userdata.0.wetter.Windchill", Math.round (temperature * 10) / 10);
                                        if (Debug) log("Windchill: Keine Berechnung, da Parameter nicht passen", 'info');
                                    }
                                }
                                
                                //Der Hitzeindex ist die gefühlte Temperatur in Abhängigkeit von der Lufttemperatur und der relativen Luftfeuchtigkeit. 
                                //Der Hitzeindex ist bei Temperaturen ab 26.7°C und einer relativen Luftfeuchtigkeit von mindestens 40% anwendbar.
                                
                                //Stufe	Hitzeindex	Gefahr
                                //1	    27-32°C	    Vorsicht – Bei längeren Zeiträumen und körperlicher Aktivität kann es zu Erschöpfungserscheinungen kommen.
                                //2	    33-41°C	    Erhöhte Vorsicht – Es besteht die Möglichkeit von Hitzeschäden wie Sonnenstich, Hitzekrampf und Hitzekollaps.
                                //3	    42-54°C	    Gefahr – Sonnenstich, Hitzekrampf und Hitzekollaps sind wahrscheinlich; Hitzschlag ist möglich.“
                                //4	    ab 55°C	    Erhöhte Gefahr – Hitzschlag und Sonnenstich sind wahrscheinlich.
                                
                                function heatindex() {
                                    let temperature = getState('brightsky.0.current.temperature').val;
                                    let humidity = getState('brightsky.0.current.relative_humidity').val;
                                
                                    // Relative Luftfeuchtigkeit limitieren
                                    if (humidity < 0) { humidity = 0; }
                                    if (humidity > 100) { humidity = 100; }
                                
                                    // Hitzeindex
                                    if (temperature > 26.7 && humidity > 40) {
                                        vHeatindex = -8.784695 + 1.61139411 * temperature + 2.338549 * humidity - 0.14611605 * temperature * humidity - 0.012308094 * (temperature * temperature) - 0.016424828 * (humidity * humidity) + 0.002211732* (temperature * temperature) * humidity + 0.00072546 * temperature * (humidity * humidity) - 0.000003582 * (temperature * temperature) * (humidity * humidity);
                                        setState("0_userdata.0.wetter.Windchill", Math.round (vHeatindex * 10) / 10);
                                        if (Debug) log("HeatIndex: " + vHeatindex.toFixed(1), 'info');
                                    } else {
                                        if (Debug) log("HeatIndex: Keine Berechnung, da Parameter nicht passen", 'info');
                                    }
                                }
                                
                                on({ id: [].concat(['brightsky.0.current.temperature',
                                                    'brightsky.0.current.relative_humidity',
                                                    'brightsky.0.current.wind_speed_10']), change: 'ne' }, async (obj) => {
                                    windchill();
                                    heatindex();
                                });
                                

                                Kannst du mit ein paar kleineren Änderunge direkt in den Adapter schreddern...

                                T 1 Reply Last reply Reply Quote 0
                                • T
                                  ticaki @Armilar last edited by ticaki

                                  @armilar sagte in Betatest Bright Sky v0.3.x:

                                  Kannst du mit ein paar kleineren Änderunge direkt in den Adapter schreddern...

                                  @daniel-syberg

                                  https://github.com/ticaki/ioBroker.brightsky/pull/64

                                  Copilot created this issue in ticaki/ioBroker.brightsky

                                  closed Add apparent temperature (gefühlte Temperatur) calculation for current, hourly, and daily weather data #64

                                  1 Reply Last reply Reply Quote 1
                                  • T
                                    ticaki last edited by

                                    0.6.6 (2025-10-11)

                                    • (ticaki) Added apparent temperature datapoints for current, hourly, and daily weather data
                                    1 Reply Last reply Reply Quote 1
                                    • Daniel Syberg
                                      Daniel Syberg last edited by

                                      WOW! Das ging ja schnell!
                                      Vielen lieben Dank, das wird direkt getestet.

                                      T 1 Reply Last reply Reply Quote 0
                                      • T
                                        ticaki @Daniel Syberg last edited by

                                        @daniel-syberg
                                        Ich hab die berechnung von Armilar genommen - wir haben da noch eine Formel aber das muß dann erstmal bissle getestet werden nicht dass dabei müll berechnet wird 🙂

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

                                          @ticaki

                                          Naja, die gefühlte Temperatur und der Windchill sind ja eigentlich stark subjektiv.
                                          Ob das wirklich rein mathematisch abgebildet werden kann ist für ich nicht ganz klar.

                                          Hab mal kurz die Kommentare im Skript gelesen

                                          @armilar sagte in Betatest Bright Sky v0.3.x:

                                          Die gefühlte Temperatur oder Windchill bezieht neben der Lufttemperatur auch die Windgeschwindigkeit mit ein.

                                          @armilar sagte in Betatest Bright Sky v0.3.x:

                                          Der Hitzeindex ist die gefühlte Temperatur in Abhängigkeit von der Lufttemperatur und der relativen Luftfeuchtigkeit.

                                          Das Wärmeempfinden, ins beso dere bei hohen Temperaturen ist natürlich von der relativen Luftfeuchtigkeit abhängig, da der Körper mit zunehmender Umgebungsfeuchte den Schweiss, den er zu Kühlung produziert nicht mehr ausreichend verdunsten kann.
                                          (deswegen reicht im Sommer oft ein Entfeuchter, kühler muss es gar nicht sein)

                                          Aber auch beim Windchill spielt IMHO die relative Luftfeuchtigkeit eine Rolle.
                                          Ist die zu hoch, bleibt ja der Schweiß (auch wenn noch unsichtbar) auf der Haut, und dann reicht schon ein geringerer Luftzug um es als unangenehm kalt zu empfinden.

                                          T 1 Reply Last reply Reply Quote 1
                                          • T
                                            ticaki @Homoran last edited by ticaki

                                            @homoran

                                            Die aktuell zur Diskussion stehende Berechnung sieht so aus - ist aber noch nirgendwo drin - chatGPT baut auch genug mist 🙂

                                            Die von Armilar ist lange getestet.

                                            /**
                                             * Convert kWh/m² per day to average W/m² (instantaneous mean over 24h).
                                             * If your kWh/m² is for a different period, adjust `hours`.
                                             *
                                             * @param kwhPerM2 kWh per m² (e.g. daily total)
                                             * @param hours number of hours for the period (default 24)
                                             * @returns average W/m²
                                             */
                                            function kwhm2_per_day_to_Wm2(kwhPerM2, hours = 24) {
                                              return (kwhPerM2 * 1000) / hours;
                                            }
                                            
                                            /**
                                             * Calculate saturation vapor pressure (Magnus formula) and vapor pressure e (hPa).
                                             *
                                             * @param T temperature in °C
                                             * @param RH relative humidity in % (0-100)
                                             * @returns vapor pressure e in hPa
                                             */
                                            function vaporPressure_hPa(T, RH) {
                                              const es = 6.105 * Math.exp((17.27 * T) / (237.7 + T));
                                              return (RH / 100) * es;
                                            }
                                            
                                            /**
                                             * Apparent Temperature (Steadman).
                                             * Inputs: temperature °C, RH %, wind in km/h.
                                             *
                                             * @param T temperature in °C
                                             * @param RH relative humidity in %
                                             * @param wind_kmh wind speed in km/h (10-min avg ok)
                                             * @returns apparent temperature in °C
                                             */
                                            function apparentTemperature(T, RH, wind_kmh) {
                                              const v_ms = wind_kmh / 3.6;
                                              const e = vaporPressure_hPa(T, RH); // hPa
                                              return T + 0.33 * e - 0.70 * v_ms - 4.0;
                                            }
                                            
                                            /**
                                             * Wind Chill Temperature (WS/meteorological standard).
                                             * Validity: T <= 10°C and wind > ~4.8 km/h.
                                             *
                                             * @param T temperature in °C
                                             * @param wind_kmh wind speed in km/h
                                             * @returns wind chill in °C or NaN if outside typical validity
                                             */
                                            function windChill(T, wind_kmh) {
                                              if (T > 10 || wind_kmh < 4.8) return NaN;
                                              const v16 = Math.pow(wind_kmh, 0.16);
                                              return 13.12 + 0.6215 * T - 11.37 * v16 + 0.3965 * T * v16;
                                            }
                                            
                                            /**
                                             * Heat Index (NOAA / Rothfusz), expects T in °C and RH in %.
                                             * Typical validity: T >= 27°C and RH reasonably high.
                                             *
                                             * @param T temperature in °C
                                             * @param RH relative humidity in %
                                             * @returns heat index in °C
                                             */
                                            function heatIndex(T, RH) {
                                              const T_f = (T * 9) / 5 + 32;
                                              const R = RH;
                                              let HI_f =
                                                -42.379 +
                                                2.04901523 * T_f +
                                                10.14333127 * R -
                                                0.22475541 * T_f * R -
                                                6.83783e-3 * T_f * T_f -
                                                5.481717e-2 * R * R +
                                                1.22874e-3 * T_f * T_f * R +
                                                8.5282e-4 * T_f * R * R -
                                                1.99e-6 * T_f * T_f * R * R;
                                            
                                              if (R < 13 && T_f >= 80 && T_f <= 112) {
                                                HI_f -= ((13 - R) / 4) * Math.sqrt((17 - Math.abs(T_f - 95)) / 17);
                                              } else if (R > 85 && T_f >= 80 && T_f <= 87) {
                                                HI_f += ((R - 85) / 10) * ((87 - T_f) / 5);
                                              }
                                            
                                              return ((HI_f - 32) * 5) / 9;
                                            }
                                            
                                            /**
                                             * Pragmatic "feels-like" chooser:
                                             * - if T <= 10°C -> use Wind Chill (if valid)
                                             * - else if T >= 27°C -> use Heat Index
                                             * - else -> use Apparent Temperature (Steadman)
                                             *
                                             * Solar input (kWh/m² per day) is converted to average W/m² and returned,
                                             * but NOT applied automatically to the index (proper inclusion needs MRT/UTCI).
                                             *
                                             * @param T temperature in °C
                                             * @param RH relative humidity in %
                                             * @param wind_kmh wind speed in km/h (10-min)
                                             * @param solar_kwh_m2_per_day optional solar in kWh/m² (daily). pass null if none.
                                             * @returns object { indexName, value_C, solar_Wm2 (or null) }
                                             */
                                            function feelsLike(T, RH, wind_kmh, solar_kwh_m2_per_day = null) {
                                              const solar_Wm2 = solar_kwh_m2_per_day !== null ? kwhm2_per_day_to_Wm2(solar_kwh_m2_per_day, 24) : null;
                                            
                                              if (T <= 10) {
                                                const wc = windChill(T, wind_kmh);
                                                if (!Number.isNaN(wc)) return { indexName: 'WindChill', value_C: wc, solar_Wm2: solar_Wm2 };
                                                // fallback to apparent temperature if wind chill out of range
                                              }
                                              if (T >= 27) {
                                                return { indexName: 'HeatIndex', value_C: heatIndex(T, RH), solar_Wm2: solar_Wm2 };
                                              }
                                              return { indexName: 'ApparentTemperature', value_C: apparentTemperature(T, RH, wind_kmh), solar_Wm2: solar_Wm2 };
                                            }
                                            

                                            EDIT: Das mit windchill und schweiß stimmt natürlich - fraglich ist halt ob das bei < 10°C ne rolle spielt, weil da kann ich dir schon jetzt sagen - im boxershirt wird dir kalt sein 🙂
                                            Da wird auch die reduktion der isolierung der kleidung durch feuchtigkeit - ok das wird dann echt komplex - da brauchste paar sensoren an dir die das dann korrekt berechnen.

                                            EDIT2: die <10°C nimmt auch chatGPT als hürde für die berechnung von windchill

                                            Matze R 1 Reply Last reply Reply Quote 1
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            1.0k
                                            Online

                                            32.3k
                                            Users

                                            81.0k
                                            Topics

                                            1.3m
                                            Posts

                                            16
                                            147
                                            7089
                                            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