home-services/gen/ha/v1/climate.pb.go
Nik Afiq 8f7024edfa
All checks were successful
CI / changes (push) Successful in 19s
CI / test (push) Successful in 24s
CI / build-ai-gateway (push) Successful in 1m6s
CI / build-ha-gateway (push) Successful in 1m3s
CI / build-discord-bot (push) Successful in 1m4s
CI / build-alexa-bridge (push) Successful in 1m15s
CI / build-tts-gateway (push) Successful in 1m5s
CI / build-tts-sidecar (push) Has been skipped
CI / build-tts-model (push) Has been skipped
feat(climate): add SetTemperature method to ClimateService
- Implemented SetTemperature in ClimateService for setting an absolute target temperature.
- Updated ClimateServiceClient and ClimateServiceServer interfaces to include SetTemperature.
- Added corresponding handler and tests for SetTemperature in ClimateGRPC.
- Modified ClimateApp to handle SetTemperature requests without clamping.
- Updated climate.proto to define SetTemperatureRequest message.
- Adjusted Dockerfiles to include alexa-bridge dependencies.
2026-07-25 12:08:24 +09:00

538 lines
18 KiB
Go

// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.36.11
// protoc (unknown)
// source: ha/v1/climate.proto
package hav1
import (
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
reflect "reflect"
sync "sync"
unsafe "unsafe"
)
const (
// Verify that this generated code is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
// Verify that runtime/protoimpl is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
type ClimateRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
EntityId string `protobuf:"bytes,1,opt,name=entity_id,json=entityId,proto3" json:"entity_id,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *ClimateRequest) Reset() {
*x = ClimateRequest{}
mi := &file_ha_v1_climate_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *ClimateRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ClimateRequest) ProtoMessage() {}
func (x *ClimateRequest) ProtoReflect() protoreflect.Message {
mi := &file_ha_v1_climate_proto_msgTypes[0]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ClimateRequest.ProtoReflect.Descriptor instead.
func (*ClimateRequest) Descriptor() ([]byte, []int) {
return file_ha_v1_climate_proto_rawDescGZIP(), []int{0}
}
func (x *ClimateRequest) GetEntityId() string {
if x != nil {
return x.EntityId
}
return ""
}
type ClimateResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
State *EntityState `protobuf:"bytes,1,opt,name=state,proto3" json:"state,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *ClimateResponse) Reset() {
*x = ClimateResponse{}
mi := &file_ha_v1_climate_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *ClimateResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ClimateResponse) ProtoMessage() {}
func (x *ClimateResponse) ProtoReflect() protoreflect.Message {
mi := &file_ha_v1_climate_proto_msgTypes[1]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ClimateResponse.ProtoReflect.Descriptor instead.
func (*ClimateResponse) Descriptor() ([]byte, []int) {
return file_ha_v1_climate_proto_rawDescGZIP(), []int{1}
}
func (x *ClimateResponse) GetState() *EntityState {
if x != nil {
return x.State
}
return nil
}
type SetHVACModeRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
EntityId string `protobuf:"bytes,1,opt,name=entity_id,json=entityId,proto3" json:"entity_id,omitempty"`
HvacMode string `protobuf:"bytes,2,opt,name=hvac_mode,json=hvacMode,proto3" json:"hvac_mode,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *SetHVACModeRequest) Reset() {
*x = SetHVACModeRequest{}
mi := &file_ha_v1_climate_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *SetHVACModeRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SetHVACModeRequest) ProtoMessage() {}
func (x *SetHVACModeRequest) ProtoReflect() protoreflect.Message {
mi := &file_ha_v1_climate_proto_msgTypes[2]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use SetHVACModeRequest.ProtoReflect.Descriptor instead.
func (*SetHVACModeRequest) Descriptor() ([]byte, []int) {
return file_ha_v1_climate_proto_rawDescGZIP(), []int{2}
}
func (x *SetHVACModeRequest) GetEntityId() string {
if x != nil {
return x.EntityId
}
return ""
}
func (x *SetHVACModeRequest) GetHvacMode() string {
if x != nil {
return x.HvacMode
}
return ""
}
// SetTemperature sets an absolute target temperature. Single-setpoint only —
// there is no target_temp_high/target_temp_low pair here, since no climate
// entity in this deployment uses range mode (see alexa-bridge/plan.md).
type SetTemperatureRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
EntityId string `protobuf:"bytes,1,opt,name=entity_id,json=entityId,proto3" json:"entity_id,omitempty"`
TargetTemperature float64 `protobuf:"fixed64,2,opt,name=target_temperature,json=targetTemperature,proto3" json:"target_temperature,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *SetTemperatureRequest) Reset() {
*x = SetTemperatureRequest{}
mi := &file_ha_v1_climate_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *SetTemperatureRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SetTemperatureRequest) ProtoMessage() {}
func (x *SetTemperatureRequest) ProtoReflect() protoreflect.Message {
mi := &file_ha_v1_climate_proto_msgTypes[3]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use SetTemperatureRequest.ProtoReflect.Descriptor instead.
func (*SetTemperatureRequest) Descriptor() ([]byte, []int) {
return file_ha_v1_climate_proto_rawDescGZIP(), []int{3}
}
func (x *SetTemperatureRequest) GetEntityId() string {
if x != nil {
return x.EntityId
}
return ""
}
func (x *SetTemperatureRequest) GetTargetTemperature() float64 {
if x != nil {
return x.TargetTemperature
}
return 0
}
type ClimateEntity struct {
state protoimpl.MessageState `protogen:"open.v1"`
EntityId string `protobuf:"bytes,1,opt,name=entity_id,json=entityId,proto3" json:"entity_id,omitempty"`
FriendlyName string `protobuf:"bytes,2,opt,name=friendly_name,json=friendlyName,proto3" json:"friendly_name,omitempty"`
State string `protobuf:"bytes,3,opt,name=state,proto3" json:"state,omitempty"`
HvacModes []string `protobuf:"bytes,4,rep,name=hvac_modes,json=hvacModes,proto3" json:"hvac_modes,omitempty"`
FanMode string `protobuf:"bytes,5,opt,name=fan_mode,json=fanMode,proto3" json:"fan_mode,omitempty"`
FanModes []string `protobuf:"bytes,6,rep,name=fan_modes,json=fanModes,proto3" json:"fan_modes,omitempty"`
CurrentTemperature *float32 `protobuf:"fixed32,7,opt,name=current_temperature,json=currentTemperature,proto3,oneof" json:"current_temperature,omitempty"`
TargetTemperature *float32 `protobuf:"fixed32,8,opt,name=target_temperature,json=targetTemperature,proto3,oneof" json:"target_temperature,omitempty"`
TargetTempStep float32 `protobuf:"fixed32,9,opt,name=target_temp_step,json=targetTempStep,proto3" json:"target_temp_step,omitempty"`
MinTemp float32 `protobuf:"fixed32,10,opt,name=min_temp,json=minTemp,proto3" json:"min_temp,omitempty"`
MaxTemp float32 `protobuf:"fixed32,11,opt,name=max_temp,json=maxTemp,proto3" json:"max_temp,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *ClimateEntity) Reset() {
*x = ClimateEntity{}
mi := &file_ha_v1_climate_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *ClimateEntity) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ClimateEntity) ProtoMessage() {}
func (x *ClimateEntity) ProtoReflect() protoreflect.Message {
mi := &file_ha_v1_climate_proto_msgTypes[4]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ClimateEntity.ProtoReflect.Descriptor instead.
func (*ClimateEntity) Descriptor() ([]byte, []int) {
return file_ha_v1_climate_proto_rawDescGZIP(), []int{4}
}
func (x *ClimateEntity) GetEntityId() string {
if x != nil {
return x.EntityId
}
return ""
}
func (x *ClimateEntity) GetFriendlyName() string {
if x != nil {
return x.FriendlyName
}
return ""
}
func (x *ClimateEntity) GetState() string {
if x != nil {
return x.State
}
return ""
}
func (x *ClimateEntity) GetHvacModes() []string {
if x != nil {
return x.HvacModes
}
return nil
}
func (x *ClimateEntity) GetFanMode() string {
if x != nil {
return x.FanMode
}
return ""
}
func (x *ClimateEntity) GetFanModes() []string {
if x != nil {
return x.FanModes
}
return nil
}
func (x *ClimateEntity) GetCurrentTemperature() float32 {
if x != nil && x.CurrentTemperature != nil {
return *x.CurrentTemperature
}
return 0
}
func (x *ClimateEntity) GetTargetTemperature() float32 {
if x != nil && x.TargetTemperature != nil {
return *x.TargetTemperature
}
return 0
}
func (x *ClimateEntity) GetTargetTempStep() float32 {
if x != nil {
return x.TargetTempStep
}
return 0
}
func (x *ClimateEntity) GetMinTemp() float32 {
if x != nil {
return x.MinTemp
}
return 0
}
func (x *ClimateEntity) GetMaxTemp() float32 {
if x != nil {
return x.MaxTemp
}
return 0
}
type ListClimatesRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *ListClimatesRequest) Reset() {
*x = ListClimatesRequest{}
mi := &file_ha_v1_climate_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *ListClimatesRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListClimatesRequest) ProtoMessage() {}
func (x *ListClimatesRequest) ProtoReflect() protoreflect.Message {
mi := &file_ha_v1_climate_proto_msgTypes[5]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ListClimatesRequest.ProtoReflect.Descriptor instead.
func (*ListClimatesRequest) Descriptor() ([]byte, []int) {
return file_ha_v1_climate_proto_rawDescGZIP(), []int{5}
}
type ListClimatesResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
Climates []*ClimateEntity `protobuf:"bytes,1,rep,name=climates,proto3" json:"climates,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *ListClimatesResponse) Reset() {
*x = ListClimatesResponse{}
mi := &file_ha_v1_climate_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *ListClimatesResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ListClimatesResponse) ProtoMessage() {}
func (x *ListClimatesResponse) ProtoReflect() protoreflect.Message {
mi := &file_ha_v1_climate_proto_msgTypes[6]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ListClimatesResponse.ProtoReflect.Descriptor instead.
func (*ListClimatesResponse) Descriptor() ([]byte, []int) {
return file_ha_v1_climate_proto_rawDescGZIP(), []int{6}
}
func (x *ListClimatesResponse) GetClimates() []*ClimateEntity {
if x != nil {
return x.Climates
}
return nil
}
var File_ha_v1_climate_proto protoreflect.FileDescriptor
const file_ha_v1_climate_proto_rawDesc = "" +
"\n" +
"\x13ha/v1/climate.proto\x12\x05ha.v1\x1a\x12ha/v1/common.proto\"-\n" +
"\x0eClimateRequest\x12\x1b\n" +
"\tentity_id\x18\x01 \x01(\tR\bentityId\";\n" +
"\x0fClimateResponse\x12(\n" +
"\x05state\x18\x01 \x01(\v2\x12.ha.v1.EntityStateR\x05state\"N\n" +
"\x12SetHVACModeRequest\x12\x1b\n" +
"\tentity_id\x18\x01 \x01(\tR\bentityId\x12\x1b\n" +
"\thvac_mode\x18\x02 \x01(\tR\bhvacMode\"c\n" +
"\x15SetTemperatureRequest\x12\x1b\n" +
"\tentity_id\x18\x01 \x01(\tR\bentityId\x12-\n" +
"\x12target_temperature\x18\x02 \x01(\x01R\x11targetTemperature\"\xb7\x03\n" +
"\rClimateEntity\x12\x1b\n" +
"\tentity_id\x18\x01 \x01(\tR\bentityId\x12#\n" +
"\rfriendly_name\x18\x02 \x01(\tR\ffriendlyName\x12\x14\n" +
"\x05state\x18\x03 \x01(\tR\x05state\x12\x1d\n" +
"\n" +
"hvac_modes\x18\x04 \x03(\tR\thvacModes\x12\x19\n" +
"\bfan_mode\x18\x05 \x01(\tR\afanMode\x12\x1b\n" +
"\tfan_modes\x18\x06 \x03(\tR\bfanModes\x124\n" +
"\x13current_temperature\x18\a \x01(\x02H\x00R\x12currentTemperature\x88\x01\x01\x122\n" +
"\x12target_temperature\x18\b \x01(\x02H\x01R\x11targetTemperature\x88\x01\x01\x12(\n" +
"\x10target_temp_step\x18\t \x01(\x02R\x0etargetTempStep\x12\x19\n" +
"\bmin_temp\x18\n" +
" \x01(\x02R\aminTemp\x12\x19\n" +
"\bmax_temp\x18\v \x01(\x02R\amaxTempB\x16\n" +
"\x14_current_temperatureB\x15\n" +
"\x13_target_temperature\"\x15\n" +
"\x13ListClimatesRequest\"H\n" +
"\x14ListClimatesResponse\x120\n" +
"\bclimates\x18\x01 \x03(\v2\x14.ha.v1.ClimateEntityR\bclimates2\xe2\x03\n" +
"\x0eClimateService\x127\n" +
"\x06TurnOn\x12\x15.ha.v1.ClimateRequest\x1a\x16.ha.v1.ClimateResponse\x128\n" +
"\aTurnOff\x12\x15.ha.v1.ClimateRequest\x1a\x16.ha.v1.ClimateResponse\x12D\n" +
"\x13IncreaseTemperature\x12\x15.ha.v1.ClimateRequest\x1a\x16.ha.v1.ClimateResponse\x12D\n" +
"\x13DecreaseTemperature\x12\x15.ha.v1.ClimateRequest\x1a\x16.ha.v1.ClimateResponse\x12F\n" +
"\x0eSetTemperature\x12\x1c.ha.v1.SetTemperatureRequest\x1a\x16.ha.v1.ClimateResponse\x12@\n" +
"\vSetHVACMode\x12\x19.ha.v1.SetHVACModeRequest\x1a\x16.ha.v1.ClimateResponse\x12G\n" +
"\fListClimates\x12\x1a.ha.v1.ListClimatesRequest\x1a\x1b.ha.v1.ListClimatesResponseB4Z2gitea.nik4nao.com/nik/home-services/gen/ha/v1;hav1b\x06proto3"
var (
file_ha_v1_climate_proto_rawDescOnce sync.Once
file_ha_v1_climate_proto_rawDescData []byte
)
func file_ha_v1_climate_proto_rawDescGZIP() []byte {
file_ha_v1_climate_proto_rawDescOnce.Do(func() {
file_ha_v1_climate_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_ha_v1_climate_proto_rawDesc), len(file_ha_v1_climate_proto_rawDesc)))
})
return file_ha_v1_climate_proto_rawDescData
}
var file_ha_v1_climate_proto_msgTypes = make([]protoimpl.MessageInfo, 7)
var file_ha_v1_climate_proto_goTypes = []any{
(*ClimateRequest)(nil), // 0: ha.v1.ClimateRequest
(*ClimateResponse)(nil), // 1: ha.v1.ClimateResponse
(*SetHVACModeRequest)(nil), // 2: ha.v1.SetHVACModeRequest
(*SetTemperatureRequest)(nil), // 3: ha.v1.SetTemperatureRequest
(*ClimateEntity)(nil), // 4: ha.v1.ClimateEntity
(*ListClimatesRequest)(nil), // 5: ha.v1.ListClimatesRequest
(*ListClimatesResponse)(nil), // 6: ha.v1.ListClimatesResponse
(*EntityState)(nil), // 7: ha.v1.EntityState
}
var file_ha_v1_climate_proto_depIdxs = []int32{
7, // 0: ha.v1.ClimateResponse.state:type_name -> ha.v1.EntityState
4, // 1: ha.v1.ListClimatesResponse.climates:type_name -> ha.v1.ClimateEntity
0, // 2: ha.v1.ClimateService.TurnOn:input_type -> ha.v1.ClimateRequest
0, // 3: ha.v1.ClimateService.TurnOff:input_type -> ha.v1.ClimateRequest
0, // 4: ha.v1.ClimateService.IncreaseTemperature:input_type -> ha.v1.ClimateRequest
0, // 5: ha.v1.ClimateService.DecreaseTemperature:input_type -> ha.v1.ClimateRequest
3, // 6: ha.v1.ClimateService.SetTemperature:input_type -> ha.v1.SetTemperatureRequest
2, // 7: ha.v1.ClimateService.SetHVACMode:input_type -> ha.v1.SetHVACModeRequest
5, // 8: ha.v1.ClimateService.ListClimates:input_type -> ha.v1.ListClimatesRequest
1, // 9: ha.v1.ClimateService.TurnOn:output_type -> ha.v1.ClimateResponse
1, // 10: ha.v1.ClimateService.TurnOff:output_type -> ha.v1.ClimateResponse
1, // 11: ha.v1.ClimateService.IncreaseTemperature:output_type -> ha.v1.ClimateResponse
1, // 12: ha.v1.ClimateService.DecreaseTemperature:output_type -> ha.v1.ClimateResponse
1, // 13: ha.v1.ClimateService.SetTemperature:output_type -> ha.v1.ClimateResponse
1, // 14: ha.v1.ClimateService.SetHVACMode:output_type -> ha.v1.ClimateResponse
6, // 15: ha.v1.ClimateService.ListClimates:output_type -> ha.v1.ListClimatesResponse
9, // [9:16] is the sub-list for method output_type
2, // [2:9] is the sub-list for method input_type
2, // [2:2] is the sub-list for extension type_name
2, // [2:2] is the sub-list for extension extendee
0, // [0:2] is the sub-list for field type_name
}
func init() { file_ha_v1_climate_proto_init() }
func file_ha_v1_climate_proto_init() {
if File_ha_v1_climate_proto != nil {
return
}
file_ha_v1_common_proto_init()
file_ha_v1_climate_proto_msgTypes[4].OneofWrappers = []any{}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: unsafe.Slice(unsafe.StringData(file_ha_v1_climate_proto_rawDesc), len(file_ha_v1_climate_proto_rawDesc)),
NumEnums: 0,
NumMessages: 7,
NumExtensions: 0,
NumServices: 1,
},
GoTypes: file_ha_v1_climate_proto_goTypes,
DependencyIndexes: file_ha_v1_climate_proto_depIdxs,
MessageInfos: file_ha_v1_climate_proto_msgTypes,
}.Build()
File_ha_v1_climate_proto = out.File
file_ha_v1_climate_proto_goTypes = nil
file_ha_v1_climate_proto_depIdxs = nil
}