NEWS
Betatest Bright Sky v0.3.x
-
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
noch seltsamer: auch das alte icon der Sonne ist beeinträchtigt.
Woran kann das liegen?
-
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 ?
-
@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. -
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...
-
@armilar sagte in Betatest Bright Sky v0.3.x:
Kannst du mit ein paar kleineren Änderunge direkt in den Adapter schreddern...
-
0.6.6 (2025-10-11)
- (ticaki) Added apparent temperature datapoints for current, hourly, and daily weather data
-
WOW! Das ging ja schnell!
Vielen lieben Dank, das wird direkt getestet. -
@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 -
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. -
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
-
Hallo,
ich habe heute den Bright Sky Adapter installiert. Als ich mir die Wetterinformationen für die Vis einrichten wollte, bin ich auf ein paar Probleme gestoßen, die ich auch hier durch diese Seite nicht lösen konnte.
Das erste Problem war das Einbinden der Icons. Dieser Datenpunkt auf dem Bild fehlt bei mir in den bright sky Ordner.
Das nächste Problem ist das die Datenpunkte "dayName_long " und "dayName_short" bei mir auch im Ordner Bright Sky fehlen.
Also Zusammengefasst, mir fehlen die Datenpunkte dayName_long , dayName_short und iconUrl.Warum werden die Datenpunkte nicht angezeigt ich habe den bright sky 0.3.5 . ich bin für jede Hilfe dankbar
FG
Maro -
Ist ja auch ein wenig alt:
0.6.6 ist aktuell die Version
Geh mal über Adapter und ziehe dir die:
https://github.com/ticaki/ioBroker.brightsky
EDIT:
0.3.5 ist stable... Da ist das nicht drin... Also "latest" (Beta) wie oben beschrieben installieren...
-
Hi danke cool . Aber mit welchem Widget und wie funktioniert das . Html- und Image- Widget haben nicht funktioniert.
diese Inventwo auch nicht. Auch ein Wetter Widget aus der Time and weather Serie hat nicht funktoiniert .
Vielen dank nochmal für die Hilfe
FGMaro
-
Hallo,
erstmal danke für den Adapter!
Eine Frage: Manche Datenpunkte, wie z.B. "icon" oder "timestamp", sind auf englisch. Bleibt es so? Muss man dann es selbst durch Scripts erledigen? -
@matze-r Probiermal
und verbinde "Objekt ID" mit "brightsky.0.current.iconUrl"
-
@andre1de
icon ist ein token, das so von der Api kommt. condition könnte ich in einem weiteren Feld übersetzen - bei icon macht das jetzt nicht wirklich sinn.timestamp ist nicht übersetzbar - das ist ein ISO-Date-String
2025-10-21T10:30:00+00:00
das wird vom Admin so dargestellt wie du es siehst, wenn das im Datenfeld anderes aussehen soll ist das ein Adminproblem. Der Datenpunkt inhalt lässt sich per Blockly oder Javascript so formatierten wie man es will. z.B.new Date('2025-10-21T10:30:00+00:00').toLocaleDateString('de', { weekday: 'long', day: '2-digit', month: 'long', year: 'numeric' });
-
@ticaki
Danke für die Antwort!
Ich wollte noch wie z.B. bei anderen Wetter-Adapter den aktuelle Wetterzustand in Textform haben. Z.B "Sonnig" oder "Bewölkt" usw.
Aber das kann ich auch mit Blockly realisieren. -
in condition gehen folgende Werte:
dry fog rain sleet snow hail thunderstorm null
in icon:
clear-day clear-night partly-cloudy-day partly-cloudy-night cloudy fog wind rain sleet snow hail thunderstorm null
ist halt kein Problem da was in einem weiteren State zu übersetzen aber nicht in die Orginalfelder.
icon z.B. in localLanguageCondition oder soAber nicht diesen Monat - eröffne ein Issue dann lass ich das nächsten Monat Copilot einbauen. Der übersetzt das dann auch ordentlich in die verschiedenen Sprachen.
-
@ticaki
Vielen Dank! -
hier siehst du auch den Wetterstatus, ist ganz einfach
Das ist meine Wettervorschau für die Startseite
das Datum habe ich aus dem Timestamp Datenpunkt und mit javascript und blockly so verändertFG
Maro