16
16
17
17
mutex = RLock ()
18
18
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
+
19
25
def deviceDetector ():
20
26
logger .debug ('deviceDetector' )
21
27
try :
@@ -30,6 +36,9 @@ def deviceDetector():
30
36
if not found :
31
37
if addDevice (dev ['name' ], dev ['device' ], dev ['description' ], dev ['args' ], "auto" ) > 0 :
32
38
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 )
33
42
except Exception as e :
34
43
logger .error ("Device detector: %s" % e )
35
44
@@ -68,7 +77,7 @@ def removeDevice(name):
68
77
if name in DEVICES :
69
78
if name in DYNAMIC_DEVICES :
70
79
if hasattr (DEVICES [name ]["device" ], 'close' ):
71
- DEVICES [name ]["device" ].close ()
80
+ DEVICES [name ]["device" ].close ()
72
81
del DEVICES [name ]
73
82
del DYNAMIC_DEVICES [name ]
74
83
json_devices = getJSON (DYNAMIC_DEVICES )
@@ -135,8 +144,7 @@ def addDevice(name, device, description, args, origin):
135
144
logger .error ("Device <%s> already exists" % name )
136
145
return - 1
137
146
logger .debug ('addDevice: ' + str (name ) + ' ' + str (device ))
138
- if device in FAMILIES .values () and ('slave' not in args or not deviceExists (args ['slave' ])):
139
- logger .info ('1-wire device does not exist: {}, {}' .format (device , args ['slave' ]))
147
+ if missingOneWireDevice ({'class' : device , 'args' : args }):
140
148
return - 1
141
149
# if '/' in device:
142
150
# deviceClass = device.split('/')[0]
0 commit comments