haos

package module
v0.0.0-...-a3044ff Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 17, 2025 License: MIT Imports: 5 Imported by: 0

README

haos

Home Assistant API examples

To use this go package you must create an access token from your HomeAssistant installation see directions: https://developers.home-assistant.io/docs/api/rest/

Updated

Now supports automation triggers

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Haos

type Haos struct {
	States      HaosStates      // List of entity states
	EntityState HaosEntityState // A single entit - cheated and grab a known one
	// contains filtered or unexported fields
}

func New

func New(URL string) *Haos

func (*Haos) AutomationTrigger

func (pHa *Haos) AutomationTrigger(sAutomation string) bool

func (*Haos) Dump

func (pHa *Haos) Dump()

func (*Haos) GetEntityState

func (pHa *Haos) GetEntityState(sEntity string, bSave bool) bool

func (*Haos) GetStates

func (pHa *Haos) GetStates(bSave bool) bool

func (*Haos) SetEntityState

func (pHa *Haos) SetEntityState(sEntity string, sNewState string) bool

func (*Haos) SetEntityStateOff

func (pHa *Haos) SetEntityStateOff(sEntity string) bool

func (*Haos) SetEntityStateOn

func (pHa *Haos) SetEntityStateOn(sEntity string) bool

func (*Haos) SetToken

func (pHa *Haos) SetToken(sToken string) bool

type HaosEntityState

type HaosEntityState struct {
	Attributes struct {
		AutoUpdate        bool        `json:"auto_update"`
		DisplayPrecision  float64     `json:"display_precision"`
		EntityPicture     string      `json:"entity_picture"`
		FriendlyName      string      `json:"friendly_name"`
		InProgress        bool        `json:"in_progress"`
		InstalledVersion  string      `json:"installed_version"`
		LatestVersion     string      `json:"latest_version"`
		ReleaseSummary    interface{} `json:"release_summary"`
		ReleaseURL        string      `json:"release_url"`
		SkippedVersion    interface{} `json:"skipped_version"`
		SupportedFeatures float64     `json:"supported_features"`
		Title             string      `json:"title"`
		UpdatePercentage  interface{} `json:"update_percentage"`
	} `json:"attributes"`
	Context struct {
		ID       string      `json:"id"`
		ParentID interface{} `json:"parent_id"`
		UserID   interface{} `json:"user_id"`
	} `json:"context"`
	EntityID     string    `json:"entity_id"`
	LastChanged  time.Time `json:"last_changed"`
	LastReported time.Time `json:"last_reported"`
	LastUpdated  time.Time `json:"last_updated"`
	State        string    `json:"state"`
}

type HaosStates

type HaosStates []struct {
	Attributes struct {
		AccessToken            string        `json:"access_token,omitempty"`
		AllDay                 bool          `json:"all_day"`
		Altitude               float64       `json:"altitude,omitempty"`
		AssumedState           bool          `json:"assumed_state,omitempty"`
		Attribution            string        `json:"attribution,omitempty"`
		AutoUpdate             bool          `json:"auto_update"`
		Azimuth                float64       `json:"azimuth,omitempty"`
		BackupStage            interface{}   `json:"backup_stage,omitempty"`
		BatteryLevel           float64       `json:"battery_level,omitempty"`
		ColorMode              *string       `json:"color_mode"`
		Current                float64       `json:"current"`
		CurrentHumidity        float64       `json:"current_humidity,omitempty"`
		CurrentPosition        float64       `json:"current_position"`
		CurrentTemperature     float64       `json:"current_temperature,omitempty"`
		Description            string        `json:"description"`
		DeviceClass            string        `json:"device_class,omitempty"`
		DeviceTrackers         []string      `json:"device_trackers,omitempty"`
		Direction              string        `json:"direction,omitempty"`
		DisplayPrecision       float64       `json:"display_precision"`
		Editable               bool          `json:"editable"`
		Elevation              float64       `json:"elevation,omitempty"`
		EndTime                string        `json:"end_time,omitempty"`
		EntityPicture          string        `json:"entity_picture,omitempty"`
		EventType              string        `json:"event_type,omitempty"`
		EventTypes             []string      `json:"event_types,omitempty"`
		FailedReason           interface{}   `json:"failed_reason,omitempty"`
		FanMode                string        `json:"fan_mode,omitempty"`
		FanModes               []string      `json:"fan_modes,omitempty"`
		FriendlyName           string        `json:"friendly_name,omitempty"`
		GpsAccuracy            float64       `json:"gps_accuracy,omitempty"`
		GroupMembers           []string      `json:"group_members,omitempty"`
		Humidity               float64       `json:"humidity,omitempty"`
		HvacAction             string        `json:"hvac_action,omitempty"`
		HvacModes              []string      `json:"hvac_modes,omitempty"`
		Icon                   string        `json:"icon,omitempty"`
		ID                     string        `json:"id,omitempty"`
		InProgress             bool          `json:"in_progress"`
		InstalledVersion       string        `json:"installed_version,omitempty"`
		IsVolumeMuted          bool          `json:"is_volume_muted"`
		LastTriggered          *time.Time    `json:"last_triggered"`
		LatestVersion          string        `json:"latest_version,omitempty"`
		Latitude               float64       `json:"latitude,omitempty"`
		Location               string        `json:"location"`
		Longitude              float64       `json:"longitude,omitempty"`
		Max                    float64       `json:"max,omitempty"`
		MaxHumidity            float64       `json:"max_humidity,omitempty"`
		MaxTemp                float64       `json:"max_temp,omitempty"`
		MediaAlbumName         string        `json:"media_album_name,omitempty"`
		MediaArtist            string        `json:"media_artist,omitempty"`
		MediaContentID         string        `json:"media_content_id,omitempty"`
		MediaContentType       string        `json:"media_content_type,omitempty"`
		MediaDuration          float64       `json:"media_duration,omitempty"`
		MediaPosition          float64       `json:"media_position,omitempty"`
		MediaPositionUpdatedAt time.Time     `json:"media_position_updated_at,omitempty"`
		MediaTitle             string        `json:"media_title,omitempty"`
		Message                string        `json:"message,omitempty"`
		Min                    float64       `json:"min"`
		MinHumidity            float64       `json:"min_humidity,omitempty"`
		MinTemp                float64       `json:"min_temp,omitempty"`
		Mode                   string        `json:"mode,omitempty"`
		NextDawn               time.Time     `json:"next_dawn,omitempty"`
		NextDusk               time.Time     `json:"next_dusk,omitempty"`
		NextMidnight           time.Time     `json:"next_midnight,omitempty"`
		NextNoon               time.Time     `json:"next_noon,omitempty"`
		NextRising             time.Time     `json:"next_rising,omitempty"`
		NextSetting            time.Time     `json:"next_setting,omitempty"`
		Options                []string      `json:"options,omitempty"`
		Passive                bool          `json:"passive"`
		Percentage             float64       `json:"percentage"`
		PercentageStep         float64       `json:"percentage_step,omitempty"`
		Persons                []interface{} `json:"persons"`
		PrecipitationUnit      string        `json:"precipitation_unit,omitempty"`
		PresetMode             *string       `json:"preset_mode"`
		PresetModes            []string      `json:"preset_modes,omitempty"`
		Pressure               float64       `json:"pressure,omitempty"`
		PressureUnit           string        `json:"pressure_unit,omitempty"`
		QueuePosition          float64       `json:"queue_position,omitempty"`
		QueueSize              float64       `json:"queue_size,omitempty"`
		Radius                 float64       `json:"radius,omitempty"`
		ReleaseSummary         interface{}   `json:"release_summary,omitempty"`
		ReleaseURL             *string       `json:"release_url"`
		Repeat                 string        `json:"repeat,omitempty"`
		Restored               bool          `json:"restored,omitempty"`
		Rising                 bool          `json:"rising"`
		Shuffle                bool          `json:"shuffle"`
		SkippedVersion         *string       `json:"skipped_version"`
		Source                 string        `json:"source,omitempty"`
		SourceList             []string      `json:"source_list,omitempty"`
		SourceType             string        `json:"source_type,omitempty"`
		StartTime              string        `json:"start_time,omitempty"`
		StateClass             string        `json:"state_class,omitempty"`
		Step                   float64       `json:"step,omitempty"`
		SupportedColorModes    []string      `json:"supported_color_modes,omitempty"`
		SupportedFeatures      float64       `json:"supported_features"`
		TargetTempHigh         interface{}   `json:"target_temp_high,omitempty"`
		TargetTempLow          interface{}   `json:"target_temp_low,omitempty"`
		Temperature            float64       `json:"temperature,omitempty"`
		TemperatureUnit        string        `json:"temperature_unit,omitempty"`
		Title                  *string       `json:"title"`
		UnitOfMeasurement      string        `json:"unit_of_measurement,omitempty"`
		UpdatePercentage       interface{}   `json:"update_percentage,omitempty"`
		UserID                 string        `json:"user_id,omitempty"`
		VerticalAccuracy       float64       `json:"vertical_accuracy,omitempty"`
		Visibility             float64       `json:"visibility,omitempty"`
		VisibilityUnit         string        `json:"visibility_unit,omitempty"`
		VolumeLevel            float64       `json:"volume_level,omitempty"`
		WindBearing            float64       `json:"wind_bearing"`
		WindSpeed              float64       `json:"wind_speed"`
		WindSpeedUnit          string        `json:"wind_speed_unit,omitempty"`
		Zone                   float64       `json:"zone,omitempty"`
	} `json:"attributes"`
	Context struct {
		ID       string  `json:"id"`
		ParentID *string `json:"parent_id"`
		UserID   *string `json:"user_id"`
	} `json:"context"`
	EntityID     string    `json:"entity_id"`
	LastChanged  time.Time `json:"last_changed"`
	LastReported time.Time `json:"last_reported"`
	LastUpdated  time.Time `json:"last_updated"`
	State        string    `json:"state"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL