{% extends "base.html.twig" %} {% block title %}Device detail{% endblock %} {% form_theme fwForm 'bootstrap_4_layout.html.twig' %} {% block body %}
Device detail

Name: {{ device.name()|default("None") }}
{{ form_start(customModuleDownloadForm, {'attr': {'class': 'form-inline'}}) }}

DevId: {{ device.devId() }}

{{ form_widget(customModuleDownloadForm.download) }}
{{ form_end(customModuleDownloadForm) }}
{% if(device.devType.id == 1) %}

Hostname: {{ device.hostname()|default("None") }} {% if(device.hostnameDesired) %}(to be updated: {{ device.hostnameDesired }}){% else %}{% endif %}

{{ form_start(hostnameForm, {'attr': {'class': 'form-inline'}}) }}
{{ form_widget(hostnameForm.hostname) }}
{{ form_widget(hostnameForm.save) }}
{{ form_end(hostnameForm) }}
{% endif %}

Status: {{ device.stats.syncStatus.description }}

Type: {{ device.devType.name }}

Data age: {{ device.stats.liveTime.description }}

Missed contacts: {{ device.stats.liveMissCount.description }}

{% if(device.devType.id == 2) %}

Current OS/FW version: {{ device.osVer.version|default("Unknown") }} {% if(device.osVerDesired) %}(desired: {{ device.osVerDesired.version }}){% else %}(NO specific){% endif %}

{% endif %}
{% if(device.devType.id == 2) %} {% if( (osVersions != null) or (fwForm.no_specific is defined) ) %}

{{ form_start(fwForm, {'attr': {'class': 'form-inline'}}) }} {% if(osVersions != null) %}

Firmware version:

{{ form_widget(fwForm.fw_version) }}
{{ form_widget(fwForm.save) }}
{% endif %} {% if(fwForm.no_specific is defined) %}
{{ form_widget(fwForm.no_specific) }}
{% endif %} {{ form_end(fwForm) }}
{% endif %} {% endif %}

{{ form_start(agentProfilesForm, {'attr': {'class': 'form-inline'}}) }}

Agent Profile:

{{ form_widget(agentProfilesForm.agent_profile) }} {# #}
{{ form_widget(agentProfilesForm.save) }}
{# {{ form_row(configProfileCloneTo._token) }} {{ form_end(configProfileCloneTo, {'render_rest': false}) }} #} {{ form_end(agentProfilesForm) }}
{% if(authProfilesForm.auth_profile is defined) %}

{{ form_start(authProfilesForm, {'attr': {'class': 'form-inline'}}) }}

Auth Profile:

{{ form_widget(authProfilesForm.auth_profile) }} {# #}
{{ form_widget(authProfilesForm.save) }}
{{ form_end(authProfilesForm) }}
{% endif %}

{{ form_start(monitoringGroupsForm, {'attr': {'class': 'form-inline'}}) }}

Monitoring Groups:

{{ form_widget(monitoringGroupsForm.monitoringGroups) }} {# #}
{{ form_widget(monitoringGroupsForm.save) }}
{{ form_end(monitoringGroupsForm) }}

Every device has default Monitoring group named "All devices". It cannot be modified.


{{ form_start(labelsForm, {'attr': {'class': 'form-inline'}}) }}

Custom Labels:

{{ form_widget(labelsForm.labels) }} {# #}
{{ form_widget(labelsForm.save) }}
{# {{ form_row(configProfileCloneTo._token) }} {{ form_end(configProfileCloneTo, {'render_rest': false}) }} #} {{ form_end(labelsForm) }}

Please note that when new label added or deleted you must save the new state by pressing SET button.

You can delete label by simply click on the label itself.


{{ form_start(systemLabelsForm, {'attr': {'class': 'form-inline'}}) }}

System Labels:

{{ form_widget(systemLabelsForm.labels) }} {# #}
{{ form_widget(systemLabelsForm.save) }}
{# {{ form_row(configProfileCloneTo._token) }} {{ form_end(configProfileCloneTo, {'render_rest': false}) }} #} {{ form_end(systemLabelsForm) }}

Please note that when new label added or deleted you must save the new state by pressing SET button.

You can delete label by simply click on the label itself.


{% if(device.devType.id == 2) %}
{% if(device.devType.id == 2) %}

Config profile cloned from: {{ device.configProfile.automatic.devId|default("None") }}

{% endif %}
{% if(isDevicesToCloneFromEmpty == false) %}
{{ form_start(configProfileCloneFromForm, {'attr': {'class': 'form-inline'}}) }}
{{ form_widget(configProfileCloneFromForm.config_profile) }}
{{ form_widget(configProfileCloneFromForm.save) }}
{{ form_end(configProfileCloneFromForm) }}

{% endif %} {% if(device.configProfileAutomatic) %}
{{ form_start(configProfileCloneToForm, {'attr': {'class': 'form-inline'}}) }}
{{ form_widget(configProfileCloneToForm.devices) }} {# #}
{{ form_widget(configProfileCloneToForm.save) }}
{# {{ form_row(configProfileCloneTo._token) }} {{ form_end(configProfileCloneTo, {'render_rest': false}) }} #} {{ form_end(configProfileCloneToForm) }}

This devices cloned to:


{% endif %} {% endif %}
Statistics

Uptime: {{ device.stats.upTime | seconds2human }}

Memory Total: {% if device.stats.memoryTotal is null %}N/A{% else %}{{ device.stats.getMemoryTotal() | formatBytes }}{% endif %}

Memory Available: {% if device.stats.memoryAvailable is null %}N/A{% else %}{{ device.stats.getMemoryAvailable() | formatBytes }}{% endif %}

Running Processes: {{ device.stats.processes|default("N/A") }}

Root Disk Space Available: {% if device.stats.rootSpaceDiskAvailable is null %}N/A{% else %}{{ device.stats.getRootSpaceDiskAvailable()|formatBytes }}{% endif %}

Load Average 1 minute: {{ device.stats.loadavg1|default("N/A") }}

Load Average 5 minute: {{ device.stats.loadavg5|default("N/A") }}

Load Average 15 minute: {{ device.stats.loadavg15|default("N/A") }}

Last Reboot: {{ device.stats.lastReboot|date('d.m.Y H:m:s') }}

Reboot Counter: {{ device.stats.rebootCounter|default("N/A ") }} times

Voltage: {{ device.stats.voltage|default("N/A ") }}{% if device.stats.voltage is not null %}V{% endif %}

Temperature: {{ device.stats.temperature|default("N/A ") }}{% if device.stats.temperature is not null %}°C{% endif %}

Signal strength: {{ device.stats.signalStrength|default("N/A ") }}{% if device.stats.signalStrength is not null %} dBm{% endif %}

Signal quality: {{ device.stats.signalQuality|default("N/A ") }}{% if device.stats.signalQuality is not null %} dB{% endif %}

List of Packages
{% if(packages|length != 0) %} {% for package in packages %} {% endfor %} {% else %}

No package installed.

{% endif %}
# Name Version
{{ loop.index }} {{ package.usermodule.name }} {{ package.usermodule.version }}
SIM Cards

{% set simCards = device.deviceSimCards| merge(device.deviceLastSeen) %} {% set uniqueSimCards = simCards|reduce( (unique, item) => item in unique ? unique : unique|merge([item]), [] ) %} {% if(uniqueSimCards is not empty) %} {% for simCard in uniqueSimCards %}

ICCID: {{ simCard.iccid }}

{% endfor %} {% else %}

No SIM Card available.

{% endif %}
Custom Fields
{% for i in 1..9 %} {% set field_name = "Number"~i %} {% if(attribute(device.customFieldDevice, field_name) is not null) %} {% endif %} {% endfor %} {% for i in 1..9 %} {% set field_name = "Float"~i %} {% if(attribute(device.customFieldDevice, field_name) is not null) %} {% endif %} {% endfor %} {% for i in 1..9 %} {% set field_name = "Text"~i %} {% if(attribute(device.customFieldDevice, field_name) is not null) %} {% endif %} {% endfor %}
Name Value
Number {{ i }} {{ attribute(device.customFieldDevice, field_name) }}
Float {{ i }} {{ attribute(device.customFieldDevice, field_name) }}
Text {{ i }} {{ attribute(device.customFieldDevice, field_name) }}

Network Interfaces

{{ form_start(netDevicesForm, {'attr': {'class': 'form-inline'}}) }}
{% if(device.netDevices|length != 0) %} {% for netDevice in device.netDevices %} {% set inputName = 'cellular_' ~ netDevice.getId() %} {% set inputName = 'linkable_' ~ netDevice.getId() %} {% endfor %} {% else %}

No active network interfaces found.

{% endif %}
# Name MAC IP Address IPv6 Address Collisions Active Cellular Linkable Rx/Tx Packets Rx/Tx Bytes Rx/Tx Errors
{{ loop.index }} {{ netDevice.label }} {{ netDevice.mac }} {% if(netDevice.ipAddr) %}{{ netDevice.ipAddr }}/{{ netDevice.ipMask }}{% else %} --- {% endif %} {% if(netDevice.ip6Addr) %}{{ netDevice.ip6Addr }}/{{ netDevice.ip6Pref }}{% else %} --- {% endif %} {{ netDevice.collisions }} {% if(netDevice.active == '1') %}Yes{% else %}No{% endif %}{{ form_widget(attribute(netDevicesForm, (inputName))) }}{{ form_widget(attribute(netDevicesForm, (inputName))) }} {{ netDevice.rxPackets }} {{ netDevice.rxBytes }} {{ netDevice.rxErrors }}
{{ netDevice.txPackets }} {{ netDevice.txBytes }} {{ netDevice.txErrors }}

{{ form_widget(netDevicesForm.save) }}
{{ form_end(netDevicesForm) }}

History data


{% if(historyData == '[]') %}

No data available yet.

{% else %}
{# #}
{% endif %}
{% endblock body %} {% block javascripts %} {{ parent() }} {% endblock javascripts%}