def wireApp(client): # Create compressor app profile compressorManager = client.account.appprofiles.create( name='CompressorManager', friendly_name='Compressor Manager', description='Dalgakıran Compressor Management App', version='1.0', vendor_name='Dalgakıran') #------ Add profile properties unit = PropertyInstance.MeasurementUnit('', 'TL') measurement = PropertyInstance.Measurement('currency', unit) client.account.properties(compressorManager.id).create( name='electric_cost_per_kWh', data_type='number', access_type='public', publish_type='never', measurement=measurement) #------ Add profile methods client.account.methods(compressorManager.id).create( name='getDashboard', method_impl=MethodInstance.MethodImplementation( app.getDashboard_body()), access_type='public') client.account.methods(compressorManager.id).create( name='getElectricCostPerkWh', method_impl=MethodInstance.MethodImplementation( app.getElectricCostPerkWh_body()), access_type='public') # Create compressor app profile compressorManagerApp = client.account.apps.create( name='CompressorManager', friendly_name='Compressor Manager', profile='CompressorManager', tags=['icon:cogs:#0077c3'])
def methodImplementation(methodImpl): """ Parses a method implementation object give in JSON to method implementation type :param body: method body :param lang: script language :return: MethodInstance.MethodImplementation """ body = methodImpl.get('funcBody') lang = methodImpl.get('script') if body is None: return None return MethodInstance.MethodImplementation(body, lang)
def wire(client, name='LogikaL33', friendly="Logika L33 Controller", base="BaseLogikaProfile"): # Create Logika L33 profile compressor = client.account.deviceprofiles.create( name=name, friendly_name=friendly, base_profile=base, description='Logika L33 controller', tags=['logika', 'L33'], device_class='controller', product_name='L33', vendor_name='Logika') #------ Add profile properties client.account.properties(compressor.id).create(name="workingFlags", data_type='object', access_type='protected', publish_type='never') unit = PropertyInstance.MeasurementUnit('Celsius', '°C') measurement = PropertyInstance.Measurement('temperature', unit) client.account.properties(compressor.id).create( name='secondTemperature', data_type='number', access_type='protected', publish_type='never', description='Secondary Temperature (°C * 10)', measurement=measurement, boundaries={ 'min': -10, 'max': 125 }) unit = PropertyInstance.MeasurementUnit('Bar', 'bar') measurement = PropertyInstance.Measurement('pressure', unit) client.account.properties(compressor.id).create( name='secondPressure', data_type='number', access_type='protected', publish_type='never', description='Secondary Pressure (Bar * 10)', measurement=measurement, boundaries={ 'min': 0, 'max': 16 }) unit = PropertyInstance.MeasurementUnit('Volt', 'V') measurement = PropertyInstance.Measurement('electricity', unit) client.account.properties(compressor.id).create( name='drive24VSupply', data_type='number', access_type='protected', publish_type='never', description='Drive 24V Supply (V * 10)', measurement=measurement, boundaries={ 'min': 0, 'max': 300 }) client.account.properties(compressor.id).create( name='driveAnalogInput', data_type='number', access_type='protected', publish_type='never', description='Drive analog Input (V * 10)', measurement=measurement, boundaries={ 'min': 0, 'max': 300 }) client.account.properties(compressor.id).create(name='configSwitches', data_type='object', access_type='protected', publish_type='never') # Inverter properties unit = PropertyInstance.MeasurementUnit('RPM', 'rpm') measurement = PropertyInstance.Measurement('custom', unit) client.account.properties(compressor.id).create(name='motorSpeed', data_type='number', access_type='protected', publish_type='never', measurement=measurement) unit = PropertyInstance.MeasurementUnit('Frequence', 'Hz') measurement = PropertyInstance.Measurement('custom', unit) client.account.properties(compressor.id).create(name='motorFrequency', data_type='number', access_type='protected', publish_type='never', measurement=measurement) unit = PropertyInstance.MeasurementUnit('Current', 'A') measurement = PropertyInstance.Measurement('electricity', unit) client.account.properties(compressor.id).create(name='motorCurrent', data_type='number', access_type='protected', publish_type='never', measurement=measurement) condition = PropertyInstance.Condition( when=PropertyInstance.Condition.ConditionType.CHANGED) retention = PropertyInstance.Retention( context=PropertyInstance.Context(type='default'), capacity='0', condition=condition) client.account.properties(compressor.id).create(name="driveStatus", data_type='string', access_type='protected', publish_type='never', retention=retention) client.account.properties(compressor.id).create(name="driveMeasures", data_type='object', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name="driveFaultString", data_type='string', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name="driveCommands", data_type='string', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name="WPx", data_type='object', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name="SPx", data_type='object', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name="WPs", data_type='object', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name="WPS2Px", data_type='object', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name="WPS2Ps", data_type='object', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name="WTx", data_type='object', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name="Wtx_", data_type='object', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name="STAx", data_type='object', access_type='protected', publish_type='never') #client.account.properties(compressor.id).create(name="ST3", data_type='object', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name="STT1", data_type='number', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name="STD1", data_type='number', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name="R0x", data_type='object', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name="DSx", data_type='object', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name="DAx", data_type='object', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name="DFx", data_type='object', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name="V0x", data_type='object', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name="D1", data_type='number', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name="D3", data_type='number', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name="D6", data_type='number', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name="D7", data_type='number', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name="Sx", data_type='object', access_type='protected', publish_type='never') #------ Add profile methods accessLevel2 = 'private' client.account.methods(compressor.id).create( name='fetchAlarmList', method_impl=MethodInstance.MethodImplementation(fetchAlarmList_body()), access_type=accessLevel2) client.account.methods(compressor.id).create( name='fetchReadRequest', method_impl=MethodInstance.MethodImplementation( fetchReadRequest_body()), access_type=accessLevel2) client.account.methods(compressor.id).create( name='fetchWriteRequest', method_impl=MethodInstance.MethodImplementation( fetchWriteRequest_body()), access_type=accessLevel2) client.account.methods(compressor.id).create( name='fetchModbusSettings', method_impl=MethodInstance.MethodImplementation( fetchModbusSettings_body()), access_type=accessLevel2) client.account.methods(compressor.id).create( name='fetchControllerStates', method_impl=MethodInstance.MethodImplementation( fetchControllerStates_body()), access_type=accessLevel2) client.account.methods(compressor.id).create( name='fetchCompressorStates', method_impl=MethodInstance.MethodImplementation( fetchCompressorStates_body()), access_type=accessLevel2) client.account.methods(compressor.id).create( name='fetchCompressorStateTypes', method_impl=MethodInstance.MethodImplementation( fetchCompressorStateTypes_body()), access_type=accessLevel2) accessLevel3 = 'private' # Controller specific SET methods (private) client.account.methods(compressor.id).create( name='setRelayOutputs', method_impl=MethodInstance.MethodImplementation( setRelayOutputs_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setDigitalInputs', method_impl=MethodInstance.MethodImplementation( setDigitalInputs_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setWorkingFlags', method_impl=MethodInstance.MethodImplementation( setWorkingFlags_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setSecondTemperature', method_impl=MethodInstance.MethodImplementation( setSecondTemperature_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setSecondPressure', method_impl=MethodInstance.MethodImplementation( setSecondPressure_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setDrive24VSupply', method_impl=MethodInstance.MethodImplementation( setDrive24VSupply_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setDriveAnalogInput', method_impl=MethodInstance.MethodImplementation( setDriveAnalogInput_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setConfigSwitches', method_impl=MethodInstance.MethodImplementation( setConfigSwitches_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setDriveStatus', method_impl=MethodInstance.MethodImplementation(setDriveStatus_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setDriveMeasures', method_impl=MethodInstance.MethodImplementation( setDriveMeasures_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setDriveFaultString', method_impl=MethodInstance.MethodImplementation( setDriveFaultString_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setDriveCommands', method_impl=MethodInstance.MethodImplementation( setDriveCommands_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setWPx', method_impl=MethodInstance.MethodImplementation(setWPx_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setSPx', method_impl=MethodInstance.MethodImplementation(setSPx_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setSP5', method_impl=MethodInstance.MethodImplementation(setSP5_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setSP6', method_impl=MethodInstance.MethodImplementation(setSP6_body()), access_type=accessLevel3) #client.account.methods(compressor.id).create(name='setWPs', method_impl= MethodInstance.MethodImplementation(setWPs_body()), access_type=accessLevel3) #client.account.methods(compressor.id).create(name='setWPS2Px', method_impl= MethodInstance.MethodImplementation(setWPS2Px_body()), access_type=accessLevel3) #client.account.methods(compressor.id).create(name='setWPS2Ps', method_impl= MethodInstance.MethodImplementation(setWPS2Ps_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setWTx', method_impl=MethodInstance.MethodImplementation(setWTx_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setWtx_', method_impl=MethodInstance.MethodImplementation(setWtx_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setSTAx', method_impl=MethodInstance.MethodImplementation(setSTAx_body()), access_type=accessLevel3) #client.account.methods(compressor.id).create(name='setST3', method_impl= MethodInstance.MethodImplementation(setST3_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setSTT1', method_impl=MethodInstance.MethodImplementation(setSTT1_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setSTD1', method_impl=MethodInstance.MethodImplementation(setSTD1_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setR0x', method_impl=MethodInstance.MethodImplementation(setR0x_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setDSx', method_impl=MethodInstance.MethodImplementation(setDSx_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setDAx', method_impl=MethodInstance.MethodImplementation(setDAx_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setDFx', method_impl=MethodInstance.MethodImplementation(setDFx_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setV0x', method_impl=MethodInstance.MethodImplementation(setV0x_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setD6', method_impl=MethodInstance.MethodImplementation(setD6_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setD7', method_impl=MethodInstance.MethodImplementation(setD7_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setD1', method_impl=MethodInstance.MethodImplementation(setD1_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setD3', method_impl=MethodInstance.MethodImplementation(setD3_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setS12_S13_S14', method_impl=MethodInstance.MethodImplementation(setS12_S13_S14_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setS02', method_impl=MethodInstance.MethodImplementation(setS02_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setS07', method_impl=MethodInstance.MethodImplementation(setS07_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setS08_S09', method_impl=MethodInstance.MethodImplementation(setS08_S09_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setS11', method_impl=MethodInstance.MethodImplementation(setS11_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setS16', method_impl=MethodInstance.MethodImplementation(setS16_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setS15', method_impl=MethodInstance.MethodImplementation(setS15_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setS21_S22', method_impl=MethodInstance.MethodImplementation(setS21_S22_body()), access_type=accessLevel3) #client.account.methods(compressor.id).create(name='setDF7', method_impl= MethodInstance.MethodImplementation(setDF7_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='makeCompressorCommand', method_impl=MethodInstance.MethodImplementation( makeCompressorCommand_body()), access_type='protected') accessLevel4 = 'public' # Controller specific public methods client.account.methods(compressor.id).create( name='hasInverter', method_impl=MethodInstance.MethodImplementation(hasInverter_body()), access_type=accessLevel4) # Controller specific tag R/W operations - Read-only tags first client.account.methods(compressor.id).create( name='readWorkingFlags', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('workingFlags')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readSecondTemperature', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('secondTemperature')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readSecondPressure', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('secondPressure')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readDrive24VSupply', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('drive24VSupply')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readDriveAnalogInput', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('driveAnalogInput')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readConfigSwitches', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('configSwitches')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readDriveStatus', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('driveStatus')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readDriveMeasures', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('driveMeasures')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readDriveFaultString', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('driveFaultString')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readDriveCommands', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('driveCommands')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readWPx', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('WP')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readSPx', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('SP')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readSP5', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('SP5')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readSP6', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('SP6')), access_type=accessLevel4) #client.account.methods(compressor.id).create(name='readWPs', method_impl= MethodInstance.MethodImplementation(readTagIntoProperty_body('WPs')), access_type=accessLevel4) #client.account.methods(compressor.id).create(name='readWPS2Px', method_impl= MethodInstance.MethodImplementation(readTagIntoProperty_body('WPS2P')), access_type=accessLevel4) #client.account.methods(compressor.id).create(name='readWPS2Ps', method_impl= MethodInstance.MethodImplementation(readTagIntoProperty_body('WPS2Ps')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readWTx', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('WT')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readWtx_', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('Wt')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readWt11', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('Wt11')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readSTAx', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('STA')), access_type=accessLevel4) #client.account.methods(compressor.id).create(name='readST3', method_impl= MethodInstance.MethodImplementation(readTagIntoProperty_body('ST3')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readSTT1', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('STT1')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readSTD1', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('STD1')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readR0x', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('R0')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readR03', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('R03')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readDSx', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('DS')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readDAx', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('DA')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readDFx', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('DF')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readV0', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('V0')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readD1', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('D1')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readD3', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('D3')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readD6', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('D6')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readD7', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('D7')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readS12_S13_S14', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('S12')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readS02', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('S02')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readS07', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('S07')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readS08_S09', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('S08')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readS11', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('S11')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readS16', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('S16')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readS15', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('S15')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readS21_S22', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('S21')), access_type=accessLevel4) #client.account.methods(compressor.id).create(name='readDF7', method_impl= MethodInstance.MethodImplementation(readTagIntoProperty_body('DF7')), access_type=accessLevel4) # Write Only Tags client.account.methods(compressor.id).create( name='writeRelativeSpeed', method_impl=MethodInstance.MethodImplementation( writeRelativeSpeed_body()), access_type=accessLevel4) # client.account.methods(compressor.id).create( name='writeLevel1Password', method_impl=MethodInstance.MethodImplementation( writeLevel1Password_body()), access_type=accessLevel4) client.account.methods(compressor.id).create( name='writeLevel2Password', method_impl=MethodInstance.MethodImplementation( writeLevel2Password_body()), access_type=accessLevel4) client.account.methods(compressor.id).create( name='writeLevel3Password', method_impl=MethodInstance.MethodImplementation( writeLevel3Password_body()), access_type=accessLevel4) client.account.methods(compressor.id).create( name='writeConfigSwitches', method_impl=MethodInstance.MethodImplementation( writeConfigSwitches_body()), access_type=accessLevel4) client.account.methods(compressor.id).create( name='writeWPx', method_impl=MethodInstance.MethodImplementation(writeWPx_body()), access_type=accessLevel4) client.account.methods(compressor.id).create( name='writeSPx', method_impl=MethodInstance.MethodImplementation(writeSPx_body()), access_type=accessLevel4) client.account.methods(compressor.id).create( name='writeSP5', method_impl=MethodInstance.MethodImplementation(writeSP5_body()), access_type=accessLevel4) client.account.methods(compressor.id).create( name='writeSP6', method_impl=MethodInstance.MethodImplementation(writeSP6_body()), access_type=accessLevel4) #client.account.methods(compressor.id).create(name='writeWPs', method_impl= MethodInstance.MethodImplementation(writeWPs_body()), access_type=accessLevel4) #client.account.methods(compressor.id).create(name='writeWPS2Px', method_impl= MethodInstance.MethodImplementation(writeWPS2Px_body()), access_type=accessLevel4) #client.account.methods(compressor.id).create(name='writeWPS2Ps', method_impl= MethodInstance.MethodImplementation(writeWPS2Ps_body()), access_type=accessLevel4) client.account.methods(compressor.id).create( name='writeWTx', method_impl=MethodInstance.MethodImplementation(writeWTx_body()), access_type=accessLevel4) client.account.methods(compressor.id).create( name='writeWtx_', method_impl=MethodInstance.MethodImplementation(writeWtx_body()), access_type=accessLevel4) client.account.methods(compressor.id).create( name='writeSTAx', method_impl=MethodInstance.MethodImplementation(writeSTAx_body()), access_type=accessLevel4) #client.account.methods(compressor.id).create(name='writeST3', method_impl= MethodInstance.MethodImplementation(writeST3_body()), access_type=accessLevel4) client.account.methods(compressor.id).create( name='writeSTT1', method_impl=MethodInstance.MethodImplementation(writeSTT1_body()), access_type=accessLevel4) client.account.methods(compressor.id).create( name='writeSTD1', method_impl=MethodInstance.MethodImplementation(writeSTD1_body()), access_type=accessLevel4) client.account.methods(compressor.id).create( name='writeR0x', method_impl=MethodInstance.MethodImplementation(writeR0x_body()), access_type=accessLevel4) client.account.methods(compressor.id).create( name='writeDSx', method_impl=MethodInstance.MethodImplementation(writeDSx_body()), access_type=accessLevel4) client.account.methods(compressor.id).create( name='writeDAx', method_impl=MethodInstance.MethodImplementation(writeDAx_body()), access_type=accessLevel4) client.account.methods(compressor.id).create( name='writeDFx', method_impl=MethodInstance.MethodImplementation(writeDFx_body()), access_type=accessLevel4) client.account.methods(compressor.id).create( name='writeV0x', method_impl=MethodInstance.MethodImplementation(writeV0x_body()), access_type=accessLevel4) client.account.methods(compressor.id).create( name='writeD6', method_impl=MethodInstance.MethodImplementation(writeD6_body()), access_type=accessLevel4) client.account.methods(compressor.id).create( name='writeD7', method_impl=MethodInstance.MethodImplementation(writeD7_body()), access_type=accessLevel4) client.account.methods(compressor.id).create( name='writeD1', method_impl=MethodInstance.MethodImplementation(writeD1_body()), access_type=accessLevel4) client.account.methods(compressor.id).create( name='writeD3', method_impl=MethodInstance.MethodImplementation(writeD3_body()), access_type=accessLevel4) client.account.methods(compressor.id).create( name='writeS12_S13_S14', method_impl=MethodInstance.MethodImplementation( writeS12_S13_S14_body()), access_type=accessLevel4) client.account.methods(compressor.id).create( name='writeS02', method_impl=MethodInstance.MethodImplementation(writeS02_body()), access_type=accessLevel4) client.account.methods(compressor.id).create( name='writeS07', method_impl=MethodInstance.MethodImplementation(writeS07_body()), access_type=accessLevel4) client.account.methods(compressor.id).create( name='writeS08_S09', method_impl=MethodInstance.MethodImplementation(writeS08_S09_body()), access_type=accessLevel4) client.account.methods(compressor.id).create( name='writeS11', method_impl=MethodInstance.MethodImplementation(writeS11_body()), access_type=accessLevel4) client.account.methods(compressor.id).create( name='writeS16', method_impl=MethodInstance.MethodImplementation(writeS16_body()), access_type=accessLevel4) client.account.methods(compressor.id).create( name='writeS15', method_impl=MethodInstance.MethodImplementation(writeS15_body()), access_type=accessLevel4) client.account.methods(compressor.id).create( name='writeS21_S22', method_impl=MethodInstance.MethodImplementation(writeS21_S22_body()), access_type=accessLevel4)
def wire(client, name="LogikaL26", friendly="Logika L26 Controller", base="BaseLogikaProfile"): # Create Logika L26 profile compressor = client.account.deviceprofiles.create( name=name, friendly_name=friendly, base_profile=base, description='Logika L26 controller', tags=['logika', 'L26'], device_class='controller', product_name='L26', vendor_name='Logika') #------ Add profile properties unit = PropertyInstance.MeasurementUnit('Bar', 'bar') measurement = PropertyInstance.Measurement('pressure', unit) client.account.properties(compressor.id).create(name='auxPressure', data_type='number', access_type='protected', publish_type='never', measurement=measurement, boundaries={ 'min': 0, 'max': 16 }) unit = PropertyInstance.MeasurementUnit('Volt', 'V') measurement = PropertyInstance.Measurement('electricity', unit) client.account.properties(compressor.id).create(name='ptcInput', data_type='number', access_type='protected', publish_type='never', measurement=measurement, boundaries={ 'min': 0, 'max': 300 }) unit = PropertyInstance.MeasurementUnit('Frequence', 'Hz') measurement = PropertyInstance.Measurement('custom', unit) client.account.properties(compressor.id).create(name='analogueOutFreq', data_type='number', access_type='protected', publish_type='never', measurement=measurement, boundaries={ 'min': 0, 'max': 400 }) client.account.properties(compressor.id).create(name='configSwitches', data_type='object', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name='configSelections', data_type='object', access_type='protected', publish_type='never') condition = PropertyInstance.Condition( when=PropertyInstance.Condition.ConditionType.CHANGED) retention = PropertyInstance.Retention( context=PropertyInstance.Context(type='default'), capacity='0', condition=condition) client.account.properties(compressor.id).create(name="driveStatus", data_type='string', access_type='protected', publish_type='never', retention=retention) # client.account.properties(compressor.id).create(name="driveMeasures", data_type='object', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name="driveFaultString", data_type='string', access_type='protected', publish_type='never') # Inverter properties unit = PropertyInstance.MeasurementUnit('RPM', 'rpm') measurement = PropertyInstance.Measurement('custom', unit) client.account.properties(compressor.id).create(name='motorSpeed', data_type='number', access_type='protected', publish_type='never', measurement=measurement) unit = PropertyInstance.MeasurementUnit('Frequence', 'Hz') measurement = PropertyInstance.Measurement('custom', unit) client.account.properties(compressor.id).create(name='motorFrequency', data_type='number', access_type='protected', publish_type='never', measurement=measurement) unit = PropertyInstance.MeasurementUnit('Current', 'A') measurement = PropertyInstance.Measurement('electricity', unit) client.account.properties(compressor.id).create(name='motorCurrent', data_type='number', access_type='protected', publish_type='never', measurement=measurement) client.account.properties(compressor.id).create(name='WPx', data_type='object', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name='WTx', data_type='object', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name='Wtx_', data_type='object', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name='C07_x', data_type='object', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name='C02', data_type='number', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name='C08', data_type='number', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name='C10', data_type='number', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name='C07_5', data_type='number', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name='C25', data_type='number', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name='APx', data_type='object', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name='C19_x', data_type='object', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name='PIx', data_type='object', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name='FRx', data_type='object', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name='PTx', data_type='object', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name='PM1', data_type='number', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name='AOx', data_type='object', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name='C20_x', data_type='object', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name='C22', data_type='object', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name='DRx', data_type='object', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name='DAx', data_type='object', access_type='protected', publish_type='never') #------ Add profile methods accessLevel2 = 'private' # Overriden methods client.account.methods(compressor.id).create( name='fetchAlarmList', method_impl=MethodInstance.MethodImplementation(fetchAlarmList_body()), access_type=accessLevel2) client.account.methods(compressor.id).create( name='fetchReadRequest', method_impl=MethodInstance.MethodImplementation( fetchReadRequest_body()), access_type=accessLevel2) client.account.methods(compressor.id).create( name='fetchWriteRequest', method_impl=MethodInstance.MethodImplementation( fetchWriteRequest_body()), access_type=accessLevel2) client.account.methods(compressor.id).create( name='fetchModbusSettings', method_impl=MethodInstance.MethodImplementation( fetchModbusSettings_body()), access_type=accessLevel2) client.account.methods(compressor.id).create( name='fetchControllerStates', method_impl=MethodInstance.MethodImplementation( fetchControllerStates_body()), access_type=accessLevel2) client.account.methods(compressor.id).create( name='fetchCompressorStates', method_impl=MethodInstance.MethodImplementation( fetchCompressorStates_body()), access_type=accessLevel2) client.account.methods(compressor.id).create( name='fetchCompressorStateTypes', method_impl=MethodInstance.MethodImplementation( fetchCompressorStateTypes_body()), access_type=accessLevel2) accessLevel3 = 'private' # Controller specific SET methods (private) client.account.methods(compressor.id).create( name='setRelayOutputs', method_impl=MethodInstance.MethodImplementation( setRelayOutputs_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setDigitalInputs', method_impl=MethodInstance.MethodImplementation( setDigitalInputs_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setAuxPressure', method_impl=MethodInstance.MethodImplementation(setAuxPressure_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setPTCInput', method_impl=MethodInstance.MethodImplementation(setPTCInput_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setAnalogueOutFreq', method_impl=MethodInstance.MethodImplementation( setAnalogueOutFreq_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setConfigSwitches', method_impl=MethodInstance.MethodImplementation( setConfigSwitches_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setConfigSelections', method_impl=MethodInstance.MethodImplementation( setConfigSelections_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setDriveStatus', method_impl=MethodInstance.MethodImplementation(setDriveStatus_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setDriveMeasures', method_impl=MethodInstance.MethodImplementation( setDriveMeasures_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setDriveFaultString', method_impl=MethodInstance.MethodImplementation( setDriveFaultString_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setWPx', method_impl=MethodInstance.MethodImplementation(setWPx_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setWTx', method_impl=MethodInstance.MethodImplementation(setWTx_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setWtx_', method_impl=MethodInstance.MethodImplementation(setWtx_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setC07_x', method_impl=MethodInstance.MethodImplementation(setC07x_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setC08', method_impl=MethodInstance.MethodImplementation(setC08_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setC02', method_impl=MethodInstance.MethodImplementation(setC02_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setC10', method_impl=MethodInstance.MethodImplementation(setC10_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setC07_5', method_impl=MethodInstance.MethodImplementation(setC07_5_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setC25', method_impl=MethodInstance.MethodImplementation(setC25_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setAPx', method_impl=MethodInstance.MethodImplementation(setAPx_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setC19_x', method_impl=MethodInstance.MethodImplementation(setC19x_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setPIx', method_impl=MethodInstance.MethodImplementation(setPIx_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setFRx', method_impl=MethodInstance.MethodImplementation(setFRx_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setPTx', method_impl=MethodInstance.MethodImplementation(setPTx_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setPM1', method_impl=MethodInstance.MethodImplementation(setPM1_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setAOx', method_impl=MethodInstance.MethodImplementation(setAOx_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setC20_x', method_impl=MethodInstance.MethodImplementation(setC20x_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setC22', method_impl=MethodInstance.MethodImplementation(setC22_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setDRx', method_impl=MethodInstance.MethodImplementation(setDRx_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='setDAx', method_impl=MethodInstance.MethodImplementation(setDAx_body()), access_type=accessLevel3) client.account.methods(compressor.id).create( name='makeCompressorCommand', method_impl=MethodInstance.MethodImplementation( makeCompressorCommand_body()), access_type='protected') accessLevel4 = 'public' # Controller specific public methods client.account.methods(compressor.id).create( name='hasInverter', method_impl=MethodInstance.MethodImplementation(hasInverter_body()), access_type=accessLevel4) # Controller specific tag R/W operations - Read-only tags first client.account.methods(compressor.id).create( name='readAuxPressure', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('auxPressure')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readPTCInput', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('ptcInput')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readAnalogueOutFreq', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('analogueOut')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readConfigSwitches', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('configSwitches')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readConfigSelections', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('configSelections')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readDriveStatus', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('driveStatus')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readDriveMeasures', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('driveMeasures')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readDriveFaultString', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('driveFaultString')), access_type=accessLevel4) # client.account.methods(compressor.id).create( name='readWPx', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('WP')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readWTx', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('WT')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readWtx_', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('Wt')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readC07_x', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('C07')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readC02', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('C02')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readC08', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('C08')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readC10', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('C10')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readC07_5', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('C07_5')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readC25', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('C25')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readAPx', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('AP')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readC19_x', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('C19')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readPIx', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('PI')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readFRx', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('FR')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readPTx', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('PT')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readPM1', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('PM1')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readAOx', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('AO')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readC20_x', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('C20')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readC22', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('C22')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readDRx', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('DR')), access_type=accessLevel4) client.account.methods(compressor.id).create( name='readDAx', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('DA')), access_type=accessLevel4) # client.account.methods(compressor.id).create( name='writeWPx', method_impl=MethodInstance.MethodImplementation(writeWPx_body()), access_type=accessLevel4) client.account.methods(compressor.id).create( name='writeWTx', method_impl=MethodInstance.MethodImplementation(writeWTx_body()), access_type=accessLevel4) client.account.methods(compressor.id).create( name='writeWtx_', method_impl=MethodInstance.MethodImplementation(writeWtx_body()), access_type=accessLevel4) client.account.methods(compressor.id).create( name='writeC07_x', method_impl=MethodInstance.MethodImplementation(writeC07x_body()), access_type=accessLevel4) client.account.methods(compressor.id).create( name='writeC02', method_impl=MethodInstance.MethodImplementation(writeC02_body()), access_type=accessLevel4) client.account.methods(compressor.id).create( name='writeC08', method_impl=MethodInstance.MethodImplementation(writeC08_body()), access_type=accessLevel4) client.account.methods(compressor.id).create( name='writeC10', method_impl=MethodInstance.MethodImplementation(writeC10_body()), access_type=accessLevel4) client.account.methods(compressor.id).create( name='writeC07_5', method_impl=MethodInstance.MethodImplementation(writeC07_5_body()), access_type=accessLevel4) client.account.methods(compressor.id).create( name='writeC25', method_impl=MethodInstance.MethodImplementation(writeC25_body()), access_type=accessLevel4) client.account.methods(compressor.id).create( name='writeAPx', method_impl=MethodInstance.MethodImplementation(writeAPx_body()), access_type=accessLevel4) client.account.methods(compressor.id).create( name='writeAP4', method_impl=MethodInstance.MethodImplementation(writeAP4_body()), access_type=accessLevel4) client.account.methods(compressor.id).create( name='writeC19_1', method_impl=MethodInstance.MethodImplementation(writeC19_1_body()), access_type=accessLevel4) client.account.methods(compressor.id).create( name='writeC19_2', method_impl=MethodInstance.MethodImplementation(writeC19_2_body()), access_type=accessLevel4) client.account.methods(compressor.id).create( name='writePIx', method_impl=MethodInstance.MethodImplementation(writePIx_body()), access_type=accessLevel4) client.account.methods(compressor.id).create( name='writeFRx', method_impl=MethodInstance.MethodImplementation(writeFRx_body()), access_type=accessLevel4) client.account.methods(compressor.id).create( name='writePTx', method_impl=MethodInstance.MethodImplementation(writePTx_body()), access_type=accessLevel4) client.account.methods(compressor.id).create( name='writePM1', method_impl=MethodInstance.MethodImplementation(writePM1_body()), access_type=accessLevel4) client.account.methods(compressor.id).create( name='writeAOx', method_impl=MethodInstance.MethodImplementation(writeAOx_body()), access_type=accessLevel4) client.account.methods(compressor.id).create( name='writeC20_x', method_impl=MethodInstance.MethodImplementation(writeC20x_body()), access_type=accessLevel4) client.account.methods(compressor.id).create( name='writeC2x', method_impl=MethodInstance.MethodImplementation(writeC22_body()), access_type=accessLevel4) client.account.methods(compressor.id).create( name='writeDRx', method_impl=MethodInstance.MethodImplementation(writeDRx_body()), access_type=accessLevel4) client.account.methods(compressor.id).create( name='writeDAx', method_impl=MethodInstance.MethodImplementation(writeDAx_body()), access_type=accessLevel4) client.account.methods(compressor.id).create( name='writeLevel1Password', method_impl=MethodInstance.MethodImplementation( writeLevel1Password_body()), access_type=accessLevel4) client.account.methods(compressor.id).create( name='writeLevel2Password', method_impl=MethodInstance.MethodImplementation( writeLevel2Password_body()), access_type=accessLevel4) client.account.methods(compressor.id).create( name='writeLevel3Password', method_impl=MethodInstance.MethodImplementation( writeLevel3Password_body()), access_type=accessLevel4)
def wireGw(client, name="ModbusGateway", friendly="Generic Modbus Gateway"): # Create new Minova Gateway profile compressor = client.account.deviceprofiles.create( name=name, friendly_name=friendly, base_profile='Gateway', description='Modbus gateway', tags=['gw'], device_class='gateway', product_name='MiTrack-Q', vendor_name='Minova') #------ Add profile properties client.account.properties(compressor.id).create(name='gateway_info', data_type='object', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name='modbus_errors', data_type='string', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name='modbus_readrequest', data_type='string', access_type='public', publish_type='always') client.account.properties(compressor.id).create(name='modbus_settings', data_type='string', access_type='public', publish_type='always') client.account.properties(compressor.id).create(name='modbus_writerequest', data_type='string', access_type='public', publish_type='always') #------ Add profile methods client.account.methods(compressor.id).create( name='readTagByPropKey', method_impl=MethodInstance.MethodImplementation( readTagByPropKey_body()), access_type='protected') client.account.methods(compressor.id).create( name='readTag', method_impl=MethodInstance.MethodImplementation(readTag_body()), access_type='protected') client.account.methods(compressor.id).create( name='writeAndReadTag', method_impl=MethodInstance.MethodImplementation( writeAndReadTag_body()), access_type='protected') client.account.methods(compressor.id).create( name='writeTag', method_impl=MethodInstance.MethodImplementation(writeTag_body()), access_type='protected') client.account.methods(compressor.id).create( name='restart', method_impl=MethodInstance.MethodImplementation(restart_body()), access_type='public') client.account.methods(compressor.id).create( name='setModbusSettings', method_impl=MethodInstance.MethodImplementation( setModbusSettings_body()), access_type='public')
def wireBase(client, name="BaseLogikaProfile", friendly="Logika Base", base='ModbusGateway'): # Create new Logika base profile compressor = client.account.deviceprofiles.create( name=name, friendly_name=friendly, base_profile=base, description='Logika controller base profile', tags=['logika', 'base'], device_class='controller', product_name='LSeries', vendor_name='Logika') #------ Add base profile properties client.account.properties(compressor.id).create(name='tagValue', data_type='string', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name='cfgSerialNumber', data_type='string', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name='cfgLogikaModel', data_type='string', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name='cfgLogikaFwVersion', data_type='string', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name='cfgLevel1Pwd', data_type='string', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name='cfgLevel2Pwd', data_type='string', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name='cfgLevel3Pwd', data_type='string', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name='activeAlarms', data_type='object', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name='activeAlarmsNonAck', data_type='object', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name='controllerState', data_type='object', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name='compressorState', data_type='object', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name='blockingAlarm', data_type='string', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name='relayOutputs', data_type='string', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name='digitalInputs', data_type='string', access_type='protected', publish_type='never') unit = PropertyInstance.MeasurementUnit('Celsius', '°C') measurement = PropertyInstance.Measurement('temperature', unit) client.account.properties(compressor.id).create( name='screwTemperature', data_type='number', access_type='protected', publish_type='never', description='Main Screw Temperature (°C * 10)', measurement=measurement, boundaries={ 'min': -10, 'max': 125 }) unit = PropertyInstance.MeasurementUnit('Bar', 'bar') measurement = PropertyInstance.Measurement('pressure', unit) client.account.properties(compressor.id).create( name='workingPressure', data_type='number', access_type='protected', publish_type='never', description='Main Working Pressure (Bar * 10)', measurement=measurement, boundaries={ 'min': 0, 'max': 16 }) unit = PropertyInstance.MeasurementUnit('Volt', 'V') measurement = PropertyInstance.Measurement('electricity', unit) client.account.properties(compressor.id).create( name='controllerSupplyVoltage', data_type='number', access_type='protected', publish_type='never', description='Main Screw Temperature (V * 10)', measurement=measurement, boundaries={ 'min': 0, 'max': 300 }) client.account.properties(compressor.id).create(name='cfgMaintCycles', data_type='object', access_type='protected', publish_type='never') unit = PropertyInstance.MeasurementUnit('Hour', 'h') measurement = PropertyInstance.Measurement('time', unit) client.account.properties(compressor.id).create( name='totalHours', data_type='number', access_type='protected', publish_type='never', description='Total hours compressor was working', measurement=measurement) client.account.properties(compressor.id).create( name='totalLoadHours', data_type='number', access_type='protected', publish_type='never', description='Total hours compressor was on load', measurement=measurement) client.account.properties(compressor.id).create( name='maintCounters', data_type='object', access_type='protected', publish_type='never', description='Time from the last maintenance in minutes') client.account.properties(compressor.id).create( name='maintenanceLog', data_type='object', access_type='protected', publish_type='never', description='Log of compressor maintenances') unit = PropertyInstance.MeasurementUnit('Percentage', '%') measurement = PropertyInstance.Measurement('percentage', unit) client.account.properties(compressor.id).create( name='loadPercInLast100h', data_type='number', access_type='protected', publish_type='never', description= "On load minutes in last 100 hours of motor running (100% is 6000)", measurement=measurement, boundaries={ 'min': 0, 'max': 100 }) unit = PropertyInstance.MeasurementUnit('Count', '#') measurement = PropertyInstance.Measurement('custom', unit) client.account.properties(compressor.id).create( name='nbrOfStartsInLastHour', data_type='number', access_type='protected', publish_type='never', measurement=measurement) client.account.properties(compressor.id).create(name='controllerTime', data_type='string', access_type='protected', publish_type='never') # derived properties client.account.properties(compressor.id).create(name='lastAlarms', data_type='object', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name='lastWarnings', data_type='object', access_type='protected', publish_type='never') unit = PropertyInstance.MeasurementUnit('Count', '#') measurement = PropertyInstance.Measurement('custom', unit) client.account.properties(compressor.id).create(name='nbrOfAlarms', data_type='number', access_type='protected', publish_type='never', measurement=measurement) client.account.properties(compressor.id).create(name='nbrOfWarnings', data_type='number', access_type='protected', publish_type='never', measurement=measurement) client.account.properties(compressor.id).create(name='powercutStops', data_type='object', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name='plannedStops', data_type='object', access_type='protected', publish_type='never') client.account.properties(compressor.id).create(name='unplannedStops', data_type='object', access_type='protected', publish_type='never') unit = PropertyInstance.MeasurementUnit('Minute', 'min') measurement = PropertyInstance.Measurement('time', unit) client.account.properties(compressor.id).create(name='idleRunningMinutes', data_type='number', access_type='protected', publish_type='never', measurement=measurement) client.account.properties(compressor.id).create(name='loadRunningMinutes', data_type='number', access_type='protected', publish_type='never', measurement=measurement) client.account.properties(compressor.id).create( name='unplannedStopsMinutes', data_type='number', access_type='protected', publish_type='never', measurement=measurement) client.account.properties(compressor.id).create(name='plannedStopsMinutes', data_type='number', access_type='protected', publish_type='never', measurement=measurement) # settings # unit = PropertyInstance.MeasurementUnit('Month', 'months') # measurement = PropertyInstance.Measurement('custom', unit) # client.account.properties(compressor.id).create(name='warrantyExpiresIn', data_type='number', access_type='public', publish_type='never', measurement=measurement) client.account.properties(compressor.id).create(name='warrantyExpiryDate', data_type='string', access_type='public', publish_type='never') client.account.properties(compressor.id).create(name='icon', data_type='string', access_type='public', publish_type='never') # This can go to app maybe? description = """ Asagidaki sekilde bakim ucretlerini girebilirsiniz: { "currencySymbol": "$", "currency": "USD", "oilFilterChange": 0, "oilChange": 0, "bearingLubrication": 0, "compressorCheck": 0, "airFilterChange": 0, "separatorFilterChange": 0 } """ client.account.properties(compressor.id).create(name='maintenanceCostList', data_type='object', access_type='public', publish_type='never', description=description) # Views condition = PropertyInstance.Condition( when=PropertyInstance.Condition.ConditionType.ALWAYS) retention = PropertyInstance.Retention( type=PropertyInstance.Retention.RetentionType.MOSTRECENT, context=PropertyInstance.Context(type='default'), capacity='0', condition=condition) client.account.properties(compressor.id).create(name='state', data_type='object', access_type='protected', publish_type='never', retention=retention) #------ Add base profile methods client.account.methods(compressor.id).create( name='init', method_impl=MethodInstance.MethodImplementation(getInit_body()), access_type='public', description="""e.g. { "hasInverter": false, "warrantyInMonth": 12, "icon": "inversys-15-plus-depolu.png", "elecCost": { "value": 0, "unit": "USD" } } hasInverter: kompresorun inverter'u varsa 'true' yoksa 'false' olmalidir - default deger 'false' warrantyInMonth: kompresorun garanti suresini belirtir - default deger 12 icon: kompresor resim dosyasinin adi elecCost: kompresorun kullanildigi bolgedeki elektrik birim fiyati ve para birimi """) client.account.methods(compressor.id).create( name='getDashboard', method_impl=MethodInstance.MethodImplementation(getDashboard_body()), access_type='public', description=""" Build the default dashboard view of the compressor. Some information must be populated by calling `preaggregate()` method ahead of time.""" ) client.account.methods(compressor.id).create( name='getLatestValues', method_impl=MethodInstance.MethodImplementation( getLatestValues_body()), access_type='public') client.account.methods(compressor.id).create( name='preaggregate', method_impl=MethodInstance.MethodImplementation(preaggregate_body()), access_type='public') client.account.methods(compressor.id).create( name='showOEE', method_impl=MethodInstance.MethodImplementation(showOEE_body()), access_type='public') client.account.methods(compressor.id).create( name='getHistOEE', method_impl=MethodInstance.MethodImplementation(getHistOEE_body()), access_type='public', description="""{ "value": { "from": { "unit": "WEEKS", "value": 1 }, "sampling": { "unit": "HOURS", "value": 1 } } }""") client.account.methods(compressor.id).create( name='getHistMttr', method_impl=MethodInstance.MethodImplementation(getHistMttr_body()), access_type='public', description="""{ "value": { "from": { "unit": "WEEKS", "value": 1 }, "sampling": { "unit": "HOURS", "value": 1 } } }""") client.account.methods(compressor.id).create( name='getHistMtbf', method_impl=MethodInstance.MethodImplementation(getHistMtbf_body()), access_type='public', description="""{ "value": { "from": { "unit": "WEEKS", "value": 1 }, "sampling": { "unit": "HOURS", "value": 1 } } }""") client.account.methods(compressor.id).create( name='getHistEstimPowerConsumption', method_impl=MethodInstance.MethodImplementation( getHistEstimPowerConsumption_body()), access_type='public', description="""{ "value": { "from": { "unit": "WEEKS", "value": 1 }, "sampling": { "unit": "HOURS", "value": 1 } } }""") client.account.methods(compressor.id).create( name='getHistEstimEnergyConsumption', method_impl=MethodInstance.MethodImplementation( getHistEstimEnergyConsumption_body()), access_type='public', description="""{ "value": { "from": { "unit": "WEEKS", "value": 1 }, "sampling": { "unit": "HOURS", "value": 1 } } }""") accessLevel1 = 'protected' accessLevel1_1 = 'private' client.account.methods(compressor.id).create( name='getEmptyState', method_impl=MethodInstance.MethodImplementation(getEmptyState_body()), access_type=accessLevel1, description="e.g. { 'value': 0, 'unit': '$' }") client.account.methods(compressor.id).create( name='getCompressorInfo', method_impl=MethodInstance.MethodImplementation( getCompressorInfo_body()), access_type=accessLevel1) # dashboarding client.account.methods(compressor.id).create( name='buildAggregateQueries', method_impl=MethodInstance.MethodImplementation( buildAggregateQueries_body()), access_type=accessLevel1_1) client.account.methods(compressor.id).create( name='queryAggregates', method_impl=MethodInstance.MethodImplementation( queryAggregates_body()), access_type=accessLevel1_1) client.account.methods(compressor.id).create( name='queryPropertySummary', method_impl=MethodInstance.MethodImplementation( queryPropertySummary_body()), access_type=accessLevel1) client.account.methods(compressor.id).create( name='queryWarningAlarmSummary', method_impl=MethodInstance.MethodImplementation( queryWarningAlarmSummary_body()), access_type=accessLevel1) client.account.methods(compressor.id).create( name='queryTimeToMaintenance', method_impl=MethodInstance.MethodImplementation( queryTimeToMaintenance_body()), access_type=accessLevel1_1) client.account.methods(compressor.id).create( name='queryLoadRatio', method_impl=MethodInstance.MethodImplementation(queryLoadRatio_body()), access_type=accessLevel1_1) client.account.methods(compressor.id).create( name='getActiveAlarm', method_impl=MethodInstance.MethodImplementation(getActiveAlarm_body()), access_type=accessLevel1_1) client.account.methods(compressor.id).create( name='getConnectivity', method_impl=MethodInstance.MethodImplementation( getConnectivity_body()), access_type=accessLevel1_1, description=""" /** @enum {string} */ Connectivity = { OFFLINE: 'offline', ONLINE_ACTIVE: 'online-active', ONLINE_INACTIVE: 'online-inactive', };""") client.account.methods(compressor.id).create( name='common', method_impl=MethodInstance.MethodImplementation(common_body()), access_type=accessLevel1_1, description=""" Common utils, constants, enums, etc""") client.account.methods(compressor.id).create( name='processCompressorStates', method_impl=MethodInstance.MethodImplementation( processCompressorStates_body()), access_type=accessLevel1_1) client.account.methods(compressor.id).create( name='calculateAll', method_impl=MethodInstance.MethodImplementation(calculateAll_body()), access_type=accessLevel1_1) client.account.methods(compressor.id).create( name='convertToHours', method_impl=MethodInstance.MethodImplementation(convertToHours_body()), access_type=accessLevel1_1) client.account.methods(compressor.id).create( name='convertToDec', method_impl=MethodInstance.MethodImplementation(convertToDec_body()), access_type=accessLevel1_1) client.account.methods(compressor.id).create( name='makeWriteRequest', method_impl=MethodInstance.MethodImplementation( makeWriteRequest_body()), access_type=accessLevel1_1) client.account.methods(compressor.id).create( name='makeWriteValue', method_impl=MethodInstance.MethodImplementation(makeWriteValue_body()), access_type=accessLevel1_1) client.account.methods(compressor.id).create( name='setAny', method_impl=MethodInstance.MethodImplementation(setAny_body()), access_type=accessLevel1_1) client.account.methods(compressor.id).create( name='setSerialNumber', method_impl=MethodInstance.MethodImplementation( setSerialNumber_body()), access_type=accessLevel1_1) client.account.methods(compressor.id).create( name='setLogikaModel', method_impl=MethodInstance.MethodImplementation(setLogikaModel_body()), access_type=accessLevel1_1) client.account.methods(compressor.id).create( name='setLogikaFwVersion', method_impl=MethodInstance.MethodImplementation( setLogikaFwVersion_body()), access_type=accessLevel1_1) client.account.methods(compressor.id).create( name='setLevel1Pwd', method_impl=MethodInstance.MethodImplementation(setLevelXPwd_body(1)), access_type=accessLevel1_1) client.account.methods(compressor.id).create( name='setLevel2Pwd', method_impl=MethodInstance.MethodImplementation(setLevelXPwd_body(2)), access_type=accessLevel1_1) client.account.methods(compressor.id).create( name='setLevel3Pwd', method_impl=MethodInstance.MethodImplementation(setLevelXPwd_body(3)), access_type=accessLevel1_1) client.account.methods(compressor.id).create( name='setAlarms', method_impl=MethodInstance.MethodImplementation(setAlarms_body()), access_type=accessLevel1_1) client.account.methods(compressor.id).create( name='setNonAckAlarms', method_impl=MethodInstance.MethodImplementation( setNonAckAlarms_body()), access_type=accessLevel1_1) client.account.methods(compressor.id).create( name='setControllerState', method_impl=MethodInstance.MethodImplementation( setControllerState_body()), access_type=accessLevel1_1) client.account.methods(compressor.id).create( name='setCompressorState', method_impl=MethodInstance.MethodImplementation( setCompressorState_body()), access_type=accessLevel1_1) client.account.methods(compressor.id).create( name='setBlockingAlarm', method_impl=MethodInstance.MethodImplementation( setBlockingAlarm_body()), access_type=accessLevel1_1) client.account.methods(compressor.id).create( name='setScrewTemperature', method_impl=MethodInstance.MethodImplementation( setScrewTemperature_body()), access_type=accessLevel1_1) client.account.methods(compressor.id).create( name='setWorkingPressure', method_impl=MethodInstance.MethodImplementation( setWorkingPressure_body()), access_type=accessLevel1_1) client.account.methods(compressor.id).create( name='setControllerSupplyVoltage', method_impl=MethodInstance.MethodImplementation( setControllerSupplyVoltage_body()), access_type=accessLevel1_1) client.account.methods(compressor.id).create( name='setMaintCycles', method_impl=MethodInstance.MethodImplementation(setMaintCycles_body()), access_type=accessLevel1_1) client.account.methods(compressor.id).create( name='setTotalHours', method_impl=MethodInstance.MethodImplementation(setTotalHours_body()), access_type=accessLevel1_1) client.account.methods(compressor.id).create( name='setTotalLoadHours', method_impl=MethodInstance.MethodImplementation( setTotalLoadHours_body()), access_type=accessLevel1_1) client.account.methods(compressor.id).create( name='setMaintCounters', method_impl=MethodInstance.MethodImplementation( setMaintCounters_body()), access_type=accessLevel1_1) client.account.methods(compressor.id).create( name='setLoadPercInLast100h', method_impl=MethodInstance.MethodImplementation( setLoadPercInLast100h_body()), access_type=accessLevel1_1) client.account.methods(compressor.id).create( name='setNbrOfStartsInLastHour', method_impl=MethodInstance.MethodImplementation( setNbrOfStartsInLastHour_body()), access_type=accessLevel1_1) client.account.methods(compressor.id).create( name='setControllerTime', method_impl=MethodInstance.MethodImplementation( setControllerTime_body()), access_type=accessLevel1_1) accessLevel2 = 'public' client.account.methods(compressor.id).create( name='sendCommand', method_impl=MethodInstance.MethodImplementation(sendCommand_body()), access_type=accessLevel2) client.account.methods(compressor.id).create( name='start', method_impl=MethodInstance.MethodImplementation(startStop_body(1)), access_type=accessLevel2) client.account.methods(compressor.id).create( name='stop', method_impl=MethodInstance.MethodImplementation(startStop_body(0)), access_type=accessLevel2) client.account.methods(compressor.id).create( name='writeAnyTag', method_impl=MethodInstance.MethodImplementation(writeAnyTag_body()), access_type=accessLevel2, description=""" Bu method ile herhangi bir tag'i yazabilirsiniz. Gereken parametreler sunlar: - setValue: Yazilacak deger - addr: Tag'in modbus adresi - size: Yazilacak tag'in uzunlugu - default 2 (word) Ornegin: { "setValue": 13, "addr": "0x401", "size": 2 } """) client.account.methods(compressor.id).create( name='readAnyTag', method_impl=MethodInstance.MethodImplementation(readAnyTag_body()), access_type=accessLevel2, description=""" Bu method ile herhangi bir tag'i okumak icin gateway'e komut gonderebilirsiniz. Okunan deger tagValue isimli property icine yailir. Gereken parametreler sunlar: - addr: Tag'in modbus adresi - size: Okunacak tag'in uzunlugu - default 2 (word) Ornegin: { "addr": "0x401", "size": 2 } """) client.account.methods(compressor.id).create( name='readSerialNumber', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('cfgSerialNumber')), access_type=accessLevel2) client.account.methods(compressor.id).create( name='readLogikaModel', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('cfgLogikaModel')), access_type=accessLevel2) client.account.methods(compressor.id).create( name='readLogikaFwVersion', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('cfgLogikaFwVersion')), access_type=accessLevel2) client.account.methods(compressor.id).create( name='readLevel1Pwd', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('cfgLevel1Pwd')), access_type=accessLevel2) client.account.methods(compressor.id).create( name='readLevel2Pwd', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('cfgLevel2Pwd')), access_type=accessLevel2) client.account.methods(compressor.id).create( name='readLevel3Pwd', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('cfgLevel3Pwd')), access_type=accessLevel2) client.account.methods(compressor.id).create( name='readRelayOutputs', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('relayOutputs')), access_type=accessLevel2) client.account.methods(compressor.id).create( name='readDigitalInputs', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('digitalInputs')), access_type=accessLevel2) client.account.methods(compressor.id).create( name='readMaintCycles', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('cfgMaintCycles')), access_type=accessLevel2) client.account.methods(compressor.id).create( name='readMaintCounters', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('maintCounters')), access_type=accessLevel2) client.account.methods(compressor.id).create( name='readTotalHours', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('totalHours')), access_type=accessLevel2) client.account.methods(compressor.id).create( name='readTotalLoadHours', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('totalLoadHours')), access_type=accessLevel2) client.account.methods(compressor.id).create( name='readLoadPercInLast100h', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('loadPercInLast100h')), access_type=accessLevel2) client.account.methods(compressor.id).create( name='readNbrOfStartsInLastHour', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('nbrOfStartsInLastHour')), access_type=accessLevel2) client.account.methods(compressor.id).create( name='readControllerTime', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('controllerTime')), access_type=accessLevel2) client.account.methods(compressor.id).create( name='writeChangeAirFilter', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('writeChangeAirFilter_body')), access_type=accessLevel2) client.account.methods(compressor.id).create( name='writeChangeOilFilter', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('writeChangeOilFilter_body')), access_type=accessLevel2) client.account.methods(compressor.id).create( name='writeChangeOil', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('writeChangeOil_body')), access_type=accessLevel2) client.account.methods(compressor.id).create( name='writeChangeSeperatorFilter', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('writeChangeSeperatorFilter_body')), access_type=accessLevel2) client.account.methods(compressor.id).create( name='writeCheckCompressor', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('writeCheckCompressor_body')), access_type=accessLevel2) client.account.methods(compressor.id).create( name='writeBearingLubrication', method_impl=MethodInstance.MethodImplementation( readTagIntoProperty_body('writeBearingLubrication_body')), access_type=accessLevel2)