| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- package core
- import (
- "log"
- "time"
- "github.com/brutella/hc/accessory"
- "github.com/bwdezend/astoria-hc/internal/telemetry"
- "github.com/stianeikeland/go-rpio"
- )
- func init() {
- rpio.Open()
- }
- // PowerButton sets up the button hooked to pin 26
- // on the Rasberry Pi to act as a high/low control
- // for the system.
- func PowerButton(acc accessory.Thermostat) {
- high := 124.0
- low := 30.0
- button := rpio.Pin(26)
- button.Input()
- button.PullUp()
- for {
- if button.Read() == 0 {
- log.Println("button pressed")
- if acc.Thermostat.TargetTemperature.GetValue() >= (high - 10.0) {
- SetTargetTemp(acc, low)
- } else {
- SetTargetTemp(acc, high)
- }
- time.Sleep(500 * time.Millisecond)
- }
- time.Sleep(50 * time.Millisecond)
- }
- }
- // HeaterControl turns on and off voltate to the
- // pin hooked to the Solid State Relay.
- func HeaterControl(on bool) {
- pin := rpio.Pin(14)
- pin.Output()
- telemetry.RelayActivations.Inc()
- if on {
- pin.High()
- } else {
- pin.Low()
- }
- }
|