updated excel spreadsheet

This commit is contained in:
Nico Melone
2025-03-13 15:59:53 -05:00
parent 113f1fb405
commit cbdbccc699
6 changed files with 61 additions and 22 deletions

View File

@@ -5,7 +5,7 @@ codeuri = "/Users/nico/Documents/GitHub/ThingsBoard/EKKO Reports/thunderbirdfs-d
runtime = "python3.9"
architecture = "x86_64"
handler = "thunderbirdfsreport.lambda_handler"
source_hash = "93b500c168f513a7a25cab048f85e186f10d9e9cd5e16384ba4c71c272648df0"
source_hash = "88b16cd7e5de563582281a46aab2ae8c8f286034857022c8856d0366eb522475"
manifest_hash = ""
packagetype = "Zip"
functions = ["ThunderbirdFSReport"]

View File

@@ -0,0 +1,31 @@
# thunderbirdfsreport/tests/test_thunderbirdfsreport.py (24-30)
import unittest
from unittest.mock import MagicMock
from thunderbirdfsreport import getDevices
from tb_rest_client.rest_client_ce import Customer, CustomerId, PageDataCustomer, PageDataDevice
class TestGetDevices(unittest.TestCase):
def setUp(self):
self.rest_client = MagicMock()
customer1Id = CustomerId(id="cid1",entity_type="CUSTOMER")
customer2Id = CustomerId(id="cid2",entity_type="CUSTOMER")
self.customer1 = Customer(id=customer1Id, name='customer1', title="customer1")
self.target_customer = Customer(id=customer2Id, name='target_customer', title="customer2")
self.customers = PageDataCustomer(data=[self.customer1, self.target_customer])
def test_get_devices_found_customer(self):
self.rest_client.get_customer_devices.return_value = {'devices': []}
devices = getDevices(self.rest_client, self.customers, 'target_customer')
self.assertEqual(devices, {"devices": []})
self.rest_client.get_customer_devices.assert_called_once_with(customer_id='cid2', page_size=500, page=0)
def test_get_devices_not_found_customer(self):
self.rest_client.get_customer_devices.return_value = {'devices': []}
devices = getDevices(self.rest_client, self.customers, 'non_target_customer')
self.assertEqual(devices, PageDataDevice())
self.assertFalse(self.rest_client.get_customer_devices.called)
if __name__ == '__main__':
unittest.main()

View File

@@ -1,4 +1,3 @@
import json
import logging, boto3, pytz, os, shutil
from openpyxl.utils.datetime import to_excel
import pandas as pd
@@ -23,11 +22,18 @@ url = "https://www.enxlekkocloud.com" #"https://hp.henrypump.cloud"
def getDevices(rest_client, customers,target_customer, page=0, pageSize=500):
for c in customers.data:
if c.name == target_customer:
cid = c.id.id
devices = rest_client.get_customer_devices(customer_id=cid, page_size=pageSize, page=page)
return devices #.to_dict()
try:
cid = ""
for c in customers.data:
if c.name == target_customer:
cid = c.id.id
devices = rest_client.get_customer_devices(customer_id=cid, page_size=pageSize, page=page)
return devices #.to_dict()
return PageDataDevice()
except Exception as e:
logging.error(f"Error occured in getDevices: {e}")
return PageDataDevice()
def getDeviceKeys(rest_client, devices,target_device):
@@ -94,15 +100,17 @@ def getThingsBoardData(url, username, password, targetCustomer, timeRequest):
customers = rest_client.get_customers(page_size="500", page="0")
devices = getDevices(rest_client=rest_client, customers=customers, target_customer=targetCustomer)
telemetry = {}
for d in devices.data:
#print(d.name)
device, keys, err = getDeviceKeys(rest_client=rest_client, devices=devices, target_device=d.name)
start_ts, end_ts = getTime(timeRequest)
#print(keys)
telemetry[d.name] = getTelemetry(rest_client=rest_client, device=device, keys=','.join(keys), start_ts=start_ts, end_ts=end_ts, limit=25000)
latest = getLatestTelemetry(rest_client=rest_client, device=device, keys="manual_well,manual_tfs_lead,manual_copa_lead,manual_job_name")
telemetry[d.name].update(latest)
return telemetry
if devices.data:
for d in devices.data:
#print(d.name)
device, keys, err = getDeviceKeys(rest_client=rest_client, devices=devices, target_device=d.name)
start_ts, end_ts = getTime(timeRequest)
#print(keys)
telemetry[d.name] = getTelemetry(rest_client=rest_client, device=device, keys=','.join(keys), start_ts=start_ts, end_ts=end_ts, limit=25000)
latest = getLatestTelemetry(rest_client=rest_client, device=device, keys="manual_well,manual_tfs_lead,manual_copa_lead,manual_job_name")
telemetry[d.name].update(latest)
return telemetry
return {}
except ApiException as e:
logging.error(e)
return False
@@ -119,7 +127,7 @@ def getMaxWidth():
"Inlet Ph Temp": "INLET PH TEMP",
"Ait 102b H2s": "INLET H₂S",
"At 109b H2s": "OUTLET H₂S",
"At 109c Oil In Water": "OUTLET OIL IN WATER",
"Coriolis Density": "OUTLET OIL IN WATER",
"Ait 102a Turbitity": "INLET TURBIDITY",
"At 109a Turbidity": "OUTLET TURBIDITY",
"At 109e Orp": "OUTLET ORP"
@@ -149,7 +157,7 @@ def formatColumnName(telemetryName):
"Ait 102a Turbitity": "INLET TURBIDITY",
"At 109a Turbidity": "OUTLET TURBIDITY",
"At 109e Orp": "OUTLET ORP",
"Ait 102d Oil In Water": "INLET DENSITY",
"Coriolis Density": "INLET DENSITY",
"Fit 106b Flow Rate": "SKIM FLOW RATE",
"Manual Sample Time": "manual_sample_time",
"Outlet Ph": "Outlet Ph"
@@ -309,7 +317,7 @@ def lambda_handler(event, context):
)
reportsheet = writer.book.worksheets[0]
keys = ['ait_102a_turbitity','ait_102b_h2s', 'at_109a_turbidity', 'at_109b_h2s', 'at_109c_oil_in_water', 'at_109e_orp', 'fit_100_flow_rate', 'fit_109b_flow_rate', 'lit_116b_level', 'lit_116a_level', 'outlet_turbidity_temp', 'outlet_orp_temp', 'inlet_turbidity_temp', 'inlet_ph_temp', 'ait_102d_oil_in_water','outlet_ph','fit_106b_flow_rate']
keys = ['ait_102a_turbitity','ait_102b_h2s', 'at_109a_turbidity', 'at_109b_h2s', 'at_109c_oil_in_water', 'at_109e_orp', 'fit_100_flow_rate', 'fit_109b_flow_rate', 'lit_116b_level', 'lit_116a_level', 'outlet_turbidity_temp', 'outlet_orp_temp', 'inlet_turbidity_temp', 'inlet_ph_temp', 'coriolis_density','outlet_ph','fit_106b_flow_rate']
manual_keys = ['manual_bag_filter_changes', 'manual_cartridge_filter_changes', 'manual_clean_water_sold_per_job', 'manual_coagulant_on_hand', 'manual_diverted_water_time', 'manual_equipment_description', 'manual_equipment_time', 'manual_h202_on_hand', 'manual_issues_concerns', 'manual_next_pigging_scheduled', 'manual_skim_oil_discharged_per_job', 'manual_standby_time', 'manual_unit_uptime', 'manual_upright_tank_issues', 'manual_vac_truck_batches', 'manual_water_events', 'manual_water_events_time', 'manual_water_to_tanks_time',"manual_well", "manual_tfs_lead", "manual_copa_lead", "manual_job_name", "manual_summary", "manual_hse_spills", "manual_quality_issues"]
sample_keys = ['manual_sample_datapoint', 'manual_sample_lab', 'manual_sample_location', 'manual_sample_time', 'manual_sample_value']
#Create a Sheet for each Device

View File

@@ -127,7 +127,7 @@ def getMaxWidth():
"Inlet Ph Temp": "INLET PH TEMP",
"Ait 102b H2s": "INLET H₂S",
"At 109b H2s": "OUTLET H₂S",
"At 109c Oil In Water": "OUTLET OIL IN WATER",
"Coriolis Density": "OUTLET OIL IN WATER",
"Ait 102a Turbitity": "INLET TURBIDITY",
"At 109a Turbidity": "OUTLET TURBIDITY",
"At 109e Orp": "OUTLET ORP"
@@ -157,7 +157,7 @@ def formatColumnName(telemetryName):
"Ait 102a Turbitity": "INLET TURBIDITY",
"At 109a Turbidity": "OUTLET TURBIDITY",
"At 109e Orp": "OUTLET ORP",
"Ait 102d Oil In Water": "INLET DENSITY",
"Coriolis Density": "INLET DENSITY",
"Fit 106b Flow Rate": "SKIM FLOW RATE",
"Manual Sample Time": "manual_sample_time",
"Outlet Ph": "Outlet Ph"
@@ -317,7 +317,7 @@ def lambda_handler(event, context):
)
reportsheet = writer.book.worksheets[0]
keys = ['ait_102a_turbitity','ait_102b_h2s', 'at_109a_turbidity', 'at_109b_h2s', 'at_109c_oil_in_water', 'at_109e_orp', 'fit_100_flow_rate', 'fit_109b_flow_rate', 'lit_116b_level', 'lit_116a_level', 'outlet_turbidity_temp', 'outlet_orp_temp', 'inlet_turbidity_temp', 'inlet_ph_temp', 'ait_102d_oil_in_water','outlet_ph','fit_106b_flow_rate']
keys = ['ait_102a_turbitity','ait_102b_h2s', 'at_109a_turbidity', 'at_109b_h2s', 'at_109c_oil_in_water', 'at_109e_orp', 'fit_100_flow_rate', 'fit_109b_flow_rate', 'lit_116b_level', 'lit_116a_level', 'outlet_turbidity_temp', 'outlet_orp_temp', 'inlet_turbidity_temp', 'inlet_ph_temp', 'coriolis_density','outlet_ph','fit_106b_flow_rate']
manual_keys = ['manual_bag_filter_changes', 'manual_cartridge_filter_changes', 'manual_clean_water_sold_per_job', 'manual_coagulant_on_hand', 'manual_diverted_water_time', 'manual_equipment_description', 'manual_equipment_time', 'manual_h202_on_hand', 'manual_issues_concerns', 'manual_next_pigging_scheduled', 'manual_skim_oil_discharged_per_job', 'manual_standby_time', 'manual_unit_uptime', 'manual_upright_tank_issues', 'manual_vac_truck_batches', 'manual_water_events', 'manual_water_events_time', 'manual_water_to_tanks_time',"manual_well", "manual_tfs_lead", "manual_copa_lead", "manual_job_name", "manual_summary", "manual_hse_spills", "manual_quality_issues"]
sample_keys = ['manual_sample_datapoint', 'manual_sample_lab', 'manual_sample_location', 'manual_sample_time', 'manual_sample_value']
#Create a Sheet for each Device