Skip to content

Sensor data querying scripts

manuelbcr edited this page Nov 23, 2023 · 1 revision

using client credentials

import json
import pandas as pd
import requests
from oauthlib.oauth2 import LegacyApplicationClient
from requests_oauthlib import OAuth2Session

client_id = 'client_id'
client_secret = 'clien_secret'
token_url = 'host/ws/oauth2/token'
api_url = 'host/ws/download'
sensors_url = 'host/ws/api/sensors'

def get_sensor_data(sensor_name, start, end):
    
    data = {}
    payload = {
        'grant_type' : 'client_credentials',
        'client_id': client_id,
        'client_secret': client_secret
    }

    response = requests.post(token_url, data=payload)
    if response.status_code == 200:
        access_token = response.json().get('access_token')
        if access_token:
            payload = {
                'from': start,
                'to': end,
                'size': 5000
            }
            headers = {'Authorization': f'Bearer {access_token}'}
            data = json.loads(requests.get(sensors_url + '/' + sensor_name + '/data', headers=headers, params=payload).text)

    return data


sensor_name = 'UIBK_DPP_IMU'
start = '2023-07-19'
end = '2023-07-20'

data = get_sensor_data(sensor_name, start, end)

if(data):
    names = []
    for field in data['properties']['fields']:
        names.append(field['name'])

    df = pd.DataFrame(data['properties']['values'])
    df.columns = names

using password authentication

import json
import pandas as pd
import requests
from oauthlib.oauth2 import LegacyApplicationClient
from requests_oauthlib import OAuth2Session


token_url = 'host:9000/ws/oauth2/token'
api_url = 'host:9000/ws/download'
sensors_url = 'host:9000/ws/api/sensors'
email= 'xy@mail.com'
password= 'password'


def get_sensor_data(sensor_name, start, end):
    
    data = {}
    payload = {
        'grant_type' : 'password',
        'client_id': client_id,
        'client_secret': client_secret,
        'username': email,
        'password': password,
    }

    response = requests.post(token_url, data=payload)
    if response.status_code == 200:
        access_token = response.json().get('access_token')
        if access_token:
            payload = {
                #'size': 500,
                #'orderBy': 'generation_time',
                'from': start,
                'to': end,
                #'fields': "generation_time,generation_time_microsec,timestamp,acc_y",
                #'timeline': "generation_time_microsec",
                #'filter': "seqnr < 56098,seqnr >56086, generation_time>1692343500032",
            }
            headers = {'Authorization': f'Bearer {access_token}'}
            data = json.loads(requests.get(sensors_url + '/' + sensor_name + '/data', headers=headers, params=payload).text)

    return data


sensor_name = 'UIBK_DPP_IMU'
start = '2023-08-30'
end = '2023-08-31'


data = get_sensor_data(sensor_name, start, end)
if(data):
    names = []
    for field in data['properties']['fields']:
        names.append(field['name'])

    df = pd.DataFrame(data['properties']['values'])
    df.columns = names

Clone this wiki locally