Compare commits

..

3 Commits

Author SHA1 Message Date
d101053188 code lint 2022-11-02 08:21:08 +01:00
ee87938c93 Fix program setpoint not updated 2022-11-02 08:10:31 +01:00
4c290b0467 some code lint 2022-11-02 08:03:12 +01:00
3 changed files with 125 additions and 132 deletions

View File

@ -25,8 +25,8 @@ type DeviceState struct {
Mode string `json:"mode"`
Setpoint int `json:"setpoint"`
Time time.Time `json:"time"`
Program_name string `json:"program_name"`
Until_time time.Time `json:"until_time"`
ProgramName string `json:"program_name"`
UntilTime time.Time `json:"until_time"`
}
func (s *DeviceState) Equivalent(state DeviceState) bool {
@ -50,11 +50,11 @@ func (s *DeviceState) Equivalent(state DeviceState) bool {
if state.Setpoint != s.Setpoint {
return false
}
if !state.Until_time.Equal(s.Until_time) {
if !state.UntilTime.Equal(s.UntilTime) {
return false
}
case "program":
if state.Program_name != s.Program_name {
if state.ProgramName != s.ProgramName {
return false
}
}
@ -81,8 +81,8 @@ func (d Device) ListenTopic() (string, error) {
func (d *Device) Program() (WeekProgram, error) {
// return current device program if specified or default one
prog_name := "default"
if d.State.Program_name != "" {
prog_name = d.State.Program_name
if d.State.ProgramName != "" {
prog_name = d.State.ProgramName
}
program, ok := d.Settings.Programs[prog_name]
@ -94,11 +94,10 @@ func (d *Device) Program() (WeekProgram, error) {
}
func (d *Device) ProgramName() string {
prog_name := "default"
if d.State.Program_name != "" {
prog_name = d.State.Program_name
if d.State.ProgramName != "" {
return d.State.ProgramName
}
return prog_name
return "default"
}
func (d *Device) publishState(pubchan chan Message) error {
@ -152,11 +151,7 @@ func (d *Device) SetState(log *zerolog.Logger, state DeviceState, pubchan chan M
return err
}
if err := d.publishState(pubchan); err != nil {
return err
}
return nil
return d.publishState(pubchan)
}
func (d *Device) CheckSetpoint(log *zerolog.Logger, pubchan chan Message) error {
@ -166,9 +161,7 @@ func (d *Device) CheckSetpoint(log *zerolog.Logger, pubchan chan Message) error
}
if change {
if err := d.publishState(pubchan); err != nil {
return err
}
return d.publishState(pubchan)
}
return nil
@ -182,7 +175,7 @@ func (d *Device) update(log *zerolog.Logger, pubchan chan Message) (bool, error)
Int("current_setpoint", d.CurrentSetpoint).
Str("State.Mode", d.State.Mode).
Int("State.Setpoint", d.State.Setpoint).
Str("State.Program_name", d.State.Program_name).
Str("State.Program_name", d.State.ProgramName).
Logger()
log.Debug().Msg("check if setpoint need an update")
@ -254,7 +247,7 @@ func (d *Device) handle_reset_state(log *zerolog.Logger, pubchan chan Message) (
d.State = DeviceState{
Setpoint: value,
Mode: "program",
Program_name: d.ProgramName(),
ProgramName: d.ProgramName(),
Time: timeNow(),
}
@ -284,9 +277,9 @@ func (d *Device) handle_always(log *zerolog.Logger, pubchan chan Message) (bool,
}
func (d *Device) handle_until_time(log *zerolog.Logger, pubchan chan Message) (bool, error) {
*log = log.With().Time("until_time", d.State.Until_time).Logger()
*log = log.With().Time("until_time", d.State.UntilTime).Logger()
if d.State.Until_time.Before(timeNow()) {
if d.State.UntilTime.Before(timeNow()) {
log.Info().Msg("until_time passed, reset")
return d.handle_reset_state(log, pubchan)
}
@ -336,7 +329,7 @@ func (d *Device) handle_until_next(log *zerolog.Logger, pubchan chan Message) (b
}
func (d *Device) handle_program(log *zerolog.Logger, pubchan chan Message) (bool, error) {
*log = log.With().Str("program", d.State.Program_name).Logger()
*log = log.With().Str("program", d.State.ProgramName).Logger()
program, err := d.Program()
if err != nil {
@ -349,13 +342,13 @@ func (d *Device) handle_program(log *zerolog.Logger, pubchan chan Message) (bool
if err != nil {
return false, err
}
d.State.Setpoint = value
if d.CurrentSetpoint != value {
log.Info().Msg("publish setpoint update")
if err := d.SetSetpoint(value, pubchan); err != nil {
return false, err
}
d.State.Setpoint = value
return true, nil
}

View File

@ -51,7 +51,7 @@ var test_device = Device{
Mode: "program",
Setpoint: 14,
Time: test_time,
Program_name: "default",
ProgramName: "default",
},
}
@ -67,7 +67,7 @@ func TestStateEquivalent(t *testing.T) {
Mode: "program",
Setpoint: 14,
Time: test_time,
Program_name: "default",
ProgramName: "default",
},
DeviceState{
Mode: "always",
@ -81,13 +81,13 @@ func TestStateEquivalent(t *testing.T) {
Mode: "program",
Setpoint: 14,
Time: test_time,
Program_name: "default",
ProgramName: "default",
},
DeviceState{
Mode: "program",
Setpoint: 14,
Time: test_time.Add(1 * time.Minute),
Program_name: "default",
ProgramName: "default",
},
false,
},
@ -96,13 +96,13 @@ func TestStateEquivalent(t *testing.T) {
Mode: "program",
Setpoint: 14,
Time: test_time,
Program_name: "default",
ProgramName: "default",
},
DeviceState{
Mode: "program",
Setpoint: 13,
Time: test_time,
Program_name: "default",
ProgramName: "default",
},
true,
},
@ -111,13 +111,13 @@ func TestStateEquivalent(t *testing.T) {
Mode: "program",
Setpoint: 14,
Time: test_time,
Program_name: "default",
ProgramName: "default",
},
DeviceState{
Mode: "program",
Setpoint: 13,
Time: test_time,
Program_name: "other",
ProgramName: "other",
},
false,
},
@ -131,8 +131,8 @@ func TestStateEquivalent(t *testing.T) {
Mode: "always",
Setpoint: 14,
Time: test_time,
Program_name: "other",
Until_time: test_time,
ProgramName: "other",
UntilTime: test_time,
},
true,
},
@ -146,8 +146,8 @@ func TestStateEquivalent(t *testing.T) {
Mode: "always",
Setpoint: 15,
Time: test_time,
Program_name: "other",
Until_time: test_time,
ProgramName: "other",
UntilTime: test_time,
},
false,
},
@ -161,8 +161,8 @@ func TestStateEquivalent(t *testing.T) {
Mode: "until_next",
Setpoint: 14,
Time: test_time,
Program_name: "other",
Until_time: test_time,
ProgramName: "other",
UntilTime: test_time,
},
true,
},
@ -176,8 +176,8 @@ func TestStateEquivalent(t *testing.T) {
Mode: "until_next",
Setpoint: 13,
Time: test_time,
Program_name: "other",
Until_time: test_time,
ProgramName: "other",
UntilTime: test_time,
},
false,
},
@ -186,14 +186,14 @@ func TestStateEquivalent(t *testing.T) {
Mode: "until_time",
Setpoint: 14,
Time: test_time,
Until_time: test_time.Add(1 * time.Hour),
UntilTime: test_time.Add(1 * time.Hour),
},
DeviceState{
Mode: "until_time",
Setpoint: 14,
Time: test_time,
Program_name: "other",
Until_time: test_time.Add(1 * time.Hour),
ProgramName: "other",
UntilTime: test_time.Add(1 * time.Hour),
},
true,
},
@ -202,14 +202,14 @@ func TestStateEquivalent(t *testing.T) {
Mode: "until_time",
Setpoint: 14,
Time: test_time,
Until_time: test_time.Add(1 * time.Hour),
UntilTime: test_time.Add(1 * time.Hour),
},
DeviceState{
Mode: "until_time",
Setpoint: 13,
Time: test_time,
Program_name: "other",
Until_time: test_time.Add(1 * time.Hour),
ProgramName: "other",
UntilTime: test_time.Add(1 * time.Hour),
},
false,
},
@ -218,14 +218,14 @@ func TestStateEquivalent(t *testing.T) {
Mode: "until_time",
Setpoint: 14,
Time: test_time,
Until_time: test_time.Add(1 * time.Hour),
UntilTime: test_time.Add(1 * time.Hour),
},
DeviceState{
Mode: "until_time",
Setpoint: 14,
Time: test_time,
Program_name: "other",
Until_time: test_time.Add(2 * time.Hour),
ProgramName: "other",
UntilTime: test_time.Add(2 * time.Hour),
},
false,
},
@ -262,7 +262,7 @@ func TestListenTopic(t *testing.T) {
func TestProgram(t *testing.T) {
//case 1: no program set in state return default
case1_device := test_device
case1_device.State.Program_name = ""
case1_device.State.ProgramName = ""
//case 2: program set "confort" must return it
var test_confort_weekprogram = WeekProgram{
@ -279,11 +279,11 @@ func TestProgram(t *testing.T) {
"default": test_weekprogram,
"confort": test_confort_weekprogram,
}
case2_device.State.Program_name = "confort"
case2_device.State.ProgramName = "confort"
//case 3: program set "confort" but not exist
case3_device := test_device
case3_device.State.Program_name = "confort"
case3_device.State.ProgramName = "confort"
var tests = []struct {
name string
@ -327,12 +327,12 @@ func TestUpdate(t *testing.T) {
Mode: "program",
Setpoint: 0,
Time: test_time,
Program_name: "",
ProgramName: "",
}
device2 := test_device
device2.Name = "2"
device2.State.Program_name = "unknown"
device2.State.ProgramName = "unknown"
device3 := test_device
device3.Name = "3"
@ -348,7 +348,7 @@ func TestUpdate(t *testing.T) {
Mode: "until_time",
Setpoint: 22,
Time: timeNow(),
Until_time: timeNow().Add(2 * time.Hour),
UntilTime: timeNow().Add(2 * time.Hour),
}
device5 := test_device
@ -358,7 +358,7 @@ func TestUpdate(t *testing.T) {
Mode: "until_time",
Setpoint: 22,
Time: timeNow().Add(-2 * time.Hour),
Until_time: timeNow().Add(-1 * time.Minute),
UntilTime: timeNow().Add(-1 * time.Minute),
}
device6 := test_device

View File

@ -34,13 +34,13 @@ func (d DayOfWeek) DaysBetween(n DayOfWeek) int {
}
const (
Monday DayOfWeek = 0
Thuesday DayOfWeek = 1
Wednesday DayOfWeek = 2
Thursday DayOfWeek = 3
Friday DayOfWeek = 4
Saturday DayOfWeek = 5
Sunday DayOfWeek = 6
Monday DayOfWeek = iota
Thuesday
Wednesday
Thursday
Friday
Saturday
Sunday
)
func WeekDayEnToFr(weekday time.Weekday) DayOfWeek {