diff --git a/POCloud_Driver/HTML/NodeDetailHeader.html b/POCloud_Driver/HTML/NodeDetailHeader.html
index 28262a3..d6ad41f 100644
--- a/POCloud_Driver/HTML/NodeDetailHeader.html
+++ b/POCloud_Driver/HTML/NodeDetailHeader.html
@@ -4,3 +4,6 @@
<%= node.vanityname %>
+
+
+
diff --git a/POCloud_Driver/HTML/Permissives.html b/POCloud_Driver/HTML/Permissives.html
index 7372d72..1956670 100644
--- a/POCloud_Driver/HTML/Permissives.html
+++ b/POCloud_Driver/HTML/Permissives.html
@@ -148,45 +148,12 @@
-
-
-
TRIP HISTORY
-
-
-
- | Timestamp |
- Condition |
-
-
-
-
-
-
+
-
WARNING HISTORY
-
-
-
- | Timestamp |
- Condition |
-
-
-
-
-
-
+
@@ -242,163 +209,3 @@
flex-direction: column;
}
-
-
-
diff --git a/POCloud_Driver/ipp.py b/POCloud_Driver/ipp.py
index fcdafcc..f69235b 100644
--- a/POCloud_Driver/ipp.py
+++ b/POCloud_Driver/ipp.py
@@ -9,7 +9,7 @@ addr = '10.20.4.5'
channels = {}
- e300_current: {
+e300_current = {
0: 'None',
1: 'Overload',
2: 'Phase Loss',
@@ -73,6 +73,7 @@ e300_power = {
2048: 'Over PF Lead'
}
+
class Channel():
def read(self):
valData = u800.readMicroTag(self.device_addr, self.tag)
@@ -81,7 +82,7 @@ class Channel():
if self.map_obj:
nowVal = self.map_obj[nowVal]
self.data_type = valData[1]
- if self.data_type == "BOOL":
+ if (self.data_type == "BOOL") or (type(nowVal) is str) or (type(nowVal) is str):
if self.last_value == "":
self.sendFn(self.name, nowVal, 0)
self.last_time_uploaded = time.time()
@@ -90,7 +91,7 @@ class Channel():
self.sendFn(self.name, nowVal, 0)
self.last_time_uploaded = time.time()
self.last_value = nowVal
- if (self.data_type == "REAL") or (self.data_type[-3:] == "INT"):
+ elif (self.data_type == "REAL") or (self.data_type[-3:] == "INT"):
if self.last_value == "":
self.sendFn(self.name, nowVal, 0)
self.last_time_uploaded = time.time()
@@ -335,10 +336,10 @@ class start(threading.Thread, deviceBase):
'tripenablevvoltageunbalance': Channel('tripenablevvoltageunbalance', 'TripEnable_V_VoltageUnbalance', 3600, self.sendtodbJSON, writeable=True, e300_param=False),
'tripresetcmd': Channel('tripresetcmd', 'TripResetCmd', 3600, self.sendtodbJSON, writeable=True, e300_param=False),
'tripstatus': Channel('tripstatus', 'TripStatus', 3600, self.sendtodbJSON, writeable=False, e300_param=False),
- 'tripstatuscontrolint': Channel('tripstatuscontrolint', 'TripStatusControl_INT', 3600, self.sendtodbJSON, writeable=False, change_threshold=1.0, e300_param=False),
- 'tripstatuscurrentint': Channel('tripstatuscurrentint', 'TripStatusCurrent_INT', 3600, self.sendtodbJSON, writeable=False, change_threshold=1.0, e300_param=False),
- 'tripstatuspowerint': Channel('tripstatuspowerint', 'TripStatusPower_INT', 3600, self.sendtodbJSON, writeable=False, change_threshold=1.0, e300_param=False),
- 'tripstatusvoltageint': Channel('tripstatusvoltageint', 'TripStatusVoltage_INT', 3600, self.sendtodbJSON, writeable=False, change_threshold=1.0, e300_param=False),
+ 'tripstatuscontrolint': Channel('tripstatuscontrolint', 'TripStatusControl_INT', 3600, self.sendtodbJSON, writeable=False, change_threshold=1.0, e300_param=False, map_obj=e300_control),
+ 'tripstatuscurrentint': Channel('tripstatuscurrentint', 'TripStatusCurrent_INT', 3600, self.sendtodbJSON, writeable=False, change_threshold=1.0, e300_param=False, map_obj=e300_current),
+ 'tripstatuspowerint': Channel('tripstatuspowerint', 'TripStatusPower_INT', 3600, self.sendtodbJSON, writeable=False, change_threshold=1.0, e300_param=False, map_obj=e300_power),
+ 'tripstatusvoltageint': Channel('tripstatusvoltageint', 'TripStatusVoltage_INT', 3600, self.sendtodbJSON, writeable=False, change_threshold=1.0, e300_param=False, map_obj=e300_voltage),
'valoverloadtripcount': Channel('valoverloadtripcount', 'val_OverloadTripCount', 3600, self.sendtodbJSON, writeable=False, change_threshold=1.0, e300_param=False),
'valtripcount': Channel('valtripcount', 'val_TripCount', 3600, self.sendtodbJSON, writeable=False, change_threshold=1.0, e300_param=False),
'voltageok': Channel('voltageok', 'VoltageOK', 3600, self.sendtodbJSON, writeable=False, e300_param=False),
@@ -359,13 +360,10 @@ class start(threading.Thread, deviceBase):
'warningenablevundervoltage': Channel('warningenablevundervoltage', 'WarningEnable_V_Undervoltage', 3600, self.sendtodbJSON, writeable=True, e300_param=False),
'warningenablevvoltageunbalance': Channel('warningenablevvoltageunbalance', 'WarningEnable_V_VoltageUnbalance', 3600, self.sendtodbJSON, writeable=True, e300_param=False),
'warningstatus': Channel('warningstatus', 'WarningStatus', 3600, self.sendtodbJSON, writeable=True, e300_param=False),
- 'warningstatuscontrolint': Channel('warningstatuscontrolint', 'WarningStatusControl_INT', 3600, self.sendtodbJSON, writeable=True, change_threshold=1.0, e300_param=False),
- 'warningstatuscurrentint': Channel('warningstatuscurrentint', 'WarningStatusCurrent_INT', 3600, self.sendtodbJSON, writeable=True, change_threshold=1.0, e300_param=False),
- 'warningstatuspowerint': Channel('warningstatuspowerint', 'WarningStatusPower_INT', 3600, self.sendtodbJSON, writeable=True, change_threshold=1.0, e300_param=False),
- 'warningstatusvoltageint': Channel('warningstatusvoltageint', 'WarningStatusVoltage_INT', 3600, self.sendtodbJSON, writeable=True, change_threshold=1.0, e300_param=False),
- }
- trip_channels = {
-
+ 'warningstatuscontrolint': Channel('warningstatuscontrolint', 'WarningStatusControl_INT', 3600, self.sendtodbJSON, writeable=True, change_threshold=1.0, e300_param=False, map_obj=e300_control),
+ 'warningstatuscurrentint': Channel('warningstatuscurrentint', 'WarningStatusCurrent_INT', 3600, self.sendtodbJSON, writeable=True, change_threshold=1.0, e300_param=False, map_obj=e300_current),
+ 'warningstatuspowerint': Channel('warningstatuspowerint', 'WarningStatusPower_INT', 3600, self.sendtodbJSON, writeable=True, change_threshold=1.0, e300_param=False, map_obj=e300_power),
+ 'warningstatusvoltageint': Channel('warningstatusvoltageint', 'WarningStatusVoltage_INT', 3600, self.sendtodbJSON, writeable=True, change_threshold=1.0, e300_param=False, map_obj=e300_voltage),
}
def __init__(self, name=None, number=None, mac=None, Q=None, mcu=None, companyId=None, offset=None, mqtt=None, Nodes=None):
@@ -380,6 +378,8 @@ class start(threading.Thread, deviceBase):
threading.Thread.start(self)
self.sendtodbJSON("device_address", self.device_address, 0)
self.setupChannels()
+ self.e300_warning = ""
+ self.e300_trip = ""
# self.updateGPS()
# this is a required function for all drivers, its goal is to upload some piece of data
@@ -398,6 +398,50 @@ class start(threading.Thread, deviceBase):
for i in channels:
channels[i].read()
runLoopStatus = i
+ time.sleep(0.25)
+
+ if not (channels['tripstatuscurrentint'].last_value == "None"):
+ if not (self.e300_trip == channels['tripstatuscurrentint'].last_value):
+ self.e300_trip = channels['tripstatuscurrentint'].last_value
+ self.sendtodb("e300tripstatus", self.e300_trip, time.time())
+ elif not (channels['tripstatusvoltageint'].last_value == "None"):
+ if not (self.e300_trip == channels['tripstatusvoltageint'].last_value):
+ self.e300_trip = channels['tripstatusvoltageint'].last_value
+ self.sendtodb("e300tripstatus", self.e300_trip, time.time())
+ elif not (channels['tripstatuscontrolint'].last_value == "None"):
+ if not (self.e300_trip == channels['tripstatuscontrolint'].last_value):
+ self.e300_trip = channels['tripstatuscontrolint'].last_value
+ self.sendtodb("e300tripstatus", self.e300_trip, time.time())
+ elif not (channels['tripstatuspowerint'].last_value == "None"):
+ if not (self.e300_trip == channels['tripstatuspowerint'].last_value):
+ self.e300_trip = channels['tripstatuspowerint'].last_value
+ self.sendtodb("e300tripstatus", self.e300_trip, time.time())
+ else:
+ if not (self.e300_trip == "None"):
+ self.e300_trip = "None"
+ self.sendtodb("e300tripstatus", self.e300_trip, time.time())
+
+ if not (channels['warningstatuscurrentint'].last_value == "None"):
+ if not (self.e300_warning == channels['warningstatuscurrentint'].last_value):
+ self.e300_warning = channels['warningstatuscurrentint'].last_value
+ self.sendtodb("e300warningstatus", self.e300_warning, time.time())
+ elif not (channels['warningstatusvoltageint'].last_value == "None"):
+ if not (self.e300_warning == channels['warningstatusvoltageint'].last_value):
+ self.e300_warning = channels['warningstatusvoltageint'].last_value
+ self.sendtodb("e300warningstatus", self.e300_warning, time.time())
+ elif not (channels['warningstatuscontrolint'].last_value == "None"):
+ if not (self.e300_warning == channels['warningstatuscontrolint'].last_value):
+ self.e300_warning = channels['warningstatuscontrolint'].last_value
+ self.sendtodb("e300warningstatus", self.e300_warning, time.time())
+ elif not (channels['warningstatuspowerint'].last_value == "None"):
+ if not (self.e300_warning == channels['warningstatuspowerint'].last_value):
+ self.e300_warning = channels['warningstatuspowerint'].last_value
+ self.sendtodb("e300warningstatus", self.e300_warning, time.time())
+ else:
+ if not (self.e300_warning == "None"):
+ self.e300_warning = "None"
+ self.sendtodb("e300warningstatus", self.e300_warning, time.time())
+
runLoopStatus = "Complete"
OK_state = 1
if not OK_state == last_OK_state: