More fixes
This commit is contained in:
@@ -5,7 +5,6 @@ import {api, BASE} from '../services/api';
|
||||
const data = ref<any>({});
|
||||
|
||||
function dir(deg: number) {
|
||||
if(deg > 0 && deg <= 22.5 || deg > 337.5) return 'N';
|
||||
if(deg > 22.5 && deg <= 67.5) return 'NE';
|
||||
if(deg > 67.5 && deg <= 112.5) return 'E';
|
||||
if(deg > 112.5 && deg <= 157.5) return 'SE';
|
||||
@@ -13,6 +12,7 @@ function dir(deg: number) {
|
||||
if(deg > 202.5 && deg <= 247.5) return 'SW';
|
||||
if(deg > 247.5 && deg <= 292.5) return 'W';
|
||||
if(deg > 292.5 && deg <= 337.5) return 'NW';
|
||||
return 'N';
|
||||
}
|
||||
|
||||
onMounted(async () => {
|
||||
@@ -142,11 +142,11 @@ onMounted(async () => {
|
||||
<div class="divider" />
|
||||
|
||||
<div class="stat-grid">
|
||||
<div class="stat"><span class="stat-label">Precipitation</span><span class="stat-value">{{ precipProb }}</span></div>
|
||||
<div class="stat"><span class="stat-label">Humidity</span><span class="stat-value">{{ data.humidity }}</span><span v-if="precipHrs" class="stat-sub">over {{ precipHrs }}</span></div>
|
||||
<div class="stat"><span class="stat-label">Wind</span><span class="stat-value">{{ data.wind_gusts }} ({{ dir(data.wind_direction) }})</span></div>
|
||||
<div class="stat"><span class="stat-label">Clouds</span><span class="stat-value">{{ data.clouds }}</span></div>
|
||||
<div class="stat"><span class="stat-label">Air Quality</span><span class="stat-value">{{ data.air_quality }}</span></div>
|
||||
<div class="stat"><span class="stat-label">Precipitation</span><span class="stat-value">{{ !data.precipitation && data.raining == 'True' ? 'Spitting' : data.precipitation?.toFixed(1) + 'mm'}}</span></div>
|
||||
<div class="stat"><span class="stat-label">Humidity</span><span class="stat-value">{{ data.humidity?.toFixed(0) }}%</span></div>
|
||||
<div class="stat"><span class="stat-label">Wind</span><span class="stat-value">{{ data.wind_gusts }} Kph <span class="fg-muted">({{ dir(data.wind_direction) }})</span></span></div>
|
||||
<div class="stat"><span class="stat-label">Clouds</span><span class="stat-value">{{ data.clouds?.toFixed(0) }}%</span></div>
|
||||
<div class="stat"><span class="stat-label">Air Quality</span><span class="stat-value">{{ data.air_quality }} <span class="fg-muted">({{data.air_quality_label}})</span></span></div>
|
||||
<div class="stat"><span class="stat-label">UV index</span><span class="stat-value">{{ data.uv_index }}</span></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -352,10 +352,13 @@ def classify_clouds(c, lux, solar_el):
|
||||
|
||||
return cloud_pct, label, volatility
|
||||
|
||||
def visibility_estimate(lux, humidity):
|
||||
def visibility_estimate(lux, humidity, solar_el=None):
|
||||
base_km = 50.0
|
||||
hum_factor = max(0, 1 - ((humidity - 40) / 60)) if humidity > 40 else 1.0
|
||||
lux_factor = min(lux / 10000, 1.0)
|
||||
if solar_el is not None and solar_el > 5:
|
||||
lux_factor = min(lux / 10000, 1.0)
|
||||
else:
|
||||
lux_factor = 1.0
|
||||
return round(base_km * hum_factor * lux_factor, 1)
|
||||
|
||||
def read_ltr(c, sensor, solar_el, humidity=None):
|
||||
@@ -365,7 +368,7 @@ def read_ltr(c, sensor, solar_el, humidity=None):
|
||||
null = {
|
||||
'lux': None, 'uv_index': None, 'solar_wm2': None,
|
||||
'uv_dose': None, 'clouds': None, 'daily_light_integral': None,
|
||||
'daylight': None, 'visibility': None, 'cloud_volatility': None,
|
||||
'daylight': None, 'visibility': None,
|
||||
}
|
||||
|
||||
if not sensor: write(c, 'light', null); return
|
||||
@@ -398,11 +401,9 @@ def read_ltr(c, sensor, solar_el, humidity=None):
|
||||
daylight_start = now
|
||||
daylight_hours = round((now - daylight_start) / 3600, 2) if daylight_start else 0.0
|
||||
|
||||
update_cloud_baseline(c, solar_el, lux)
|
||||
cloud_pct, cloud_label, volatility = classify_clouds(c, lux, solar_el)
|
||||
|
||||
if cloud_label == 'Clear':
|
||||
update_cloud_baseline(c, solar_el, lux)
|
||||
|
||||
write(c, 'light', {
|
||||
'lux': lux,
|
||||
'uv_index': uvi,
|
||||
@@ -411,7 +412,7 @@ def read_ltr(c, sensor, solar_el, humidity=None):
|
||||
'clouds': cloud_pct,
|
||||
'daily_light_integral': dli,
|
||||
'daylight': daylight_hours,
|
||||
'visibility': visibility_estimate(lux, humidity) if humidity else None,
|
||||
'visibility': visibility_estimate(lux, humidity, solar_el) if humidity else None,
|
||||
}, tags={'clouds_label': cloud_label or ''})
|
||||
|
||||
# ── TF-Luna ───────────────────────────────────────────────────────────────────
|
||||
|
||||
Reference in New Issue
Block a user