C# Web Interface using https://git.nightmare.haus/rudi/Tesla.NET to control and monitor Tesla vehicles.
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
2.7 KiB
80 lines
2.7 KiB
using System; |
|
using System.Collections.Generic; |
|
using System.Linq; |
|
using System.Threading.Tasks; |
|
using System.Web; |
|
using Microsoft.AspNetCore.Mvc; |
|
using Microsoft.AspNetCore.Mvc.RazorPages; |
|
using Microsoft.Extensions.Logging; |
|
using Tesla; |
|
using Newtonsoft.Json; |
|
|
|
namespace NikolaNet.Pages |
|
{ |
|
public class IndexModel : PageModel |
|
{ |
|
private readonly ILogger<IndexModel> _logger; |
|
private string VehicleName; |
|
public Vehicle[] vehicles; |
|
public int currentIndex = 0; |
|
public DataResponse vehicleDataResponse; |
|
public string jsonData; |
|
public string token {get; set;} |
|
public string climateTemp {get; set;} |
|
public IndexModel(ILogger<IndexModel> logger) |
|
{ |
|
_logger = logger; |
|
} |
|
public Client setupClient() |
|
{ |
|
if (string.IsNullOrEmpty(token)) { |
|
token = Request.Cookies["Auth"]; |
|
} |
|
Client c = new Client(); |
|
c.setToken($"Bearer {token}"); |
|
vehicles = c.ListVehicles(); |
|
c.vehicle_id = vehicles[currentIndex].id_s; |
|
return c; |
|
} |
|
public void OnGet() |
|
{ |
|
|
|
} |
|
|
|
public void OnGetCommand() |
|
{ |
|
Client c = setupClient(); |
|
if (Request.Query["command"].Equals(BasicCommands.ClimateOn)) { |
|
string parms = $"{{\"driver_temp\": \"{Request.Query["climateTemp"]}\", \"passenger_temp\":\"{Request.Query["climateTemp"]}\"}}"; |
|
c.RunCommand(ExtendedCommands.SetClimateTemp, parms); |
|
} |
|
c.RunCommand(Request.Query["command"]); |
|
Response.Redirect("/"); |
|
|
|
} |
|
|
|
public void OnPostSetToken() { |
|
this.token = Request.Form["token"]; |
|
Response.Cookies.Append("Auth", token); |
|
Response.Redirect("/"); |
|
} |
|
|
|
|
|
public JsonResult OnGetJsonData() |
|
{ |
|
Client c = setupClient(); |
|
VehicleName = vehicles[currentIndex].display_name; |
|
vehicleDataResponse = c.GetVehicleData().response; |
|
if (vehicleDataResponse.gui_settings.gui_temperature_units.Equals("F")) |
|
{ |
|
vehicleDataResponse.climate_state.outside_temp = (int)(vehicleDataResponse.climate_state.outside_temp * 1.8) + 32; |
|
vehicleDataResponse.climate_state.inside_temp = (int)(vehicleDataResponse.climate_state.inside_temp * 1.8) + 32; |
|
vehicleDataResponse.climate_state.driver_temp_setting = (int)(vehicleDataResponse.climate_state.driver_temp_setting * 1.8) + 32; |
|
} |
|
jsonData = JsonConvert.SerializeObject(vehicleDataResponse); |
|
|
|
return new JsonResult(jsonData); |
|
|
|
} |
|
} |
|
}
|
|
|