import config import datetime import time from webAPI import EdsWebApi #Сценарий для получения всех периодов когда точка была сработана (с опредлением длительности) web = EdsWebApi() web.connect() web.logger.debug('lalalala') ds = datetime.datetime(2020, 2, 3) de = datetime.datetime(2020, 2, 7) #tag='25VT_EA5010DM-103.UNIT0@SCADA' def getData(tag, tagVal): print(tag) web.initOut(tag) dt = ds dt1 = ds dt2 = ds data = [] #определяем значение точки в начале интервала) valStart = web.getVal(ds, tag) web.outString(tag, 'Включение;Отключение;Работа;уровень') print(valStart) if (valStart > 0 ): #Если точка сработана, то определяем сначала, когда она стала 0 dt1 = ds dt2 = web.getDateChange(dt1, de, tag, 'F_INTOUNDER_DT', [0.5])
import config import datetime import time from webAPI import EdsWebApi def getBitVal(val, bit): s = bin(val) if (len(s) - 2) > bit: b = int(s[-bit - 1]) return b == 1 return False web = EdsWebApi() web.connect() web.logger.debug('lalalala') ds = datetime.datetime(2018, 10, 1) de = datetime.datetime(2018, 10, 18) tag = '07VT_AM01P-47.MCR@GRARM' tag = '07VT_AM03P-01.MCR@GRARM' bit = 14 dt = ds data = [] val = web.getVal(ds, tag) bitVal = getBitVal(val, bit) #val=0.1 #bitVal=False onDT = None
import config import datetime import time from webAPI import EdsWebApi #Скрипт для определения всех изменений бита пакетной точки за заданный интервал web=EdsWebApi() web.connect() web.logger.debug('lalalala') ds=datetime.datetime(2019,3,1) de=datetime.datetime(2019,4,25) #tag='62VT_UB1B8T-FP.UNIT0@SCADA:B1' tag='72VT_SP03SP-005.UNIT0@SCADA' bit=3 dt=ds data=[] val=web.getVal(ds,tag)#Получаем значение точки bitVal=web.getBitVal(val,bit)#Получаем значения бита print(bitVal) #val=0.1 #bitVal=True onDT=None offDT=None if bitVal:#Если бит взведен, то инициализируем значение точки onDT onDT=ds
import config import datetime import time from webAPI import EdsWebApi #Простой сценарий для запуска получения аггрегированных данных массива точек с заданным шагом #Если диапазон очень большой может иметь смысл раздробить интервал на подзапросы и выполнить их в цикле web = EdsWebApi() web.connect() web.logger.debug('lalalala') ds = datetime.datetime(2019, 4, 1, 0, 0) de = datetime.datetime(2019, 5, 1, 0, 0) #Массив точек для анализа tags = {'11VT_GP00AP-125.MCR@GRARM', '10VT_GC00A-105.UNIT09@BLOCK5'} #tags={'61VT_UB16D-206.UNIT0@SCADA' } #ID запроса reqId = None items = [] for tag in tags: item = { 'function': 'VALUE', #Функция аггрегации (минимум, максимум, среднее) см документацию 'pointId': { 'iess': tag } } items.append(item)
import config import datetime import time from webAPI import EdsWebApi #Простой сценарий для запуска получения аггрегированных данных массива точек с заданным шагом #Если диапазон очень большой может иметь смысл раздробить интервал на подзапросы и выполнить их в цикле web = EdsWebApi() web.connect() web.logger.debug('lalalala') ds = datetime.datetime(2019, 4, 25, 10, 21) de = datetime.datetime(2019, 4, 25, 10, 23) #Массив точек для анализа tags = {'02VT_TC03A-011.UNIT01@BLOCK1', '07VT_TC01A-06.MCR@GRARM'} #tags={'61VT_UB16D-206.UNIT0@SCADA' } #ID запроса reqId = None items = [] for tag in tags: item = { 'function': 'VALUE', #Функция аггрегации (минимум, максимум, среднее) см документацию 'pointId': { 'iess': tag } } items.append(item)
import config import datetime import time from webAPI import EdsWebApi web=EdsWebApi() web.connect() web.logger.debug('lalalala') ds=datetime.datetime(2018,10,1,0,0) de=datetime.datetime(2018,10,23,0,0) #tags={'07VT_LP01AO-03.MCR@GRARM','07VT_TW00AI-05.MCR@GRARM','04VT_AM01P-47.MCR@GRARM' } tagF='07VT_EX01SD-15.MCR@GRARM' tagS='07VT_AM03P-01.MCR@GRARM' bit=14 reqId=None items=[] item={ 'function':'AVG', 'pointId':{ 'iess':tagF } } items.append(item) item={ 'function':'MIN_VALUE', 'pointId':{
import config import datetime import time from webAPI import EdsWebApi web = EdsWebApi() web.connect() web.logger.debug('lalalala') ds = datetime.datetime(2017, 9, 1) de = datetime.datetime(2018, 11, 27) tag = '04VT_AC31D-22.MCR@GRARM' dt = ds data = [] while dt < de: dt1 = web.getDateChange(dt, de, tag, 'F_INTOOVER_DT', [0.9]) if dt1 < de: dt2 = web.getDateChange(dt1, de, tag, 'F_INTOUNDER_DT', [0.1]) len = dt2.timestamp() - dt1.timestamp() record = {'start': dt1, 'end': dt2, 'len': len} data.append(record) web.out.info('{start} - {end}: {len}'.format(**record)) dt = dt2 else: break
import config import datetime import time from webAPI import EdsWebApi web=EdsWebApi() web.connect() web.logger.debug('lalalala') ds=datetime.datetime(2018,10,15,10,21) de=datetime.datetime(2018,10,15,10,23) #tags={'07VT_LP01AO-03.MCR@GRARM','07VT_TW00AI-05.MCR@GRARM','04VT_AM01P-47.MCR@GRARM' } tags={'61VT_UB16D-206.UNIT0@SCADA' } reqId=None items=[] for tag in tags: item={ 'function':'VALUE', 'pointId':{ 'iess':tag } } items.append(item) request=web.createRequest(ds,de,1,items)