mirror of
https://github.com/shouptech/tempgopher.git
synced 2026-02-03 16:49:42 +00:00
Don't use GetPinState to get state
This commit is contained in:
parent
62a0e67ce8
commit
5d72e9d036
1 changed files with 12 additions and 22 deletions
34
run.go
34
run.go
|
|
@ -51,19 +51,8 @@ func SetPinState(pin rpio.Pin, on bool, invert bool) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetPinState will return true if the pin is on.
|
|
||||||
// If invert is false, the pin will be on when high.
|
|
||||||
func GetPinState(pin rpio.Pin, invert bool) bool {
|
|
||||||
switch pin.Read() {
|
|
||||||
case rpio.High:
|
|
||||||
return !invert
|
|
||||||
default:
|
|
||||||
return invert
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// RunThermostat monitors the temperature of the supplied sensor and does its best to keep it at the desired state.
|
// RunThermostat monitors the temperature of the supplied sensor and does its best to keep it at the desired state.
|
||||||
func RunThermostat(sensor Sensor, sig chan os.Signal, wg *sync.WaitGroup) {
|
func RunThermostat(sensor Sensor, sig <-chan os.Signal, wg *sync.WaitGroup) {
|
||||||
var s State
|
var s State
|
||||||
s.Changed = time.Now()
|
s.Changed = time.Now()
|
||||||
|
|
||||||
|
|
@ -93,34 +82,35 @@ func RunThermostat(sensor Sensor, sig chan os.Signal, wg *sync.WaitGroup) {
|
||||||
switch {
|
switch {
|
||||||
case t > sensor.HighTemp && t < sensor.HighTemp:
|
case t > sensor.HighTemp && t < sensor.HighTemp:
|
||||||
log.Panic("Invalid state! Temperature is too high AND too low!")
|
log.Panic("Invalid state! Temperature is too high AND too low!")
|
||||||
case t > sensor.HighTemp && GetPinState(hpin, sensor.HeatInvert):
|
case t > sensor.HighTemp && s.Heating:
|
||||||
SetPinState(hpin, false, sensor.HeatInvert)
|
SetPinState(hpin, false, sensor.HeatInvert)
|
||||||
log.Printf("%s Turned off heat", sensor.Alias)
|
log.Printf("%s Turned off heat", sensor.Alias)
|
||||||
|
s.Heating = false
|
||||||
s.Changed = time.Now()
|
s.Changed = time.Now()
|
||||||
|
case t > sensor.HighTemp && s.Cooling:
|
||||||
|
break
|
||||||
case t > sensor.HighTemp && min > sensor.CoolMinutes:
|
case t > sensor.HighTemp && min > sensor.CoolMinutes:
|
||||||
SetPinState(cpin, true, sensor.CoolInvert)
|
SetPinState(cpin, true, sensor.CoolInvert)
|
||||||
log.Printf("%s Turned on cool", sensor.Alias)
|
log.Printf("%s Turned on cool", sensor.Alias)
|
||||||
|
s.Cooling = true
|
||||||
s.Changed = time.Now()
|
s.Changed = time.Now()
|
||||||
case t > sensor.HighTemp:
|
case t < sensor.LowTemp && s.Cooling:
|
||||||
break
|
|
||||||
case t < sensor.LowTemp && GetPinState(cpin, sensor.CoolInvert):
|
|
||||||
SetPinState(cpin, false, sensor.CoolInvert)
|
SetPinState(cpin, false, sensor.CoolInvert)
|
||||||
log.Printf("%s Turned off cool", sensor.Alias)
|
log.Printf("%s Turned off cool", sensor.Alias)
|
||||||
|
s.Cooling = false
|
||||||
s.Changed = time.Now()
|
s.Changed = time.Now()
|
||||||
|
case t < sensor.LowTemp && s.Heating:
|
||||||
|
break
|
||||||
case t < sensor.LowTemp && min > sensor.HeatMinutes:
|
case t < sensor.LowTemp && min > sensor.HeatMinutes:
|
||||||
SetPinState(hpin, true, sensor.HeatInvert)
|
SetPinState(hpin, true, sensor.HeatInvert)
|
||||||
log.Printf("%s Turned on heat", sensor.Alias)
|
log.Printf("%s Turned on heat", sensor.Alias)
|
||||||
|
s.Heating = true
|
||||||
s.Changed = time.Now()
|
s.Changed = time.Now()
|
||||||
case t < sensor.LowTemp:
|
default:
|
||||||
break
|
break
|
||||||
default: // Turn off both switches
|
|
||||||
SetPinState(cpin, false, sensor.CoolInvert)
|
|
||||||
SetPinState(hpin, false, sensor.HeatInvert)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
s.Temp = t
|
s.Temp = t
|
||||||
//s.Cooling = GetPinState(cpin, sensor.CoolInvert)
|
|
||||||
//s.Heating = GetPinState(hpin, sensor.HeatInvert)
|
|
||||||
log.Printf("%s Temp: %.2f, Cooling: %t, Heating: %t, Duration: %.1f", sensor.Alias, s.Temp, s.Cooling, s.Heating, min)
|
log.Printf("%s Temp: %.2f, Cooling: %t, Heating: %t, Duration: %.1f", sensor.Alias, s.Temp, s.Cooling, s.Heating, min)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue