Skip to content

Commit

Permalink
Fixed startofdaycounter update bug.
Browse files Browse the repository at this point in the history
Fixed bug that prevetned energy, gas and water meter values from being reset at midnight.
  • Loading branch information
mbendiksen committed Mar 19, 2018
1 parent 3c04d74 commit d592fbf
Show file tree
Hide file tree
Showing 2 changed files with 64 additions and 43 deletions.
2 changes: 1 addition & 1 deletion RFXCOM.indigoPlugin/Contents/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<plist version="1.0">
<dict>
<key>PluginVersion</key>
<string>2.1.7</string>
<string>2.1.8</string>
<key>ServerApiVersion</key>
<string>2.0.0</string>
<key>IwsApiVersion</key>
Expand Down
105 changes: 63 additions & 42 deletions RFXCOM.indigoPlugin/Contents/Server Plugin/RFXTRX.py
Original file line number Diff line number Diff line change
Expand Up @@ -1416,7 +1416,7 @@ def handleRFXMeter(self,data):
if subtype == 0:
thisValue = (ord(data[6])*256*256*256)+(ord(data[7])*256*256)+(ord(data[8])*256)+ord(data[9])
if self.checkIfNewDay(sensor):
self.tempList[sensor].updateStateOnServer(key=u"startofdaycounter", value=thisValue)
self._addToBatchStatesChange(self.tempList[sensor], key=u"startofdaycounter", value=thisValue)

lastValue = self._getCurrentSensorValue(self.tempList[sensor],"startofdaycounter")
try:
Expand Down Expand Up @@ -2255,24 +2255,27 @@ def deviceStart(self, dev, force = False):

if dev.deviceTypeId == u'Doorbell':
sensor = int(dev.pluginProps['sensorNumber'])
if not force: self.plugin.debugLog(u"Adding sensor %s." % sensor)
if force:
if not force:
self.plugin.debugLog(u"Adding sensor %s." % sensor)
else:
del self.tempList[sensor]
dev = indigo.devices[dev.id]
if sensor not in self.tempList.keys():
self.tempList[sensor] = dev
elif dev.deviceTypeId == u'BBQ':
sensor = int(dev.pluginProps['sensorNumber'])
if not force: self.plugin.debugLog(u"Adding sensor %s." % sensor)
if force:
if not force:
self.plugin.debugLog(u"Adding sensor %s." % sensor)
else:
del self.tempList[sensor]
dev = indigo.devices[dev.id]
if sensor not in self.tempList.keys():
self.tempList[sensor] = dev
elif dev.deviceTypeId == u'Temperature':
sensor = int(dev.pluginProps['sensorNumber'])
if not force: self.plugin.debugLog(u"Adding sensor %s." % sensor)
if force:
if not force:
self.plugin.debugLog(u"Adding sensor %s." % sensor)
else:
del self.tempList[sensor]
dev = indigo.devices[dev.id]
if sensor not in self.tempList.keys():
Expand Down Expand Up @@ -2321,57 +2324,64 @@ def deviceStart(self, dev, force = False):
dev.updateStateImageOnServer(indigo.kStateImageSel.TemperatureSensorOn)
elif dev.deviceTypeId == u'Humidity':
sensor = int(dev.pluginProps['sensorNumber'])
if not force: self.plugin.debugLog(u"Adding sensor %s." % sensor)
if force:
if not force:
self.plugin.debugLog(u"Adding sensor %s." % sensor)
else:
del self.tempList[sensor]
dev = indigo.devices[dev.id]
if sensor not in self.tempList.keys():
self.tempList[sensor] = dev
elif dev.deviceTypeId == u'Barometer':
sensor = int(dev.pluginProps['sensorNumber'])
if not force: self.plugin.debugLog(u"Adding sensor %s." % sensor)
if not force:
self.plugin.debugLog(u"Adding sensor %s." % sensor)
if sensor not in self.tempList.keys():
self.tempList[sensor] = dev
elif dev.deviceTypeId == u'Rainsensor':
sensor = int(dev.pluginProps['sensorNumber'])
if not force: self.plugin.debugLog(u"Adding sensor %s." % sensor)
if force:
if not force:
self.plugin.debugLog(u"Adding sensor %s." % sensor)
else:
del self.tempList[sensor]
dev = indigo.devices[dev.id]
if sensor not in self.tempList.keys():
self.tempList[sensor] = dev
elif dev.deviceTypeId == u'ARCSwitch':
adres = dev.pluginProps['address']
sensor = (ord(adres[0])*100)+int(adres[1:3])
if not force: self.plugin.debugLog(u"Adding ARC Switch (KaKu with wheels) %s (%s)." % (adres,sensor))
if force:
if not force:
self.plugin.debugLog(u"Adding ARC Switch (KaKu with wheels) %s (%s)." % (adres,sensor))
else:
del self.tempList[sensor]
dev = indigo.devices[dev.id]
if sensor not in self.tempList.keys():
self.tempList[sensor] = dev
elif dev.deviceTypeId == u'RollerTrolRemote':
adres = dev.pluginProps['address']
sensor = (ord(adres[0])*100)+int(adres[1:3])
if not force: self.plugin.debugLog(u"Adding RollerTrol Remote %s (%s)." % (adres,sensor))
if force:
if not force:
self.plugin.debugLog(u"Adding RollerTrol Remote %s (%s)." % (adres,sensor))
else:
del self.tempList[sensor]
dev = indigo.devices[dev.id]
if sensor not in self.tempList.keys():
self.tempList[sensor] = dev
elif dev.deviceTypeId == u'BlindsRemote':
adres = dev.pluginProps['address']
sensor = (ord(adres[0])*100)+int(adres[1:3])
if not force: self.plugin.debugLog(u"Adding Blinds Remote %s (%s)." % (adres,sensor))
if force:
if not force:
self.plugin.debugLog(u"Adding Blinds Remote %s (%s)." % (adres,sensor))
else:
del self.tempList[sensor]
dev = indigo.devices[dev.id]
if sensor not in self.tempList.keys():
self.tempList[sensor] = dev
elif dev.deviceTypeId == u'X10Switch':
adres = dev.pluginProps['address']
sensor = (ord(adres[0])*100)+int(adres[1:3])
if not force: self.plugin.debugLog(u"Adding X10 Switch %s (%s)." % (adres,sensor))
if force:
if not force:
self.plugin.debugLog(u"Adding X10 Switch %s (%s)." % (adres,sensor))
else:
del self.tempList[sensor]
dev = indigo.devices[dev.id]
if sensor not in self.tempList.keys():
Expand All @@ -2380,8 +2390,9 @@ def deviceStart(self, dev, force = False):
adres = dev.pluginProps['address']
unitcode =str(100+int(dev.pluginProps['unit']))[1:3]
sensor = adres+unitcode
if not force: self.plugin.debugLog(u"Adding AC Switch housecode %s and unitcode %s (%s)." % (adres,unitcode,sensor))
if force:
if not force:
self.plugin.debugLog(u"Adding AC Switch housecode %s and unitcode %s (%s)." % (adres,unitcode,sensor))
else:
del self.tempList[sensor]
dev = indigo.devices[dev.id]
if sensor not in self.tempList.keys():
Expand All @@ -2390,82 +2401,92 @@ def deviceStart(self, dev, force = False):
adres = dev.pluginProps['address']
unitcode =str(100+int(dev.pluginProps['unit']))[1:3]
sensor = adres+unitcode
if not force: self.plugin.debugLog(u"Adding LightWave Switch housecode %s and unitcode %s (%s)." % (adres,unitcode,sensor))
if force:
if not force:
self.plugin.debugLog(u"Adding LightWave Switch housecode %s and unitcode %s (%s)." % (adres,unitcode,sensor))
else:
del self.tempList[sensor]
dev = indigo.devices[dev.id]
if sensor not in self.tempList.keys():
self.tempList[sensor] = dev
elif dev.deviceTypeId == u'LWRemote':
adres = dev.pluginProps['address']
sensor = adres
if not force: self.plugin.debugLog(u"Adding LightWave Remote housecode %s (%s)." % (adres,sensor))
if force:
if not force:
self.plugin.debugLog(u"Adding LightWave Remote housecode %s (%s)." % (adres,sensor))
else:
del self.tempList[sensor]
dev = indigo.devices[dev.id]
if sensor not in self.tempList.keys():
self.tempList[sensor] = dev
elif dev.deviceTypeId == u'PCRemote':
adres = dev.pluginProps['address']
sensor = adres
if not force: self.plugin.debugLog(u"Adding PCRemote %s." % (adres))
if force:
if not force:
self.plugin.debugLog(u"Adding PCRemote %s." % (adres))
else:
del self.tempList[sensor]
dev = indigo.devices[dev.id]
if sensor not in self.tempList.keys():
self.tempList[sensor] = dev
elif dev.deviceTypeId == u'SecuritySensor':
sensor = int(dev.pluginProps['sensorNumber'])
if not force: self.plugin.debugLog(u"Adding sensor %s." % sensor)
if force:
if not force:
self.plugin.debugLog(u"Adding sensor %s." % sensor)
else:
del self.tempList[sensor]
dev = indigo.devices[dev.id]
if sensor not in self.tempList.keys():
self.tempList[sensor] = dev
elif dev.deviceTypeId == u'RFXSensor':
sensor = int(dev.pluginProps['sensorNumber'])
if not force: self.plugin.debugLog(u"Adding RFXSensor %s." % sensor)
if force:
if not force:
self.plugin.debugLog(u"Adding RFXSensor %s." % sensor)
else:
del self.tempList[sensor]
dev = indigo.devices[dev.id]
if sensor not in self.tempList.keys():
self.tempList[sensor] = dev
elif dev.deviceTypeId == u'RFXMeter':
sensor = int(dev.pluginProps['sensorNumber'])
if not force: self.plugin.debugLog(u"Adding RFXMeter %s." % sensor)
if force:
if not force:
self.plugin.debugLog(u"Adding RFXMeter %s." % sensor)
else:
del self.tempList[sensor]
dev = indigo.devices[dev.id]
if sensor not in self.tempList.keys():
self.tempList[sensor] = dev
elif dev.deviceTypeId == u'UVMeter':
sensor = int(dev.pluginProps['sensorNumber'])
if not force: self.plugin.debugLog(u"Adding UV Meter %s." % sensor)
if force:
if not force:
self.plugin.debugLog(u"Adding UV Meter %s." % sensor)
else:
del self.tempList[sensor]
dev = indigo.devices[dev.id]
if sensor not in self.tempList.keys():
self.tempList[sensor] = dev
elif dev.deviceTypeId == u'ELEC1CurrentSensor':
sensor = int(dev.pluginProps['sensorNumber'])
if not force: self.plugin.debugLog(u"Adding ELEC1 Current Sensor %s." % sensor)
if force:
if not force:
self.plugin.debugLog(u"Adding ELEC1 Current Sensor %s." % sensor)
else:
del self.tempList[sensor]
dev = indigo.devices[dev.id]
if sensor not in self.tempList.keys():
self.tempList[sensor] = dev
elif dev.deviceTypeId == u'ELEC2EnergyUsageSensor':
sensor = int(dev.pluginProps['sensorNumber'])
if not force: self.plugin.debugLog(u"Adding ELEC2 Energy Usage Sensor %s." % sensor)
if force:
if not force:
self.plugin.debugLog(u"Adding ELEC2 Energy Usage Sensor %s." % sensor)
else:
del self.tempList[sensor]
dev = indigo.devices[dev.id]
if sensor not in self.tempList.keys():
self.tempList[sensor] = dev
elif dev.deviceTypeId == u'WindSensor':
sensor = int(dev.pluginProps['sensorNumber'])
if not force: self.plugin.debugLog(u"Adding Wind Sensor %s." % sensor)
if force:
if not force:
self.plugin.debugLog(u"Adding Wind Sensor %s." % sensor)
else:
del self.tempList[sensor]
dev = indigo.devices[dev.id]
if sensor not in self.tempList.keys():
Expand Down

0 comments on commit d592fbf

Please sign in to comment.