[SOLVED] Upgrade from 4.16.21 to 4.16.25 Breaks everything..

Posted on
Thu Dec 21, 2017 2:16 pm
kpurintun offline
Posts: 16
Joined: Feb 03, 2017

[SOLVED] Upgrade from 4.16.21 to 4.16.25 Breaks everything..

Since my kid is asleep, I figured I would go through my Indigo.. I fixed a few things, then started to peak through the store. I wanted to fix a few things that had piled up.

I got to my IndigoPlotD and saw there was an update. So I updated it. Big Mistake. Now nothing plots, and I am not sure how to fix it. Making these plots the way I wanted them was at least a week's work with lots of tweaking after that. I am a bit nauseous thinking about "starting over".

Downgrading back didn't work either.

Any ideas? :(

I have posted relevant bits of the log file and plugin.py below. at least i think they may be relevant.

Kyle

2017-12-21 14:13:12.884 Application Stopping plugin INDIGOplotD (pid 449)
2017-12-21 14:13:12.983 INDIGOplotD main loop stopped
2017-12-21 14:13:14.139 Application Stopped plugin INDIGOplotD
2017-12-21 14:13:14.141 Application Upgrading plugin INDIGOplotD to newer version 4.16.25 (previous version moved to trash)
2017-12-21 14:13:14.157 Application Loading plugin "INDIGOplotD 4.16.25"
2017-12-21 14:13:14.169 Application Starting plugin "INDIGOplotD 4.16.25" (pid 53524)
2017-12-21 14:13:16.577 Application Started plugin "INDIGOplotD 4.16.25"
2017-12-21 14:13:16.580 INDIGOplotD Error --------------------------------------------------------------------------------------------------------------
2017-12-21 14:13:16.582 INDIGOplotD Error The pluginname is not correct, please reinstall or rename
2017-12-21 14:13:16.583 INDIGOplotD Error It should be /Libray/....../Plugins/INDIGOplotD.indigPlugin
2017-12-21 14:13:16.584 INDIGOplotD Error It is: /Library/Application Support/Perceptive Automation/Indigo 7/Plugins/INDIGOplotD 3.indigoPlugin
2017-12-21 14:13:16.585 INDIGOplotD Error please check your download folder, delete old *.indigoPlugin files or this will happen again during next updates
2017-12-21 14:13:16.586 INDIGOplotD Error ---------------------------------------------------------------------------------------------------------------

2017-12-21 14:14:56.554 INDIGOplotD Error Error in plugin execution startup:

Traceback (most recent call last):
File "plugin.py", line 240, in startup
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site.py", line 362, in __call__
SystemExit: 1

2017-12-21 14:14:56.590 INDIGOplotD Error Error in plugin execution runConcurrentThread:

Traceback (most recent call last):
File "plugin.py", line 8723, in runConcurrentThread
File "plugin.py", line 6391, in checkIfEventData
AttributeError: 'Plugin' object has no attribute 'DEVICE'

2017-12-21 14:14:56.592 INDIGOplotD Error plugin runConcurrentThread function returned or failed (will attempt again in 10 seconds)
2017-12-21 14:15:06.594 INDIGOplotD Error Error in plugin execution runConcurrentThread:

Traceback (most recent call last):
File "plugin.py", line 8723, in runConcurrentThread
File "plugin.py", line 6391, in checkIfEventData
AttributeError: 'Plugin' object has no attribute 'DEVICE'

2017-12-21 14:15:06.601 INDIGOplotD Error plugin runConcurrentThread function returned or failed (will attempt again in 10 seconds)
2017-12-21 14:15:16.595 INDIGOplotD Error Error in plugin execution runConcurrentThread:

Traceback (most recent call last):
File "plugin.py", line 8723, in runConcurrentThread
File "plugin.py", line 6391, in checkIfEventData
AttributeError: 'Plugin' object has no attribute 'DEVICE'

2017-12-21 14:15:16.598 INDIGOplotD Error plugin runConcurrentThread function returned or failed (will attempt again in 10 seconds)
2017-12-21 14:15:26.600 INDIGOplotD Error Error in plugin execution runConcurrentThread:

Traceback (most recent call last):
File "plugin.py", line 8723, in runConcurrentThread
File "plugin.py", line 6391, in checkIfEventData
AttributeError: 'Plugin' object has no attribute 'DEVICE'

2017-12-21 14:15:26.603 INDIGOplotD Error plugin runConcurrentThread function returned or failed (will attempt again in 10 seconds)
2017-12-21 14:15:36.602 INDIGOplotD Error Error in plugin execution runConcurrentThread:

Traceback (most recent call last):
File "plugin.py", line 8723, in runConcurrentThread
File "plugin.py", line 6391, in checkIfEventData
AttributeError: 'Plugin' object has no attribute 'DEVICE'

2017-12-21 14:15:36.604 INDIGOplotD Error plugin runConcurrentThread function returned or failed (will attempt again in 10 seconds)
2017-12-21 14:15:46.609 INDIGOplotD Error Error in plugin execution runConcurrentThread:

Traceback (most recent call last):
File "plugin.py", line 8723, in runConcurrentThread
File "plugin.py", line 6391, in checkIfEventData
AttributeError: 'Plugin' object has no attribute 'DEVICE'

2017-12-21 14:15:46.613 INDIGOplotD Error plugin runConcurrentThread function returned or failed (will attempt again in 10 seconds)
2017-12-21 14:15:56.612 INDIGOplotD Error Error in plugin execution runConcurrentThread:

Traceback (most recent call last):
File "plugin.py", line 8723, in runConcurrentThread
File "plugin.py", line 6391, in checkIfEventData
AttributeError: 'Plugin' object has no attribute 'DEVICE'

2017-12-21 14:15:56.617 INDIGOplotD Error plugin runConcurrentThread function returned or failed (will attempt again in 10 seconds)
2017-12-21 14:16:06.614 INDIGOplotD Error Error in plugin execution runConcurrentThread:

Traceback (most recent call last):
File "plugin.py", line 8723, in runConcurrentThread
File "plugin.py", line 6391, in checkIfEventData
AttributeError: 'Plugin' object has no attribute 'DEVICE'

2017-12-21 14:16:06.617 INDIGOplotD Error plugin runConcurrentThread function returned or failed (will attempt again in 10 seconds)
2017-12-21 14:16:16.619 INDIGOplotD Error Error in plugin execution runConcurrentThread:

Traceback (most recent call last):
File "plugin.py", line 8723, in runConcurrentThread
File "plugin.py", line 6391, in checkIfEventData
AttributeError: 'Plugin' object has no attribute 'DEVICE'

2017-12-21 14:16:16.622 INDIGOplotD Error plugin runConcurrentThread function returned or failed (will attempt again in 10 seconds)
2017-12-21 14:16:26.622 INDIGOplotD Error Error in plugin execution runConcurrentThread:

Traceback (most recent call last):
File "plugin.py", line 8723, in runConcurrentThread
File "plugin.py", line 6391, in checkIfEventData
AttributeError: 'Plugin' object has no attribute 'DEVICE'

2017-12-21 14:16:26.626 INDIGOplotD Error plugin runConcurrentThread function returned or failed (will attempt again in 10 seconds)
2017-12-21 14:16:36.625 INDIGOplotD Error Error in plugin execution runConcurrentThread:
Last edited by kpurintun on Fri Jan 12, 2018 12:48 pm, edited 2 times in total.

Posted on
Thu Dec 21, 2017 2:25 pm
kpurintun offline
Posts: 16
Joined: Feb 03, 2017

Re: Upgrade from 4.16.21 to 4.16.25 Breaks everything..

i was not able to post my 680Kb plugin.py file due to the 512Kb limit...

but see attached search for "DEVICE"

emptyDEVICE={ "Name" :"None" # plain name of device
if self.DEVICE[str(devNo)]["measurement"][stateNo].find("Consumption") >-1:
theDeviceId = unicode(self.DEVICE[str(devNo)]["Id"])
theState = self.DEVICE[str(devNo)]["state"][stateNo]
if self.DEVICE[str(devNo)]["measurement"][stateNo].find("Consumption") >-1:
self.DEVICE = {}
self.DEVICE["0"] = copy.deepcopy(emptyDEVICE)
self.DEVICE["0"] = copy.deepcopy(emptyDEVICE)
out ={"PLOT":xxyy,"DEVICE":self.DEVICE,"dataColumnToDevice0Prop1Index":self.dataColumnToDevice0Prop1Index,"dataOffsetInTimeDataNumbers":dataOffsetInTimeDataNumbers,"PNGdir":self.indigoPNGdir}
out ={"PLOT":xxyy,"DEVICE":self.DEVICE,"dataColumnToDevice0Prop1Index":self.dataColumnToDevice0Prop1Index,"dataOffsetInTimeDataNumbers":dataOffsetInTimeDataNumbers,"PNGdir":self.indigoPNGdir}
for devNo in self.DEVICE:
theCol= self.DEVICE[devNo]["stateToIndex"][stateNo]
self.myLog("all"," device is malformed, fixing: "+unicode(self.DEVICE[devNo]))
self.DEVICE[devNo]["stateToIndex"]=[0,0,0,0,0,0,0,0,0]
if self.DEVICE[devNo]["measurement"][stateNo].find("Consumption")==-1 and self.DEVICE[devNo]["measurement"][stateNo]!="integrate":
if self.DEVICE[devNo]["measurement"][stateNo].find("Consumption")==-1 and self.DEVICE[devNo]["measurement"][stateNo]!="integrate":
self.DEVICE[devNo]["resetType"][stateNo]="0"
self.myLog("all"," device data: "+unicode(self.DEVICE))
self.DEVICE={}
self.DEVICE["0"] =copy.deepcopy(emptyDEVICE)
self.DEVICE["0"] =copy.deepcopy(emptyDEVICE)
self.DEVICE = json.loads(line.strip("\n"))
self.DEVICE = json.loads(self.pluginPrefs["DEVICE"])
self.DEVICE = json.loads(self.pluginPrefs["DEVICE"])
self.pluginPrefs["DEVICE"]=""
if len(self.DEVICE)<1:
self.DEVICE={}
self.DEVICE["0"] =copy.deepcopy(emptyDEVICE)
self.DEVICE["0"] =copy.deepcopy(emptyDEVICE)
for nDev in self.DEVICE:
ix= self.DEVICE[nDev]["Name"]
del self.DEVICE[nDev]
ix = self.DEVICE[str(devNo)]["state"][stateNo]
for nDev in self.DEVICE:
DEV=self.DEVICE[nDev]
DEV["offset"] = copy.deepcopy(emptyDEVICE["offset"])
DEV["multiplier"] = copy.deepcopy(emptyDEVICE["multiplier"])
DEV["minValue"] = copy.deepcopy(emptyDEVICE["minValue"])
DEV["maxValue"] = copy.deepcopy(emptyDEVICE["maxValue"])
DEV["fillGaps"] = copy.deepcopy(emptyDEVICE["fillGaps"])
DEV["resetType"] = copy.deepcopy(emptyDEVICE["resetType"])
DEV["nickName"] = copy.deepcopy(emptyDEVICE["nickName"])
self.DEVICE["0"] =copy.deepcopy(emptyDEVICE)
self.DEVICE["0"] =copy.deepcopy(emptyDEVICE)
# self.myLog("Initialize","getDeviceParametersFromFile device after "+str(self.DEVICE)+" calledfrom="+calledfrom)
# self.myLog("Initialize", "Device data: "+json.dumps(self.DEVICE,sort_keys=True, indent=5))
f.write(json.dumps(self.DEVICE)+"\n")
# self.pluginPrefs["DEVICE"] = json.dumps(self.DEVICE)
# self.pluginPrefs["DEVICE"] = json.dumps(self.DEVICE)
for devNo in self.DEVICE:
if devNo not in self.DEVICE: continue
DEV = self.DEVICE[devNo]
state = self.DEVICE[str(devNo)]["state"][stateNo]
devID = self.DEVICE[str(devNo)]["Id"]
#self.myLog("all","filterselDeviceStatesMFP currentDeviceId: "+ str(self.DEVICE[str(self.currentDevNo)]["Id"]))
theDeviceId = unicode(self.DEVICE[str(devNo)]["Id"])
theState = self.DEVICE[str(devNo)]["state"][stateNo]
theDeviceId = unicode(self.DEVICE[str(devNo)]["Id"])
theState = self.DEVICE[str(devNo)]["state"][stateNo]
DEV = self.DEVICE[str(devNo)]
for devNo in self.DEVICE:
DEV= self.DEVICE[str(devNo)]
f.write('## section for '+self.DEVICE[devNo]["Name"].encode('utf8')+'\n')
DEV = self.DEVICE[str(devNo)]
DEV = self.DEVICE[str(devNo)]
for devNo in self.DEVICE:
DEV= self.DEVICE[str(devNo)]
if int(self.DEVICE[str(devNo)]["stateToIndex"][stateNo]) > 0 : keep = "yes"
del self.DEVICE[str(devNo)]
if self.DEVICE[str(devNo)]["measurement"][stateNo].find("event") >-1 and dataIndex > 0:
fn = unicode(self.DEVICE[unicode(devNo)]["Id"]) + "-" + self.DEVICE[unicode(devNo)]["state"][stateNo]
fn = unicode(self.DEVICE[unicode(devNo)]["Id"]) + "-" + self.DEVICE[unicode(devNo)]["state"][stateNo]
eventType.append(self.DEVICE[str(devNo)]["measurement"][stateNo][5:])
for devNo in self.DEVICE:
if self.DEVICE[devNo]["Name"] != action["deviceOrVariableName"]: continue
# self.myLog("Restore",u" createOrModifyLineCALLBACK state " + unicode(self.DEVICE[devNo]["state"][jj]))
if self.DEVICE[devNo]["state"][stateNo] != action["state"]: continue
if self.DEVICE[devNo]["measurement"][stateNo] != action["measurement"]: continue
# self.myLog("Restore",u"deleteDataSourceCALLBACKaction ..DEVICE.1." +str(json.dumps([self.DEVICE],sort_keys=True, indent=2)))
# self.myLog("Restore",u"deleteDataSourceCALLBACKaction ..DEVICE.1." +str(json.dumps([self.DEVICE],sort_keys=True, indent=2)))
# self.myLog("Restore",u"deleteDataSourceCALLBACKaction ..DEVICE.2." +str(json.dumps([self.DEVICE],sort_keys=True, indent=2)))
# self.myLog("Restore",u"deleteDataSourceCALLBACKaction ..DEVICE.2." +str(json.dumps([self.DEVICE],sort_keys=True, indent=2)))
if self.DEVICE[str(devNo)]["stateToIndex"][stateNo] >0:
# self.myLog("Restore",u"deleteDataSourceCALLBACKaction ..DEVICE.3." +str(json.dumps([self.DEVICE],sort_keys=True, indent=2)))
# self.myLog("Restore",u"deleteDataSourceCALLBACKaction ..DEVICE.3." +str(json.dumps([self.DEVICE],sort_keys=True, indent=2)))
for devNo in self.DEVICE:
self.myLog(logLevel,u"deleteDataSourceCALLBACKaction testing..DEVICE.." +self.DEVICE[devNo]["Name"])
self.myLog(logLevel,u"deleteDataSourceCALLBACKaction testing..DEVICE.." +self.DEVICE[devNo]["Name"])
if self.DEVICE[devNo]["Name"] != action["deviceOrVariableName"]: continue
theMeasurement = self.DEVICE[str(devNo)]["measurement"][stateNo]
if not "offset" in action: action["offset"] = copy.copy(emptyDEVICE["offset"][1])
if not "multiplier" in action: action["multiplier"]= copy.copy(emptyDEVICE["multiplier"][1])
if not "minValue" in action: action["minValue"] = copy.copy(emptyDEVICE["minValue"][1])
if not "maxValue" in action: action["maxValue"] = copy.copy(emptyDEVICE["maxValue"][1])
if not "fillGaps" in action: action["fillGaps"] = copy.copy(emptyDEVICE["fillGaps"][1])
if not "resetType" in action: action["resetType"] = copy.copy(emptyDEVICE["resetType"][1])
for devNo in self.DEVICE:
DEV = self.DEVICE[str(devNo)]
# find empty slot in existig DEVICE listing
# no empty slot, create a new DEVICE:
if self.DEVICE[str(devNo)]["deviceNumberIsUsed"] ==0: break
self.DEVICE[str(devNo)] = copy.deepcopy(emptyDEVICE)
self.DEVICE[str(devNo)] = copy.deepcopy(emptyDEVICE)
DEV=self.DEVICE[str(devNo)]
if not "offsetA" in action: action["offsetA"] = copy.copy(emptyDEVICE["offset"][1])
if not "multiplierA"in action: action["multiplierA"] = copy.copy(emptyDEVICE["multiplier"][1])
if not "minValueA" in action: action["minValueA"] = copy.copy(emptyDEVICE["minValue"][1])
if not "maxValueA" in action: action["maxValueA"] = copy.copy(emptyDEVICE["maxValue"][1])
if not "fillGapsA" in action: action["fillGapsA"] = copy.copy(emptyDEVICE["fillGaps"][1])
if not "resetTypeA" in action: action["resetTypeA"]= copy.copy(emptyDEVICE["resetType"][1])
else: action2["minValue"] = copy.copy(emptyDEVICE["minValue"][1])
else: action2["maxValue"] = copy.copy(emptyDEVICE["maxValue"][1])
else: action2["offset"] = copy.copy(emptyDEVICE["offset"][1])
else: action2["multiplier"] = copy.copy(emptyDEVICE["multiplier"][1])
else: action2["fillGaps"] = copy.copy(emptyDEVICE["fillGaps"][1])
else: action2["resetType"] = copy.copy(emptyDEVICE["resetType"][1])
lineToColumnIndexA=int(self.DEVICE[str(devNo)]["stateToIndex"][stateNo])
lineToColumnIndexB=int(self.DEVICE[str(devNoB)]["stateToIndex"][stateNoB])
for devNo in self.DEVICE:
if self.DEVICE[devNo]["Id"] >0:
retList.append((int(devNo), self.DEVICE[str(devNo)]["devOrVar"]+self.DEVICE[devNo]["Name"]))
retList.append((int(devNo), self.DEVICE[str(devNo)]["devOrVar"]+self.DEVICE[devNo]["Name"]))
if self.DEVICE[str(devNo)]["deviceNumberIsUsed"] >0: continue
self.DEVICE[str(devNo)]= copy.deepcopy(emptyDEVICE)
self.DEVICE[str(devNo)]= copy.deepcopy(emptyDEVICE)
self.DEVICE[str(devNo)]= copy.deepcopy(emptyDEVICE)
self.DEVICE[str(devNo)]= copy.deepcopy(emptyDEVICE)
self.deviceIdNew = self.DEVICE[str(self.currentDevNo)]["Id"]
self.deviceDevOrVarNew = self.DEVICE[str(self.currentDevNo)]["devOrVar"]
if self.DEVICE[str(self.currentDevNo)]["Name"].find("Var") ==-1:
self.deviceNameNew = self.DEVICE[str(self.currentDevNo)]["Name"]
self.deviceNameNew = self.DEVICE[str(self.currentDevNo)]["Name"][4:]
valuesDict,two = self.DEVtoValesDict(self.DEVICE[str(self.currentDevNo)],valuesDict)
if not str(self.currentDevNo)in self.DEVICE: return retList
if int(self.DEVICE[str(self.currentDevNo)]["Id"]) == 0: return retList
retList.append((0,self.DEVICE[str(self.currentDevNo)]["Name"])) # we have a device id already from indigo use that one as first = default pick in list
self.currentDeviceId = int(self.DEVICE[str(self.currentDevNo)]["Id"])
self.deviceDevOrVarNew=self.DEVICE[str(self.currentDevNo)]["devOrVar"]
valuesDict["selDeviceStateMFP"]=self.DEVICE[str(devNo)]["state"][stateNo]
self.currentDeviceId = int(self.DEVICE[str(self.currentDevNo)]["Id"])
self.deviceDevOrVarNew=self.DEVICE[str(self.currentDevNo)]["devOrVar"]
self.DEVICE[str(self.currentDevNo)]["Id"] = self.deviceIdNew
self.DEVICE[str(self.currentDevNo)]["devOrVar"] = self.deviceDevOrVarNew
self.DEVICE[str(self.currentDevNo)]["Name"] = self.deviceNameNew
self.DEVICE[str(self.currentDevNo)]["Name"] = self.deviceNameNew[4:]
self.myLog("General","confirmDevice 1 device DevOrVarNew " +str(self.DEVICE[str(self.currentDevNo)]["devOrVar"]))
self.deviceIdNew = self.DEVICE[str(self.currentDevNo)]["Id"]
self.deviceDevOrVarNew = self.DEVICE[str(self.currentDevNo)]["devOrVar"]
if self.DEVICE[str(self.currentDevNo)]["Name"].find("Var") ==-1:
self.deviceNameNew = self.DEVICE[str(self.currentDevNo)]["Name"]
self.deviceNameNew = self.DEVICE[str(self.currentDevNo)]["Name"][4:]
DEV=self.DEVICE[str(self.currentDevNo)]
DEV["measurement"][stateNo] = copy.copy(emptyDEVICE["measurement"][stateNo])
DEV["offset"][stateNo] = copy.copy(emptyDEVICE["offset"][stateNo])
DEV["multiplier"][stateNo] = copy.copy(emptyDEVICE["multiplier"][stateNo])
DEV["minValue"][stateNo] = copy.copy(emptyDEVICE["minValue"][stateNo])
DEV["maxValue"][stateNo] = copy.copy(emptyDEVICE["maxValue"][stateNo])
DEV["fillGaps"][stateNo] = copy.copy(emptyDEVICE["fillGaps"][stateNo])
DEV["resetType"][stateNo] = copy.copy(emptyDEVICE["resetType"][stateNo])
DEV["nickName"][stateNo] = copy.copy(emptyDEVICE["nickName"][stateNo])
valuesDict, two = self.DEVtoValesDict(self.DEVICE[str(self.currentDevNo)],valuesDict)
# self.myLog("all",u" buttonConfirmDevice " +str(self.DEVICE[str(self.currentDevNo)]))
valuesDict["selDeviceoffset"+str(stateNo)] = copy.copy(emptyDEVICE["offset"][stateNo])
valuesDict["selDevicemultiplier"+str(stateNo)] = copy.copy(emptyDEVICE["multiplier"][stateNo])
valuesDict["selDeviceminValue"+str(stateNo)] = copy.copy(emptyDEVICE["minValue"][stateNo])
valuesDict["selDevicemaxValue"+str(stateNo)] = copy.copy(emptyDEVICE["maxValue"][stateNo])
valuesDict["fillGaps"+str(stateNo)] = copy.copy(emptyDEVICE["fillGaps"][stateNo])
valuesDict["resetType"+str(stateNo)] = copy.copy(emptyDEVICE["resetType"][stateNo])
# statePreviouslySelected= self.DEVICE[str(self.currentDevNo)]["state"][stateNo] # is there a previously selected dev/property, if yes use it
for devNo in self.DEVICE:
if self.DEVICE[str(devNo)]["Id"] ==0: continue
if self.DEVICE[devNo]["measurement"][stateNo].find("event") >-1:
self.eventDataPresent[str(self.DEVICE[devNo]["stateToIndex"][stateNo])] = [devNo,stateNo]
if self.DEVICE[str(devNo)]["Name"] !="":
DEV=self.DEVICE[str(devNo)]
# self.myLog("all",u" buttonConfirmDevice " +str(self.DEVICE[str(devNo)]))
# self.myLog("all",u"DEVICE.bf.:"+str(self.DEVICE[str(devNo)]))
# self.myLog("all",u"DEVICE.bf.:"+str(self.DEVICE[str(devNo)]))
# self.myLog("all",u"DEVICE.22 :"+str(DEV))
DEV=self.DEVICE[str(devNo)]
measurement = self.DEVICE[str(devNo)]["measurement"][stateNo]
resetType = self.DEVICE[str(devNo)]["resetType"][stateNo]
# valuesDict["DEVICE"] = json.dumps(self.DEVICE)
# valuesDict["DEVICE"] = json.dumps(self.DEVICE)
for devNo in self.DEVICE:
if self.DEVICE[devNo]["devOrVar"] =="Dev-":
dev= indigo.devices[self.DEVICE[devNo]["Id"]]
if self.DEVICE[str(devNo)]["Name"] == dev.name: continue
anyChange += u"\nold: "+self.DEVICE[str(devNo)]["Name"]+u"; new: "+dev.name+ u"; #="+unicode(devNo)+u"; ID: "+unicode(self.DEVICE[devNo]["Id"])
anyChange += u"\nold: "+self.DEVICE[str(devNo)]["Name"]+u"; new: "+dev.name+ u"; #="+unicode(devNo)+u"; ID: "+unicode(self.DEVICE[devNo]["Id"])
self.DEVICE[str(devNo)]["Name"] = dev.name
var=indigo.variables[self.DEVICE[devNo]["Id"]]
if self.DEVICE[str(devNo)]["Name"] == var.name: continue
anyChange += u"\nold: "+self.DEVICE[str(devNo)]["Name"]+u"; new: "+var.name+ u"; #="+unicode(devNo)+u"; ID: "+unicode(self.DEVICE[devNo]["Id"])
anyChange += u"\nold: "+self.DEVICE[str(devNo)]["Name"]+u"; new: "+var.name+ u"; #="+unicode(devNo)+u"; ID: "+unicode(self.DEVICE[devNo]["Id"])
self.DEVICE[str(devNo)]["Name"] = var.name
if self.DEVICE[str(devNo)]["Name"] == "None":
self.myLog("all","device:" +str(self.DEVICE))
self.DEVICE[str(devNo)]["stateToIndex"][stateNo]= theCol # = "line index"
theresetType = self.tryNiceState(self.DEVICE[str(devNo)]["resetType"][stateNo])
theState = self.tryNiceState(self.DEVICE[str(devNo)]["state"][stateNo])
theMeasurement = self.DEVICE[str(devNo)]["measurement"][stateNo]
theName = self.DEVICE[str(devNo)]["Name"]
fillGaps = self.DEVICE[str(devNo)]["fillGaps"][stateNo]
if self.DEVICE[str(devNo)]["devOrVar"]=="Dev-":
devID = self.DEVICE[str(devNo)]["Id"]
if self.DEVICE[str(devNo)]["devOrVar"]=="Var-":
devID = self.DEVICE[str(devNo)]["Id"]
## check if DEVICE is ok
for devNo in self.DEVICE:
col = int(self.DEVICE[str(devNo)]["stateToIndex"][stateNo])
self.myLog("smallErr","redolineDataSource: removing devName devNo/stateNo/nCols/index: "+self.DEVICE[str(devNo)]["Name"] +" "+str(devNo)+"/"+str(stateNo)+"/"+str(self.DEVICE[str(devNo)]["stateToIndex"])+"/"+str(self.dataColumnCount)+" , not in database")
self.myLog("smallErr","redolineDataSource: removing devName devNo/stateNo/nCols/index: "+self.DEVICE[str(devNo)]["Name"] +" "+str(devNo)+"/"+str(stateNo)+"/"+str(self.DEVICE[str(devNo)]["stateToIndex"])+"/"+str(self.dataColumnCount)+" , not in database")
self.DEVICE[str(devNo)]["stateToIndex"][stateNo] =0
self.DEVICE[str(devNo)]["deviceNumberIsUsed"][stateNo] =0
self.myLog("smallErr","redolineDataSource: removing devName devNo/stateNo/nCols/index: "+self.DEVICE[str(devNo)]["Name"] +" "+str(devNo)+"/"+str(stateNo)+"/"+str(col)+"/"+str(self.DEVICE[str(devNo)]["stateToIndex"])+" not in index: "+str(self.dataColumnToDevice0Prop1Index[col]))
self.myLog("smallErr","redolineDataSource: removing devName devNo/stateNo/nCols/index: "+self.DEVICE[str(devNo)]["Name"] +" "+str(devNo)+"/"+str(stateNo)+"/"+str(col)+"/"+str(self.DEVICE[str(devNo)]["stateToIndex"])+" not in index: "+str(self.dataColumnToDevice0Prop1Index[col]))
self.myLog("all",unicode(self.DEVICE))
if not(str(devNo) in self.DEVICE):
self.myLog("all","redolineDataSource: devNo not in DEVICE deleting plot/line")
DEV= self.DEVICE[str(devNo)]
DEV["state"][stateNo] =emptyDEVICE["state"][stateNo]
DEV["measurement"][stateNo] =emptyDEVICE["measurement"][stateNo]
DEV["fillGaps"][stateNo] =emptyDEVICE["fillGaps"][stateNo]
DEV["minValue"][stateNo] =emptyDEVICE["minValue"][stateNo]
DEV["maxValue"][stateNo] =emptyDEVICE["maxValue"][stateNo]
DEV["offset"][stateNo] =emptyDEVICE["offset"][stateNo]
DEV["multiplier"][stateNo] =emptyDEVICE["multiplier"][stateNo]
DEV["resetType"][stateNo] =emptyDEVICE["resetType"][stateNo]
if str(remDev) in self.DEVICE:
del self.DEVICE[str(remDev)]
if str(devNo) in self.DEVICE:
columnToRemove = self.DEVICE[str(devNo)]["stateToIndex"][stateNo]
self.DEVICE[str(devNo)]["state"][stateNo]="None"
self.DEVICE[str(devNo)]["stateToIndex"][stateNo]=0
self.DEVICE[str(devNo)]["measurement"][stateNo]="average"
for devNo in self.DEVICE:
if self.DEVICE[devNo]["stateToIndex"][stateNo] > columnToRemove:
self.DEVICE[devNo]["stateToIndex"][stateNo] -=1
DEV = self.DEVICE[str(devNo)]
if not str(devNo) in self.DEVICE:
DEV = self.DEVICE[str(devNo)]
DEV = self.DEVICE[str(devNo)]
DEV = self.DEVICE[str(devNo)]
theDeviceIdN = str(self.DEVICE[str(devNoN)]["Id"])
theDeviceNameN = self.DEVICE[str(devNoN)]["Name"]
theStateN = self.DEVICE[str(devNoN)]["state"][stateNoN]
DEV = self.DEVICE[str(devNo)]
theDeviceNameN = self.DEVICE[str(devNoN)]["Name"]
theStateN = self.DEVICE[str(devNoN)]["state"][stateNoN]
DEV = self.DEVICE[str(devNo)]
DEV = self.DEVICE[str(devNo)]
DEV = self.DEVICE[str(devNo)]
DEV = self.DEVICE[str(devNo)]

Posted on
Thu Dec 21, 2017 2:34 pm
kpurintun offline
Posts: 16
Joined: Feb 03, 2017

Re: Upgrade from 4.16.21 to 4.16.25 Breaks everything..

Not sure if this is useful at all... but these were called out in the log Tracebacks

Then with respect to line 8723:

Starting at line 8718

8718 # check if all configuration is deone, if not, wait until its configured
8719 try:
8720 sleepTime =10
8721 msgCount =0
8722 while msgCount < 5 and self.indigoInitialized == False:
8723 if msgCount ==0: self.myLog("all",u" not configured yet, please select menue: Indigo /plugins/"+INDIGOPLOT+"/Configure...")
8724 msgCount +=1
8725 self.sleep (sleepTime)
8726 sleepTime =1

Then with respect to line 6391:

Starting at 6388

6388 # self.myLog("all",u"DEVICE.bf.:"+str(self.DEVICE[str(devNo)]))
6389 for stateNo in range (1, noOfStatesPerDeviceG+1):
6390 state = valuesDict["selDeviceStatea"+str(stateNo)]
6391 measurement = valuesDict["selDevicemeasurement"+str(stateNo)]
6392 offset = float(valuesDict["selDeviceoffset"+str(stateNo)])
6393 multiplier = float(valuesDict["selDevicemultiplier"+str(stateNo)])
6394 minValue = float(valuesDict["selDeviceminValue"+str(stateNo)])
6395 maxValue = float(valuesDict["selDevicemaxValue"+str(stateNo)])
6396 fillGaps = str(valuesDict["fillGaps"+str(stateNo)])
6397 resetPeriods = valuesDict["resetPeriods"+str(stateNo)]
6398 resetTypeVD = valuesDict["resetType"+str(stateNo)]
6399 resetType = valuesDict["resetType"+str(stateNo)]
6400 nickName = valuesDict["nickName"+str(stateNo)][:50]

runConcurrentThread

######################################## Main loop ######################################## ######################################## ######################################

########################################
def runConcurrentThread(self):

# reset variables just to make sure..
self.indigoCommand =[]

# self.myLog("all",u" dataColumnCount mainloog ..."+str(self.dataColumnCount))
self.checkPlotsEnable=False
self.checkIfEventData()


theDayS = strftime("%d", localtime())
theHourS = strftime("%H", localtime())
theMinuteS = strftime("%M", localtime())
theMinute= int(theMinuteS)
theMinuteToCheckEvents = -1
theSecond = strftime("%S", localtime())
lastDayS = theDayS
lastHourS = theHourS
lastSecond = theSecond
lastMinute = int(theMinute)
theMinute5 = (theMinute/5)*5
lastMinute5 = theMinute5
lastMinute5P= theMinute5
lastDaycheckS =" "
theDayIndex = strftime("%Y%m%d", localtime())
theHourIndex = strftime("%Y%m%d%H", localtime())
theMinuteIndex = strftime("%Y%m%d%H", localtime())+self.padzero(theMinute5)
self.pauseTimer =200
self.histupdatesWaitCount =0
self.histupdatesWaitCount1 =0

Posted on
Thu Dec 21, 2017 4:10 pm
kw123 offline
User avatar
Posts: 8333
Joined: May 12, 2013
Location: Dallas, TX

Upgrade from 4.16.21 to 4.16.25 Breaks everything..

Do do a reset :
1 Delete all device sources in menu: at the bottom
2 Import yesterday’s setup in menu: restore xxx
You might have to do step 2 twice if it times out

That should restore every thing back to yesterday’s state. Plots and data sources


I am out of town for another 2 weeks and can not look into the details.



Sent from my iPhone using Tapatalk

Posted on
Fri Dec 22, 2017 1:52 am
kw123 offline
User avatar
Posts: 8333
Joined: May 12, 2013
Location: Dallas, TX

Re: Upgrade from 4.16.21 to 4.16.25 Breaks everything..

Code: Select all
2017-12-21 14:13:16.580   INDIGOplotD Error   --------------------------------------------------------------------------------------------------------------
2017-12-21 14:13:16.582   INDIGOplotD Error   The pluginname is not correct, please reinstall or rename
2017-12-21 14:13:16.583   INDIGOplotD Error   It should be /Libray/....../Plugins/INDIGOplotD.indigPlugin
2017-12-21 14:13:16.584   INDIGOplotD Error   It is: /Library/Application Support/Perceptive Automation/Indigo 7/Plugins/INDIGOplotD 3.indigoPlugin
2017-12-21 14:13:16.585   INDIGOplotD Error   please check your download folder, delete old *.indigoPlugin files or this will happen again during next updates
2017-12-21 14:13:16.586   INDIGOplotD Error   ---------------------------------------------------------------------------------------------------------------


you plugin name is wrong: "INDIGOplotD 3.indigoPlugin"
it should be "INDIGOplotD.indigoPlugin"

ALWAYS look at the FIRST error message. all the rest are a consequences of that.

you must have several copies in your download directory.

please do:

1.shutdown indigoplotd
2. in /Library/Application Support/Perceptive Automation/Indigo 7/Plugins disabled /
rename the plugin (delete " 3" )
3. enable plugin

Karl

Posted on
Fri Dec 22, 2017 11:35 am
kw123 offline
User avatar
Posts: 8333
Joined: May 12, 2013
Location: Dallas, TX

Re: Upgrade from 4.16.21 to 4.16.25 Breaks everything..

Did that fix it?


Sent from my iPhone using Tapatalk

Posted on
Fri Jan 12, 2018 12:47 pm
kpurintun offline
Posts: 16
Joined: Feb 03, 2017

Re: Upgrade from 4.16.21 to 4.16.25 Breaks everything..

Seems to have. i wonder if that was a rename from downloading another 'updated copy' of the plugin... osx copied it an appended a '3'...

Looks like everything is good. new plots are coming in.


Jan 12, 2018, 1:43:51 PM
Trigger Album Art
Enabling plugin "INDIGOplotD 4.16.21"
Starting plugin "INDIGOplotD 4.16.21" (pid 16276)
Started plugin "INDIGOplotD 4.16.21"
INDIGOplotD initializing ... 4-16-21; debuglevel=
INDIGOplotD indigo version found: 7
INDIGOplotD number of days per bin category are: [8, 38, 390] for [days, hours, minutes] data
INDIGOplotD using '/usr/bin/python2.7' for utily programs
INDIGOplotD SQLMode: batch2Days; GNUPLOT/MATPLOT: mat; GNUplotVersion= ; PLOT-Directory= /Users/kylepurintun/Documents/INDIGOplotD/
INDIGOplotD dataversion 2 dataOffsetInTimeDataNumbers:5
INDIGOplotD read file /Users/kylepurintun/Documents/INDIGOplotD/data/minute.dat lines: 0 ok
INDIGOplotD read file /Users/kylepurintun/Documents/INDIGOplotD/data/hour.dat lines: 384 ok
INDIGOplotD read file /Users/kylepurintun/Documents/INDIGOplotD/data/day.dat lines: 368 ok
INDIGOplotD command: reLoad data from SQL for last 2 days started
INDIGOplotD wait for SQL logger to finish start up -- before retrieving SQL data
INDIGOplotD wait for SQL logger ended
INDIGOplotD checking py-restore files
INDIGOplotD initializing ...2
INDIGOplotD initialized

Posted on
Fri Jan 12, 2018 12:49 pm
kpurintun offline
Posts: 16
Joined: Feb 03, 2017

Re: [SOLVED] Upgrade from 4.16.21 to 4.16.25 Breaks everythi

Thanks Mr. Karl.

I updated the name to show that it was solved.

Page 1 of 1

Who is online

Users browsing this forum: No registered users and 2 guests