syntax = "proto3"; /** *

Cabin Preconditioning

*

This set of messages define how to acquire vehicle location, either on demand or by interval and events.

* *

Message Orchestration

*

[TO-DO]

* *

MQTT Topic Design

* * * * * * * * * * * * * * * * * * * * *
DirectionSubscribe TopicPublish Topic
Vehicle to Cloudcabin/#cabin/<device_id>
Cloud to Vehicle<device_id>/cabin<device_id>/cabin
*/ import "google/protobuf/timestamp.proto"; package messages; message CabinConditionStatusPublish { google.protobuf.Timestamp event_time = 1; // Time of the event HVACState hvac_state = 2; // Current state of the HVAC CabinTemperature cabin_temperature = 3; // Current cabin temperature } message PreconditionRequest { repeated HVACZone hvac_zones = 1; // List of HVAC zones to precondition // For scheduled preconditioning, set the start_time to the desired future time. // For on-demand preconditioning, leave the start_time unset. google.protobuf.Timestamp start_time = 2; } message PreconditionResponse { enum Status { SUCCESS = 0; FAILURE = 1; PENDING = 2; } Status status = 1; // Status of the precondition request string message = 2; // Optional message } message CabinTemperature { Temperature temperature = 1; // Current cabin temperature HVACZone zone = 2; // Zone of the reported temperature } message Temperature { float value = 1; // Temperature value string unit = 2; // Temperature unit (e.g., "Celsius", "Fahrenheit") } message HVACZone { enum Zone { DRIVER = 0; PASSENGER = 1; REAR_LEFT = 2; REAR_RIGHT = 3; } Zone zone = 1; // HVAC Zone Temperature target_temperature = 2; // Target temperature } message HVACState { enum State { OFF = 0; HEATING = 1; COOLING = 2; IDLE = 3; } State state = 1; // Current state of the HVAC HVACZone current_zone = 2; // Current active zone }