-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathairconditioning.go
More file actions
79 lines (67 loc) · 2.93 KB
/
airconditioning.go
File metadata and controls
79 lines (67 loc) · 2.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
package skoda
import (
"context"
"fmt"
"time"
)
// AirConditioningState represents the state of the air conditioning.
type AirConditioningState string
const (
AirConditioningStateCooling AirConditioningState = "COOLING"
AirConditioningStateHeating AirConditioningState = "HEATING"
AirConditioningStateHeatingAuxiliary AirConditioningState = "HEATING_AUXILIARY"
AirConditioningStateOff AirConditioningState = "OFF"
AirConditioningStateOn AirConditioningState = "ON"
AirConditioningStateVentilation AirConditioningState = "VENTILATION"
)
// ConnectionState represents whether the charger is connected.
type ConnectionState string
const (
ConnectionStateConnected ConnectionState = "CONNECTED"
ConnectionStateDisconnected ConnectionState = "DISCONNECTED"
)
// ChargerLockedState represents the lock state of the charger.
type ChargerLockedState string
const (
ChargerLockedStateLocked ChargerLockedState = "LOCKED"
ChargerLockedStateUnlocked ChargerLockedState = "UNLOCKED"
ChargerLockedStateInvalid ChargerLockedState = "INVALID"
)
// WindowHeatingState describes the state of front/rear window heating.
type WindowHeatingState struct {
Front string `json:"front"`
Rear string `json:"rear"`
}
// TargetTemperature describes the target temperature setting.
type TargetTemperature struct {
TemperatureValue float64 `json:"temperatureValue"`
UnitInCar string `json:"unitInCar"`
}
// SeatHeating describes seat heating state.
type SeatHeating struct {
FrontLeft *bool `json:"frontLeft,omitempty"`
FrontRight *bool `json:"frontRight,omitempty"`
}
// AirConditioning contains the air conditioning state for a vehicle.
type AirConditioning struct {
State AirConditioningState `json:"state"`
ChargerConnectionState ConnectionState `json:"chargerConnectionState,omitempty"`
ChargerLockState ChargerLockedState `json:"chargerLockState,omitempty"`
WindowHeatingState *WindowHeatingState `json:"windowHeatingState,omitempty"`
TargetTemperature *TargetTemperature `json:"targetTemperature,omitempty"`
SeatHeatingActivated *SeatHeating `json:"seatHeatingActivated,omitempty"`
HeaterSource string `json:"heaterSource,omitempty"`
WindowHeatingEnabled *bool `json:"windowHeatingEnabled,omitempty"`
CarCapturedTimestamp *time.Time `json:"carCapturedTimestamp,omitempty"`
SteeringWheelPosition string `json:"steeringWheelPosition,omitempty"`
}
// AirConditioning retrieves the current air conditioning state for a vehicle.
// This is a safe read-only endpoint that does not wake the car.
func (c *Client) AirConditioning(ctx context.Context, vin string) (*AirConditioning, error) {
var res AirConditioning
url := fmt.Sprintf("%s/v2/air-conditioning/%s", c.apiURL, vin)
if err := c.doGet(ctx, url, &res); err != nil {
return nil, fmt.Errorf("air conditioning: %w", err)
}
return &res, nil
}