84 lines
2.2 KiB
Python
84 lines
2.2 KiB
Python
import json
|
|
import requests
|
|
|
|
class DataBuffer:
|
|
def __init__(self, url):
|
|
self.url = url
|
|
|
|
def get_response(self, response, is_json=True):
|
|
if response.status_code != 200:
|
|
raise Exception(response.text)
|
|
return json.loads(response.text) if is_json else response.text
|
|
|
|
def get_binary_response(self, response):
|
|
if response.status_code != 200:
|
|
raise Exception(response.text)
|
|
return response.raw.read()
|
|
|
|
def get_data(self, req):
|
|
return self.get_response(requests.post(url=self.url+"/query", json=req))
|
|
|
|
def get_channels(self):
|
|
data = {
|
|
"regex":"DWSC090",
|
|
"backends":[
|
|
"sf-databuffer"
|
|
],
|
|
"ordering":"asc",
|
|
"reload":True
|
|
}
|
|
print self.url+"/channels"
|
|
return self.get_response(requests.post(url=self.url+"/channels", json=data))
|
|
|
|
|
|
|
|
req = {
|
|
"channels":[
|
|
"S10BC01-DBLM065:B1_LOSS"
|
|
],
|
|
"range":{
|
|
#"startPulseId":23251652441,
|
|
#"endPulseId":23251653739,
|
|
|
|
"startDate":"2025-01-21T16:20:00.000",
|
|
"startInclusive":True,
|
|
"startExpansion":False,
|
|
"endDate":"2025-01-21T16:20:01.000",
|
|
"endInclusive":True,
|
|
"endExpansion":False
|
|
|
|
|
|
},
|
|
"ordering":"asc",
|
|
"configFields":[
|
|
"globalDate",
|
|
"type"
|
|
],
|
|
"eventFields":[
|
|
"pulseId",
|
|
"globalDate",
|
|
"value"
|
|
],
|
|
"aggregation":{
|
|
"aggregationType":"value",
|
|
"aggregations":[
|
|
"min",
|
|
"mean",
|
|
"max"
|
|
],
|
|
"nrOfBins":20
|
|
},
|
|
"response":{
|
|
"format":"json",
|
|
"compression":"none",
|
|
},
|
|
"mapping":{
|
|
"incomplete":"provide-as-is"
|
|
}
|
|
}
|
|
|
|
db = DataBuffer ("http://data-api.psi.ch/sf-databuffer")
|
|
#c = db.get_channels()
|
|
ret = db.get_data(req)
|
|
print ret
|
|
plot([d[0]['value']['mean'] for d in ret['data']], xdata=[d[0]['pulseId'] for d in ret['data']]) |