void wuclass_binary_sensor_update(wuobject_t *wuobject) {
  bool currentValue = 0;
  currentValue = input_get(PINE, 3);

  short *delay;
  delay = wuclass_binary_sensor_getPrivateData(wuobject);

  bool status;
  wkpf_internal_read_property_boolean(wuobject, WKPF_PROPERTY_BINARY_SENSOR_STATUS, &status);

  wkpf_refresh_rate_t refresh_rate;
  wkpf_internal_read_property_refresh_rate(wuobject, WKPF_PROPERTY_BINARY_SENSOR_REFRESH_RATE, &refresh_rate);

  int debounce;
  wkpf_internal_read_property_int16(wuobject, WKPF_PROPERTY_BINARY_SENSOR_DEBOUNCE, &debounce);
  DEBUG_LOG(DBG_WKPFUPDATE, "WKPFUPDATE(BinarySensor): Sensed binary value: %d %d %d %d %x\n", currentValue, *delay, debounce, status, PINE);  
#if 0
  if(debounce < DEBOUNCE_THREASHOLD) { // busy waiting for short debounce
      wkpf_internal_read_property_boolean(wuobject, WKPF_PROPERTY_BINARY_SENSOR_CURRENT_VALUE, &currentValue);
      if(currentValue != status) {
        
      }
      
      break;
    }
  } else {  // check sensed value in every update
void wkpf_schedule_next_update_for_wuobject(wuobject_t *wuobject) {
	for (int i=0; i<wuobject->wuclass->number_of_properties; i++) {
		if (WKPF_GET_PROPERTY_DATATYPE(wuobject->wuclass->properties[i]) == WKPF_PROPERTY_TYPE_REFRESH_RATE) {
			wkpf_refresh_rate_t refresh_rate;
			wkpf_internal_read_property_refresh_rate(wuobject, i, &refresh_rate);
			if (refresh_rate == 0) // 0 means turned off
				wuobject->next_scheduled_update = 0;
			else
				wuobject->next_scheduled_update = dj_timer_getTimeMillis() + refresh_rate;
			DEBUG_LOG(DBG_WKPFUPDATE, "WKPFUPDATE: Scheduled next update for object at port %d. Refresh rate:%d Current time:%lu Next update at:%lu\n", wuobject->port_number, refresh_rate, (unsigned long)dj_timer_getTimeMillis(), (unsigned long)wuobject->next_scheduled_update);
			return;
		}
	}
}