Files
go-ha/internal/services/event.go

35 lines
790 B
Go

package services
import (
"github.com/Xevion/go-ha/internal"
"github.com/Xevion/go-ha/internal/connect"
)
type Event struct {
conn *connect.HAConnection
}
// Fire an event
type FireEventRequest struct {
Id int64 `json:"id"`
Type string `json:"type"` // always set to "fire_event"
EventType string `json:"event_type"`
EventData map[string]any `json:"event_data,omitempty"`
}
// Fire an event. Takes an event type and an optional map that is sent
// as `event_data`.
func (e Event) Fire(eventType string, eventData ...map[string]any) error {
req := FireEventRequest{
Id: internal.NextId(),
Type: "fire_event",
}
req.EventType = eventType
if len(eventData) != 0 {
req.EventData = eventData[0]
}
return e.conn.WriteMessage(req)
}