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
*
*
*
* Direction |
* Subscribe Topic |
* Publish Topic |
*
*
*
*
* Vehicle to Cloud |
* cabin/# |
* 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
}