zeus

package
v0.4.0 Latest Latest
Warning

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

Go to latest
Published: Jul 13, 2023 License: LGPL-3.0 Imports: 17 Imported by: 0

Documentation

Index

Constants

View Source
const (
	Warning   AlarmFlags = 0x00
	Emergency            = 0x01
	Failure              = 0x02
	AdminOnly            = 0x04
)
View Source
const HeartBeatPeriod = 5 * time.Second
View Source
const StatePeriod = 5 * time.Second
View Source
const ZEUS_PORT = 4011

Variables

View Source
var ClimateStateUndefined = AlarmString{Warning, "climate.undefined", "Climate State Undefined", 10 * time.Second, 2 * time.Second}
View Source
var HumidityUnreachable = AlarmString{Warning, "climate.humidity.unreachable", "Cannot reach desired humidity", 20 * time.Minute, 10 * time.Minute}
View Source
var SensorReadoutIssue = AlarmString{Failure, "climate.sensor.readout", "Cannot read sensors", 1 * time.Minute, 2 * time.Second}
View Source
var TemperatureUnreachable = AlarmString{Warning, "climate.temperature.unreachable", "Cannot reach desired temperature", 20 * time.Minute, 10 * time.Minute}
View Source
var UndefinedHumidity = Humidity(math.Inf(-1))
View Source
var UndefinedLight = Light(math.Inf(-1))
View Source
var UndefinedTemperature = Temperature(math.Inf(-1))
View Source
var UndefinedWind = Wind(math.Inf(-1))
View Source
var WaterLevelCritical = AlarmString{Failure, "climate.water_level", "Water tank is empty", 2 * time.Minute, 1 * time.Minute}
View Source
var WaterLevelUnreadable = AlarmString{Failure, "climate.water_sensor", "Celaeno cannot determine water tank level", 2 * time.Minute, 1 * time.Minute}
View Source
var WaterLevelWarning = AlarmString{Emergency, "climate.water_level", "Water tank level is low", 2 * time.Minute, 1 * time.Minute}
View Source
var ZEUS_VERSION = "v0.4.0"

Current package version

Functions

func AsFloat32Pointer

func AsFloat32Pointer(u BoundedUnit) *float32

func Clamp

func Clamp(u BoundedUnit) float64

func CreateFileWithoutOverwrite

func CreateFileWithoutOverwrite(fpath string) (*os.File, string, error)

func IsUndefined

func IsUndefined(u BoundedUnit) bool

func MapPriority

func MapPriority(f AlarmFlags) int

func VersionAreCompatible

func VersionAreCompatible(a, b string) (bool, error)

Tests if two version strings are compatible.

func ZoneIdentifier

func ZoneIdentifier(host, name string) string

Types

type Alarm

type Alarm interface {
	Flags() AlarmFlags
	Identifier() string
	Description() string
	MinUpTime() time.Duration
	MinDownTime() time.Duration
}

func NewAlarmString

func NewAlarmString(flags AlarmFlags, identifier, description string, minUp, minDown time.Duration) Alarm

func OutOfBound

func OutOfBound[T Temperature | Humidity](min, max T) Alarm

type AlarmEvent

type AlarmEvent struct {
	ZoneIdentifier string
	Identifier     string
	Description    string
	Flags          AlarmFlags
	Status         AlarmStatus
	Time           time.Time
}

type AlarmFlags

type AlarmFlags int

type AlarmStatus

type AlarmStatus int
const (
	AlarmOn AlarmStatus = iota
	AlarmOff
)

type AlarmString

type AlarmString struct {
	// contains filtered or unexported fields
}

func (AlarmString) Description

func (a AlarmString) Description() string

func (AlarmString) Flags

func (a AlarmString) Flags() AlarmFlags

func (AlarmString) Identifier

func (a AlarmString) Identifier() string

func (AlarmString) MinDownTime

func (a AlarmString) MinDownTime() time.Duration

func (AlarmString) MinUpTime

func (a AlarmString) MinUpTime() time.Duration

type BoundedUnit

type BoundedUnit interface {
	Value() float64
	MaxValue() float64
	MinValue() float64
}

type ClimateInterpoler

type ClimateInterpoler interface {
	CurrentInterpolation(t time.Time) (Interpolation, time.Time, Interpolation)
}

func NewClimateInterpoler

func NewClimateInterpoler(states []State, transitions []Transition, reference time.Time) (ClimateInterpoler, error)

type ClimateReport

type ClimateReport struct {
	Temperatures []Temperature
	Humidity     Humidity
	Time         time.Time
}

func (ClimateReport) Check

func (r ClimateReport) Check() error

type ClimateTarget

type ClimateTarget struct {
	ZoneIdentifier string
	Current        State
	CurrentEnd     *State
	Next           *State
	NextEnd        *State
	NextTime       *time.Time
}

type DeviceInternalError

type DeviceInternalError struct {
	// contains filtered or unexported fields
}

func NewDeviceInternalError

func NewDeviceInternalError(intfName string, c arke.NodeClass, id arke.NodeID, e uint16) DeviceInternalError

func (DeviceInternalError) Description

func (e DeviceInternalError) Description() string

func (DeviceInternalError) Device

func (DeviceInternalError) ErrorCode

func (e DeviceInternalError) ErrorCode() uint16

func (DeviceInternalError) Flags

func (e DeviceInternalError) Flags() AlarmFlags

func (DeviceInternalError) Identifier

func (e DeviceInternalError) Identifier() string

func (DeviceInternalError) MinDownTime

func (e DeviceInternalError) MinDownTime() time.Duration

func (DeviceInternalError) MinUpTime

func (e DeviceInternalError) MinUpTime() time.Duration

type FanAlarm

type FanAlarm struct {
	// contains filtered or unexported fields
}

func NewFanAlarm

func NewFanAlarm(fan string, s arke.FanStatus, level AlarmFlags) FanAlarm

func (FanAlarm) Description

func (a FanAlarm) Description() string

func (FanAlarm) Fan

func (a FanAlarm) Fan() string

func (FanAlarm) Flags

func (a FanAlarm) Flags() AlarmFlags

func (FanAlarm) Identifier

func (a FanAlarm) Identifier() string

func (FanAlarm) MinDownTime

func (a FanAlarm) MinDownTime() time.Duration

func (FanAlarm) MinUpTime

func (a FanAlarm) MinUpTime() time.Duration

func (FanAlarm) Status

func (a FanAlarm) Status() arke.FanStatus

type Humidity

type Humidity float64

func (Humidity) MaxValue

func (t Humidity) MaxValue() float64

func (Humidity) MinValue

func (t Humidity) MinValue() float64

func (Humidity) Value

func (t Humidity) Value() float64

type Interpolation

type Interpolation interface {
	State(t time.Time) State
	String() string
	End() *State
}

type Light

type Light float64

func (Light) MaxValue

func (t Light) MaxValue() float64

func (Light) MinValue

func (t Light) MinValue() float64

func (Light) Value

func (t Light) Value() float64

type MissingDeviceAlarm

type MissingDeviceAlarm struct {
	// contains filtered or unexported fields
}

func NewMissingDeviceAlarm

func NewMissingDeviceAlarm(intf string, c arke.NodeClass, id arke.NodeID) MissingDeviceAlarm

func (MissingDeviceAlarm) Description

func (a MissingDeviceAlarm) Description() string

func (MissingDeviceAlarm) Device

func (MissingDeviceAlarm) Flags

func (a MissingDeviceAlarm) Flags() AlarmFlags

func (MissingDeviceAlarm) Identifier

func (a MissingDeviceAlarm) Identifier() string

func (MissingDeviceAlarm) MinDownTime

func (a MissingDeviceAlarm) MinDownTime() time.Duration

func (MissingDeviceAlarm) MinUpTime

func (a MissingDeviceAlarm) MinUpTime() time.Duration

type NamedClimateReport

type NamedClimateReport struct {
	ClimateReport
	ZoneIdentifier string
}

type SeasonFile

type SeasonFile struct {
	Zones map[string]ZoneClimate
}

func ParseSeasonFile

func ParseSeasonFile(content []byte) (*SeasonFile, error)

func ReadSeasonFile

func ReadSeasonFile(filename string, writer io.Writer) (*SeasonFile, error)

func (SeasonFile) WriteFile

func (f SeasonFile) WriteFile(filename string) error

type State

type State struct {
	Name         string
	Temperature  Temperature
	Humidity     Humidity
	Wind         Wind
	VisibleLight Light
	UVLight      Light
}

func (State) AsPbTarget

func (s State) AsPbTarget() *zeuspb.Target

func (State) MarshalYAML

func (s State) MarshalYAML() (interface{}, error)

func (*State) UnmarshalYAML

func (s *State) UnmarshalYAML(unmarshal func(interface{}) error) error

type Temperature

type Temperature float64

func (Temperature) MaxValue

func (t Temperature) MaxValue() float64

func (Temperature) MinValue

func (t Temperature) MinValue() float64

func (Temperature) Value

func (t Temperature) Value() float64

type Transition

type Transition struct {
	From, To       string
	Duration       time.Duration
	Start          time.Time
	StartTimeDelta time.Duration
	Day            int
}

func (*Transition) Check

func (t *Transition) Check() error

func (Transition) MarshalYAML

func (t Transition) MarshalYAML() (interface{}, error)

func (Transition) String

func (t Transition) String() string

func (*Transition) UnmarshalYAML

func (t *Transition) UnmarshalYAML(unmarshal func(interface{}) error) error

type Wind

type Wind float64

func (Wind) MaxValue

func (t Wind) MaxValue() float64

func (Wind) MinValue

func (t Wind) MinValue() float64

func (Wind) Value

func (t Wind) Value() float64

type ZoneClimate

type ZoneClimate struct {
	MinimalTemperature Temperature `yaml:"minimal-temperature,omitempty"`
	MaximalTemperature Temperature `yaml:"maximal-temperature,omitempty"`
	MinimalHumidity    Humidity    `yaml:"minimal-humidity,omitempty"`
	MaximalHumidity    Humidity    `yaml:"maximal-humidity,omitempty"`
	States             []State
	Transitions        []Transition
}

type ZoneRegistration

type ZoneRegistration struct {
	Host                         string
	Name                         string
	MinTemperature               *float64
	MaxTemperature               *float64
	MinHumidity                  *float64
	MaxHumidity                  *float64
	NumAux                       int
	RPCAddress                   string
	SizeClimateLog, SizeAlarmLog int
}

func (ZoneRegistration) ZoneIdentifier

func (zr ZoneRegistration) ZoneIdentifier() string

type ZoneUnregistration

type ZoneUnregistration struct {
	Host string
	Name string
}

func (ZoneUnregistration) ZoneIdentifer

func (zr ZoneUnregistration) ZoneIdentifer() string

Jump to

Keyboard shortcuts

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