Added tires reporting
This commit is contained in:
@ -306,6 +306,28 @@ func (s *MySubaruClient) mySubaruConfigToMQTTHassioConfig(v *mysubaru.Vehicle) [
|
|||||||
hassioConfig[s.config.Hassio.Topics.Discovery+`/sensor/`+v.Vin+`/engine_state/config`] = `{` + device + origin + topic + `"name":"Engine State","uniq_id":"` + v.Vin + `_engine_state","obj_id":"` + obj_id_prefix + `_engine_state","ic":"mdi:engine","stat_t":"mysubarumq/` + v.Vin + `/state","val_tpl":"{{value_json.engine_state}}"}`
|
hassioConfig[s.config.Hassio.Topics.Discovery+`/sensor/`+v.Vin+`/engine_state/config`] = `{` + device + origin + topic + `"name":"Engine State","uniq_id":"` + v.Vin + `_engine_state","obj_id":"` + obj_id_prefix + `_engine_state","ic":"mdi:engine","stat_t":"mysubarumq/` + v.Vin + `/state","val_tpl":"{{value_json.engine_state}}"}`
|
||||||
hassioConfig[s.config.Hassio.Topics.Discovery+`/device_tracker/`+v.Vin+`/config`] = `{` + device + origin + `"name":"` + v.CarNickname + `","uniq_id":"` + v.Vin + `_device_tracker","obj_id":"` + obj_id_prefix + `","ic":"mdi:car-connected","json_attr_t":"mysubarumq/` + v.Vin + `/attr"}`
|
hassioConfig[s.config.Hassio.Topics.Discovery+`/device_tracker/`+v.Vin+`/config`] = `{` + device + origin + `"name":"` + v.CarNickname + `","uniq_id":"` + v.Vin + `_device_tracker","obj_id":"` + obj_id_prefix + `","ic":"mdi:car-connected","json_attr_t":"mysubarumq/` + v.Vin + `/attr"}`
|
||||||
|
|
||||||
|
for n, d := range v.Doors {
|
||||||
|
// homeassistant/sensor/mysubaru/VIN-NUMBER-HERE/door_frontleft_status/config
|
||||||
|
position := d.Position
|
||||||
|
if len(d.SubPosition) > 0 {
|
||||||
|
position = position + ` ` + d.SubPosition
|
||||||
|
}
|
||||||
|
hassioConfig[s.config.Hassio.Topics.Discovery+`/sensor/`+v.Vin+`/door_`+n+`_status/config`] = `{` + device + origin + topic + `"name":"Door ` + position + ` Status","uniq_id":"` + v.Vin + `_door_` + n + `_status","obj_id":"` + obj_id_prefix + `_door_` + n + `_status","ic":"mdi:car-door","stat_t":"mysubarumq/` + v.Vin + `/doors/state","val_tpl":"{{value_json.` + n + `}}"}`
|
||||||
|
}
|
||||||
|
for n, w := range v.Windows {
|
||||||
|
// homeassistant/sensor/mysubaru/VIN-NUMBER-HERE/window_frontleft/config
|
||||||
|
position := w.Position
|
||||||
|
if len(w.SubPosition) > 0 {
|
||||||
|
position = position + ` ` + w.SubPosition
|
||||||
|
}
|
||||||
|
hassioConfig[s.config.Hassio.Topics.Discovery+`/sensor/`+v.Vin+`/window_`+n+`/config`] = `{` + device + origin + topic + `"name":"Window ` + position + `","uniq_id":"` + v.Vin + `_window_` + n + `","obj_id":"` + obj_id_prefix + `_window_` + n + `","ic":"mdi:car-door","stat_t":"mysubarumq/` + v.Vin + `/windows/state","val_tpl":"{{value_json.window_` + n + `}}"}`
|
||||||
|
}
|
||||||
|
for n, t := range v.Tires {
|
||||||
|
// homeassistant/sensor/mysubaru/VIN-NUMBER-HERE/tire_frontleft_psi/config
|
||||||
|
position := t.Position + ` ` + t.SubPosition
|
||||||
|
hassioConfig[s.config.Hassio.Topics.Discovery+`/sensor/`+v.Vin+`/tire_`+n+`_psi/config`] = `{` + device + origin + topic + `"name":"Tire ` + position + ` (Psi)","uniq_id":"` + v.Vin + `_tire_` + n + `_psi","obj_id":"` + obj_id_prefix + `_tire_` + n + `_psi","ic":"mdi:car-tire-alert","stat_t":"mysubarumq/` + v.Vin + `/tires/state","val_tpl":"{{value_json.tire_` + n + `}}"}`
|
||||||
|
}
|
||||||
|
|
||||||
topicState := `mysubarumq/` + v.Vin + `/ignition`
|
topicState := `mysubarumq/` + v.Vin + `/ignition`
|
||||||
topicSet := `mysubarumq/` + v.Vin + `/ignition/set`
|
topicSet := `mysubarumq/` + v.Vin + `/ignition/set`
|
||||||
hassioConfig[s.config.Hassio.Topics.Discovery+`/switch/`+v.Vin+`/ignition/config`] = `{` + origin + device + `"name":"Ignition","cmd_t":"` + topicSet + `","stat_t":"` + topicState + `","name":null,"obj_id":"` + obj_id_prefix + `_ignition","ic":"mdi:engine","pl_off":"OFF","pl_on":"ON","uniq_id":"` + v.Vin + `_ignition"}`
|
hassioConfig[s.config.Hassio.Topics.Discovery+`/switch/`+v.Vin+`/ignition/config`] = `{` + origin + device + `"name":"Ignition","cmd_t":"` + topicSet + `","stat_t":"` + topicState + `","name":null,"obj_id":"` + obj_id_prefix + `_ignition","ic":"mdi:engine","pl_off":"OFF","pl_on":"ON","uniq_id":"` + v.Vin + `_ignition"}`
|
||||||
@ -359,6 +381,19 @@ func (s *MySubaruClient) mySubaruStatusToMQTTMessage(v *mysubaru.Vehicle) []*bus
|
|||||||
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+`/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 + `"}`
|
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 + `"}`
|
||||||
|
|
||||||
|
tires := `{`
|
||||||
|
tq := len(v.Tires)
|
||||||
|
tc := 1
|
||||||
|
for n, t := range v.Tires {
|
||||||
|
tires = `"` + n + `":` + strconv.Itoa(t.Pressure)
|
||||||
|
if tc != tq {
|
||||||
|
tires = tires + `,`
|
||||||
|
}
|
||||||
|
tc++
|
||||||
|
}
|
||||||
|
tires = tires + `}`
|
||||||
|
state[`mysubarumq/`+v.Vin+`/tires/state`] = tires
|
||||||
|
|
||||||
var msgs []*bus.Message
|
var msgs []*bus.Message
|
||||||
for topic, payload := range state {
|
for topic, payload := range state {
|
||||||
msgs = s.messages(topic, 0, false, payload, msgs)
|
msgs = s.messages(topic, 0, false, payload, msgs)
|
||||||
|
Reference in New Issue
Block a user