def run_task(settings_file=DEFAULT_SETTINGS_FILE, debug: bool = False) -> bool: # Create the client instance client = SmartSensorClient(settings_file=settings_file, debug=debug) # Authenticate if not client.authenticate(): print('Authentication FAILED') return False # Print organization print('Organization {}, {}'.format(client.organization_id, client.organization_name)) print() # Get list of plants plants = client.get_plant_list() # Iterate the plant list and print all assets therein for plant in plants: print('Plant {}, {}:'.format(plant['plantID'], plant['plantName'])) print('Assets:') # Get list of assets assets = client.get_asset_list(organization_id=client.organization_id, plant_id=plant['plantID']) if len(assets) == 0: print('No assets in this plant') else: for asset in assets: pprint(asset) print() return True
def run_task(settings_file=DEFAULT_SETTINGS_FILE, asset_id=None, measurement_type=None, value_list=None, debug: bool = False) -> bool: # Create the client instance client = SmartSensorClient(settings_file=settings_file, debug=debug) # Authenticate if not client.authenticate(): print('Authentication FAILED') return False # Check if all arguments were passed if asset_id is None or measurement_type is None or value_list is None: return False # Change the KPI threshold response = client.change_kpi_threshold(asset_id, measurement_type, value_list) if response is False: return False # Print success message print('Changed thresholds of asset ' + str(asset_id) + ' for measurement type ' + str(measurement_type) + ' to:') print('Healthy: ' + str(value_list[0]) + ' to ' + str(value_list[1])) print('Weak: ' + str(value_list[1]) + ' to ' + str(value_list[2])) print('Critical: ' + str(value_list[2]) + ' to ' + str(value_list[3])) return True
def run_task(settings_file=DEFAULT_SETTINGS_FILE, asset_list=None, debug: bool = False) -> bool: # Create the client instance client = SmartSensorClient(settings_file=settings_file, debug=debug) # Authenticate if not client.authenticate(): print('Authentication FAILED') return False if asset_list is None: return False # Add a notification channel response = client.get_condition_index(asset_list) # parse response and print the condition indexes for each asset for asset in response: print('\nAsset ID: ' + str(asset['assetID'])) for entry in asset['condition']: string_to_print = str(entry['conditionIndexName']) + ': ' + str(entry['conditionIndexStatus']['status']) # add the status code message to the print if it contains informations if entry['conditionIndexStatus']['statusCodeMessage'] is not None: string_to_print += ' (' + str(entry['conditionIndexStatus']['statusCodeMessage']) + ')' print(string_to_print) if response is False: return False return True
def run_task(settings_file=DEFAULT_SETTINGS_FILE, asset_list=None, notification_type=None, notification_channel=None, url=None) -> bool: # Create the client instance client = SmartSensorClient(settings_file=settings_file) # Authenticate if not client.authenticate(): print('Authentication FAILED') return False # Add a notification channel response = client.add_notification_channel(notification_type, notification_channel, asset_list, url) if response is False: return False return True
def run_task(settings_file=DEFAULT_SETTINGS_FILE) -> bool: # Create the client instance client = SmartSensorClient(settings_file=settings_file) # Authenticate if not client.authenticate(): print('Authentication FAILED') return False # Print organization print('Organization {}, {}'.format(client.organization_id, client.organization_name)) print() # Ask users for their input: print('Please enter your query parameters:') asset_id = input('Asset ID: ') measurement_type = input('Measurement type (4 for temperature): ') start_date = input('Start date (YYYY-MM-DD): ') end_date = input('End date (YYYY-MM-DD): ') # Get the temperature data during this time values = client.get_measurement_value(asset_id=asset_id, measurement_type=measurement_type, start_time=start_date, end_time=end_date) values_to_plot = [[datetime.strptime(v['measurementCreated'], '%Y-%m-%dT%H:%M:%S'), float(v['measurementValue'])] for v in values[0]['measurements'] ] values_to_plot.sort(key=lambda v: v[0]) measurement_timestamp = [v[0] for v in values_to_plot] measurement_values = [v[1] for v in values_to_plot] plt.plot(measurement_timestamp, measurement_values) plt.show() return True
def run_task(settings_file=DEFAULT_SETTINGS_FILE) -> bool: # Create the client instance client = SmartSensorClient(settings_file=settings_file) # Authenticate if not client.authenticate(): print('Authentication FAILED') return False # Print organization print('Organization {}, {}'.format(client.organization_id, client.organization_name)) print() # Get list of plants plants = client.get_plant_list() # Iterate the plant list and print all assets therein for plant in plants: pprint(plant) print() return True
def run_task(settings_file=DEFAULT_SETTINGS_FILE, debug: bool = False) -> bool: # Create the client instance client = SmartSensorClient(settings_file=settings_file, debug=debug) # Authenticate if not client.authenticate(): print('Authentication FAILED') return False # Print organization print('Organization {}, {}'.format(client.organization_id, client.organization_name)) print() # Get list of plants plants = client.get_plant_list() # Iterate the plant list and print all assets therein for plant in plants: print('Plant {}, {}:'.format(plant['plantID'], plant['plantName'])) print('Assets:') # Get list of assets assets = client.get_asset_list(organization_id=client.organization_id, plant_id=plant['plantID']) if len(assets) == 0: print('No assets in this plant') else: for asset in assets: asset_data = client.asset_get_asset_by_id( asset_id=asset['assetID']) print('Latest measurements of Asset {}, {}:'.format( asset['assetID'], asset['assetName'])) if asset_data is None: # If there is an error, skip to the next asset continue # Iterate all the measurements available and print them for m in asset_data['measurements']: # Print measurements that contain values if m['measurementValue'] is not None: print( ' ' + m['measurementTypeName'].ljust(37) + ':', m['measurementValue'], '(' + m['timeStamp'] + ')') print() print() return True
def run_task(settings_file=DEFAULT_SETTINGS_FILE, debug: bool = False) -> bool: # Create the client instance client = SmartSensorClient(settings_file=settings_file, debug=debug) # Authenticate if not client.authenticate(): print('Authentication FAILED') return False # Print organization print('Organization {}, {}'.format(client.organization_id, client.organization_name)) print() # Ask users for their input: print('Please enter your query parameters:') asset_id = input('Asset ID: ') # Print possible measurement types for this asset possible_measurement_types = client.get_measurement_types(asset_id=asset_id) for x in possible_measurement_types: print(str(x['measurementTypeName']) + ' -> ' + str(x['measurementTypeID'])) measurement_type = input('Measurement type (find possible IDs in list above, separated by commas): ') start_date = input('Start date (YYYY-MM-DD): ') end_date = input('End date (YYYY-MM-DD): ') # Get the measurement data during this time measurements = client.get_measurement_value(asset_id=asset_id, measurement_type=measurement_type, start_time=start_date, end_time=end_date) # Check if measurement is present and then plot the data in subplots fig, axs = plt.subplots(len(measurements)) for index, measurement in enumerate(measurements): if measurement['measurements'][0]['measurementValue'] is not None: # get values and timestamps into a list values_to_plot = [[dateutil.parser.parse(v['measurementCreated']), float(v['measurementValue'])] for v in measurement['measurements'] ] # sort values by timestamp values_to_plot.sort(key=lambda v: v[0]) # store a separate timestamp and value list measurement_timestamp = [v[0] for v in values_to_plot] measurement_values = [v[1] for v in values_to_plot] # Add data to the subplots and add a title to each subplot if len(measurements) == 1: axs.plot(measurement_timestamp, measurement_values) axs.set_title(measurement['measurementTypeName']) else: axs[index].plot(measurement_timestamp, measurement_values) axs[index].set_title(measurement['measurementTypeName']) else: # if no measurements were found for this type, print an error message print('No measurements for measurement type ' + str( measurement['measurementTypeName']) + ' could be fetched.') axs[index].set_title(measurement['measurementTypeName']) # Display plot plt.show() return True