Skip to content

Commit 8b2890b

Browse files
authored
Merge pull request #16 from myDevicesIoT/fix/reduce-payload-data
Fix/reduce payload data
2 parents d4639ae + 23dc326 commit 8b2890b

File tree

3 files changed

+29
-16
lines changed

3 files changed

+29
-16
lines changed

myDevices/devices/manager.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,20 @@
88
from myDevices.utils.config import Config
99
from myDevices.devices import serial, digital, analog, sensor, shield
1010
from myDevices.devices.instance import DEVICES
11-
from myDevices.devices.onewire import detectOneWireDevices
11+
from myDevices.devices.onewire import detectOneWireDevices, deviceExists, FAMILIES
1212

1313
PACKAGES = [serial, digital, analog, sensor, shield]
1414
DYNAMIC_DEVICES = {}
1515
DEVICES_JSON_FILE = "/etc/myDevices/devices.json"
1616

1717
mutex = RLock()
1818

19+
def missingOneWireDevice(device):
20+
if device['class'] in FAMILIES.values() and ('slave' not in device['args'] or not deviceExists(device['args']['slave'])):
21+
logger.info('1-wire device does not exist: {}, {}'.format(device['class'], device['args']['slave']))
22+
return True
23+
return False
24+
1925
def deviceDetector():
2026
logger.debug('deviceDetector')
2127
try:
@@ -30,6 +36,9 @@ def deviceDetector():
3036
if not found:
3137
if addDevice(dev['name'], dev['device'], dev['description'], dev['args'], "auto") > 0:
3238
saveDevice(dev['name'], int(time()))
39+
missing = [key for key, value in DEVICES.items() if missingOneWireDevice(value)]
40+
for dev in missing:
41+
removeDevice(dev)
3342
except Exception as e:
3443
logger.error("Device detector: %s" % e)
3544

@@ -68,7 +77,7 @@ def removeDevice(name):
6877
if name in DEVICES:
6978
if name in DYNAMIC_DEVICES:
7079
if hasattr(DEVICES[name]["device"], 'close'):
71-
DEVICES[name]["device"].close()
80+
DEVICES[name]["device"].close()
7281
del DEVICES[name]
7382
del DYNAMIC_DEVICES[name]
7483
json_devices = getJSON(DYNAMIC_DEVICES)
@@ -135,6 +144,8 @@ def addDevice(name, device, description, args, origin):
135144
logger.error("Device <%s> already exists" % name)
136145
return -1
137146
logger.debug('addDevice: ' + str(name) + ' ' + str(device))
147+
if missingOneWireDevice({'class': device, 'args': args}):
148+
return -1
138149
# if '/' in device:
139150
# deviceClass = device.split('/')[0]
140151
# else:

myDevices/devices/onewire.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,3 +105,5 @@ def detectOneWireDevices():
105105
debug('Error detecting 1-wire devices: {}'.format(err))
106106
return devices
107107

108+
def deviceExists(slave):
109+
return os.path.exists("/sys/bus/w1/devices/%s" % slave)

myDevices/sensors/sensors.py

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -164,10 +164,10 @@ def SensorsInfo(self):
164164
'DigitalActuator': {'function': 'read', 'data_args': {'type': 'digital_actuator', 'unit': 'd'}},
165165
'AnalogSensor': {'function': 'readFloat', 'data_args': {'type': 'analog_sensor'}},
166166
'AnalogActuator': {'function': 'readFloat', 'data_args': {'type': 'analog_actuator'}}}
167-
extension_types = {'ADC': {'function': 'analogReadAllFloat'},
168-
'DAC': {'function': 'analogReadAllFloat'},
169-
'PWM': {'function': 'pwmWildcard'},
170-
'GPIOPort': {'function': 'wildcard'}}
167+
# extension_types = {'ADC': {'function': 'analogReadAllFloat'},
168+
# 'DAC': {'function': 'analogReadAllFloat'},
169+
# 'PWM': {'function': 'pwmWildcard'},
170+
# 'GPIOPort': {'function': 'wildcard'}}
171171
for device_type in device['type']:
172172
try:
173173
display_name = device['description']
@@ -184,16 +184,16 @@ def SensorsInfo(self):
184184
cayennemqtt.DataChannel.add(sensors_info, cayennemqtt.DEV_SENSOR, channel, value=self.CallDeviceFunction(func), name=display_name, **sensor_type['data_args'])
185185
except:
186186
exception('Failed to get sensor data: {} {}'.format(device_type, device['name']))
187-
else:
188-
try:
189-
extension_type = extension_types[device_type]
190-
func = getattr(sensor, extension_type['function'])
191-
values = self.CallDeviceFunction(func)
192-
for pin, value in values.items():
193-
cayennemqtt.DataChannel.add(sensors_info, cayennemqtt.DEV_SENSOR, device['name'] + ':' + str(pin), cayennemqtt.VALUE, value, name=display_name)
194-
except:
195-
exception('Failed to get extension data: {} {}'.format(device_type, device['name']))
196-
logJson('Sensors info: {}'.format(sensors_info))
187+
# else:
188+
# try:
189+
# extension_type = extension_types[device_type]
190+
# func = getattr(sensor, extension_type['function'])
191+
# values = self.CallDeviceFunction(func)
192+
# for pin, value in values.items():
193+
# cayennemqtt.DataChannel.add(sensors_info, cayennemqtt.DEV_SENSOR, device['name'] + ':' + str(pin), cayennemqtt.VALUE, value, name=display_name)
194+
# except:
195+
# exception('Failed to get extension data: {} {}'.format(device_type, device['name']))
196+
info('Sensors info: {}'.format(sensors_info))
197197
return sensors_info
198198

199199
def AddSensor(self, name, description, device, args):

0 commit comments

Comments
 (0)