import epmwebapi as epm
import datetime as dt
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from datetime import datetime
sns.set(style="whitegrid")
%matplotlib inline
import os
credentials = os.environ.get('user_and_password_dili').split(';')
user = credentials[0]
password = credentials[1]
#cria conexao
epmConn = epm.EpmConnection('http://dili:44333', 'http://dili:44332', user, password)
path = 'ADM_Temperature'
#3 porque dados estão em UTC no server
iniTime = dt.datetime(2018, 9, 24, 3, 0, 0, 0)
endTime = iniTime + dt.timedelta(days=5)
processInterval = dt.timedelta(minutes=10)
queryPeriod = epm.QueryPeriod(iniTime, endTime)
aggTimeAvgDetails = epm.AggregateDetails(processInterval, epm.AggregateType.TimeAverage)
bv = epmConn.getDataObjects(path)
result= bv[path].historyReadAggregate(aggTimeAvgDetails, queryPeriod)
epmConn.close()
type(result)
result[0:5]
new_Quality = result[:]['Quality'].byteswap().newbyteorder()
new_Timestamp = result[:]['Timestamp']
new_Value = result[:]['Value'].byteswap().newbyteorder()
d = {'Value':new_Value, 'Timestamp':new_Timestamp, 'Quality':new_Quality}
df_ADM_Temperature = pd.DataFrame(d)
type(df_ADM_Temperature)
df_ADM_Temperature.shape
df_ADM_Temperature.head()
df_ADM_Temperature['Timestamp'] = df_ADM_Temperature['Timestamp'].dt.tz_convert('America/Sao_Paulo')
df_ADM_Temperature.head()
df_ADM_Temperature.tail()
df_ADM_Temperature.describe()
df_ADM_Temperature.dtypes
df_ADM_Temperature.describe(include='all')
#dot notation x colchetes
fig, ax = plt.subplots(figsize=(16,9))
df_ADM_Temperature.Value.plot()
df_ADM_Temperature['Value'].mean()
index_max = df_ADM_Temperature.Value.idxmax()
index_max
temp_max = df_ADM_Temperature.Value[index_max]
temp_max
timestamp_max = df_ADM_Temperature.Timestamp[index_max]
timestamp_max
index_min = df_ADM_Temperature.Value.idxmin()
index_min
temp_min = df_ADM_Temperature.Value[index_min]
temp_min
timestamp_min = df_ADM_Temperature.Timestamp[index_min]
timestamp_min
anomalia1_timestamp = df_ADM_Temperature.Timestamp[60]
anomalia1_temp = df_ADM_Temperature.Value[60]
#set a paleta de cores
plt.style.use('seaborn')
fig, ax = plt.subplots(figsize=(16,9))
#configura eixo Y com os valores da Temperatura e o eixo X com os valores de Timestamp
ax.plot(df_ADM_Temperature.Timestamp, df_ADM_Temperature.Value, ls='-', lw=2, label='Temperatura')
ax.set_ylabel('Temperatura °C', color='white', fontsize = 20, horizontalalignment='center')
ax.set_title("Temperatura Semanal", fontsize=25,color='white')
ax.legend(loc='upper left')
ax.annotate('MÃnima \n %.2f°'%temp_min,
(timestamp_min, temp_min),
xytext=(-70, 50),
textcoords='offset points',
arrowprops=dict(facecolor='black', shrink=0.05),
size=16,
color='Black'
)
ax.annotate('Máxima \n %.2fº'%temp_max,
(timestamp_max, temp_max),
xytext=(-100, -70),
textcoords='offset points',
#arrowprops=dict(arrowstyle='-|>', color='black'),
arrowprops=dict(facecolor='black', shrink=0.05),
size=16,
color='Black'
)
ax.annotate('Anomalia Investigar!',
(anomalia1_timestamp, anomalia1_temp),
xytext=(-70, 50),
textcoords='offset points',
arrowprops=dict(facecolor='black', shrink=0.05),
size=16,
color='Black'
)
plt.xticks(rotation=30, color='white')
plt.yticks(color='white')
fig.patch.set_facecolor('#37474F')
fig.patch.set_edgecolor('#607d8b')
plt.show()
plt.clf()
from io import BytesIO
import mimetypes
import time
#cria conexao
epmConn = epm.EpmConnection('http://localhost:44333', 'http://localhost:44332', 'sa', 'Elipse21')
sio = BytesIO()
fig.savefig(sio, format="png", facecolor='#37474F')
epResourceManager = epmConn.getPortalResourcesManager()
reportPath = epResourceManager.getResource(u'webinar')
resource = reportPath.upload('chart_current.png', sio,
'Figura enviada jupyter.',
mimetypes.types_map['.png'], overrideFile=True)
path = 'update_img'
bv = epmConn.getDataObjects(path)
wResult = bv[path].write(0, datetime.now(), 0 )
time.sleep(2)
wResult = bv[path].write(1, datetime.now(), 0 )
epmConn.close()