98 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			98 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
console.loggerName = 'js.equipment';
 | 
						|
console.log('Load equipment modules');
 | 
						|
 | 
						|
class Equipment {
 | 
						|
    constructor(equipmentItem) {
 | 
						|
        console.info('Initialization of eqipment ' + equipmentItem.name + ' with type ' + this.constructor.name);
 | 
						|
 | 
						|
        // Set equipmentItem
 | 
						|
        this.equipmentItem = equipmentItem;
 | 
						|
 | 
						|
        // Set stateItem, toDo: error when no stateItem existing
 | 
						|
        this.stateItem = items[this.equipmentItem.name + '_State'];
 | 
						|
 | 
						|
        // Initialization of properties
 | 
						|
        this.name = this.equipmentItem.name;
 | 
						|
        this.watch = new Object();
 | 
						|
    }
 | 
						|
 | 
						|
    getValue(valueName, defaultValue = '') {
 | 
						|
        let valueItemName = this.name + '_' + valueName;
 | 
						|
        let returnValue = defaultValue;
 | 
						|
  
 | 
						|
        if (items[valueItemName] == null) {                             // Return default value if item is missing
 | 
						|
            console.warn('Item ' + valueItemName + ' is missing');
 | 
						|
        } else if (items[valueItemName]['state'] == 'NULL') {           // Return default value if item state is null
 | 
						|
            console.warn('Item ' + valueItemName + ' is unset')
 | 
						|
        } else {                                                        // Return value from item
 | 
						|
            if (items[valueItemName].quantityState == null && items[valueItemName].numericState == null) {
 | 
						|
                returnValue = items[valueItemName]['state'];                
 | 
						|
            } else if (items[valueItemName].quantityState == null) {
 | 
						|
                returnValue = items[valueItemName]['numericState']
 | 
						|
            } else {
 | 
						|
                returnValue = items[valueItemName].quantityState;
 | 
						|
            }
 | 
						|
        }       
 | 
						|
 | 
						|
        console.debug('Return value ' +  valueName + ' for ' + this.name + ': ' + returnValue);
 | 
						|
        return returnValue;
 | 
						|
    }
 | 
						|
 | 
						|
    gc() {
 | 
						|
        console.log('Denitialization of eqipment ' + this.name);
 | 
						|
 | 
						|
        // Delete all watchObjects
 | 
						|
        for (let watchItem of Object.keys(this.watch)) {
 | 
						|
            this.watch[watchItem].deleteAll();
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
class Irrigation extends Equipment {
 | 
						|
    constructor(equipmentItem) {
 | 
						|
        super(equipmentItem);
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
class IrrigationValve extends Equipment {
 | 
						|
    constructor(equipmentItem) {
 | 
						|
        super(equipmentItem);
 | 
						|
 | 
						|
        this.watch['state'] = new watch.Watch(this.stateItem.name);
 | 
						|
        this.autoOff = this.watch['state'].add({
 | 
						|
            targetState: 'ON', 
 | 
						|
            alertFunc: () => { this.stateItem.sendCommand('OFF'); },
 | 
						|
            alertDelay: 'PT59M'
 | 
						|
        });
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
class TowelRadiator extends Equipment {
 | 
						|
    constructor(equipmentItem) {
 | 
						|
        super(equipmentItem);
 | 
						|
 | 
						|
        this.watch['state'] = new watch.Watch(this.stateItem.name);
 | 
						|
        this.autoOff = this.watch['state'].add({
 | 
						|
            targetState: 'ON', 
 | 
						|
            alertFunc: () => { this.stateItem.sendCommand('OFF'); },
 | 
						|
            alertDelay: 'PT59M'
 | 
						|
        });
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
class WeatherService extends Equipment {
 | 
						|
    constructor(equipmentItem) {
 | 
						|
        super(equipmentItem);
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
module.exports = {
 | 
						|
    Equipment,
 | 
						|
    Irrigation,
 | 
						|
    IrrigationValve,
 | 
						|
    TowelRadiator,
 | 
						|
    WeatherService
 | 
						|
};
 | 
						|
 | 
						|
 |