Split into two different python packages.
This commit is contained in:
4
poc_scraper/CHANGES.md
Normal file
4
poc_scraper/CHANGES.md
Normal file
@@ -0,0 +1,4 @@
|
||||
0.0
|
||||
---
|
||||
|
||||
- Initial version.
|
||||
18
poc_scraper/README.md
Normal file
18
poc_scraper/README.md
Normal file
@@ -0,0 +1,18 @@
|
||||
# Modbus Register Map
|
||||
|
||||
## Coils
|
||||
|
||||
Reg. # | Description | Access |
|
||||
1 |
|
||||
|
||||
|
||||
# Installation
|
||||
|
||||
```
|
||||
sudo apt-get install python-dev libssl-dev
|
||||
pip install pymongo
|
||||
|
||||
|
||||
|
||||
|
||||
```
|
||||
16
poc_scraper/__init__.py
Normal file
16
poc_scraper/__init__.py
Normal file
@@ -0,0 +1,16 @@
|
||||
from plc_to_mongo import PLC_to_Mongo
|
||||
from os import getenv
|
||||
from sys import exit
|
||||
|
||||
PLC_IP_ADDRESS = getenv("PLC_IP_ADDRESS")
|
||||
if not PLC_IP_ADDRESS:
|
||||
exit("No PLC_IP_ADDRESS set in the environment variables")
|
||||
|
||||
|
||||
def main():
|
||||
scraper_thread = PLC_to_Mongo(PLC_IP_ADDRESS)
|
||||
scraper_thread.run()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
227
poc_scraper/analog.json
Normal file
227
poc_scraper/analog.json
Normal file
@@ -0,0 +1,227 @@
|
||||
[
|
||||
{"tag_name": "_Firmware_Rev", "register_type": "ir", "register_number": 1},
|
||||
{"tag_name": "_Program_Firmware", "register_type": "ir", "register_number": 2},
|
||||
{"tag_name": "Card_Past[1].Card_Type", "register_type": "ir", "register_number": 3},
|
||||
{"tag_name": "Card_Past[1].Downhole_AdjustedGrossStroke", "register_type": "ir", "register_number": 4},
|
||||
{"tag_name": "Card_Past[1].Downhole_FluidLoad", "register_type": "ir", "register_number": 6},
|
||||
{"tag_name": "Card_Past[1].Downhole_GrossStroke", "register_type": "ir", "register_number": 8},
|
||||
{"tag_name": "Card_Past[1].Downhole_Max_Load.Load", "register_type": "ir", "register_number": 10},
|
||||
{"tag_name": "Card_Past[1].Downhole_Max_Position.Position", "register_type": "ir", "register_number": 12},
|
||||
{"tag_name": "Card_Past[1].Downhole_Min_Load.Load", "register_type": "ir", "register_number": 14},
|
||||
{"tag_name": "Card_Past[1].Downhole_Min_Position.Position", "register_type": "ir", "register_number": 16},
|
||||
{"tag_name": "Card_Past[1].Downhole_NetStroke", "register_type": "ir", "register_number": 18},
|
||||
{"tag_name": "Card_Past[1].Fillage_Percent", "register_type": "ir", "register_number": 20},
|
||||
{"tag_name": "Card_Past[1].Fluid_Above_Pump", "register_type": "ir", "register_number": 22},
|
||||
{"tag_name": "Card_Past[1].Fluid_Moved", "register_type": "ir", "register_number": 24},
|
||||
{"tag_name": "Card_Past[1].ID", "register_type": "ir", "register_number": 26},
|
||||
{"tag_name": "Card_Past[1].Num_Points", "register_type": "ir", "register_number": 27},
|
||||
{"tag_name": "Card_Past[1].Polished_Rod_HP", "register_type": "ir", "register_number": 28},
|
||||
{"tag_name": "Card_Past[1].Pump_HP", "register_type": "ir", "register_number": 30},
|
||||
{"tag_name": "Card_Past[1].Pump_Intake_Pressure", "register_type": "ir", "register_number": 32},
|
||||
{"tag_name": "Card_Past[1].SPM", "register_type": "ir", "register_number": 34},
|
||||
{"tag_name": "Card_Past[1].Surface_Max.Load", "register_type": "ir", "register_number": 36},
|
||||
{"tag_name": "Card_Past[1].Surface_Max.Position", "register_type": "ir", "register_number": 38},
|
||||
{"tag_name": "Card_Past[1].Surface_Min.Load", "register_type": "ir", "register_number": 40},
|
||||
{"tag_name": "Card_Past[1].Surface_Min.Position", "register_type": "ir", "register_number": 42},
|
||||
{"tag_name": "Card_Past[1].Surface_StrokeLength", "register_type": "ir", "register_number": 44},
|
||||
{"tag_name": "Card_Past[1].Tubing_Movement", "register_type": "ir", "register_number": 46},
|
||||
{"tag_name": "Card_Past[2].Card_Type", "register_type": "ir", "register_number": 48},
|
||||
{"tag_name": "Card_Past[2].Downhole_AdjustedGrossStroke", "register_type": "ir", "register_number": 49},
|
||||
{"tag_name": "Card_Past[2].Downhole_FluidLoad", "register_type": "ir", "register_number": 51},
|
||||
{"tag_name": "Card_Past[2].Downhole_GrossStroke", "register_type": "ir", "register_number": 53},
|
||||
{"tag_name": "Card_Past[2].Downhole_Max_Load.Load", "register_type": "ir", "register_number": 55},
|
||||
{"tag_name": "Card_Past[2].Downhole_Max_Position.Position", "register_type": "ir", "register_number": 57},
|
||||
{"tag_name": "Card_Past[2].Downhole_Min_Load.Load", "register_type": "ir", "register_number": 59},
|
||||
{"tag_name": "Card_Past[2].Downhole_Min_Position.Position", "register_type": "ir", "register_number": 61},
|
||||
{"tag_name": "Card_Past[2].Downhole_NetStroke", "register_type": "ir", "register_number": 63},
|
||||
{"tag_name": "Card_Past[2].Fillage_Percent", "register_type": "ir", "register_number": 65},
|
||||
{"tag_name": "Card_Past[2].Fluid_Above_Pump", "register_type": "ir", "register_number": 67},
|
||||
{"tag_name": "Card_Past[2].Fluid_Moved", "register_type": "ir", "register_number": 69},
|
||||
{"tag_name": "Card_Past[2].ID", "register_type": "ir", "register_number": 71},
|
||||
{"tag_name": "Card_Past[2].Num_Points", "register_type": "ir", "register_number": 72},
|
||||
{"tag_name": "Card_Past[2].Polished_Rod_HP", "register_type": "ir", "register_number": 73},
|
||||
{"tag_name": "Card_Past[2].Pump_HP", "register_type": "ir", "register_number": 75},
|
||||
{"tag_name": "Card_Past[2].Pump_Intake_Pressure", "register_type": "ir", "register_number": 77},
|
||||
{"tag_name": "Card_Past[2].SPM", "register_type": "ir", "register_number": 79},
|
||||
{"tag_name": "Card_Past[2].Surface_Max.Load", "register_type": "ir", "register_number": 81},
|
||||
{"tag_name": "Card_Past[2].Surface_Max.Position", "register_type": "ir", "register_number": 83},
|
||||
{"tag_name": "Card_Past[2].Surface_Min.Load", "register_type": "ir", "register_number": 85},
|
||||
{"tag_name": "Card_Past[2].Surface_Min.Position", "register_type": "ir", "register_number": 87},
|
||||
{"tag_name": "Card_Past[2].Surface_StrokeLength", "register_type": "ir", "register_number": 89},
|
||||
{"tag_name": "Card_Past[2].Tubing_Movement", "register_type": "ir", "register_number": 91},
|
||||
{"tag_name": "Card_Past[3].Card_Type", "register_type": "ir", "register_number": 93},
|
||||
{"tag_name": "Card_Past[3].Downhole_AdjustedGrossStroke", "register_type": "ir", "register_number": 94},
|
||||
{"tag_name": "Card_Past[3].Downhole_FluidLoad", "register_type": "ir", "register_number": 96},
|
||||
{"tag_name": "Card_Past[3].Downhole_GrossStroke", "register_type": "ir", "register_number": 98},
|
||||
{"tag_name": "Card_Past[3].Downhole_Max_Load.Load", "register_type": "ir", "register_number": 100},
|
||||
{"tag_name": "Card_Past[3].Downhole_Max_Position.Position", "register_type": "ir", "register_number": 102},
|
||||
{"tag_name": "Card_Past[3].Downhole_Min_Load.Load", "register_type": "ir", "register_number": 104},
|
||||
{"tag_name": "Card_Past[3].Downhole_Min_Position.Position", "register_type": "ir", "register_number": 106},
|
||||
{"tag_name": "Card_Past[3].Downhole_NetStroke", "register_type": "ir", "register_number": 108},
|
||||
{"tag_name": "Card_Past[3].Fillage_Percent", "register_type": "ir", "register_number": 110},
|
||||
{"tag_name": "Card_Past[3].Fluid_Above_Pump", "register_type": "ir", "register_number": 112},
|
||||
{"tag_name": "Card_Past[3].Fluid_Moved", "register_type": "ir", "register_number": 114},
|
||||
{"tag_name": "Card_Past[3].ID", "register_type": "ir", "register_number": 116},
|
||||
{"tag_name": "Card_Past[3].Num_Points", "register_type": "ir", "register_number": 117},
|
||||
{"tag_name": "Card_Past[3].Polished_Rod_HP", "register_type": "ir", "register_number": 118},
|
||||
{"tag_name": "Card_Past[3].Pump_HP", "register_type": "ir", "register_number": 120},
|
||||
{"tag_name": "Card_Past[3].Pump_Intake_Pressure", "register_type": "ir", "register_number": 122},
|
||||
{"tag_name": "Card_Past[3].SPM", "register_type": "ir", "register_number": 124},
|
||||
{"tag_name": "Card_Past[3].Surface_Max.Load", "register_type": "ir", "register_number": 126},
|
||||
{"tag_name": "Card_Past[3].Surface_Max.Position", "register_type": "ir", "register_number": 128},
|
||||
{"tag_name": "Card_Past[3].Surface_Min.Load", "register_type": "ir", "register_number": 130},
|
||||
{"tag_name": "Card_Past[3].Surface_Min.Position", "register_type": "ir", "register_number": 132},
|
||||
{"tag_name": "Card_Past[3].Surface_StrokeLength", "register_type": "ir", "register_number": 134},
|
||||
{"tag_name": "Card_Past[3].Tubing_Movement", "register_type": "ir", "register_number": 136},
|
||||
{"tag_name": "Card_Past[4].Card_Type", "register_type": "ir", "register_number": 138},
|
||||
{"tag_name": "Card_Past[4].Downhole_AdjustedGrossStroke", "register_type": "ir", "register_number": 139},
|
||||
{"tag_name": "Card_Past[4].Downhole_FluidLoad", "register_type": "ir", "register_number": 141},
|
||||
{"tag_name": "Card_Past[4].Downhole_GrossStroke", "register_type": "ir", "register_number": 143},
|
||||
{"tag_name": "Card_Past[4].Downhole_Max_Load.Load", "register_type": "ir", "register_number": 145},
|
||||
{"tag_name": "Card_Past[4].Downhole_Max_Position.Position", "register_type": "ir", "register_number": 147},
|
||||
{"tag_name": "Card_Past[4].Downhole_Min_Load.Load", "register_type": "ir", "register_number": 149},
|
||||
{"tag_name": "Card_Past[4].Downhole_Min_Position.Position", "register_type": "ir", "register_number": 151},
|
||||
{"tag_name": "Card_Past[4].Downhole_NetStroke", "register_type": "ir", "register_number": 153},
|
||||
{"tag_name": "Card_Past[4].Fillage_Percent", "register_type": "ir", "register_number": 155},
|
||||
{"tag_name": "Card_Past[4].Fluid_Above_Pump", "register_type": "ir", "register_number": 157},
|
||||
{"tag_name": "Card_Past[4].Fluid_Moved", "register_type": "ir", "register_number": 159},
|
||||
{"tag_name": "Card_Past[4].ID", "register_type": "ir", "register_number": 161},
|
||||
{"tag_name": "Card_Past[4].Num_Points", "register_type": "ir", "register_number": 162},
|
||||
{"tag_name": "Card_Past[4].Polished_Rod_HP", "register_type": "ir", "register_number": 163},
|
||||
{"tag_name": "Card_Past[4].Pump_HP", "register_type": "ir", "register_number": 165},
|
||||
{"tag_name": "Card_Past[4].Pump_Intake_Pressure", "register_type": "ir", "register_number": 167},
|
||||
{"tag_name": "Card_Past[4].SPM", "register_type": "ir", "register_number": 169},
|
||||
{"tag_name": "Card_Past[4].Surface_Max.Load", "register_type": "ir", "register_number": 171},
|
||||
{"tag_name": "Card_Past[4].Surface_Max.Position", "register_type": "ir", "register_number": 173},
|
||||
{"tag_name": "Card_Past[4].Surface_Min.Load", "register_type": "ir", "register_number": 175},
|
||||
{"tag_name": "Card_Past[4].Surface_Min.Position", "register_type": "ir", "register_number": 177},
|
||||
{"tag_name": "Card_Past[4].Surface_StrokeLength", "register_type": "ir", "register_number": 179},
|
||||
{"tag_name": "Card_Past[4].Tubing_Movement", "register_type": "ir", "register_number": 181},
|
||||
{"tag_name": "Drive_Speed_Reference_SP", "register_type": "ir", "register_number": 183},
|
||||
{"tag_name": "Drive_Torque_Percent", "register_type": "ir", "register_number": 185},
|
||||
{"tag_name": "GAUGEOFF_Average_SPM", "register_type": "ir", "register_number": 187},
|
||||
{"tag_name": "GAUGEOFF_Downhole_GrossStroke", "register_type": "ir", "register_number": 189},
|
||||
{"tag_name": "GAUGEOFF_Downhole_NetStroke", "register_type": "ir", "register_number": 191},
|
||||
{"tag_name": "GAUGEOFF_Electricity_Cost", "register_type": "ir", "register_number": 193},
|
||||
{"tag_name": "GAUGEOFF_Fluid_Above_Pump", "register_type": "ir", "register_number": 195},
|
||||
{"tag_name": "GAUGEOFF_Inflow_Rate", "register_type": "ir", "register_number": 197},
|
||||
{"tag_name": "GAUGEOFF_kWh", "register_type": "ir", "register_number": 199},
|
||||
{"tag_name": "GAUGEOFF_kWh_Regen", "register_type": "ir", "register_number": 201},
|
||||
{"tag_name": "GAUGEOFF_Lifting_Cost", "register_type": "ir", "register_number": 203},
|
||||
{"tag_name": "GAUGEOFF_Max_Load", "register_type": "ir", "register_number": 205},
|
||||
{"tag_name": "GAUGEOFF_Min_Load", "register_type": "ir", "register_number": 207},
|
||||
{"tag_name": "GAUGEOFF_Percent_Run", "register_type": "ir", "register_number": 209},
|
||||
{"tag_name": "GAUGEOFF_Polished_Rod_HP", "register_type": "ir", "register_number": 211},
|
||||
{"tag_name": "GAUGEOFF_Pump_Intake_Pressure", "register_type": "ir", "register_number": 213},
|
||||
{"tag_name": "GAUGEOFF_Surface_StrokeLength", "register_type": "ir", "register_number": 215},
|
||||
{"tag_name": "GAUGEOFF_Production_Calculated", "register_type": "ir", "register_number": 217},
|
||||
{"tag_name": "GAUGEOFF_Tubing_Movement", "register_type": "ir", "register_number": 219},
|
||||
{"tag_name": "Gearbox_Loading", "register_type": "ir", "register_number": 221},
|
||||
{"tag_name": "Gearbox_Torque", "register_type": "ir", "register_number": 223},
|
||||
{"tag_name": "Input_Analog_1_AIN.Val", "register_type": "ir", "register_number": 225},
|
||||
{"tag_name": "Input_Analog_2_AIN.Val", "register_type": "ir", "register_number": 227},
|
||||
{"tag_name": "Input_Analog_3_AIN.Val", "register_type": "ir", "register_number": 229},
|
||||
{"tag_name": "Instantaneous_SPM", "register_type": "ir", "register_number": 231},
|
||||
{"tag_name": "kWh_Today", "register_type": "ir", "register_number": 233},
|
||||
{"tag_name": "Max_Theoretical_Fluid_Load", "register_type": "ir", "register_number": 235},
|
||||
{"tag_name": "Motor_Torque", "register_type": "ir", "register_number": 237},
|
||||
{"tag_name": "Pump.Run_Status", "register_type": "ir", "register_number": 239},
|
||||
{"tag_name": "Pump.Speed_Actual_SPM", "register_type": "ir", "register_number": 240},
|
||||
{"tag_name": "Pump_Intake_Pressure", "register_type": "ir", "register_number": 242},
|
||||
{"tag_name": "TODAY_Production_Calculated", "register_type": "ir", "register_number": 244},
|
||||
{"tag_name": "TODAY_Production_Projected", "register_type": "ir", "register_number": 246},
|
||||
{"tag_name": "TODAY_Percent_Run", "register_type": "ir", "register_number": 248},
|
||||
{"tag_name": "Card_Past[1].Downhole_FluidLoad", "register_type": "ir", "register_number": 250},
|
||||
|
||||
{"tag_name": "_dt", "register_type": "hr", "register_number": 1},
|
||||
{"tag_name": "Casing_ID", "register_type": "hr", "register_number": 3},
|
||||
{"tag_name": "Drive_Start_Speed", "register_type": "hr", "register_number": 5},
|
||||
{"tag_name": "Electricity_Cost", "register_type": "hr", "register_number": 7},
|
||||
{"tag_name": "Estimated_Tubing_Movement", "register_type": "hr", "register_number": 9},
|
||||
{"tag_name": "Fluid_Gradient", "register_type": "hr", "register_number": 11},
|
||||
{"tag_name": "Friction", "register_type": "hr", "register_number": 13},
|
||||
{"tag_name": "Gauge_Off_Time.Hour", "register_type": "hr", "register_number": 15},
|
||||
{"tag_name": "Gauge_Off_Time.Min", "register_type": "hr", "register_number": 16},
|
||||
{"tag_name": "Input_Analog_1_AIN.Cfg_PVEUMax", "register_type": "hr", "register_number": 17},
|
||||
{"tag_name": "Input_Analog_1_AIN.Cfg_PVEUMin", "register_type": "hr", "register_number": 19},
|
||||
{"tag_name": "Input_Analog_2_AIN.Cfg_PVEUMax", "register_type": "hr", "register_number": 21},
|
||||
{"tag_name": "Input_Analog_2_AIN.Cfg_PVEUMin", "register_type": "hr", "register_number": 23},
|
||||
{"tag_name": "Input_Analog_3_AIN.Cfg_PVEUMax", "register_type": "hr", "register_number": 25},
|
||||
{"tag_name": "Input_Analog_3_AIN.Cfg_PVEUMin", "register_type": "hr", "register_number": 27},
|
||||
{"tag_name": "Input_Inclinometer_AIN.Cfg_PVEUMax", "register_type": "hr", "register_number": 29},
|
||||
{"tag_name": "Input_Inclinometer_AIN.Cfg_PVEUMin", "register_type": "hr", "register_number": 31},
|
||||
{"tag_name": "Input_LoadCell_AIN.Cfg_PVEUMax", "register_type": "hr", "register_number": 33},
|
||||
{"tag_name": "Input_LoadCell_AIN.Cfg_PVEUMin", "register_type": "hr", "register_number": 35},
|
||||
{"tag_name": "K_Factor", "register_type": "hr", "register_number": 37},
|
||||
{"tag_name": "Min_Fluid_Load_Shutdown_Setpoint", "register_type": "hr", "register_number": 39},
|
||||
{"tag_name": "Input_Analog_1.Channel", "register_type": "hr", "register_number": 41},
|
||||
{"tag_name": "Input_Analog_1.Type", "register_type": "hr", "register_number": 42},
|
||||
{"tag_name": "Input_Analog_2.Channel", "register_type": "hr", "register_number": 43},
|
||||
{"tag_name": "Input_Analog_2.Type", "register_type": "hr", "register_number": 44},
|
||||
{"tag_name": "Input_Analog_3.Channel", "register_type": "hr", "register_number": 45},
|
||||
{"tag_name": "Input_Analog_3.Type", "register_type": "hr", "register_number": 46},
|
||||
{"tag_name": "Input_Inclinometer.Channel", "register_type": "hr", "register_number": 47},
|
||||
{"tag_name": "Input_Inclinometer.Type", "register_type": "hr", "register_number": 48},
|
||||
{"tag_name": "Input_LoadCell.Channel", "register_type": "hr", "register_number": 49},
|
||||
{"tag_name": "Input_LoadCell.Type", "register_type": "hr", "register_number": 50},
|
||||
{"tag_name": "Taper.Taper[1].Setup.Length", "register_type": "hr", "register_number": 51},
|
||||
{"tag_name": "Taper.Taper[1].Setup.Diameter", "register_type": "hr", "register_number": 53},
|
||||
{"tag_name": "Taper.Taper[1].Setup.Material", "register_type": "hr", "register_number": 55},
|
||||
{"tag_name": "Taper.Taper[2].Setup.Length", "register_type": "hr", "register_number": 56},
|
||||
{"tag_name": "Taper.Taper[2].Setup.Diameter", "register_type": "hr", "register_number": 58},
|
||||
{"tag_name": "Taper.Taper[2].Setup.Material", "register_type": "hr", "register_number": 60},
|
||||
{"tag_name": "Taper.Taper[3].Setup.Length", "register_type": "hr", "register_number": 61},
|
||||
{"tag_name": "Taper.Taper[3].Setup.Diameter", "register_type": "hr", "register_number": 63},
|
||||
{"tag_name": "Taper.Taper[3].Setup.Material", "register_type": "hr", "register_number": 65},
|
||||
{"tag_name": "Taper.Taper[4].Setup.Length", "register_type": "hr", "register_number": 66},
|
||||
{"tag_name": "Taper.Taper[4].Setup.Diameter", "register_type": "hr", "register_number": 68},
|
||||
{"tag_name": "Taper.Taper[4].Setup.Material", "register_type": "hr", "register_number": 70},
|
||||
{"tag_name": "Taper.Taper[5].Setup.Length", "register_type": "hr", "register_number": 71},
|
||||
{"tag_name": "Taper.Taper[5].Setup.Diameter", "register_type": "hr", "register_number": 73},
|
||||
{"tag_name": "Taper.Taper[5].Setup.Material", "register_type": "hr", "register_number": 75},
|
||||
{"tag_name": "Taper.Taper[6].Setup.Length", "register_type": "hr", "register_number": 76},
|
||||
{"tag_name": "Taper.Taper[6].Setup.Diameter", "register_type": "hr", "register_number": 78},
|
||||
{"tag_name": "Taper.Taper[6].Setup.Material", "register_type": "hr", "register_number": 80},
|
||||
{"tag_name": "Taper.Taper[7].Setup.Length", "register_type": "hr", "register_number": 81},
|
||||
{"tag_name": "Taper.Taper[7].Setup.Diameter", "register_type": "hr", "register_number": 83},
|
||||
{"tag_name": "Taper.Taper[7].Setup.Material", "register_type": "hr", "register_number": 85},
|
||||
{"tag_name": "Taper.Taper[8].Setup.Length", "register_type": "hr", "register_number": 86},
|
||||
{"tag_name": "Taper.Taper[8].Setup.Diameter", "register_type": "hr", "register_number": 88},
|
||||
{"tag_name": "Taper.Taper[8].Setup.Material", "register_type": "hr", "register_number": 90},
|
||||
{"tag_name": "Taper.Taper[9].Setup.Length", "register_type": "hr", "register_number": 91},
|
||||
{"tag_name": "Taper.Taper[9].Setup.Diameter", "register_type": "hr", "register_number": 93},
|
||||
{"tag_name": "Taper.Taper[9].Setup.Material", "register_type": "hr", "register_number": 95},
|
||||
{"tag_name": "Taper.Taper[10].Setup.Length", "register_type": "hr", "register_number": 96},
|
||||
{"tag_name": "Taper.Taper[10].Setup.Diameter", "register_type": "hr", "register_number": 98},
|
||||
{"tag_name": "Taper.Taper[10].Setup.Material", "register_type": "hr", "register_number": 100},
|
||||
{"tag_name": "UnitConfig.MotorNameplate.Volts", "register_type": "hr", "register_number": 101},
|
||||
{"tag_name": "UnitConfig.MotorNameplate.Amps", "register_type": "hr", "register_number": 103},
|
||||
{"tag_name": "UnitConfig.MotorNameplate.Hertz", "register_type": "hr", "register_number": 105},
|
||||
{"tag_name": "UnitConfig.MotorNameplate.Poles", "register_type": "hr", "register_number": 107},
|
||||
{"tag_name": "UnitConfig.MotorNameplate.RPM", "register_type": "hr", "register_number": 108},
|
||||
{"tag_name": "UnitConfig.MotorNameplate.ServiceFactor", "register_type": "hr", "register_number": 110},
|
||||
{"tag_name": "UnitConfig.MotorNameplate.Horsepower", "register_type": "hr", "register_number": 112},
|
||||
{"tag_name": "UnitConfig.Pump_Diameter", "register_type": "hr", "register_number": 114},
|
||||
{"tag_name": "UnitConfig.Anchor_Depth", "register_type": "hr", "register_number": 116},
|
||||
{"tag_name": "UnitConfig.Total_Stroke_Length", "register_type": "hr", "register_number": 118},
|
||||
{"tag_name": "UnitConfig.Motor_Sheave_Size", "register_type": "hr", "register_number": 120},
|
||||
{"tag_name": "UnitConfig.Gearbox_Sheave", "register_type": "hr", "register_number": 122},
|
||||
{"tag_name": "UnitConfig.Gearbox_Limit", "register_type": "hr", "register_number": 124},
|
||||
{"tag_name": "UnitConfig.Gearbox_Ratio", "register_type": "hr", "register_number": 126},
|
||||
{"tag_name": "UnitConfig.Rating_Gearbox", "register_type": "hr", "register_number": 128},
|
||||
{"tag_name": "UnitConfig.Rating_Structural", "register_type": "hr", "register_number": 130},
|
||||
{"tag_name": "UnitConfig.Well_Type", "register_type": "hr", "register_number": 132},
|
||||
{"tag_name": "UnitConfig.Total_Vertical_Depth", "register_type": "hr", "register_number": 133},
|
||||
{"tag_name": "UnitConfig.Tubing_Size_ID", "register_type": "hr", "register_number": 135},
|
||||
{"tag_name": "UnitConfig.Tubing_Size_OD", "register_type": "hr", "register_number": 137},
|
||||
{"tag_name": "UnitConfig.API_Oil", "register_type": "hr", "register_number": 139},
|
||||
{"tag_name": "UnitConfig.SG_Water", "register_type": "hr", "register_number": 141},
|
||||
{"tag_name": "UnitConfig.Percent_Water", "register_type": "hr", "register_number": 143},
|
||||
{"tag_name": "Pump.Speed_Setpoint_SPM", "register_type": "hr", "register_number": 145},
|
||||
{"tag_name": "Pump.Speed_Max", "register_type": "hr", "register_number": 147},
|
||||
{"tag_name": "Pump.Speed_Min", "register_type": "hr", "register_number": 149},
|
||||
{"tag_name": "Pump.POC_Percentage_Off", "register_type": "hr", "register_number": 151},
|
||||
{"tag_name": "Pump.Auto_Percentage_RampDown", "register_type": "hr", "register_number": 153},
|
||||
{"tag_name": "Pump.Auto_Percentage_RampUp", "register_type": "hr", "register_number": 155},
|
||||
{"tag_name": "Pump.Mode", "register_type": "hr", "register_number": 157}
|
||||
]
|
||||
19
poc_scraper/arraylist.json
Normal file
19
poc_scraper/arraylist.json
Normal file
@@ -0,0 +1,19 @@
|
||||
|
||||
[
|
||||
{"tag_name": "Card_Past[1].Surface_Position", "register_type": "ir", "register_number": 252, "arr_len": 750},
|
||||
{"tag_name": "Card_Past[2].Surface_Position", "register_type": "ir", "register_number": 1752, "arr_len": 750},
|
||||
{"tag_name": "Card_Past[3].Surface_Position", "register_type": "ir", "register_number": 3252, "arr_len": 750},
|
||||
{"tag_name": "Card_Past[4].Surface_Position", "register_type": "ir", "register_number": 4752, "arr_len": 750},
|
||||
{"tag_name": "Card_Past[1].Surface_Load", "register_type": "ir", "register_number": 6252, "arr_len": 750},
|
||||
{"tag_name": "Card_Past[2].Surface_Load", "register_type": "ir", "register_number": 7752, "arr_len": 750},
|
||||
{"tag_name": "Card_Past[3].Surface_Load", "register_type": "ir", "register_number": 9252, "arr_len": 750},
|
||||
{"tag_name": "Card_Past[4].Surface_Load", "register_type": "ir", "register_number": 10752, "arr_len": 750},
|
||||
{"tag_name": "Card_Past[1].Downhole_Position", "register_type": "ir", "register_number": 12252, "arr_len": 750},
|
||||
{"tag_name": "Card_Past[2].Downhole_Position", "register_type": "ir", "register_number": 13752, "arr_len": 750},
|
||||
{"tag_name": "Card_Past[3].Downhole_Position", "register_type": "ir", "register_number": 15252, "arr_len": 750},
|
||||
{"tag_name": "Card_Past[4].Downhole_Position", "register_type": "ir", "register_number": 16752, "arr_len": 750},
|
||||
{"tag_name": "Card_Past[1].Downhole_Load", "register_type": "ir", "register_number": 18252, "arr_len": 750},
|
||||
{"tag_name": "Card_Past[2].Downhole_Load", "register_type": "ir", "register_number": 19752, "arr_len": 750},
|
||||
{"tag_name": "Card_Past[3].Downhole_Load", "register_type": "ir", "register_number": 21252, "arr_len": 750},
|
||||
{"tag_name": "Card_Past[4].Downhole_Load", "register_type": "ir", "register_number": 22752, "arr_len": 750}
|
||||
]
|
||||
24
poc_scraper/digital.json
Normal file
24
poc_scraper/digital.json
Normal file
@@ -0,0 +1,24 @@
|
||||
[
|
||||
{"tag_name": "_TOC_ACCEPTED", "register_type": "co", "register_number": 1},
|
||||
{"tag_name": "Autotune_Next_Start", "register_type": "co", "register_number": 2},
|
||||
{"tag_name": "Gas_Interference_Override_Enabled", "register_type": "co", "register_number": 3},
|
||||
{"tag_name": "Gauge_Off_Manual", "register_type": "co", "register_number": 4},
|
||||
{"tag_name": "Initialize", "register_type": "co", "register_number": 5},
|
||||
{"tag_name": "Input_Analog_1.Enabled", "register_type": "co", "register_number": 6},
|
||||
{"tag_name": "Input_Analog_2.Enabled", "register_type": "co", "register_number": 7},
|
||||
{"tag_name": "Input_Analog_3.Enabled", "register_type": "co", "register_number": 8},
|
||||
{"tag_name": "Input_Inclinometer_Calibrate", "register_type": "co", "register_number": 9},
|
||||
{"tag_name": "Input_Inclinometer.Enabled", "register_type": "co", "register_number": 10},
|
||||
{"tag_name": "Input_LoadCell.Enabled", "register_type": "co", "register_number": 11},
|
||||
{"tag_name": "Min_Fluid_Load_Shutdown_Enabled", "register_type": "co", "register_number": 12},
|
||||
{"tag_name": "Restart_After_Fault_Allowed", "register_type": "co", "register_number": 13},
|
||||
{"tag_name": "Update_Tapers", "register_type": "co", "register_number": 14},
|
||||
{"tag_name": "USE_WIRELESS_LOADCELL", "register_type": "co", "register_number": 15},
|
||||
{"tag_name": "Write_Mode_Data", "register_type": "co", "register_number": 16},
|
||||
{"tag_name": "Write_Setup_Data", "register_type": "co", "register_number": 17},
|
||||
{"tag_name": "Pump.Start", "register_type": "co", "register_number": 18},
|
||||
{"tag_name": "Pump.Stop", "register_type": "co", "register_number": 19},
|
||||
|
||||
{"tag_name": "Inclinometer_Calibrating", "register_type": "di", "register_number": 1},
|
||||
{"tag_name": "Inclinometer_Stale", "register_type": "di", "register_number": 2}
|
||||
]
|
||||
79
poc_scraper/plc_to_mongo.py
Normal file
79
poc_scraper/plc_to_mongo.py
Normal file
@@ -0,0 +1,79 @@
|
||||
import pymongo
|
||||
import json
|
||||
from time import sleep
|
||||
from time import time as now
|
||||
from pymongo import MongoClient
|
||||
import pycomm_helper.utils as plc
|
||||
import os
|
||||
|
||||
|
||||
class PLC_to_Mongo():
|
||||
def __init__(self, plc_address):
|
||||
client = MongoClient()
|
||||
self.db = client.tag_data
|
||||
self.tag_vals = self.db.tag_vals
|
||||
self.PLC_IP_ADDRESS = plc_address
|
||||
|
||||
def run(self):
|
||||
script_path = os.path.dirname(os.path.realpath(__file__))
|
||||
print("THERE ARE ALREADY {} VALUES IN tag_vals".format(self.tag_vals.count()))
|
||||
with open(script_path + '/analog.json', 'rb') as analogfile:
|
||||
analog_list = json.loads(analogfile.read())
|
||||
|
||||
with open(script_path + '/digital.json', 'rb') as digitalfile:
|
||||
digital_list = json.loads(digitalfile.read())
|
||||
|
||||
with open(script_path + '/arraylist.json', 'rb') as arrayfile:
|
||||
arr_list = json.loads(arrayfile.read())
|
||||
|
||||
for entry in analog_list + digital_list + arr_list:
|
||||
if self.tag_vals.find({'tag_name': entry['tag_name']}).count() < 1:
|
||||
self.tag_vals.insert(entry)
|
||||
print("NOW THERE ARE {} VALUES IN tag_vals".format(self.tag_vals.count()))
|
||||
|
||||
while True:
|
||||
for t in analog_list:
|
||||
try:
|
||||
plc_val = plc.readTag(self.PLC_IP_ADDRESS, t['tag_name'])
|
||||
if plc_val:
|
||||
t['tag_type'] = plc_val[1]
|
||||
t['val'] = plc_val[0]
|
||||
t['timestamp'] = now()
|
||||
self.tag_vals.update({'tag_name': t['tag_name']}, t)
|
||||
print("Updated: {} - {}".format(t['tag_name'], t['val']))
|
||||
except Exception as e:
|
||||
print("[ERROR] {} - {}".format(t['tag_name'], e))
|
||||
|
||||
for t in digital_list:
|
||||
try:
|
||||
plc_val = plc.readTag(self.PLC_IP_ADDRESS, t['tag_name'])
|
||||
if plc_val:
|
||||
t['tag_type'] = plc_val[1]
|
||||
t['val'] = plc_val[0]
|
||||
t['timestamp'] = now()
|
||||
self.tag_vals.update({'tag_name': t['tag_name']}, t)
|
||||
print("Updated: {} - {}".format(t['tag_name'], t['val']))
|
||||
except Exception as e:
|
||||
print("[ERROR] {} - {}".format(t['tag_name'], e))
|
||||
|
||||
for a in arr_list:
|
||||
try:
|
||||
plc_val = plc.readArray(self.PLC_IP_ADDRESS, str(a['tag_name']), int(a['arr_len']))
|
||||
if plc_val:
|
||||
a['val'] = plc_val
|
||||
a['tag_type'] = 'ARRAY'
|
||||
t['timestamp'] = now()
|
||||
self.tag_vals.update({'tag_name': a['tag_name']}, a)
|
||||
print("Updated: {} - {}".format(a['tag_name'], a['val']))
|
||||
except Exception as e:
|
||||
print("[ERROR] {} - {}".format(a['tag_name'], e))
|
||||
|
||||
sleep(5)
|
||||
|
||||
def purge(self):
|
||||
client = MongoClient()
|
||||
db = client.tag_data
|
||||
|
||||
self.tag_vals = db.tag_vals
|
||||
self.tag_vals.delete_many({})
|
||||
print("THERE ARE {} VALUES IN tag_vals".format(self.tag_vals.count()))
|
||||
49
poc_scraper/setup.py
Normal file
49
poc_scraper/setup.py
Normal file
@@ -0,0 +1,49 @@
|
||||
import os
|
||||
|
||||
from setuptools import setup, find_packages
|
||||
|
||||
here = os.path.abspath(os.path.dirname(__file__))
|
||||
with open(os.path.join(here, 'README.md')) as f:
|
||||
README = f.read()
|
||||
with open(os.path.join(here, 'CHANGES.md')) as f:
|
||||
CHANGES = f.read()
|
||||
|
||||
requires = [
|
||||
'pymongo',
|
||||
'pycomm',
|
||||
'pycomm_helper',
|
||||
]
|
||||
|
||||
tests_require = [
|
||||
'pytest',
|
||||
]
|
||||
|
||||
setup(
|
||||
name='poc_scraper',
|
||||
version='0.0',
|
||||
description='Modbus TCP Server for Henry POC',
|
||||
long_description=README + '\n\n' + CHANGES,
|
||||
classifiers=[
|
||||
'Programming Language :: Python',
|
||||
'Framework :: Pyramid',
|
||||
'Topic :: Internet :: WWW/HTTP',
|
||||
'Topic :: Internet :: WWW/HTTP :: WSGI :: Application',
|
||||
],
|
||||
dependency_links=['https://github.com/Henry-Pump/Pycomm-Helper/tarball/master#egg=pycomm_helper'],
|
||||
author='',
|
||||
author_email='',
|
||||
url='',
|
||||
keywords='web',
|
||||
packages=find_packages(),
|
||||
include_package_data=True,
|
||||
zip_safe=False,
|
||||
extras_require={
|
||||
'testing': tests_require,
|
||||
},
|
||||
install_requires=requires,
|
||||
entry_points={
|
||||
'console_scripts': [
|
||||
'poc_scraper = poc_scraper:main',
|
||||
],
|
||||
},
|
||||
)
|
||||
Reference in New Issue
Block a user