add device learning