func main() { // nb. since we have a token, ignore all params client := nest.New("", "", "", "") client.Token = readToken() unit, err := acdash.NewDaikin(ACUnit) if err != nil { log.Fatalf("can't create unit: %v", err) } log.Printf("Streaming...") for devices := range stream(client) { t := devices.Thermostats[Device] if t == nil { log.Fatalf("couldn't find device: %s", Device) } c := acdash.ControlInfo{} target := float64(t.TargetTemperatureC) on := t.HvacState != "off" c.Power = on c.SetPoint = &target if t.HvacState == "heating" { c.Mode = acdash.ModeHeat } else if t.HvacState == "cooling" { c.Mode = acdash.ModeCool } else if on { log.Fatalf("expected state 'heating' or 'cooling', was: %v", t.HvacState) } log.Printf("sending control: %+v", c) unit.Set(&c, 0) } }
func main() { client := nest.New(ClientID, State, ClientSecret, AuthorizationCode) client.Token = Token structuresChan := make(chan map[string]*nest.Structure) go func() { client.StructuresStream(func(structures map[string]*nest.Structure, err error) { if err != nil { fmt.Println(err) os.Exit(1) } structuresChan <- structures }) }() for i := 0; i < 3; i++ { structures := <-structuresChan switch i { case 0: logEvent(structures, i) fmt.Println("Setting away status") err := structures["h68sn..."].SetAway(nest.Away) if err != nil { fmt.Printf("Error: %s - %d\n", err.Description, i) os.Exit(2) } case 2: logEvent(structures, i) fmt.Println("Setting ETA") err := structures["h68sn..."].SetETA("foobar-trip-id", time.Now().Add(10*time.Minute), time.Now().Add(30*time.Minute)) if err != nil { fmt.Printf("Error: %s - %d\n", err.Description, i) os.Exit(2) } logEvent(structures, i) case 3: logEvent(structures, i) break } } }
func main() { client := nest.New(ClientID, State, ClientSecret, AuthorizationCode) client.Token = Token devicesChan := make(chan *nest.Devices) go func() { client.DevicesStream(func(devices *nest.Devices, err error) { if err != nil { fmt.Println(err) os.Exit(1) } devicesChan <- devices }) }() for i := 0; i < 7; i++ { devices := <-devicesChan thermostat := devices.Thermostats["1cf6CGENM20W3UsKiJTT4Cqpa4SSjzbd"] switch i { case 0: logEvent(devices, i) fmt.Println("Setting target temp") err := thermostat.SetTargetTempF(thermostat.TargetTemperatureF + 1) if err != nil { fmt.Printf("Error: %s - %d\n", err.Description, i) os.Exit(2) } case 1: logEvent(devices, i) fmt.Println("Setting HvacMode to HeatCool") err := thermostat.SetHvacMode(nest.HeatCool) if err != nil { fmt.Printf("Error: %s - %d\n", err.Description, i) os.Exit(2) } case 2: logEvent(devices, i) fmt.Println("Setting TargetTempHighLow") err := thermostat.SetTargetTempHighLowF(thermostat.TargetTemperatureHighF+1, thermostat.TargetTemperatureLowF+1) if err != nil { fmt.Printf("Error: %s - %d\n", err.Description, i) os.Exit(2) } case 3: logEvent(devices, i) fmt.Println("Setting HvacMode to Heat") err := thermostat.SetHvacMode(nest.Heat) if err != nil { fmt.Printf("Error: %s - %d\n", err.Description, i) os.Exit(2) } case 4: logEvent(devices, i) fmt.Println("Setting FanTimeActive to true") err := thermostat.SetFanTimerActive(true) if err != nil { fmt.Printf("Error: %s - %d\n", err.Description, i) os.Exit(2) } case 5: logEvent(devices, i) fmt.Println("Setting FanTimeActive to false") err := thermostat.SetFanTimerActive(false) if err != nil { fmt.Printf("Error: %s - %d\n", err.Description, i) os.Exit(2) } case 6: logEvent(devices, i) break } } }