<%include file="/pageheader.html"/> <%! from kaithem.src import devices,modules_state, devices_interface import os, gc from kaithem.src import directories import urllib.parse %> Devices

Devices

Printable Report
This section provides an easy way to configure devices supported by Kaithem's remote device abstraction layer.
<%def name="device(i,title='', devObj = None)"> <% devObj = devObj or deviceData[i]() if devObj.device_type_name == 'UnusedSubdevice': greyout = "opacity: 70%;" else: greyout = '' %> %if hasattr(devObj, 'subdevices') and devObj.subdevices:
%endif

${devObj.title|h} %if (hasattr(devObj,'errors') and len(devObj.errors)) : ${(str(len(devObj.errors))+" errors")} %endif

%if devObj.device_type_name == 'UnusedSubdevice': (Not found) %endif %if hasattr(devObj, 'tagpoints'): %if not hasattr(deviceData[i](),'_kaithem_is_subdevice'): %endif
%if 'color' in devObj.tagpoints and devObj.tagpoints['color'].subtype=='color':
%endif %endif %if devObj.parent_module and modules_state.ActiveModules[devObj.parent_module][devObj.parent_resource].get('resource_label_image'): thumbnail %endif %}
%if hasattr(devObj, 'alerts') and devObj.alerts: %for i in devObj.alerts: % if devObj.alerts[i].sm.state!='normal':

${i}

%endif %endfor %endif %if hasattr(devObj, 'tagPoints') and devObj.tagPoints: %for i in sorted(list(devObj.tagPoints.keys())): %if devObj.dashboard_datapoints.get(i,True): %if devObj.tagPoints[i].type == 'string':
%elif devObj.tagPoints[i].type == 'number': %if devObj.tagPoints[i].subtype in ('bang','trigger'): %elif devObj.tagPoints[i].subtype in ('bool', 'boolean'): %else: %endif %endif %endif %endfor %endif
%if devObj.config.get('description',''):

${devObj.config.get('description')|h}

%endif
%if hasattr(devObj, 'subdevices') and devObj.subdevices: %for j in devObj.subdevices: ${device(devObj.subdevices[j].name, devObj=devObj.subdevices[j])} %endfor
%endif
%for i in sorted(deviceData.keys()): %if not hasattr(deviceData[i](),'_kaithem_is_subdevice'): ${device(i)} %endif %endfor %for i in disks:

${i}

Size${si(disks[i]['total'])}
Used${si(disks[i]['used'])}
%if is_mounted(disks[i]['device']):
%else:
%endif
%endfor
<% d = devices.getZombies() %> %if d:

Zombie Devices

%for i in sorted(d):

${i[0]|h}

    ${gc.get_referrers(i[1])|h}
    ${gc.get_referrers(gc.get_referrers(i[1])[0])}

%endfor
%endif <% del d %> %for i in devices.device_types:
<%include file="/pagefooter.html"/>