Add maxdailygust, indoor feelsLike/dewPoint, and Ambient rain accumulators

- Max Gust Today tile (maxdailygust from Ambient)
- Feels Like In tile (feelsLikein, Ambient-computed)
- Use Ambient's dewPointin directly instead of computing from tempinf/humidityin
- Event Rain tile (eventrainin, shows only when > 0)
- Total Rain lifetime tile (totalrainin)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Nate EmmertandClaude Sonnet 4.6 committed 2026-08-20 08:50:01 -04:00
1 parent a535721bf8
commit c5cdd39eb3
1 file changed
+24 -5
+24 -5
View File
@@ -172,6 +172,7 @@ a { color: var(--cool); text-decoration: none; }
<div class="stat"><div class="stat-label">Dew Point</div><div class="stat-val" id="sDew">—<span class="stat-trend" id="trDew"></span></div><div class="stat-unit">°F</div></div> <div class="stat"><div class="stat-label">Dew Point</div><div class="stat-val" id="sDew">—<span class="stat-trend" id="trDew"></span></div><div class="stat-unit">°F</div></div>
<div class="stat"><div class="stat-label">Wind</div><div class="stat-val" id="sWind">—<span class="stat-trend" id="trWind"></span></div><div class="stat-unit">mph</div></div> <div class="stat"><div class="stat-label">Wind</div><div class="stat-val" id="sWind">—<span class="stat-trend" id="trWind"></span></div><div class="stat-unit">mph</div></div>
<div class="stat"><div class="stat-label">Wind Gust</div><div class="stat-val" id="sGust">—</div><div class="stat-unit">mph</div></div> <div class="stat"><div class="stat-label">Wind Gust</div><div class="stat-val" id="sGust">—</div><div class="stat-unit">mph</div></div>
<div class="stat"><div class="stat-label">Max Gust Today</div><div class="stat-val" id="sMaxGust">—</div><div class="stat-unit">mph</div></div>
<div class="stat"> <div class="stat">
<div class="stat-label">Pressure</div> <div class="stat-label">Pressure</div>
<div class="stat-val" id="sPres">—<span class="stat-trend" id="trPres"></span></div> <div class="stat-val" id="sPres">—<span class="stat-trend" id="trPres"></span></div>
@@ -183,6 +184,7 @@ a { color: var(--cool); text-decoration: none; }
<div class="stat"><div class="stat-label">Solar Rad.</div><div class="stat-val" id="sSolar">—<span class="stat-trend" id="trSolar"></span></div><div class="stat-unit">W/m²</div></div> <div class="stat"><div class="stat-label">Solar Rad.</div><div class="stat-val" id="sSolar">—<span class="stat-trend" id="trSolar"></span></div><div class="stat-unit">W/m²</div></div>
<div class="stat"><div class="stat-label">Battery</div><div class="stat-val" id="sBatt">—</div><div class="stat-unit"></div></div> <div class="stat"><div class="stat-label">Battery</div><div class="stat-val" id="sBatt">—</div><div class="stat-unit"></div></div>
<div class="stat" id="indoorTempTile" style="display:none"><div class="stat-label">Temp In</div><div class="stat-val" id="sTempIn">—</div><div class="stat-unit">°F</div></div> <div class="stat" id="indoorTempTile" style="display:none"><div class="stat-label">Temp In</div><div class="stat-val" id="sTempIn">—</div><div class="stat-unit">°F</div></div>
<div class="stat" id="indoorFeelsTile" style="display:none"><div class="stat-label">Feels Like In</div><div class="stat-val" id="sFeelsIn">—</div><div class="stat-unit">°F</div></div>
<div class="stat" id="indoorHumTile" style="display:none"><div class="stat-label">Humidity In</div><div class="stat-val" id="sHumIn">—</div><div class="stat-unit">%</div></div> <div class="stat" id="indoorHumTile" style="display:none"><div class="stat-label">Humidity In</div><div class="stat-val" id="sHumIn">—</div><div class="stat-unit">%</div></div>
<div class="stat" id="indoorDewTile" style="display:none"><div class="stat-label">Dew Point In</div><div class="stat-val" id="sDewIn">—</div><div class="stat-unit">°F</div></div> <div class="stat" id="indoorDewTile" style="display:none"><div class="stat-label">Dew Point In</div><div class="stat-val" id="sDewIn">—</div><div class="stat-unit">°F</div></div>
</div> </div>
@@ -192,6 +194,8 @@ a { color: var(--cool); text-decoration: none; }
<div class="stat"><div class="stat-label">Rain 7d</div><div class="stat-val" id="sRain7d">—</div><div class="stat-unit">in</div></div> <div class="stat"><div class="stat-label">Rain 7d</div><div class="stat-val" id="sRain7d">—</div><div class="stat-unit">in</div></div>
<div class="stat"><div class="stat-label">Rain 30d</div><div class="stat-val" id="sRain30d">—</div><div class="stat-unit">in</div></div> <div class="stat"><div class="stat-label">Rain 30d</div><div class="stat-val" id="sRain30d">—</div><div class="stat-unit">in</div></div>
<div class="stat"><div class="stat-label">Rain YTD</div><div class="stat-val" id="sRainYTD">—</div><div class="stat-unit">in</div></div> <div class="stat"><div class="stat-label">Rain YTD</div><div class="stat-val" id="sRainYTD">—</div><div class="stat-unit">in</div></div>
<div class="stat" id="sEventRainTile" style="display:none"><div class="stat-label">Event Rain</div><div class="stat-val" id="sEventRain">—</div><div class="stat-unit">in</div></div>
<div class="stat" id="sTotalRainTile" style="display:none"><div class="stat-label">Total Rain</div><div class="stat-val" id="sTotalRain">—</div><div class="stat-unit">in (lifetime)</div></div>
<div class="stat"><div class="stat-label">Heating DD</div><div class="stat-val" id="sHDD">—</div><div class="stat-unit">this month</div></div> <div class="stat"><div class="stat-label">Heating DD</div><div class="stat-val" id="sHDD">—</div><div class="stat-unit">this month</div></div>
<div class="stat"><div class="stat-label">Cooling DD</div><div class="stat-val" id="sCDD">—</div><div class="stat-unit">this month</div></div> <div class="stat"><div class="stat-label">Cooling DD</div><div class="stat-val" id="sCDD">—</div><div class="stat-unit">this month</div></div>
<div class="stat" id="sStreakTile" style="display:none"> <div class="stat" id="sStreakTile" style="display:none">
@@ -732,22 +736,37 @@ async function updateLatest() {
set('sSolar', d.solarradiation, 0); set('sSolar', d.solarradiation, 0);
set('sBatt', d.battout != null ? (d.battout === 1 ? 'OK' : 'Low') : '—', 0); set('sBatt', d.battout != null ? (d.battout === 1 ? 'OK' : 'Low') : '—', 0);
// Max daily gust
if (d.maxdailygust != null) set('sMaxGust', d.maxdailygust);
// Indoor sensors
if (d.tempinf != null) { if (d.tempinf != null) {
set('sTempIn', d.tempinf); set('sTempIn', d.tempinf);
document.getElementById('indoorTempTile').style.display = ''; document.getElementById('indoorTempTile').style.display = '';
} }
if (d.feelsLikein != null) {
set('sFeelsIn', d.feelsLikein, 0);
document.getElementById('indoorFeelsTile').style.display = '';
}
if (d.humidityin != null) { if (d.humidityin != null) {
set('sHumIn', d.humidityin, 0); set('sHumIn', d.humidityin, 0);
document.getElementById('indoorHumTile').style.display = ''; document.getElementById('indoorHumTile').style.display = '';
} }
if (d.tempinf != null && d.humidityin != null) { if (d.dewPointin != null) {
const Tc = (d.tempinf - 32) * 5 / 9, RH = d.humidityin; set('sDewIn', d.dewPointin);
const dp = (243.04 * (Math.log(RH / 100) + 17.625 * Tc / (243.04 + Tc))) /
(17.625 - Math.log(RH / 100) - 17.625 * Tc / (243.04 + Tc));
set('sDewIn', +(dp * 9 / 5 + 32).toFixed(1), 1);
document.getElementById('indoorDewTile').style.display = ''; document.getElementById('indoorDewTile').style.display = '';
} }
// Ambient rain accumulators
if (d.eventrainin != null && d.eventrainin > 0) {
set('sEventRain', d.eventrainin, 2);
document.getElementById('sEventRainTile').style.display = '';
}
if (d.totalrainin != null) {
set('sTotalRain', d.totalrainin, 2);
document.getElementById('sTotalRainTile').style.display = '';
}
const name = document.getElementById('stationName'); const name = document.getElementById('stationName');
if (name && d.PASSKEY) name.textContent = ''; if (name && d.PASSKEY) name.textContent = '';