Exemple #1
0
func (self *Thermostat) Event(ev *pubsub.Event) {
	now := ev.Timestamp.Local() // must use Local time, as schedule is in local
	switch ev.Topic {
	case "temp":
		// temperature device update
		device := services.Config.LookupDeviceName(ev)
		if dev, ok := self.Devices[device]; ok {
			temp, _ := ev.Fields["temp"].(float64)
			dev.Update(temp, now)
			self.Check(now)
		}
	case "house":
		// house state update
		state := ev.Fields["state"]
		self.Occupied = (state != "Empty")
		self.Check(now)
	case "command":
		if ev.Target() == "ch" {
			value, ok := ev.Fields["value"].(string)
			if ok {
				err := self.setParty(value, ev.Timestamp)
				if err == nil {
					self.Check(now)
					// TODO - response
				} else {
					// TODO - error response
				}
			}
		}
	}
}