{% extends "pagetemplate.j2.html" %} {% set traceback = imp0rt('traceback') %} {% set json = imp0rt('json') %} {% set os = imp0rt('os') %} {% set unitsofmeasure = imp0rt('kaithem.src.unitsofmeasure') %} {% set tagpoints = imp0rt('kaithem.src.tagpoints') %} {% set modules_state = imp0rt('kaithem.src.modules_state') %} {% set auth = imp0rt('kaithem.src.auth') %} {% set pages = imp0rt('kaithem.src.pages') %} {% set devices = imp0rt('kaithem.src.devices') %} {% set devices_interface = imp0rt('kaithem.src.devices_interface') %} {% block body %} {% for i in tagpoints.allTagsAtomic %} {% endfor %} {% for i in tagpoints.allTagsAtomic %} {% if tagpoints.allTagsAtomic[i]().writable %} {% endif %} {% endfor %} {% for i in obj.tagPoints %} {% endfor %} {% for i in modules_state.ActiveModules %} {% endfor %} {% for i in pages.sorted(auth.Permissions.keys()) %} {% endfor %}

Device Inspector: {{ obj.title }}

{% if not hasattr(obj,'_kaithem_is_subdevice') %}
{% endif %}
{% if obj.parent_module %}

Module/Resource

This device is part of a module, rather than the global devices list.

{% endif %}
Save Location

You can store this device in a module. It's suggested you do so. Storing outside of a module may be deprecated at some point.

Store settings in Module(blank=store in main devices list)
Resource Name(blank=use device name)
Basic
Device Type {{ data.get('type','')| escape }}
Device Name
Device Title(Blank=use name)

Description

{% if hasattr(obj,"device_type") and obj.device_type == "ESPHomeDevice" %}
ESPHome Web UI Only works if this page is loaded over plain HTTP, due to browser restrictions. Use the Direct link if the embedded viewer fails.
{% endif %}
Notes
Help {% if hasattr(obj,'description') and obj.description %}

{{ pages.str(obj.description)[:8192]| escape }}

{% endif %} {% if hasattr(obj,'readme') and obj.readme %}

Readme

{{ obj.readme| escape }}
{% endif %}
{{ name| escape }}
Settings {% for i in devices_interface.getshownkeys(obj) %} {% if i.startswith('device.') %} {% else %} {% endif %} {% endfor %}
{% if obj.config_properties.get(i,{}).get("description",'') %}
{{ i[7:]| escape }} {{ obj.config_properties.get(i,{}).get("description",'')|escape}}
{% else %} {{ i[7:]| escape }} {% endif %}
{{ i| escape }} {% if obj.config_properties.get(i,{}).get("type") =='bool' %} {% else %} {% if obj.config_properties.get(i,{}).get("secret",False) %} {% else %} {% endif %} {% endif %} {% if obj.config_properties.get(i,{}).get("type") =='local_fs_dir' %} Browse {{ os.path.expanduser(obj.config[i])| escape }} {% endif %}
Enable Default Alerts

Permissions

Set a default for all tag points exposed by this device. You can further refine this in the tag points manager. It is preferable to do things at the device-level, as devices can be bundle into modules, and you don't have to handle settings individually for every tag. Leave blank to disable. These are used to make data points show up in the
Currently this is only supported for the newer cross-framework devices.
{% if obj.alerts %}
Alerts {% for i in obj.alerts %} {% endfor %}
Name Priority Status
{{ i| escape }} {% if hasattr(obj,'_noset_alarmPriority') %} {{ obj.alerts[i].priority }} {% else %} {% endif %} {% if obj.alerts[i].sm.state=='normal' %} {% else %} {% endif %} {{ obj.alerts[i].sm.state }}
{% endif %}
{% if hasattr( obj,"text_config_files") %} {% for i in obj.text_config_files %}
{{ i| escape }}
{% endfor %} {% endif %} {% if obj.get_config_folder(create=False) %}
Config Folder Browse
{% endif %} {% if hasattr(obj,'metadata') and obj.metadata %}
Metadata {% for i in obj.metadata %} {% endfor %}
Name Value
{{ i| escape }} {{ obj.metadata[i]| escape }}
{% endif %}
Tag Points
{% for i in obj.tagPoints %} {{devices_interface.render_device_tag(obj,i) | safe}} {% endfor %}

Messages

{% if hasattr(obj,'logWindow') %} {{ obj.logWindow.render() }} {% endif %}
{% if hasattr(obj,'_admin_ws_channel') %} {{ obj._admin_ws_channel.render("_admin_ws_channel") }} {{ obj._generic_ws_channel.render("_generic_ws_channel") }} {% endif %} {% endblock %}