code: func (a *GroveTemperatureSensorDriver) Start() (err error) {
  	thermistor := 3975.0
  	a.temperature = 0
  
  	go func() {
  		for {
  			rawValue, err := a.Read()
  
  			resistance := float64(1023.0-rawValue) * 10000 / float64(rawValue)
  			newValue := 1/(math.Log(resistance/10000.0)/thermistor+1/298.15) - 273.15
  
  			if err != nil {
  				a.Publish(Error, err)
  			} else if newValue != a.temperature && newValue != -1 {
  				a.temperature = newValue
  				a.Publish(Data, a.temperature)
  			}
  			select {
  			case <-time.After(a.interval):
  			case <-a.halt:
  				return
  			}
  		}
  	}()
  	return
  }
docs: // Start starts the GroveTemperatureSensorDriver and reads the Sensor at the given interval.
  // Emits the Events:
  //	Data int - Event is emitted on change and represents the current temperature in celsius from the sensor.
  //	Error error - Event is emitted on error reading from the sensor.