-
Notifications
You must be signed in to change notification settings - Fork 11
Machine Information
The Machine Information data is often used in the evaluation of constraints, so they must be consistent for all native implementations.
As our Node.js implementation is the reference implementation for the native part, the library systeminformation
is used to get most of the values for the operating systems Mac, Win and Linux:
Have a look at this lib and the REST interface (/machine
) to know which info is available and how the data is represented.
Although the lib makes a good job in always returning the same data representation, unfortunately the returned data from the operating systems is not always so easy to handle. E.g. The amount of disks and the allowed storage to write can be quite different on different OSs.
Our goal is to be as consistent as possible for all platforms in the meaning of this values.
Because not every information can automatically be determined by a library, some of the machine information is set in the configuration and can (also) be read via the Machine Information module. E.g. the Machine category
or domain
.
If it can not be automatically detected, some values may also be hard-coded within the Native Part of different platforms. E.g. on Android and IOS one value of category
should be set to [ "Portable" ]
.
Most machine values are cached in the Universal part, so that it doesn't need to request the information to often. See machineInformation.js
for the specific cache values.
The following table represents all data the machine module can response and some infos for the specific Operating systems. For the data representation, please have a look at the REST interface. For the meaning -- if not given -- please have a look at https://systeminformation.io/os.html or the linked wiki pages.
Attention: Not every data can be collected from every platform, so the user needs to be aware that some Information is maybe not available. If a value can't be read by a Native part, the information is not given to the Universal part (instead of null
, nothing is sent back).
*) _How is the data retrieved: n (native part self-implemented, e.g. via Node.js APIs, or via external library, e.g. systeminformation), c (set via config), u (universal part self-implemented), a (automatically determined depending on other values or periphery)
Data | How* | Meaning | Browser | Linux | Mac | IOS | Android | Win |
---|---|---|---|---|---|---|---|---|
name |
c | The configured name. If not configured, same as hostname | ||||||
hostname |
n | |||||||
description |
c | |||||||
id |
n | canvas fingerprinting |
vendorID |
|||||
online |
u | see Internal Variables | ||||||
onlineCheckingAddresses |
c | see Internal Variables | ||||||
os.platform |
n | Varies based on platform platformjs | "darwin" | "linux" | ||||
os.distro |
n | Varies based on platform e.g iOS on iphones | "iOS" | "android" | ||||
os.release |
n | Varies based on platform | int sdk-version | |||||
cpu.cores |
n | Gets the reported logical cpu cores WebCPU | ||||||
cpu.physicalCores |
n | Gets an estimation of the physical cores | missing | |||||
cpu.processors |
n | null |
Hardcoded to 1
|
missing | ||||
cpu.speed |
n | missing | missing | |||||
cpu.currentLoad |
n | missing | missing (0 if not available) use instead: "currentSpeed" as avg Core Speed | |||||
cpu.loadLastMinute |
u | |||||||
cpu.loadLastTenMinutes |
u | |||||||
cpu.loadLastHalfHour |
u | |||||||
cpu.loadLastHour |
u | |||||||
cpu.loadLastHalfDay |
u | |||||||
cpu.loadLastDay |
u | |||||||
mem.total |
n | the total available memory for the engine | Gets the total available memory for the tab, not supported in Firefox and Safari Window.performance.memory | |||||
mem.free |
n | Yes | ||||||
mem.load |
n | the current used memory in percent between 0.0 - 1.0, (1 - free/total ) |
Yes | |||||
disk[x].type |
n | missing | "SSD" | "SSD" | ||||
disk[x].total |
n |
navigator.storage.estimate() gives the estimated free disk space |
||||||
disk[x].free |
n | should be the free and writeable space for the Engine | Yes | |||||
disk[x].used |
n | Yes | ||||||
battery.hasBattery |
n | hardcoded to true
|
hardcoded to true
|
|||||
battery.percent |
n | Gets the current charge level | ||||||
battery.maxCapacity |
n | missing | missing | may vary by 2% | ||||
battery.isCharging |
n | Boolean |
||||||
battery.timeremaining |
n | Gives the time remaining in seconds | missing | missing | ||||
battery.acconnected |
n | missing | missing | |||||
display[x].currentResX |
n | screen width | usable pixels (smaller than physical ones) | |||||
display[x].currentResY |
n | screen height | usable pixels (smaller than physical ones) | |||||
network[x].type |
n |
wireless for wifi, cellular for cell network |
"wireless", "cellular", "wired", "p2p" | |||||
network[x].ip4 |
n | (only one per network) | ||||||
network[x].netmaskv4 |
n | - | ||||||
network[x].netmaskv6 |
n | missing | - | |||||
network[x].ip6 |
n | (only one per network) | ||||||
network[x].mac |
n | missing | ||||||
wifi[x] |
n | array of available wifi networks | Currently not implemented | |||||
wifi[x].ssid |
n | |||||||
wifi[x].connected |
n | if connected to the wifi network | ||||||
wifi[x].bssid |
n | |||||||
wifi[x].signalLevel |
n | |||||||
wifi[x].quality |
n | |||||||
wifi[x].security |
n | missing | ||||||
outputs[x] ** |
a in u and n + c | see Engine Variables, e.g, if a display is available | "Screen", "Speaker" | "Screen", "Speaker" | "Speaker", "Screen" | |||
inputs[x] ** |
a in u and n + c | see Engine Variables | "Keyboard", "Camera", "Microphone", "Touchscreen" | "Keyboard", "Numpad", "Microphone", "Touchscreen" | "Keyboard", "Camera", "Microphone", "Numpad", "Touchscreen" | |||
classes[x] ** |
a in n + c | see Engine Variables | "Portable" | "Portable" | ||||
domains[x] |
c | see Engine Variables | ||||||
currentlyConnectedEnvironments[x] |
a in u + c | see Engine Variables | ||||||
processes.runUntrustedCode |
u | How? | ||||||
processes.acceptUserTasks |
a in n + c | see Engine Variables | true |
**) bold values = hard-coded, non-bold = determined by the Native part
This is the Dev Wiki