コード例 #1
0
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
コード例 #3
0
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
コード例 #5
0
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
コード例 #6
0
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
コード例 #8
0
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