Skip to content

Commit

Permalink
0.2.8
Browse files Browse the repository at this point in the history
Fix for Legacy updating disabled
Add powerstatus updates for Legacy device
  • Loading branch information
ghawken committed Jun 23, 2020
1 parent 39fd32a commit 8cf8383
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 12 deletions.
14 changes: 13 additions & 1 deletion EnphaseEnvoy.indigoPlugin/Contents/Server Plugin/Devices.xml
Original file line number Diff line number Diff line change
Expand Up @@ -231,7 +231,19 @@
<TriggerLabel>Device Last Updated</TriggerLabel>
<ControlPageLabel>Device Last Updated</ControlPageLabel>
</State>

<State id="powerStatus">
<ValueType>
<List>
<Option value="offline">Offline</Option>
<Option value="importing">Importing Energy</Option>
<Option value="exporting">Exporting Energy</Option>
<Option value="producing">Producing Energy</Option>
<Option value="idle">Not Producing Energy</Option>
</List>
</ValueType>
<TriggerLabel>Power Generation Status</TriggerLabel>
<ControlPageLabel>Power Generation Status</ControlPageLabel>
</State>
<State id="wattHoursToday">
<ValueType>Number</ValueType>
<TriggerLabel>Power Production Today (watts)</TriggerLabel>
Expand Down
40 changes: 29 additions & 11 deletions EnphaseEnvoy.indigoPlugin/Contents/Server Plugin/plugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,7 @@ def deviceStopComm(self, dev):
dev.updateStateOnServer('wattHoursSevenDays', value=0)
dev.updateStateOnServer('wattHoursToday', value=0)
dev.updateStateOnServer('wattsNow', value=0)

dev.updateStateOnServer('powerStatus', value='offline', uiValue='Offline')
def forceUpdate(self):
self.updater.update(currentVersion='0.0.0')

Expand Down Expand Up @@ -259,7 +259,12 @@ def runConcurrentThread(self):
x=0
y=0
#One quick check on startup - to avoid Panel delays

for dev in indigo.devices.itervalues('self.EnphaseEnvoyLegacy'):
if self.debugLevel >=2:
self.debugLog(u'Checking Legacy devices: {0}:'.format(dev.name))
if dev.enabled:
self.legacyRefreshEnvoy(dev)
self.sleep(5)
for dev in indigo.devices.itervalues('self.EnphaseEnvoyDevice'):
if self.debugLevel>=2:
self.debugLog(u'Quick Checks Before Loop')
Expand All @@ -272,6 +277,8 @@ def runConcurrentThread(self):
self.sleep(10)




while True:

if self.debugLevel >= 2:
Expand Down Expand Up @@ -630,7 +637,8 @@ def legacyGetTheData(self, dev):
if self.debugLevel >= 2:
self.debugLog(u"Device is offline. No data to return. ")
dev.updateStateOnServer('deviceIsOnline', value=False, uiValue="Offline")
dev.updateStateOnServer('powerStatus', value = 'offline')
dev.updateStateOnServer('powerStatus', value='offline', uiValue='Offline')
#dev.updateStateOnServer('powerStatus', value = 'offline')
dev.setErrorStateOnServer(u'Offline')
result = None
return result
Expand Down Expand Up @@ -809,7 +817,7 @@ def getthePanels(self, dev):
result = None
return result

def legacyParseStateValues(self, dev):
def legacyParseStateValues(self, dev, results):
"""
The parseStateValues() method walks through the dict and assigns the
corresponding value to each device state.
Expand All @@ -818,10 +826,20 @@ def legacyParseStateValues(self, dev):
self.debugLog(u"Saving Values method called.")

try:
dev.updateStateOnServer('wattHoursLifetime', value=int(self.finalDict['wattHoursLifetime']))
dev.updateStateOnServer('wattHoursSevenDays', value=int(self.finalDict['wattHoursSevenDays']))
dev.updateStateOnServer('wattHoursToday', value=int(self.finalDict['wattHoursToday']))
dev.updateStateOnServer('wattsNow', value=int(self.finalDict['wattsNow']))
dev.updateStateOnServer('wattHoursLifetime', value=int(results['wattHoursLifetime']))
dev.updateStateOnServer('wattHoursSevenDays', value=int(results['wattHoursSevenDays']))
dev.updateStateOnServer('wattHoursToday', value=int(results['wattHoursToday']))
dev.updateStateOnServer('wattsNow', value=int(results['wattsNow']))
update_time = t.strftime("%m/%d/%Y at %H:%M")
dev.updateStateOnServer('deviceLastUpdated', value=update_time)

if int(results['wattsNow'])>0:
dev.updateStateOnServer('powerStatus', value="producing", uiValue="Producing Energy")
dev.updateStateImageOnServer(indigo.kStateImageSel.SensorOn)
elif int(results['wattsNow'])<=0:
dev.updateStateOnServer('powerStatus', value="idle", uiValue="Not Producing Energy")
dev.updateStateImageOnServer(indigo.kStateImageSel.SensorOff)

if self.debugLevel >= 1:
self.debugLog("State Image Selector:"+str(dev.displayStateImageSel))

Expand Down Expand Up @@ -1287,18 +1305,18 @@ def legacyRefreshEnvoy(self,dev):
if self.debugLevel >= 2:
self.debugLog(u"Offline: Refreshing device: {0}".format(dev.name))

self.finalDict = self.legacyGetTheData(dev)
results = self.legacyGetTheData(dev)
# if device online normal time

if dev.states['deviceIsOnline']:
if self.debugLevel >= 2:
self.debugLog(u"Online: Refreshing device: {0}".format(dev.name))
self.finalDict = self.legacyGetTheData(dev)
results = self.legacyGetTheData(dev)
#ignore panel level data until later
#self.PanelDict = self.getthePanels(dev)
# Put the final values into the device states - only if online
if dev.states['deviceIsOnline']:
self.legacyParseStateValues(dev)
self.legacyParseStateValues(dev, results)
else:
if self.debugLevel >= 2:
self.debugLog(u" Disabled: {0}".format(dev.name))
Expand Down

0 comments on commit 8cf8383

Please sign in to comment.