|
|
|
|
@@ -3,12 +3,15 @@
|
|
|
|
|
import threading
|
|
|
|
|
import traceback
|
|
|
|
|
import time
|
|
|
|
|
import json
|
|
|
|
|
import socket
|
|
|
|
|
import os
|
|
|
|
|
from device_base import deviceBase
|
|
|
|
|
import micro800 as u800
|
|
|
|
|
|
|
|
|
|
addr = '10.20.4.5'
|
|
|
|
|
channels = {}
|
|
|
|
|
version = "4"
|
|
|
|
|
version = "7"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
e300_current = {
|
|
|
|
|
@@ -175,6 +178,10 @@ class start(threading.Thread, deviceBase):
|
|
|
|
|
global channels
|
|
|
|
|
channels = {
|
|
|
|
|
'automode': Channel('automode', 'Auto_Mode', 3600, self.sendtodbJSON, writeable=False, e300_param=False),
|
|
|
|
|
'alarmdhpressure': Channel('alarmdhpressure', 'alarm_DHPressure', 3600, self.sendtodbJSON, writeable=False, e300_param=False),
|
|
|
|
|
'alarmdhtemperature': Channel('alarmdhtemperature', 'alarm_DHTemperature', 3600, self.sendtodbJSON, writeable=False, e300_param=False),
|
|
|
|
|
'alarme300': Channel('alarme300', 'alarm_E300', 3600, self.sendtodbJSON, writeable=False, e300_param=False),
|
|
|
|
|
'alarmtubingpressure': Channel('alarmtubingpressure', 'alarm_TubingPressure', 3600, self.sendtodbJSON, writeable=False, e300_param=False),
|
|
|
|
|
'cfgcflasetting': Channel('cfgcflasetting', 'cfg_C_FLASetting', 86400, self.sendtodbJSON, writeable=True, change_threshold=1.0, e300_param=True),
|
|
|
|
|
'cfgcleartripcountafter': Channel('cfgcleartripcountafter', 'cfg_ClearTripCountAfter', 86400, self.sendtodbJSON, writeable=True, change_threshold=1.0, e300_param=False),
|
|
|
|
|
'cfggfgroundfaultinhibittime': Channel('cfggfgroundfaultinhibittime', 'cfg_GF_GroundFaultInhibitTime', 86400, self.sendtodbJSON, writeable=True, change_threshold=1.0, e300_param=True),
|
|
|
|
|
@@ -391,9 +398,27 @@ class start(threading.Thread, deviceBase):
|
|
|
|
|
self.daemon = True
|
|
|
|
|
self.version = version
|
|
|
|
|
self.device_address = addr
|
|
|
|
|
if os.path.exists('./plcaddr.json'):
|
|
|
|
|
with open('plcaddr.json', "rb") as addr_file:
|
|
|
|
|
data = json.loads(addr_file.read())
|
|
|
|
|
if data['plc_address']:
|
|
|
|
|
try:
|
|
|
|
|
socket.inet_aton(data['plc_address'])
|
|
|
|
|
addr = data['plc_address']
|
|
|
|
|
self.device_address = addr
|
|
|
|
|
print("USING {} AS PLC IP ADDRESS (FROM JSON)".format(addr))
|
|
|
|
|
except:
|
|
|
|
|
print("plc_address exists in plcaddr.json, but it's not a valid ip address")
|
|
|
|
|
else:
|
|
|
|
|
print("no plc_address in plcaddr.json")
|
|
|
|
|
else:
|
|
|
|
|
print("No stored plcaddr.json file. Let's create one...'")
|
|
|
|
|
with open("plcaddr.json", "wb") as addr_file:
|
|
|
|
|
json.dump({"plc_address": addr}, addr_file)
|
|
|
|
|
|
|
|
|
|
self.finished = threading.Event()
|
|
|
|
|
threading.Thread.start(self)
|
|
|
|
|
self.sendtodbJSON("device_address", self.device_address, 0)
|
|
|
|
|
self.sendtodbJSON("plcipaddress", self.device_address, 0)
|
|
|
|
|
try:
|
|
|
|
|
self.setupChannels()
|
|
|
|
|
except:
|
|
|
|
|
@@ -493,3 +518,21 @@ class start(threading.Thread, deviceBase):
|
|
|
|
|
return channels[name].write(value)
|
|
|
|
|
except Exception, e:
|
|
|
|
|
print("Exception during genericSet: {}".format(e))
|
|
|
|
|
|
|
|
|
|
def ipp_plcipaddress(self, name, value):
|
|
|
|
|
global addr
|
|
|
|
|
value_ascii = value.encode('ascii', 'ignore')
|
|
|
|
|
try:
|
|
|
|
|
socket.inet_aton(value_ascii)
|
|
|
|
|
addr = value_ascii
|
|
|
|
|
self.device_address = addr
|
|
|
|
|
with open("plcaddr.json", "wb") as addr_file:
|
|
|
|
|
json.dump({"plc_address": addr}, addr_file)
|
|
|
|
|
print("Set PLC IP Address to {}".format(addr))
|
|
|
|
|
self.sendtodb("plcipaddress", addr, 0)
|
|
|
|
|
return True
|
|
|
|
|
except Exception, e:
|
|
|
|
|
r = "Unable to set PLC IP address to {}: {}".format(value_ascii, e)
|
|
|
|
|
print(r)
|
|
|
|
|
return r
|
|
|
|
|
|
|
|
|
|
|