add barometric pressure
This commit is contained in:
@@ -38,13 +38,13 @@ func pressureHPAFromPayload(raw map[string]any) (float64, bool) {
|
||||
); ok {
|
||||
return v, true
|
||||
}
|
||||
if v, ok := findFloat(raw, "pressure_pa"); ok {
|
||||
if v, ok := findFloat(raw, "pressure_pa", "pa"); ok {
|
||||
return v / 100.0, true
|
||||
}
|
||||
if v, ok := findFloat(raw, "pressure_kpa"); ok {
|
||||
return v * 10.0, true
|
||||
}
|
||||
if v, ok := findFloat(raw, "pressure_inhg", "barometer_inhg"); ok {
|
||||
if v, ok := findFloat(raw, "pressure_inhg", "barometer_inhg", "altim"); ok {
|
||||
return v * 33.8638866667, true
|
||||
}
|
||||
return 0, false
|
||||
|
||||
@@ -16,8 +16,10 @@ const (
|
||||
type Latest struct {
|
||||
mu sync.RWMutex
|
||||
|
||||
lastTS time.Time
|
||||
last *WS90Payload
|
||||
lastTS time.Time
|
||||
last *WS90Payload
|
||||
baroTS time.Time
|
||||
baroHPA *float64
|
||||
|
||||
// Rain tracking
|
||||
mode rainMode
|
||||
@@ -144,6 +146,7 @@ type Snapshot struct {
|
||||
|
||||
RainLastHourMM float64
|
||||
DailyRainMM float64
|
||||
PressureHPA *float64
|
||||
}
|
||||
|
||||
func (l *Latest) Snapshot() (Snapshot, bool) {
|
||||
@@ -162,10 +165,25 @@ func (l *Latest) Snapshot() (Snapshot, bool) {
|
||||
daySum += rp.mm
|
||||
}
|
||||
|
||||
var pressure *float64
|
||||
if l.baroHPA != nil {
|
||||
v := *l.baroHPA
|
||||
pressure = &v
|
||||
}
|
||||
|
||||
return Snapshot{
|
||||
TS: l.lastTS,
|
||||
P: *l.last,
|
||||
RainLastHourMM: hourSum,
|
||||
DailyRainMM: daySum,
|
||||
PressureHPA: pressure,
|
||||
}, true
|
||||
}
|
||||
|
||||
func (l *Latest) UpdateBarometer(ts time.Time, pressureHPA float64) {
|
||||
l.mu.Lock()
|
||||
defer l.mu.Unlock()
|
||||
|
||||
l.baroTS = ts
|
||||
l.baroHPA = &pressureHPA
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user