func (h *WT450ProtocolHandler) OnRead(data api.ReadRequest) { parsed, err := utils.ParseThingFuSerialData(data.GetPayload().(string)) if err != nil { log.Println(err) return } val, _ := strconv.Atoi(parsed["Data"].(string)) ch := val >> 26 thing, service, err := h.getThing(strconv.Itoa(ch)) if err == nil { factory := h.GetFactory() thingManager := h.GetThingManager() drv := factory.CreateThingAdapter("433mhz-wt450") go func() { data.Put("channel", ch) data.Put("dhtdata", val) handler := thingManager.GetProtocolHandlerForThing(thing) state := drv.OnRead(thing, service, data, handler) lastEvent := service.LastEvent desc := thing.Descriptor if utils.TimeWithinThreshold(lastEvent, desc.EventUpdateBuffer, 5000) { service.UpdateLastEvent(time.Now()) thingManager.SaveThing(*thing) thingManager.Handle(thing, service, state) } }() } }