New MySubaru version

This commit is contained in:
2025-06-04 13:39:55 -04:00
parent 740325201f
commit 31b65216a2
3 changed files with 12 additions and 13 deletions

View File

@ -17,6 +17,7 @@ import (
"git.savin.nyc/alex/mysubaru"
"git.savin.nyc/alex/mysubaru-mq/bus"
"git.savin.nyc/alex/mysubaru-mq/config"
msc "git.savin.nyc/alex/mysubaru/config"
)
// MySubaruClient is a client that connects to the MySubaru server by establishing tcp connection
@ -33,10 +34,6 @@ type MySubaruClient struct {
// NewMySubaruClient initialises and returns a MySubaru client
func NewMySubaruClient(id string, bus *bus.Bus, config *config.Config) *MySubaruClient {
if config == nil {
slog.Error("")
}
s := &MySubaruClient{
id: id,
bus: bus,
@ -60,7 +57,7 @@ func (s *MySubaruClient) Type() string {
func (s *MySubaruClient) Init(log *slog.Logger) error {
s.log = log
mys, err := mysubaru.New(log, &s.config.MySubaru)
mys, err := mysubaru.New(&msc.Config{MySubaru: s.config.MySubaru, TimeZone: s.config.Timezone, Logger: s.log})
if err != nil {
s.log.Error("couldn't connect to MySubaru server", "error", err.Error())
}
@ -285,7 +282,7 @@ func (s *MySubaruClient) mySubaruConfigToMQTTHassioConfig(v *mysubaru.Vehicle) [
var hassioConfig = map[string]string{}
// availability := `{"avty":["{"topic":"mysubaru/` + v.Vin + `"}"]}`
origin := `"o":{"name":"MySubaruMQ","sw":"1.0.1","url":"https://www.git.savin.nyc/alex/mysubaru-mq"},`
origin := `"o":{"name":"MySubaruMQ","sw":"1.0.1","url":"https://git.savin.nyc/alex/mysubaru-mq"},`
// availability := `"avty":[{"t":"musubarymq/status"}],"avty_t":"{{value_json.value}}",`
device := `"dev":{"ids":["` + v.Vin + `"],"name":"` + v.CarNickname + `","mf":"Subaru Corp.","mdl":"` + v.CarNickname + `","hw":"` + v.ModelCode + `"},` // TODO chnage model to the proper one
obj_id_prefix := strings.Replace(strings.ToLower(v.CarNickname), " ", "_", -1)
@ -348,7 +345,6 @@ func (s *MySubaruClient) mySubaruConfigToMQTTHassioConfig(v *mysubaru.Vehicle) [
msgs = s.messages(topic, 1, true, payload, msgs)
s.log.Debug("hassio mqtt configuration", "topic", string(topic), "payload", string(payload))
}
return msgs
}
@ -356,7 +352,11 @@ func (s *MySubaruClient) mySubaruConfigToMQTTHassioConfig(v *mysubaru.Vehicle) [
func (s *MySubaruClient) mySubaruStatusToMQTTMessage(v *mysubaru.Vehicle) []*bus.Message {
var state = map[string]string{}
state[`mysubarumq/`+v.Vin+`/state`] = `{"odometer_km":` + strconv.Itoa(v.Odometer.Kilometers) + `,"odometer_mi":` + strconv.Itoa(v.Odometer.Miles) + `,"dist_to_empty_km":` + strconv.Itoa(v.DistanceToEmpty.Kilometers) + `,"dist_to_empty_mi":` + strconv.Itoa(v.DistanceToEmpty.Miles) + `,"dist_to_empty_pc":` + strconv.Itoa(v.DistanceToEmpty.Percentage) + `,"consumption_us":` + fmt.Sprintf("%.2f", v.FuelConsumptionAvg.MPG) + `,"consumption_eu":` + fmt.Sprintf("%.2f", v.FuelConsumptionAvg.LP100Km) + `,"engine_state":"` + v.EngineState + `"}`
tank := ""
if v.DistanceToEmpty.Percentage > 0 && 101 >= v.DistanceToEmpty.Percentage {
tank = `"dist_to_empty_pc":` + strconv.Itoa(v.DistanceToEmpty.Percentage) + `,`
}
state[`mysubarumq/`+v.Vin+`/state`] = `{` + tank + `"odometer_km":` + strconv.Itoa(v.Odometer.Kilometers) + `,"odometer_mi":` + strconv.Itoa(v.Odometer.Miles) + `,"dist_to_empty_km":` + strconv.Itoa(v.DistanceToEmpty.Kilometers) + `,"dist_to_empty_mi":` + strconv.Itoa(v.DistanceToEmpty.Miles) + `,"consumption_us":` + fmt.Sprintf("%.2f", v.FuelConsumptionAvg.MPG) + `,"consumption_eu":` + fmt.Sprintf("%.2f", v.FuelConsumptionAvg.LP100Km) + `,"engine_state":"` + v.EngineState + `"}`
state[`mysubarumq/`+v.Vin+`/attr`] = `{"source_type":"gps","latitude":` + fmt.Sprintf("%.6f", v.GeoLocation.Latitude) + `,"longitude":` + fmt.Sprintf("%.6f", v.GeoLocation.Longitude) + `,"course":` + strconv.Itoa(v.GeoLocation.Heading) + `,"speed":` + fmt.Sprintf("%.2f", v.GeoLocation.Speed) + `,"friendly_name":"` + v.CarNickname + `"}`
var msgs []*bus.Message