loadProperties(props) {
		if(this._propertiesToMonitor.length === 0) Promise.resolve();

		if(this._currentRead) {
			return this._currentRead.promise;
		}

		// Store information about the current read promise and how to resolve it
		this._currentRead = {};
		this._currentRead.promise = new Promise((resolve, reject) => {
			// Request the read
			this._parent.devApi.read(this.internalId);

			// Store the resolve to be used in _report
			this._currentRead.resolve = () => {
				resolve(this.getProperties(props));
			};

			/*
			 * Fallback behavior, use a regular call if properties have not
			 * been resolved in a second.
			 */
			setTimeout(() => {
				this.debug('Read via DEV timed out, using fallback API');
				this._parent.call('get_device_prop_exp', [ [ 'lumi.' + this.internalId, ...this._propertiesToMonitor ]])
					.then(result => {
						for(let i=0; i<result[0].length; i++) {
							let name = this._propertiesToMonitor[i];
							const def = this._propertyDefinitions[name];
							let value = result[0][i];

							name = def.name || name;
							value = def.mapper(value);

							this.setProperty(name, value);
						}

						this._currentRead.resolve();
					})
					.catch(err => {
						this._currentRead = null;
						reject(err);
					});
			}, 1000);
		});

		return this._currentRead.promise;
	}
Stub for loadProperties to match full device.