Skip to content

Commit 9cb81b4

Browse files
committed
Update digital actuator state if it changes outside the agent.
1 parent e68d8f0 commit 9cb81b4

File tree

2 files changed

+8
-3
lines changed

2 files changed

+8
-3
lines changed

myDevices/devices/manager.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -136,8 +136,10 @@ def updateDeviceState(name, value):
136136
if not name in DEVICES:
137137
return
138138
device = DEVICES[name]
139-
device['args'].update({'last_state': value})
140-
saveDevice(name)
139+
if 'last_state' not in device['args'] or device['args']['last_state'] != value:
140+
logger.info('Saving state {} for device {}'.format(value, name))
141+
device['args'].update({'last_state': value})
142+
saveDevice(name)
141143
except:
142144
pass
143145

myDevices/sensors/sensors.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,10 @@ def SensorsInfo(self):
181181
channel = '{}:{}'.format(device['name'], device_type.lower())
182182
else:
183183
channel = device['name']
184-
cayennemqtt.DataChannel.add(sensors_info, cayennemqtt.DEV_SENSOR, channel, value=self.CallDeviceFunction(func), name=display_name, **sensor_type['data_args'])
184+
value = self.CallDeviceFunction(func)
185+
cayennemqtt.DataChannel.add(sensors_info, cayennemqtt.DEV_SENSOR, channel, value=value, name=display_name, **sensor_type['data_args'])
186+
if 'DigitalActuator' == device_type and value in (0, 1):
187+
manager.updateDeviceState(device['name'], value)
185188
except:
186189
exception('Failed to get sensor data: {} {}'.format(device_type, device['name']))
187190
else:

0 commit comments

Comments
 (0)