first commit

This commit is contained in:
2026-01-26 12:40:47 +11:00
commit adaa57f9e2
17 changed files with 1382 additions and 0 deletions

View File

@@ -0,0 +1,39 @@
package mqttingest
import "encoding/json"
// WS90Payload matches your JSON keys.
type WS90Payload struct {
Model string `json:"model"`
ID int64 `json:"id"`
BatteryOK int `json:"battery_ok"`
BatteryMV int `json:"battery_mV"`
TemperatureC float64 `json:"temperature_C"`
Humidity float64 `json:"humidity"`
WindDirDeg float64 `json:"wind_dir_deg"`
WindAvgMS float64 `json:"wind_avg_m_s"`
WindMaxMS float64 `json:"wind_max_m_s"`
UVI float64 `json:"uvi"`
LightLux float64 `json:"light_lux"`
Flags int `json:"flags"`
RainMM float64 `json:"rain_mm"`
RainStart int64 `json:"rain_start"`
SupercapV float64 `json:"supercap_V"`
Firmware int `json:"firmware"`
Data string `json:"data"`
MIC string `json:"mic"`
Protocol string `json:"protocol"`
RSSI int `json:"rssi"`
Duration int64 `json:"duration"`
}
func ParseWS90(b []byte) (*WS90Payload, map[string]any, error) {
var p WS90Payload
if err := json.Unmarshal(b, &p); err != nil {
return nil, nil, err
}
// Keep the full payload as JSONB too.
var raw map[string]any
_ = json.Unmarshal(b, &raw)
return &p, raw, nil
}