├── .gitignore ├── screenshot.png ├── package.json ├── .github └── ISSUE_TEMPLATE │ ├── feature_request.md │ └── bug_report.md ├── SECURITY.md ├── LICENSE.md ├── MMM-Pinfo.css ├── CODE_OF_CONDUCT.md ├── node_helper.js ├── README.md └── MMM-Pinfo.js /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules -------------------------------------------------------------------------------- /screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SalekurPolas/MMM-Pinfo/HEAD/screenshot.png -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mmm-pinfo", 3 | "version": "1.0.1", 4 | "description": "An informational module for MagicMirror².", 5 | "main": "MMM-Pinfo.js", 6 | "repository": { 7 | "type": "git", 8 | "url": "git+https://github.com/SalekurPolas/MMM-Pinfo.git" 9 | }, 10 | "keywords": [ 11 | "magicmirror", 12 | "module", 13 | "raspberrypi", 14 | "node" 15 | ], 16 | "author": "Salekur Rahaman", 17 | "license": "MIT", 18 | "bugs": { 19 | "url": "https://github.com/SalekurPolas/MMM-Pinfo/issues" 20 | }, 21 | "homepage": "https://github.com/SalekurPolas/MMM-Pinfo#readme", 22 | "dependencies": { 23 | "systeminformation": "^5.27.1" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Is your feature request related to a problem? Please describe.** 11 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 12 | 13 | **Describe the solution you'd like** 14 | A clear and concise description of what you want to happen. 15 | 16 | **Describe alternatives you've considered** 17 | A clear and concise description of any alternative solutions or features you've considered. 18 | 19 | **Additional context** 20 | Add any other context or screenshots about the feature request here. 21 | -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | # Security Policy 2 | 3 | ## Supported Versions 4 | 5 | Use this section to tell people about which versions of your project are 6 | currently being supported with security updates. 7 | 8 | | Version | Supported | 9 | | ------- | ------------------ | 10 | | 5.1.x | :white_check_mark: | 11 | | 5.0.x | :x: | 12 | | 4.0.x | :white_check_mark: | 13 | | < 4.0 | :x: | 14 | 15 | ## Reporting a Vulnerability 16 | 17 | Use this section to tell people how to report a vulnerability. 18 | 19 | Tell them where to go, how often they can expect to get an update on a 20 | reported vulnerability, what to expect if the vulnerability is accepted or 21 | declined, etc. 22 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | **Describe the bug** 11 | A clear and concise description of what the bug is. 12 | 13 | **To Reproduce** 14 | Steps to reproduce the behavior: 15 | 1. Go to '...' 16 | 2. Click on '....' 17 | 3. Scroll down to '....' 18 | 4. See error 19 | 20 | **Expected behavior** 21 | A clear and concise description of what you expected to happen. 22 | 23 | **Screenshots** 24 | If applicable, add screenshots to help explain your problem. 25 | 26 | **Desktop (please complete the following information):** 27 | - OS: [e.g. iOS] 28 | - Browser [e.g. chrome, safari] 29 | - Version [e.g. 22] 30 | 31 | **Smartphone (please complete the following information):** 32 | - Device: [e.g. iPhone6] 33 | - OS: [e.g. iOS8.1] 34 | - Browser [e.g. stock browser, safari] 35 | - Version [e.g. 22] 36 | 37 | **Additional context** 38 | Add any other context about the problem here. 39 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | # The MIT License (MIT) 2 | 3 | Copyright © 2021 Salekur Rahaman 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /MMM-Pinfo.css: -------------------------------------------------------------------------------- 1 | .Pinfo { 2 | display: flex; 3 | flex-direction: column; 4 | justify-content: flex-start; 5 | font-size: initial; 6 | line-height: 1em; 7 | color: #eee; 8 | } 9 | 10 | .Pinfo .item { 11 | display: flex; 12 | flex-direction: row; 13 | justify-content: center; 14 | height: 1.2em; 15 | } 16 | 17 | .Pinfo .item .label { 18 | order: 1; 19 | text-align: start; 20 | padding-right: 15px; 21 | color: #bdf; 22 | overflow: hidden; 23 | text-overflow: ellipsis; 24 | white-space: nowrap; 25 | } 26 | 27 | .Pinfo .item .container { 28 | order: 2; 29 | height: 100%; 30 | margin-top: 0px; 31 | } 32 | 33 | .Pinfo .item .container .value { 34 | /* overflow: hidden; */ 35 | text-overflow: ellipsis; 36 | white-space: nowrap; 37 | text-align: center; 38 | } 39 | 40 | .Pinfo .total { 41 | text-align: right; 42 | background-color: #333; 43 | position: relative; 44 | width: 100%; 45 | } 46 | 47 | .Pinfo .bar { 48 | text-align: left; 49 | position: absolute; 50 | top: 0; 51 | background-color: #369; 52 | overflow: visible; 53 | height: 100%; 54 | } 55 | 56 | .Pinfo .bar.step0 { 57 | background-color: #33c; 58 | } 59 | 60 | .Pinfo .bar.step10 { 61 | background-color: #43b; 62 | } 63 | 64 | .Pinfo .bar.step20 { 65 | background-color: #53a; 66 | } 67 | 68 | .Pinfo .bar.step30 { 69 | background-color: #639; 70 | } 71 | 72 | .Pinfo .bar.step40 { 73 | background-color: #738; 74 | } 75 | 76 | .Pinfo .bar.step50 { 77 | background-color: #837; 78 | } 79 | 80 | .Pinfo .bar.step60 { 81 | background-color: #936; 82 | } 83 | 84 | .Pinfo .bar.step70 { 85 | background-color: #a35; 86 | } 87 | 88 | .Pinfo .bar.step80 { 89 | background-color: #b34; 90 | } 91 | 92 | .Pinfo .bar.step90 { 93 | background-color: #c33; 94 | } 95 | 96 | .Pinfo .bar.step100 { 97 | background-color: #d32; 98 | } 99 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | We as members, contributors, and leaders pledge to make participation in our 6 | community a harassment-free experience for everyone, regardless of age, body 7 | size, visible or invisible disability, ethnicity, sex characteristics, gender 8 | identity and expression, level of experience, education, socio-economic status, 9 | nationality, personal appearance, race, religion, or sexual identity 10 | and orientation. 11 | 12 | We pledge to act and interact in ways that contribute to an open, welcoming, 13 | diverse, inclusive, and healthy community. 14 | 15 | ## Our Standards 16 | 17 | Examples of behavior that contributes to a positive environment for our 18 | community include: 19 | 20 | * Demonstrating empathy and kindness toward other people 21 | * Being respectful of differing opinions, viewpoints, and experiences 22 | * Giving and gracefully accepting constructive feedback 23 | * Accepting responsibility and apologizing to those affected by our mistakes, 24 | and learning from the experience 25 | * Focusing on what is best not just for us as individuals, but for the 26 | overall community 27 | 28 | Examples of unacceptable behavior include: 29 | 30 | * The use of sexualized language or imagery, and sexual attention or 31 | advances of any kind 32 | * Trolling, insulting or derogatory comments, and personal or political attacks 33 | * Public or private harassment 34 | * Publishing others' private information, such as a physical or email 35 | address, without their explicit permission 36 | * Other conduct which could reasonably be considered inappropriate in a 37 | professional setting 38 | 39 | ## Enforcement Responsibilities 40 | 41 | Community leaders are responsible for clarifying and enforcing our standards of 42 | acceptable behavior and will take appropriate and fair corrective action in 43 | response to any behavior that they deem inappropriate, threatening, offensive, 44 | or harmful. 45 | 46 | Community leaders have the right and responsibility to remove, edit, or reject 47 | comments, commits, code, wiki edits, issues, and other contributions that are 48 | not aligned to this Code of Conduct, and will communicate reasons for moderation 49 | decisions when appropriate. 50 | 51 | ## Scope 52 | 53 | This Code of Conduct applies within all community spaces, and also applies when 54 | an individual is officially representing the community in public spaces. 55 | Examples of representing our community include using an official e-mail address, 56 | posting via an official social media account, or acting as an appointed 57 | representative at an online or offline event. 58 | 59 | ## Enforcement 60 | 61 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 62 | reported to the community leaders responsible for enforcement at 63 | . 64 | All complaints will be reviewed and investigated promptly and fairly. 65 | 66 | All community leaders are obligated to respect the privacy and security of the 67 | reporter of any incident. 68 | 69 | ## Enforcement Guidelines 70 | 71 | Community leaders will follow these Community Impact Guidelines in determining 72 | the consequences for any action they deem in violation of this Code of Conduct: 73 | 74 | ### 1. Correction 75 | 76 | **Community Impact**: Use of inappropriate language or other behavior deemed 77 | unprofessional or unwelcome in the community. 78 | 79 | **Consequence**: A private, written warning from community leaders, providing 80 | clarity around the nature of the violation and an explanation of why the 81 | behavior was inappropriate. A public apology may be requested. 82 | 83 | ### 2. Warning 84 | 85 | **Community Impact**: A violation through a single incident or series 86 | of actions. 87 | 88 | **Consequence**: A warning with consequences for continued behavior. No 89 | interaction with the people involved, including unsolicited interaction with 90 | those enforcing the Code of Conduct, for a specified period of time. This 91 | includes avoiding interactions in community spaces as well as external channels 92 | like social media. Violating these terms may lead to a temporary or 93 | permanent ban. 94 | 95 | ### 3. Temporary Ban 96 | 97 | **Community Impact**: A serious violation of community standards, including 98 | sustained inappropriate behavior. 99 | 100 | **Consequence**: A temporary ban from any sort of interaction or public 101 | communication with the community for a specified period of time. No public or 102 | private interaction with the people involved, including unsolicited interaction 103 | with those enforcing the Code of Conduct, is allowed during this period. 104 | Violating these terms may lead to a permanent ban. 105 | 106 | ### 4. Permanent Ban 107 | 108 | **Community Impact**: Demonstrating a pattern of violation of community 109 | standards, including sustained inappropriate behavior, harassment of an 110 | individual, or aggression toward or disparagement of classes of individuals. 111 | 112 | **Consequence**: A permanent ban from any sort of public interaction within 113 | the community. 114 | 115 | ## Attribution 116 | 117 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], 118 | version 2.0, available at 119 | https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. 120 | 121 | Community Impact Guidelines were inspired by [Mozilla's code of conduct 122 | enforcement ladder](https://github.com/mozilla/diversity). 123 | 124 | [homepage]: https://www.contributor-covenant.org 125 | 126 | For answers to common questions about this code of conduct, see the FAQ at 127 | https://www.contributor-covenant.org/faq. Translations are available at 128 | https://www.contributor-covenant.org/translations. 129 | -------------------------------------------------------------------------------- /node_helper.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const fs = require('fs'); 4 | const os = require('os'); 5 | const si = require('systeminformation'); 6 | const NodeHelper = require('node_helper'); 7 | var log = (...args) => {} 8 | 9 | module.exports = NodeHelper.create({ 10 | start: function() { 11 | this.config = {}; 12 | this.timer = null; 13 | 14 | this.status = { 15 | DEVICE: { 16 | model: 'unknown', 17 | serial: 'unknown' 18 | }, 19 | OS: 'unknown', 20 | NETWORK: { 21 | type: 'unknown', 22 | ipv4: 'unknown', 23 | ipv6: 'unknown', 24 | mac: 'unknown' 25 | }, 26 | MEMORY: { 27 | total: 0, 28 | used: 0, 29 | percent: 0 30 | }, 31 | STORAGE: { 32 | total: 0, 33 | used: 0, 34 | percent: 0 35 | }, 36 | CPU: { 37 | type: 'unknown', 38 | usage: 0, 39 | temp: 0 40 | }, 41 | UPTIME: 'unknown' 42 | } 43 | 44 | this.network = os.networkInterfaces(); 45 | this.DeviceInfo = fs.readFileSync('/proc/cpuinfo', 'utf8').split("\n"); 46 | }, 47 | 48 | socketNotificationReceived: function(notification, payload) { 49 | if (notification === "CONFIG") { 50 | this.config = payload; 51 | if(this.config.debug) { 52 | log = (...args) => { 53 | console.log("[" + this.name + "]", ...args); 54 | } 55 | } 56 | 57 | this.collectStaticInfo(); 58 | } 59 | }, 60 | 61 | collectStaticInfo: async function() { 62 | await this.getDeviceInfo(); 63 | await this.getOSInfo(); 64 | this.scheduler(); 65 | }, 66 | 67 | scheduler: async function() { 68 | clearTimeout(this.timer); 69 | 70 | await this.collectDynamicInfo(resolve => { 71 | this.sendSocketNotification('STATUS', this.status); 72 | }); 73 | 74 | this.timer = setTimeout(() => { 75 | this.scheduler(); 76 | }, this.config.refresh); 77 | }, 78 | 79 | collectDynamicInfo: async function(resolve) { 80 | await this.getNetworkInfo(); 81 | await this.getMemoryInfo(); 82 | await this.getStorageInfo(); 83 | await this.getCPUInfo(); 84 | await this.getUptime(); 85 | resolve(); 86 | }, 87 | 88 | getUptime: function() { 89 | this.status['UPTIME'] = this.convertTime(si.time().uptime) 90 | }, 91 | 92 | getDeviceInfo: function() { 93 | return new Promise((resolve) => { 94 | var ModelInfo = this.DeviceInfo[this.DeviceInfo.length - 2].split(":"); 95 | if (!ModelInfo[1]) { 96 | resolve(); 97 | return; 98 | } 99 | var model = ModelInfo[1].slice(1).split(' '); 100 | delete model[model.length-1]; 101 | delete model[model.length-2]; 102 | this.status['DEVICE'].model = model.toString().replace(new RegExp(',', 'g'), ' '); 103 | 104 | var SerialInfo = this.DeviceInfo[this.DeviceInfo.length - 3].split(":"); 105 | this.status['DEVICE'].serial = SerialInfo[1].slice(1); 106 | resolve(); 107 | }) 108 | }, 109 | 110 | getOSInfo: function() { 111 | return new Promise((resolve) => { 112 | si.osInfo().then(data => { 113 | this.status['OS'] = data.distro.split(' ')[0] + " " + data.release + " (" + data.codename + ")"; 114 | resolve(); 115 | }).catch(error => { 116 | log(error); 117 | }); 118 | }) 119 | }, 120 | 121 | getNetworkInfo: function() { 122 | return new Promise((resolve) => { 123 | si.networkInterfaceDefault().then(defaultInt => { 124 | si.networkInterfaces().then(data => { 125 | data.forEach(net => { 126 | if((net.iface != "lo") && (net.iface === defaultInt)) { 127 | this.status['NETWORK'].type = net.iface; 128 | this.status['NETWORK'].ipv4 = net.ip4; 129 | this.status['NETWORK'].ipv6 = net.ip6; 130 | this.status['NETWORK'].mac = net.mac; 131 | } resolve(); 132 | }); 133 | }).catch(error => { 134 | log(error); 135 | }); 136 | }).catch(error => { 137 | log(error); 138 | }); 139 | }) 140 | }, 141 | 142 | getMemoryInfo: function() { 143 | return new Promise((resolve) => { 144 | si.mem().then(data => { 145 | this.status['MEMORY'].total = this.convert(data.total, 0); 146 | this.status['MEMORY'].used = this.convert(data.used-data.buffcache, 2); 147 | this.status['MEMORY'].percent = ((data.used-data.buffcache) / data.total * 100).toFixed(0); 148 | resolve(); 149 | }).catch(error => { 150 | log(error); 151 | }); 152 | }); 153 | }, 154 | 155 | getStorageInfo: function() { 156 | return new Promise((resolve) => { 157 | si.fsSize().then(data => { 158 | data.forEach(partition => { 159 | if(partition.mount === '/') { 160 | this.status['STORAGE'].total = this.convert(partition.size, 2); 161 | this.status['STORAGE'].used = this.convert(partition.used, 2); 162 | this.status['STORAGE'].percent = partition.use; 163 | resolve(); 164 | } 165 | }) 166 | }).catch(error => { 167 | log(error); 168 | }); 169 | }); 170 | }, 171 | 172 | getCPUInfo: function() { 173 | return new Promise((resolve) => { 174 | var CPUInfo = this.DeviceInfo[this.DeviceInfo.length - 14].split(":"); 175 | try { 176 | var type = CPUInfo[1].slice(1).split(' '); 177 | delete type[type.length-1]; 178 | delete type[type.length-2]; 179 | delete type[type.length-3]; 180 | this.status['CPU'].type = type.toString().replace(new RegExp(',', 'g'), ' '); 181 | } 182 | catch { 183 | this.status['CPU'].type = 'Not available' 184 | } 185 | 186 | si.currentLoad().then(data => { 187 | this.status['CPU'].usage = data.currentLoad.toFixed(0); 188 | }).catch(error => { 189 | log(error); 190 | }); 191 | 192 | si.cpuTemperature().then(data => { 193 | this.status['CPU'].temp = data.main.toFixed(1); 194 | }).catch(error => { 195 | log(error); 196 | }); 197 | resolve(); 198 | }) 199 | }, 200 | 201 | convert: function(octet, FixTo) { 202 | octet = Math.abs(parseInt(octet, 10)); 203 | var def = [ 204 | [1, 'B'], 205 | [1024, 'KB'], 206 | [1024*1024, 'MB'], 207 | [1024*1024*1024, 'GB'], 208 | [1024*1024*1024*1024, 'TB']]; 209 | 210 | for(var i = 0; i < def.length; i++){ 211 | if(octet < def[i][0]) return (octet / def[i-1][0]).toFixed(FixTo) + def[i - 1][1]; 212 | } 213 | }, 214 | 215 | convertTime: function(seconds) { 216 | if (seconds > 60*60*24) { 217 | var humanTime = Math.round(seconds/(60*60*24), 0) + ' days' 218 | } 219 | else if (seconds > 60*60) { 220 | humanTime = Math.round(seconds/(60*60), 0) + ' hours' 221 | } 222 | else if (seconds > 60) { 223 | humanTime = Math.round(seconds/60, 0) + ' minutes' 224 | } 225 | else { 226 | humanTime = Math.round(seconds, 0) + ' seconds' 227 | } 228 | return humanTime 229 | }, 230 | 231 | }); 232 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # MMM-Pinfo 2 | 3 | A [MagicMirror²](https://magicmirror.builders/) module that can display device information. This module is mainly inspired by [MMM-Tools](https://github.com/bugsounet/MMM-Tools). To develop this module I used Node.js. Also, MagicMirror users can set warnings for abnormal information. MagicMirror will send a notification if any information exceeds the standard value. 4 | 5 | ## Screenshot 6 | 7 |  8 | 9 | ## Dependencies 10 | 11 | - [systeminformation](https://www.npmjs.com/package/systeminformation) 12 | 13 | ## Installation 14 | 15 | Get the module directly from GitHub and install to MagicMirror using the following commands. 16 | 17 | ```sh 18 | cd ~/MagicMirror/modules/ 19 | git clone https://github.com/SalekurPolas/MMM-Pinfo 20 | cd MMM-Pinfo 21 | npm install 22 | ``` 23 | 24 | ### Manual Installation 25 | 26 | Although dependencies will automatically install during installation on MagicMirror, you can manually install them by the following steps. 27 | 28 | 1. systeminformation 29 | 30 | ```sh 31 | cd ~/MagicMirror/MMM-Pinfo 32 | npm install systeminformation 33 | ``` 34 | 35 | ## Updating 36 | 37 | ```sh 38 | cd ~/MagicMirror/modules/MMM-Pinfo 39 | git pull 40 | npm install 41 | ``` 42 | 43 | ## Usage 44 | 45 | `MMM-Pinfo` module can display the following information 46 | 47 | | Name | Description 48 | | --------------- | -------- 49 | | Model | Display model name and number of the device 50 | | Serial | Display the unique serial number of the device 51 | | Network type | Display connected network types like WLAN, LAN, etc 52 | | IPv4 | Display IPv4 of the corresponding network 53 | | IPv6 | Display IPv6 of the corresponding network 54 | | MAC | Display MAC address of the corresponding network 55 | | RAM | Display total size, usage, and percentage usage of the RAM 56 | | Storage | Display total size, usage, and percentage usage of the Storage 57 | | CPU type | Display CPU type of the device 58 | | CPU usage | Display the percentage of usage 59 | | CPU temp | Display current temperature of the CPU 60 | | System uptime | Display the uptime of the system 61 | 62 | ### Module Usage 63 | 64 | To setup `MMM-Pinfo` module in MagicMirror², add the following section to the `config.js` file in the `MagicMirror/config` directory. 65 | 66 | ```js 67 | { 68 | module: 'MMM-Pinfo', 69 | position: 'top_left' 70 | }, 71 | ``` 72 | 73 | ## Configuration 74 | 75 |
| Option | 79 |Type | 80 |Default | 81 |Description | 82 |
debug |
87 | boolean |
88 | true |
89 | Enable printing debug information | 90 |
refresh |
93 | number |
94 | 5000 |
95 | Time in milliseconds to refresh automatically | 96 |
itemAlign |
99 | string |
100 | 'left' |
101 | MMM-Pinfo items alignment. | 102 |
labelAlign |
105 | string |
106 | 'left' |
107 | Item's label alignment. | 108 |
valueAlign |
111 | string |
112 | 'center' |
113 | Item's value alignment. | 114 |
labelSize |
117 | number |
118 | null |
119 | Size of the item's label in px | 120 |
containerSize |
123 | number |
124 | null |
125 | Size of the item's value container in px | 126 |
DEVICE.labelModel |
129 | string |
130 | 'Model' |
131 | Label of the model | 132 |
DEVICE.displayModel |
135 | boolean |
136 | true |
137 | Display model | 138 |
DEVICE.orderModel |
141 | number |
142 | 1 |
143 | Order of model | 144 |
DEVICE.labelSerial |
147 | string |
148 | 'Serial' |
149 | Label of serial | 150 |
DEVICE.displaySerial |
153 | boolean |
154 | true |
155 | Display serial | 156 |
DEVICE.orderSerial |
159 | number |
160 | 2 |
161 | Order of serial | 162 |
OS.labelOs |
165 | string |
166 | 'OS' |
167 | Label of OS | 168 |
OS.displayOs |
171 | boolean |
172 | false |
173 | Display OS | 174 |
OS.orderOs |
177 | number |
178 | 3 |
179 | Order of OS | 180 |
NETWORK.labelType |
183 | string |
184 | 'NET Type' |
185 | Label of NET Type | 186 |
NETWORK.displayType |
189 | boolean |
190 | false |
191 | Display NET Type | 192 |
NETWORK.orderType |
195 | number |
196 | 4 |
197 | Order of NET Type | 198 |
NETWORK.labelIPv4 |
201 | string |
202 | 'IPv4' |
203 | Label of IPv4 | 204 |
NETWORK.displayIPv4 |
207 | boolean |
208 | true |
209 | Display IPv4 | 210 |
NETWORK.orderIPv4 |
213 | number |
214 | 5 |
215 | Order of IPv4 | 216 |
NETWORK.labelIPv6 |
219 | string |
220 | 'IPv6' |
221 | Label of IPv6 | 222 |
NETWORK.displayIPv6 |
225 | boolean |
226 | false |
227 | Display IPv6 | 228 |
NETWORK.orderIPv6 |
231 | number |
232 | 6 |
233 | Order of IPv6 | 234 |
NETWORK.labelMac |
237 | string |
238 | 'MAC' |
239 | Label of MAC | 240 |
NETWORK.displayMac |
243 | boolean |
244 | false |
245 | Display MAC | 246 |
NETWORK.orderMac |
249 | number |
250 | 7 |
251 | Order of MAC | 252 |
RAM.labelRam |
255 | string |
256 | 'RAM' |
257 | Label of RAM | 258 |
RAM.displayRam |
261 | boolean |
262 | true |
263 | Display RAM | 264 |
RAM.orderRam |
267 | number |
268 | 8 |
269 | Order of RAM | 270 |
STORAGE.labelStorage |
273 | string |
274 | 'Storage' |
275 | Label of Storage | 276 |
STORAGE.displayStorage |
279 | boolean |
280 | true |
281 | Display Storage | 282 |
STORAGE.orderStorage |
285 | number |
286 | 9 |
287 | Order of Storage | 288 |
CPU.labelType |
291 | string |
292 | 'CPU Type' |
293 | Label of CPU Type | 294 |
CPU.displayType |
297 | boolean |
298 | false |
299 | Display CPU Type | 300 |
CPU.orderType |
303 | number |
304 | 10 |
305 | Order of CPU Type | 306 |
CPU.labelUsage |
309 | string |
310 | 'CPU Usage' |
311 | Label of CPU Usage | 312 |
CPU.displayUsage |
315 | boolean |
316 | false |
317 | Display CPU Usage | 318 |
CPU.orderUsage |
321 | number |
322 | 11 |
323 | Order of CPU Usage | 324 |
CPU.labelTemp |
327 | string |
328 | 'CPU Temp' |
329 | Label of CPU Temp | 330 |
CPU.displayTemp |
333 | boolean |
334 | true |
335 | Display CPU Temp | 336 |
CPU.orderTemp |
339 | number |
340 | 12 |
341 | Order of CPU Temp | 342 |UPTIME.labelUptime |
344 | string |
345 | 'Uptime' |
346 | Label of Uptime | 347 | 348 |
UPTIME.displayUptime |
350 | boolean |
351 | false |
352 | Display Uptime | 353 |
UPTIME.orderUptime |
356 | number |
357 | 13 |
358 | Order of Uptime | 359 |
WARNING.enable |
362 | boolean |
363 | false |
364 | Display warning for unusual value | 365 |
WARNING.interval |
368 | number |
369 | 5000 |
370 | Time in milliseconds to refresh warning | 371 |
WARNING.check.CPU_TEMP |
374 | number |
375 | 65 |
376 | Normal temperature for CPU Temp | 377 |
WARNING.check.CPU_USAGE |
380 | number |
381 | 75 |
382 | Normal usage for CPU | 383 |
WARNING.check.RAM_USED |
386 | number |
387 | 80 |
388 | Normal usage for RAM | 389 |
WARNING.check.STORAGE_USED |
392 | number |
393 | 80 |
394 | Normal usage for STORAGE | 395 |