first commit
This commit is contained in:
39
internal/mqttingest/ws90.go
Normal file
39
internal/mqttingest/ws90.go
Normal 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
|
||||
}
|
||||
Reference in New Issue
Block a user