public async Task <List <NissanLeafDevice> > LoginAsync(string username, string password) { var request = new RestRequest("UserLoginRequest.php"); request.AddParameter("RegionCode", "NE"); request.AddParameter("UserId", username); request.AddParameter("Password", _encryptionService.Encrypt(password, _basePrm)); request.AddParameter("initial_app_strings", "geORNtsZe5I4lRGjG9GZiA"); var response = await _restClient.ExecutePostTaskAsync <LoginResponse>(request).ConfigureAwait(false); var devices = new List <NissanLeafDevice>(); _timezone = response.Data.CustomerInfo.Timezone; foreach (var vehicleInfo in response.Data.VehicleInfoList.vehicleInfo) { var device = new NissanLeafDevice( vehicleInfo.vin, response.Data.vehicle.profile.dcmId, vehicleInfo.nickname, response.Data.vehicle.profile.modelyear) { CustomSessionId = vehicleInfo.custom_sessionid }; devices.Add(device); } return(devices); }
public async Task <BatteryStatus> GetBatteryStatusAsync(NissanLeafDevice device, CancellationToken cancellationToken) { var checkRequest = new RestRequest("BatteryStatusCheckRequest.php"); checkRequest.AddParameter("RegionCode", "NE"); checkRequest.AddParameter("VIN", device.Vin); checkRequest.AddParameter("custom_sessionid", device.CustomSessionId); var checkResponse = await _restClient.PostTaskAsync <BatteryStatusCheckResponse>(checkRequest).ConfigureAwait(false); while (!cancellationToken.IsCancellationRequested) { var resultRequest = new RestRequest("BatteryStatusCheckResultRequest.php"); resultRequest.AddParameter("RegionCode", "NE"); resultRequest.AddParameter("VIN", device.Vin); resultRequest.AddParameter("custom_sessionid", device.CustomSessionId); resultRequest.AddParameter("resultKey", checkResponse.resultKey); var resultResponse = await _restClient.PostTaskAsync <BatteryStatusResultResponse>(resultRequest).ConfigureAwait(false); if (resultResponse.responseFlag == "1") { return(CreateBatteryStatus(resultResponse)); } await Task.Delay(TimeSpan.FromSeconds(10), cancellationToken).ContinueWith(_ => { }).ConfigureAwait(false); } return(null); }
public async Task DeactivateClimateControl(NissanLeafDevice device) { var request = new RestRequest("ACRemoteOffRequest.php"); request.AddParameter("RegionCode", "NE"); request.AddParameter("VIN", device.Vin); request.AddParameter("custom_sessionid", device.CustomSessionId); await _restClient.ExecutePostTaskAsync(request).ConfigureAwait(false); }
public async Task StartCharging(NissanLeafDevice device) { var request = new RestRequest("BatteryRemoteChargingRequest.php"); request.AddParameter("RegionCode", "NE"); request.AddParameter("VIN", device.Vin); request.AddParameter("custom_sessionid", device.CustomSessionId); request.AddParameter("tz", _timezone); request.AddParameter("ExecuteTime", DateTime.Today.ToString("yyyy-MM-dd")); await _restClient.ExecutePostTaskAsync(request).ConfigureAwait(false); }
public void StopClimateControl(NissanLeafDevice device) { var action = GetActions(device).Single(a => a.Name.Equals("Stop climate control", StringComparison.Ordinal)); StartActionInNewTask(device, action, new Dictionary <string, string>()); }
public void StartCharging(NissanLeafDevice device) { var action = GetActions(device).Single(a => a.Name.Equals("Start charging", StringComparison.Ordinal)); StartActionInNewTask(device, action, new Dictionary <string, string>()); }
public NissanLeafScriptObject(NissanLeafDevice device, INissanLeafGateway gateway) { _device = device; _gateway = gateway; }