diff --git a/consts.go b/consts.go index 559f923..3ab8203 100644 --- a/consts.go +++ b/consts.go @@ -1,6 +1,5 @@ package mysubaru -// Lastest version /g2v27 var MOBILE_API_VERSION = "/g2v30" var MOBILE_API_SERVER = map[string]string{ @@ -19,59 +18,59 @@ var WEB_API_SERVER = map[string]string{ } var apiURLs = map[string]string{ - "WEB_API_LOGIN": "/login", - "WEB_API_LIST_DEVICES": "/listMyDevices.json", // TODO - "WEB_API_AUTHORIZE_DEVICE": "/profile/updateDeviceEntry.json", - "WEB_API_NAME_DEVICE": "/profile/addDeviceName.json", - "WEB_API_EDIT_NAME_DEVICE": "/profile/editDeviceName.json", - "WEB_API_VERIFY_NAME_DEVICE": "/profile/verifyDeviceName.json", - "API_LOGIN": "/login.json", // Same API for g1 and g2 - "API_REFRESH_VEHICLES": "/refreshVehicles.json", - "API_SELECT_VEHICLE": "/selectVehicle.json", - "API_VALIDATE_SESSION": "/validateSession.json", - "API_VEHICLE_STATUS": "/vehicleStatus.json", - "API_AUTHORIZE_DEVICE": "/authenticateDevice.json", - "API_NAME_DEVICE": "/nameThisDevice.json", - "API_VEHICLE_HEALTH": "/vehicleHealth.json", - "API_LOCK": "/service/api_gen/lock/execute.json", // Similar API for g1 and g2 -- controller should replace 'api_gen' with either 'g1' or 'g2' - "API_LOCK_CANCEL": "/service/api_gen/lock/cancel.json", - "API_UNLOCK": "/service/api_gen/unlock/execute.json", - "API_UNLOCK_CANCEL": "/service/api_gen/unlock/cancel.json", - "API_HORN_LIGHTS": "/service/api_gen/hornLights/execute.json", - "API_HORN_LIGHTS_CANCEL": "/service/api_gen/hornLights/cancel.json", - "API_HORN_LIGHTS_STOP": "/service/api_gen/hornLights/stop.json", - "API_LIGHTS": "/service/api_gen/lightsOnly/execute.json", - "API_LIGHTS_CANCEL": "/service/api_gen/lightsOnly/cancel.json", - "API_LIGHTS_STOP": "/service/api_gen/lightsOnly/stop.json", - "API_CONDITION": "/service/api_gen/condition/execute.json", - "API_LOCATE": "/service/api_gen/locate/execute.json", // Get the last location the vehicle has reported to Subaru - "API_REMOTE_SVC_STATUS": "/service/g2/remoteService/status.json", - "API_G1_LOCATE_UPDATE": "/service/g1/vehicleLocate/execute.json", // Different API for g1 and g2 - "API_G1_LOCATE_STATUS": "/service/g1/vehicleLocate/status.json", - "API_G1_HORN_LIGHTS_STATUS": "/service/g1/hornLights/status.json", // g1-Only API - "API_G2_LOCATE_UPDATE": "/service/g2/vehicleStatus/execute.json", - "API_G2_LOCATE_STATUS": "/service/g2/vehicleStatus/locationStatus.json", - "API_G2_SEND_POI": "/service/g2/sendPoi/execute.json", // g2-Only API - "API_G2_SPEEDFENCE": "/service/g2/speedFence/execute.json", - "API_G2_GEOFENCE": "/service/g2/geoFence/execute.json", - "API_G2_CURFEW": "/service/g2/curfew/execute.json", - "API_G2_REMOTE_ENGINE_START": "/service/g2/engineStart/execute.json", - "API_G2_REMOTE_ENGINE_START_CANCEL": "/service/g2/engineStart/cancel.json", - "API_G2_REMOTE_ENGINE_STOP": "/service/g2/engineStop/execute.json", - - "API_G2_FETCH_CLIMATE_SETTINGS": "/service/g2/remoteEngineStart/fetch.json", - "API_G2_SAVE_CLIMATE_SETTINGS": "/service/g2/remoteEngineStart/save.json", - + "WEB_API_LOGIN": "/login", + "WEB_API_LIST_DEVICES": "/listMyDevices.json", // TODO + "WEB_API_AUTHORIZE_DEVICE": "/profile/updateDeviceEntry.json", + "WEB_API_NAME_DEVICE": "/profile/addDeviceName.json", + "WEB_API_EDIT_NAME_DEVICE": "/profile/editDeviceName.json", + "WEB_API_VERIFY_NAME_DEVICE": "/profile/verifyDeviceName.json", + "API_2FA_CONTACT": "/twoStepAuthContacts.json", + "API_2FA_SEND_VERIFICATION": "/twoStepAuthSendVerification.json", + "API_2FA_AUTH_VERIFY": "/twoStepAuthVerify.json", + "API_LOGIN": "/login.json", // Same API for g1 and g2 + "API_REFRESH_VEHICLES": "/refreshVehicles.json", + "API_SELECT_VEHICLE": "/selectVehicle.json", + "API_VALIDATE_SESSION": "/validateSession.json", + "API_VEHICLE_STATUS": "/vehicleStatus.json", + "API_AUTHORIZE_DEVICE": "/authenticateDevice.json", + "API_NAME_DEVICE": "/nameThisDevice.json", + "API_VEHICLE_HEALTH": "/vehicleHealth.json", + "API_LOCK": "/service/api_gen/lock/execute.json", // Similar API for g1 and g2 -- controller should replace 'api_gen' with either 'g1' or 'g2' + "API_LOCK_CANCEL": "/service/api_gen/lock/cancel.json", + "API_UNLOCK": "/service/api_gen/unlock/execute.json", + "API_UNLOCK_CANCEL": "/service/api_gen/unlock/cancel.json", + "API_HORN_LIGHTS": "/service/api_gen/hornLights/execute.json", + "API_HORN_LIGHTS_CANCEL": "/service/api_gen/hornLights/cancel.json", + "API_HORN_LIGHTS_STOP": "/service/api_gen/hornLights/stop.json", + "API_LIGHTS": "/service/api_gen/lightsOnly/execute.json", + "API_LIGHTS_CANCEL": "/service/api_gen/lightsOnly/cancel.json", + "API_LIGHTS_STOP": "/service/api_gen/lightsOnly/stop.json", + "API_CONDITION": "/service/api_gen/condition/execute.json", + "API_LOCATE": "/service/api_gen/locate/execute.json", // Get the last location the vehicle has reported to Subaru + "API_REMOTE_SVC_STATUS": "/service/g2/remoteService/status.json", + "API_G1_LOCATE_UPDATE": "/service/g1/vehicleLocate/execute.json", // Different API for g1 and g2 + "API_G1_LOCATE_STATUS": "/service/g1/vehicleLocate/status.json", + "API_G1_HORN_LIGHTS_STATUS": "/service/g1/hornLights/status.json", // g1-Only API + "API_G2_LOCATE_UPDATE": "/service/g2/vehicleStatus/execute.json", + "API_G2_LOCATE_STATUS": "/service/g2/vehicleStatus/locationStatus.json", + "API_G2_SEND_POI": "/service/g2/sendPoi/execute.json", // g2-Only API + "API_G2_SPEEDFENCE": "/service/g2/speedFence/execute.json", + "API_G2_GEOFENCE": "/service/g2/geoFence/execute.json", + "API_G2_CURFEW": "/service/g2/curfew/execute.json", + "API_G2_REMOTE_ENGINE_START": "/service/g2/engineStart/execute.json", + "API_G2_REMOTE_ENGINE_START_CANCEL": "/service/g2/engineStart/cancel.json", + "API_G2_REMOTE_ENGINE_STOP": "/service/g2/engineStop/execute.json", + "API_G2_FETCH_CLIMATE_SETTINGS": "/service/g2/remoteEngineStart/fetch.json", + "API_G2_SAVE_CLIMATE_SETTINGS": "/service/g2/remoteEngineStart/save.json", "API_G2_FETCH_RES_QUICK_START_SETTINGS": "/service/g2/remoteEngineQuickStartSettings/fetch.json", "API_G2_FETCH_RES_USER_PRESETS": "/service/g2/remoteEngineStartSettings/fetch.json", "API_G2_FETCH_RES_SUBARU_PRESETS": "/service/g2/climatePresetSettings/fetch.json", "API_G2_SAVE_RES_SETTINGS": "/service/g2/remoteEngineStartSettings/save.json", "API_G2_SAVE_RES_QUICK_START_SETTINGS": "/service/g2/remoteEngineQuickStartSettings/save.json", - - "API_EV_CHARGE_NOW": "/service/g2/phevChargeNow/execute.json", // EV-Only API - "API_EV_FETCH_CHARGE_SETTINGS": "/service/g2/phevGetTimerSettings/execute.json", - "API_EV_SAVE_CHARGE_SETTINGS": "/service/g2/phevSendTimerSetting/execute.json", - "API_EV_DELETE_CHARGE_SCHEDULE": "/service/g2/phevDeleteTimerSetting/execute.json", + "API_EV_CHARGE_NOW": "/service/g2/phevChargeNow/execute.json", // EV-Only API + "API_EV_FETCH_CHARGE_SETTINGS": "/service/g2/phevGetTimerSettings/execute.json", + "API_EV_SAVE_CHARGE_SETTINGS": "/service/g2/phevSendTimerSetting/execute.json", + "API_EV_DELETE_CHARGE_SCHEDULE": "/service/g2/phevDeleteTimerSetting/execute.json", } // API_VEHICLE_FEATURES items that determine available functionality diff --git a/example/config.sample.yaml b/example/config.sample.yaml index a2dd2ec..8a7a63b 100644 --- a/example/config.sample.yaml +++ b/example/config.sample.yaml @@ -1,15 +1,14 @@ -credentials: - username: user@email.com - password: "Secr#TPassW0rd" - pin: "PIN" - deviceId: GENERATE-DEVICE-ID - deviceName: Golang Integration mysubaru: + credentials: + username: user@email.com + password: "Secr#TPassW0rd" + pin: "PIN" + deviceid: GENERATE-DEVICE-ID + devicename: Golang Integration region: USA -mqtt: - client_id: mysubaru - username: mysubaru - password: - host: mqtt.hostname.com - port: 1883 -log: info + auto_reconnect: true +timezone: "America/New_York" +logging: + level: INFO + output: json + source: false diff --git a/example/go.mod b/example/go.mod index 37bc7af..5d93af0 100644 --- a/example/go.mod +++ b/example/go.mod @@ -2,7 +2,7 @@ module example go 1.24 -require git.savin.nyc/alex/mysubaru v0.0.0-20250520200227-71e00595ca48 +require git.savin.nyc/alex/mysubaru v0.0.0-20250520201343-455e885a2cf3 require ( github.com/Jeffail/gabs/v2 v2.7.0 // indirect diff --git a/go.mod b/go.mod index 9f5a6cb..fd85179 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,6 @@ module git.savin.nyc/alex/mysubaru go 1.24 require ( - github.com/Jeffail/gabs v1.4.0 github.com/Jeffail/gabs/v2 v2.7.0 github.com/go-resty/resty/v2 v2.16.5 github.com/sirupsen/logrus v1.9.3 diff --git a/vehicle.go b/vehicle.go index a03de7a..bae4931 100644 --- a/vehicle.go +++ b/vehicle.go @@ -12,26 +12,26 @@ import ( ) var parts = map[string]map[string][]string{ - "door": map[string][]string{ - "suffix": []string{"position", "status"}, - "position1": []string{"front", "rear", "boot", "enginehood"}, - "position2": []string{"right", "left"}, + "door": { + "suffix": {"position", "status"}, + "position1": {"front", "rear", "boot", "enginehood"}, + "position2": {"right", "left"}, }, - "window": map[string][]string{ - "suffix": []string{"status"}, - "position1": []string{"front", "rear", "sunroof"}, - "position2": []string{"right", "left"}, + "window": { + "suffix": {"status"}, + "position1": {"front", "rear", "sunroof"}, + "position2": {"right", "left"}, }, - "tire": map[string][]string{ - "prefix": []string{"status"}, - "position1": []string{"front", "rear"}, - "position2": []string{"right", "left"}, + "tire": { + "prefix": {"status"}, + "position1": {"front", "rear"}, + "position2": {"right", "left"}, }, - "tyre": map[string][]string{ - "prefix": []string{"pressure"}, - "suffix": []string{"psi", "unit"}, - "position1": []string{"front", "rear"}, - "position2": []string{"right", "left"}, + "tyre": { + "prefix": {"pressure"}, + "suffix": {"psi", "unit"}, + "position1": {"front", "rear"}, + "position2": {"right", "left"}, }, }