iobroker.nexowatt-ui 0.6.144
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +46 -0
- package/README.md +25 -0
- package/admin/admin.png +0 -0
- package/admin/admin_logo_.ico +0 -0
- package/admin/appcenter.html +57 -0
- package/admin/index_m.html +427 -0
- package/admin/index_m.js +824 -0
- package/admin/jsonConfig.json +161 -0
- package/admin/license-generator.html +312 -0
- package/admin/license.html +416 -0
- package/admin/nexowatt-devices.svg +7 -0
- package/admin/simulation.html +57 -0
- package/admin/smarthomecfg.html +57 -0
- package/admin/smarthomevis.html +57 -0
- package/admin/style.css +318 -0
- package/admin/tab.html +95 -0
- package/admin/templates.json +82365 -0
- package/admin/words.js +31 -0
- package/ems/consumers/evcs.js +125 -0
- package/ems/consumers/generic-load.js +69 -0
- package/ems/consumers/generic-setpoint.js +81 -0
- package/ems/consumers/index.js +33 -0
- package/ems/consumers/sg-ready.js +113 -0
- package/ems/datapoints.js +453 -0
- package/ems/engine.js +810 -0
- package/ems/module-manager.js +334 -0
- package/ems/modules/base.js +29 -0
- package/ems/modules/bhkw-control.js +450 -0
- package/ems/modules/charging-management.js +4007 -0
- package/ems/modules/core-limits.js +342 -0
- package/ems/modules/generator-control.js +450 -0
- package/ems/modules/grid-constraints.js +701 -0
- package/ems/modules/multi-use.js +762 -0
- package/ems/modules/para14a.js +532 -0
- package/ems/modules/peak-shaving.js +670 -0
- package/ems/modules/pv-forecast.js +616 -0
- package/ems/modules/storage-control.js +2065 -0
- package/ems/modules/storage-mapping.js +291 -0
- package/ems/modules/tarif-vis.js +1272 -0
- package/ems/modules/thermal-control.js +853 -0
- package/ems/modules/threshold-control.js +479 -0
- package/ems/nexologic-engine.js +1859 -0
- package/ems/reasons.js +141 -0
- package/io-package.json +1502 -0
- package/main.js +13884 -0
- package/package.json +48 -0
- package/www/admin.png +0 -0
- package/www/app.js +6241 -0
- package/www/apple-touch-icon.png +0 -0
- package/www/assets/icons/nexowatt-120.png +0 -0
- package/www/assets/icons/nexowatt-128.png +0 -0
- package/www/assets/icons/nexowatt-152.png +0 -0
- package/www/assets/icons/nexowatt-16.png +0 -0
- package/www/assets/icons/nexowatt-180.png +0 -0
- package/www/assets/icons/nexowatt-192-maskable.png +0 -0
- package/www/assets/icons/nexowatt-192.png +0 -0
- package/www/assets/icons/nexowatt-256.png +0 -0
- package/www/assets/icons/nexowatt-32.png +0 -0
- package/www/assets/icons/nexowatt-384.png +0 -0
- package/www/assets/icons/nexowatt-48.png +0 -0
- package/www/assets/icons/nexowatt-512-maskable.png +0 -0
- package/www/assets/icons/nexowatt-512.png +0 -0
- package/www/assets/icons/nexowatt-64.png +0 -0
- package/www/auth.js +333 -0
- package/www/ems-apps.html +1077 -0
- package/www/ems-apps.js +7289 -0
- package/www/evcs-report.css +77 -0
- package/www/evcs-report.html +99 -0
- package/www/evcs-report.js +315 -0
- package/www/evcs.html +74 -0
- package/www/evcs.js +1296 -0
- package/www/history.html +195 -0
- package/www/history.js +1489 -0
- package/www/icons/battery.png +0 -0
- package/www/icons/building.png +0 -0
- package/www/icons/building.png.bak +0 -0
- package/www/icons/ev.png +0 -0
- package/www/icons/grid.png +0 -0
- package/www/icons/solar.png +0 -0
- package/www/index.html +903 -0
- package/www/logic.html +174 -0
- package/www/logic.js +2371 -0
- package/www/manifest.webmanifest +47 -0
- package/www/nexowatt-logo.png +0 -0
- package/www/rfid-report.html +75 -0
- package/www/rfid-report.js +148 -0
- package/www/settings.html +481 -0
- package/www/simulation.html +121 -0
- package/www/simulation.js +331 -0
- package/www/smarthome-config.html +102 -0
- package/www/smarthome-config.js +2909 -0
- package/www/smarthome.html +80 -0
- package/www/smarthome.js +4238 -0
- package/www/styles.css +4601 -0
- package/www/sw.js +72 -0
- package/www/year-report.css +105 -0
- package/www/year-report.html +90 -0
- package/www/year-report.js +739 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
NexoWatt Proprietary License (NPL) v1.0
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 NexoWatt
|
|
4
|
+
All rights reserved.
|
|
5
|
+
|
|
6
|
+
IMPORTANT: This repository may be publicly accessible (e.g., via Git hosting), but it is NOT open-source.
|
|
7
|
+
No permission is granted to use this Software except as expressly permitted below.
|
|
8
|
+
|
|
9
|
+
1) Definitions
|
|
10
|
+
- "Software" means the source code, object code, binaries, assets, configuration, documentation, and any other
|
|
11
|
+
materials contained in this repository, including any modified or derivative versions.
|
|
12
|
+
- "NexoWatt" means the copyright holder (NexoWatt) and its authorized legal representatives.
|
|
13
|
+
- "Authorized Parties" means employees and contractors of NexoWatt who are acting on behalf of NexoWatt and only
|
|
14
|
+
for NexoWatt purposes.
|
|
15
|
+
|
|
16
|
+
2) No License Granted
|
|
17
|
+
Except for the limited permission in Section 3, NexoWatt grants NO license or other rights to any person or entity.
|
|
18
|
+
Without a separate, explicit, written permission from NexoWatt, you may not:
|
|
19
|
+
- use or run the Software (including in production, testing, evaluation, or demonstration),
|
|
20
|
+
- copy, download, clone, reproduce, or store the Software,
|
|
21
|
+
- modify, merge, adapt, translate, or create derivative works,
|
|
22
|
+
- publish, distribute, sublicense, sell, rent, lease, host, or provide the Software as a service,
|
|
23
|
+
- disclose the Software to any third party.
|
|
24
|
+
|
|
25
|
+
3) Limited Permission for NexoWatt
|
|
26
|
+
NexoWatt grants Authorized Parties a limited, revocable, non-transferable permission to access, use, copy, and modify
|
|
27
|
+
the Software solely for internal NexoWatt development, testing, deployment, and support activities.
|
|
28
|
+
|
|
29
|
+
4) Contributions
|
|
30
|
+
Any contributions submitted to NexoWatt for inclusion in the Software (pull requests, patches, suggestions, etc.)
|
|
31
|
+
are provided under terms to be agreed in writing with NexoWatt. NexoWatt may reject contributions at its discretion.
|
|
32
|
+
|
|
33
|
+
5) Termination
|
|
34
|
+
Any violation of this license automatically terminates any permissions granted herein. Upon termination, you must
|
|
35
|
+
immediately stop all use and delete all copies of the Software in your possession or control.
|
|
36
|
+
|
|
37
|
+
6) Disclaimer of Warranty
|
|
38
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
|
|
39
|
+
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
|
|
40
|
+
|
|
41
|
+
7) Limitation of Liability
|
|
42
|
+
IN NO EVENT SHALL NEXOWATT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
|
|
43
|
+
OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
44
|
+
|
|
45
|
+
8) Contact
|
|
46
|
+
For licensing inquiries, contact NexoWatt to obtain a written license.
|
package/README.md
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# NexoWatt UI
|
|
2
|
+
|
|
3
|
+
Die **NexoWatt UI** ist die responsive Visualisierungsoberfläche (Web-UI) des NexoWatt EMS.
|
|
4
|
+
Sie stellt Energieflüsse, Zustände und ausgewählte Steuerfunktionen übersichtlich auf Desktop, Tablet und Smartphone dar.
|
|
5
|
+
|
|
6
|
+
## Umfang der Visualisierung
|
|
7
|
+
|
|
8
|
+
Typische Bereiche/Funktionen innerhalb der VIS:
|
|
9
|
+
|
|
10
|
+
- **Live-Ansicht**: Aktuelle Energieflüsse (Erzeugung, Speicher, Netz, Verbraucher)
|
|
11
|
+
- **E‑Mobilität (EVCS)**: Übersicht und Steuerung von Ladestationen/Wallboxen (inkl. Gesamtleistung)
|
|
12
|
+
- **History**: Zeitreihen-/Verlaufsdarstellungen und Auswertungen
|
|
13
|
+
- **SmartHome**: Gerätekacheln und Szenen/Automationen (UI‑seitig)
|
|
14
|
+
- **Allgemeine UI‑Eigenschaften**: responsives Layout, konsistentes NexoWatt‑Branding (Farben/Icons), Echtzeit‑Aktualisierung
|
|
15
|
+
|
|
16
|
+
## Lizenz
|
|
17
|
+
|
|
18
|
+
**Proprietär — ausschließlich zur Nutzung durch NexoWatt.**
|
|
19
|
+
|
|
20
|
+
Copyright (c) 2025 NexoWatt. Alle Rechte vorbehalten.
|
|
21
|
+
|
|
22
|
+
Dieses Repository ist öffentlich einsehbar, ist jedoch **nicht Open Source**.
|
|
23
|
+
Jegliche Nutzung, Vervielfältigung, Änderung, Verbreitung oder Bereitstellung (ganz oder teilweise) ist ohne **ausdrückliche schriftliche** Genehmigung von NexoWatt untersagt.
|
|
24
|
+
|
|
25
|
+
Details siehe Datei **LICENSE**.
|
package/admin/admin.png
ADDED
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="de">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8"/>
|
|
5
|
+
<title>NexoWatt – EMS App‑Center</title>
|
|
6
|
+
<style>
|
|
7
|
+
body{background:#0b0d0f;color:#e7edf2;font-family:system-ui,Segoe UI,Roboto,Ubuntu,sans-serif;display:flex;align-items:center;justify-content:center;height:100vh;margin:0}
|
|
8
|
+
.box{opacity:.95;text-align:center;max-width:720px;padding:24px}
|
|
9
|
+
.title{font-size:22px;margin:0 0 10px 0}
|
|
10
|
+
.sub{opacity:.8;margin:0 0 18px 0;font-size:14px;line-height:1.4}
|
|
11
|
+
code{font-family:ui-monospace,Menlo,Consolas,monospace}
|
|
12
|
+
</style>
|
|
13
|
+
</head>
|
|
14
|
+
<body>
|
|
15
|
+
<div class="box">
|
|
16
|
+
<h2 class="title">NexoWatt – EMS App‑Center</h2>
|
|
17
|
+
<p class="sub">Weiterleitung wird vorbereitet…</p>
|
|
18
|
+
<div id="msg" class="sub">Port wird geladen…</div>
|
|
19
|
+
</div>
|
|
20
|
+
|
|
21
|
+
<script>
|
|
22
|
+
(function(){
|
|
23
|
+
function getQuery(key){ const m = new URLSearchParams(window.location.search); return m.get(key); }
|
|
24
|
+
var inst = getQuery('instance') || '0';
|
|
25
|
+
|
|
26
|
+
function buildBase(port){
|
|
27
|
+
var host = window.location.hostname;
|
|
28
|
+
var proto = window.location.protocol;
|
|
29
|
+
return proto + '//' + host + ':' + port;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
function go(port){
|
|
33
|
+
var base = buildBase(port);
|
|
34
|
+
var appsUrl = base + '/ems-apps.html';
|
|
35
|
+
var msg = document.getElementById('msg');
|
|
36
|
+
if (msg) msg.innerHTML = 'Öffne: <code>' + appsUrl + '</code>';
|
|
37
|
+
try { window.top.location.href = appsUrl; } catch(_e) { window.location.href = appsUrl; }
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
function fallback(){ go(8188); }
|
|
41
|
+
|
|
42
|
+
try {
|
|
43
|
+
if (window.parent && window.parent.servConn) {
|
|
44
|
+
window.parent.servConn.getObject('system.adapter.nexowatt-ui.' + inst, function(err, obj){
|
|
45
|
+
var port = (obj && obj.native && obj.native.port) || 8188;
|
|
46
|
+
go(port);
|
|
47
|
+
});
|
|
48
|
+
} else {
|
|
49
|
+
fallback();
|
|
50
|
+
}
|
|
51
|
+
} catch(e) {
|
|
52
|
+
fallback();
|
|
53
|
+
}
|
|
54
|
+
})();
|
|
55
|
+
</script>
|
|
56
|
+
</body>
|
|
57
|
+
</html>
|
|
@@ -0,0 +1,427 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html>
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
|
+
<title class="translate">nexowatt-devices</title>
|
|
7
|
+
|
|
8
|
+
<link rel="stylesheet" type="text/css" href="../../lib/css/materialize.css">
|
|
9
|
+
<link rel="stylesheet" type="text/css" href="../../css/adapter.css">
|
|
10
|
+
<link rel="stylesheet" type="text/css" href="style.css">
|
|
11
|
+
|
|
12
|
+
<script type="text/javascript" src="../../lib/js/jquery-3.2.1.min.js"></script>
|
|
13
|
+
<script type="text/javascript" src="../../socket.io/socket.io.js"></script>
|
|
14
|
+
<script type="text/javascript" src="../../js/translate.js"></script>
|
|
15
|
+
<script type="text/javascript" src="../../lib/js/materialize.js"></script>
|
|
16
|
+
<script type="text/javascript" src="../../js/adapter-settings.js"></script>
|
|
17
|
+
<script type="text/javascript" src="words.js"></script>
|
|
18
|
+
|
|
19
|
+
<script type="text/javascript" src="index_m.js"></script>
|
|
20
|
+
</head>
|
|
21
|
+
|
|
22
|
+
<body>
|
|
23
|
+
<div class="m adapter-container">
|
|
24
|
+
|
|
25
|
+
<!-- Header -->
|
|
26
|
+
<div class="row">
|
|
27
|
+
<div class="col s12">
|
|
28
|
+
<div class="card nexo-header">
|
|
29
|
+
<div class="card-content">
|
|
30
|
+
<div class="nexo-header-row">
|
|
31
|
+
<span class="card-title nexo-title translate">Nexowatt Devices</span>
|
|
32
|
+
<span class="nexo-badge">nexowatt-devices</span>
|
|
33
|
+
</div>
|
|
34
|
+
<p class="nexo-subtitle translate">Standalone multi-protocol device adapter with categories and driver templates (Modbus TCP/RTU, MQTT, HTTP).</p>
|
|
35
|
+
<p class="nexo-meta">
|
|
36
|
+
<span class="translate">Treiber geladen:</span>
|
|
37
|
+
<span id="tplCount">…</span>
|
|
38
|
+
</p>
|
|
39
|
+
<p class="nexo-hint">
|
|
40
|
+
<span class="translate">Hinweis: Änderungen an Geräten werden erst nach dem Speichern (oben) und anschließendem Neustart der Instanz aktiv.</span>
|
|
41
|
+
</p>
|
|
42
|
+
</div>
|
|
43
|
+
</div>
|
|
44
|
+
</div>
|
|
45
|
+
</div>
|
|
46
|
+
|
|
47
|
+
<!-- Global settings -->
|
|
48
|
+
<div class="row">
|
|
49
|
+
<div class="col s12">
|
|
50
|
+
<div class="card">
|
|
51
|
+
<div class="card-content">
|
|
52
|
+
<span class="card-title translate">Globale Einstellungen</span>
|
|
53
|
+
|
|
54
|
+
<div class="row">
|
|
55
|
+
<div class="input-field col s12 m4">
|
|
56
|
+
<input class="value" id="pollIntervalMs" type="number" min="250" step="50"/>
|
|
57
|
+
<label for="pollIntervalMs" class="translate">Polling Intervall (ms)</label>
|
|
58
|
+
</div>
|
|
59
|
+
|
|
60
|
+
<div class="input-field col s12 m4">
|
|
61
|
+
<input class="value" id="modbusTimeoutMs" type="number" min="250" step="50"/>
|
|
62
|
+
<label for="modbusTimeoutMs" class="translate">Modbus Timeout (ms)</label>
|
|
63
|
+
</div>
|
|
64
|
+
|
|
65
|
+
<div class="input-field col s12 m4">
|
|
66
|
+
<input class="value" id="registerAddressOffset" type="number" step="1"/>
|
|
67
|
+
<label for="registerAddressOffset" class="translate">Register Address Offset (z.B. -1 für 1-basierte Geräte)</label>
|
|
68
|
+
</div>
|
|
69
|
+
</div>
|
|
70
|
+
|
|
71
|
+
<div class="row">
|
|
72
|
+
<div class="col s12">
|
|
73
|
+
<textarea class="value" id="devicesJson" style="display:none;"></textarea>
|
|
74
|
+
<p class="grey-text text-darken-1">
|
|
75
|
+
<span class="translate">Die Geräte-Konfiguration wird intern als JSON gespeichert.</span>
|
|
76
|
+
<a href="#!" id="btnShowJson" class="translate">JSON anzeigen</a>
|
|
77
|
+
</p>
|
|
78
|
+
<pre id="jsonPreview" class="nexo-json-preview" style="display:none;"></pre>
|
|
79
|
+
</div>
|
|
80
|
+
</div>
|
|
81
|
+
|
|
82
|
+
</div>
|
|
83
|
+
</div>
|
|
84
|
+
</div>
|
|
85
|
+
</div>
|
|
86
|
+
|
|
87
|
+
<!-- Devices -->
|
|
88
|
+
<div class="row">
|
|
89
|
+
<div class="col s12">
|
|
90
|
+
<div class="card">
|
|
91
|
+
<div class="card-content">
|
|
92
|
+
<div class="nexo-devices-header">
|
|
93
|
+
<span class="card-title translate">Geräte</span>
|
|
94
|
+
<a class="waves-effect waves-light btn" id="btnAddDevice" href="#!">
|
|
95
|
+
<span class="nexo-icon">+</span>
|
|
96
|
+
<span class="translate">Gerät hinzufügen</span>
|
|
97
|
+
</a>
|
|
98
|
+
</div>
|
|
99
|
+
|
|
100
|
+
<div class="row">
|
|
101
|
+
<div class="col s12">
|
|
102
|
+
<table class="highlight responsive-table nexo-table" id="devicesTable">
|
|
103
|
+
<thead>
|
|
104
|
+
<tr>
|
|
105
|
+
<th class="translate">Aktiv</th>
|
|
106
|
+
<th class="translate">ID</th>
|
|
107
|
+
<th class="translate">Name</th>
|
|
108
|
+
<th class="translate">Kategorie</th>
|
|
109
|
+
<th class="translate">Treiber</th>
|
|
110
|
+
<th class="translate">Protokoll</th>
|
|
111
|
+
<th class="translate">Verbindung</th>
|
|
112
|
+
<th class="translate">Aktionen</th>
|
|
113
|
+
</tr>
|
|
114
|
+
</thead>
|
|
115
|
+
<tbody></tbody>
|
|
116
|
+
</table>
|
|
117
|
+
<p class="grey-text text-darken-1" id="noDevicesHint" style="display:none;">
|
|
118
|
+
<span class="translate">Noch keine Geräte konfiguriert.</span>
|
|
119
|
+
</p>
|
|
120
|
+
</div>
|
|
121
|
+
</div>
|
|
122
|
+
|
|
123
|
+
</div>
|
|
124
|
+
</div>
|
|
125
|
+
</div>
|
|
126
|
+
</div>
|
|
127
|
+
|
|
128
|
+
<!-- Modal backdrop for fallback mode (only used if Materialize JS is not available) -->
|
|
129
|
+
<div id="nexoBackdrop" class="nexo-backdrop" style="display:none;"></div>
|
|
130
|
+
|
|
131
|
+
<!-- Modal: Add/Edit device -->
|
|
132
|
+
<div id="modalDevice" class="modal modal-fixed-footer nexo-modal">
|
|
133
|
+
<div class="modal-content">
|
|
134
|
+
<h5 id="modalTitle" class="translate">Gerät</h5>
|
|
135
|
+
|
|
136
|
+
<div class="row">
|
|
137
|
+
<div class="input-field col s12 m4">
|
|
138
|
+
<input id="dev_id" type="text" />
|
|
139
|
+
<label for="dev_id" class="translate">Geräte-ID (eindeutig, z.B. evcs1)</label>
|
|
140
|
+
</div>
|
|
141
|
+
<div class="input-field col s12 m8">
|
|
142
|
+
<input id="dev_name" type="text" />
|
|
143
|
+
<label for="dev_name" class="translate">Name (frei wählbar)</label>
|
|
144
|
+
</div>
|
|
145
|
+
</div>
|
|
146
|
+
|
|
147
|
+
<div class="row nexo-select-row">
|
|
148
|
+
<div class="col s12 m4 nexo-select-group">
|
|
149
|
+
<label for="dev_category" class="translate">Kategorie</label>
|
|
150
|
+
<select id="dev_category" class="browser-default"></select>
|
|
151
|
+
</div>
|
|
152
|
+
<div class="col s12 m4 nexo-select-group">
|
|
153
|
+
<label for="dev_manufacturer" class="translate">Hersteller</label>
|
|
154
|
+
<select id="dev_manufacturer" class="browser-default"></select>
|
|
155
|
+
</div>
|
|
156
|
+
<div class="col s12 m4 nexo-select-group">
|
|
157
|
+
<label for="dev_template" class="translate">Treiber/Template</label>
|
|
158
|
+
<select id="dev_template" class="browser-default"></select>
|
|
159
|
+
</div>
|
|
160
|
+
</div>
|
|
161
|
+
|
|
162
|
+
<div class="row nexo-select-row">
|
|
163
|
+
<div class="col s12 m4 nexo-select-group">
|
|
164
|
+
<label for="dev_protocol" class="translate">Protokoll</label>
|
|
165
|
+
<select id="dev_protocol" class="browser-default"></select>
|
|
166
|
+
</div>
|
|
167
|
+
<div class="input-field col s12 m4">
|
|
168
|
+
<input id="dev_poll" type="number" min="250" step="50" />
|
|
169
|
+
<label for="dev_poll" class="translate">Polling Intervall (ms, optional)</label>
|
|
170
|
+
</div>
|
|
171
|
+
<div class="input-field col s12 m4">
|
|
172
|
+
<div class="switch">
|
|
173
|
+
<label>
|
|
174
|
+
<span class="translate">Inaktiv</span>
|
|
175
|
+
<input id="dev_enabled" type="checkbox" checked>
|
|
176
|
+
<span class="lever"></span>
|
|
177
|
+
<span class="translate">Aktiv</span>
|
|
178
|
+
</label>
|
|
179
|
+
</div>
|
|
180
|
+
</div>
|
|
181
|
+
</div>
|
|
182
|
+
|
|
183
|
+
<!-- Connection blocks -->
|
|
184
|
+
<div id="conn_modbusTcp" class="nexo-conn-block" style="display:none;">
|
|
185
|
+
<h6 class="translate">Modbus TCP Verbindung</h6>
|
|
186
|
+
<div class="row">
|
|
187
|
+
<div class="input-field col s12 m4">
|
|
188
|
+
<input id="mb_host" type="text" />
|
|
189
|
+
<label for="mb_host" class="translate">Host/IP</label>
|
|
190
|
+
</div>
|
|
191
|
+
<div class="input-field col s12 m2">
|
|
192
|
+
<input id="mb_port" type="number" min="1" max="65535" />
|
|
193
|
+
<label for="mb_port" class="translate">Port</label>
|
|
194
|
+
</div>
|
|
195
|
+
<div class="input-field col s12 m2">
|
|
196
|
+
<input id="mb_unitId" type="number" min="1" max="247" />
|
|
197
|
+
<label for="mb_unitId" class="translate">Unit-ID</label>
|
|
198
|
+
</div>
|
|
199
|
+
<div class="input-field col s12 m2">
|
|
200
|
+
<input id="mb_timeout" type="number" min="250" step="50" />
|
|
201
|
+
<label for="mb_timeout" class="translate">Timeout (ms)</label>
|
|
202
|
+
</div>
|
|
203
|
+
<div class="input-field col s12 m2">
|
|
204
|
+
<input id="mb_addrOffset" type="number" step="1" />
|
|
205
|
+
<label for="mb_addrOffset" class="translate">Addr-Offset</label>
|
|
206
|
+
</div>
|
|
207
|
+
</div>
|
|
208
|
+
|
|
209
|
+
<div class="row">
|
|
210
|
+
<div class="col s12 m3 nexo-select-group">
|
|
211
|
+
<label for="mb_wordOrder" class="translate">Word Order</label>
|
|
212
|
+
<select id="mb_wordOrder" class="browser-default">
|
|
213
|
+
<option value="be">BE</option>
|
|
214
|
+
<option value="le">LE</option>
|
|
215
|
+
</select>
|
|
216
|
+
</div>
|
|
217
|
+
<div class="col s12 m3 nexo-select-group">
|
|
218
|
+
<label for="mb_byteOrder" class="translate">Byte Order</label>
|
|
219
|
+
<select id="mb_byteOrder" class="browser-default">
|
|
220
|
+
<option value="be">BE</option>
|
|
221
|
+
<option value="le">LE</option>
|
|
222
|
+
</select>
|
|
223
|
+
</div>
|
|
224
|
+
</div>
|
|
225
|
+
|
|
226
|
+
<div class="row">
|
|
227
|
+
<div class="input-field col s12 m4">
|
|
228
|
+
<input id="mb_writePass" type="password" />
|
|
229
|
+
<label for="mb_writePass" class="translate">Schreibpasswort (optional)</label>
|
|
230
|
+
</div>
|
|
231
|
+
</div>
|
|
232
|
+
</div>
|
|
233
|
+
|
|
234
|
+
<div id="conn_modbusRtu" class="nexo-conn-block" style="display:none;">
|
|
235
|
+
<h6 class="translate">Modbus RTU Verbindung</h6>
|
|
236
|
+
<div class="row">
|
|
237
|
+
<div class="input-field col s12 m4">
|
|
238
|
+
<input id="mb_path" type="text" list="serialPortsList" />
|
|
239
|
+
<label for="mb_path" class="translate">Serial Port (z.B. /dev/com2)</label>
|
|
240
|
+
<datalist id="serialPortsList">
|
|
241
|
+
<option value="/dev/ttyUSB0"></option>
|
|
242
|
+
<option value="/dev/ttyUSB1"></option>
|
|
243
|
+
<option value="/dev/ttyACM0"></option>
|
|
244
|
+
<option value="/dev/ttyS0"></option>
|
|
245
|
+
<option value="/dev/ttyAMA0"></option>
|
|
246
|
+
<option value="/dev/com2"></option>
|
|
247
|
+
<option value="COM3"></option>
|
|
248
|
+
<option value="COM4"></option>
|
|
249
|
+
</datalist>
|
|
250
|
+
</div>
|
|
251
|
+
<div class="input-field col s12 m2">
|
|
252
|
+
<input id="mb_baud" type="number" min="1200" step="300" />
|
|
253
|
+
<label for="mb_baud" class="translate">Baudrate</label>
|
|
254
|
+
</div>
|
|
255
|
+
<div class="col s12 m2 nexo-select-group">
|
|
256
|
+
<label for="mb_parity" class="translate">Parity</label>
|
|
257
|
+
<select id="mb_parity" class="browser-default">
|
|
258
|
+
<option value="none">none</option>
|
|
259
|
+
<option value="even">even</option>
|
|
260
|
+
<option value="odd">odd</option>
|
|
261
|
+
</select>
|
|
262
|
+
</div>
|
|
263
|
+
<div class="input-field col s12 m2">
|
|
264
|
+
<input id="mb_databits" type="number" min="5" max="8" />
|
|
265
|
+
<label for="mb_databits" class="translate">DataBits</label>
|
|
266
|
+
</div>
|
|
267
|
+
<div class="input-field col s12 m2">
|
|
268
|
+
<input id="mb_stopbits" type="number" min="1" max="2" />
|
|
269
|
+
<label for="mb_stopbits" class="translate">StopBits</label>
|
|
270
|
+
</div>
|
|
271
|
+
</div>
|
|
272
|
+
|
|
273
|
+
<div class="row">
|
|
274
|
+
<div class="input-field col s12 m2">
|
|
275
|
+
<input id="mb_unitId_rtu" type="number" min="1" max="247" />
|
|
276
|
+
<label for="mb_unitId_rtu" class="translate">Unit-ID</label>
|
|
277
|
+
</div>
|
|
278
|
+
<div class="input-field col s12 m2">
|
|
279
|
+
<input id="mb_timeout_rtu" type="number" min="250" step="50" />
|
|
280
|
+
<label for="mb_timeout_rtu" class="translate">Timeout (ms)</label>
|
|
281
|
+
</div>
|
|
282
|
+
<div class="input-field col s12 m2">
|
|
283
|
+
<input id="mb_addrOffset_rtu" type="number" step="1" />
|
|
284
|
+
<label for="mb_addrOffset_rtu" class="translate">Addr-Offset</label>
|
|
285
|
+
</div>
|
|
286
|
+
<div class="col s12 m3 nexo-select-group">
|
|
287
|
+
<label for="mb_wordOrder_rtu" class="translate">Word Order</label>
|
|
288
|
+
<select id="mb_wordOrder_rtu" class="browser-default">
|
|
289
|
+
<option value="be">BE</option>
|
|
290
|
+
<option value="le">LE</option>
|
|
291
|
+
</select>
|
|
292
|
+
</div>
|
|
293
|
+
<div class="col s12 m3 nexo-select-group">
|
|
294
|
+
<label for="mb_byteOrder_rtu" class="translate">Byte Order</label>
|
|
295
|
+
<select id="mb_byteOrder_rtu" class="browser-default">
|
|
296
|
+
<option value="be">BE</option>
|
|
297
|
+
<option value="le">LE</option>
|
|
298
|
+
</select>
|
|
299
|
+
</div>
|
|
300
|
+
</div>
|
|
301
|
+
|
|
302
|
+
<div class="row">
|
|
303
|
+
<div class="input-field col s12 m4">
|
|
304
|
+
<input id="mb_writePass_rtu" type="password" />
|
|
305
|
+
<label for="mb_writePass_rtu" class="translate">Schreibpasswort (optional)</label>
|
|
306
|
+
</div>
|
|
307
|
+
</div>
|
|
308
|
+
</div>
|
|
309
|
+
|
|
310
|
+
<div id="conn_mqtt" class="nexo-conn-block" style="display:none;">
|
|
311
|
+
<h6 class="translate">MQTT Verbindung</h6>
|
|
312
|
+
<div class="row">
|
|
313
|
+
<div class="input-field col s12 m6">
|
|
314
|
+
<input id="mqtt_url" type="text" />
|
|
315
|
+
<label for="mqtt_url" class="translate">Broker URL (mqtt://host:1883)</label>
|
|
316
|
+
</div>
|
|
317
|
+
<div class="input-field col s12 m3">
|
|
318
|
+
<input id="mqtt_user" type="text" />
|
|
319
|
+
<label for="mqtt_user" class="translate">Username</label>
|
|
320
|
+
</div>
|
|
321
|
+
<div class="input-field col s12 m3">
|
|
322
|
+
<input id="mqtt_pass" type="password" />
|
|
323
|
+
<label for="mqtt_pass" class="translate">Password</label>
|
|
324
|
+
</div>
|
|
325
|
+
</div>
|
|
326
|
+
</div>
|
|
327
|
+
|
|
328
|
+
<div id="conn_http" class="nexo-conn-block" style="display:none;">
|
|
329
|
+
<h6 class="translate">HTTP/JSON Verbindung</h6>
|
|
330
|
+
<div class="row">
|
|
331
|
+
<div class="input-field col s12 m6">
|
|
332
|
+
<input id="http_baseUrl" type="text" />
|
|
333
|
+
<label for="http_baseUrl" class="translate">Base URL (http://host)</label>
|
|
334
|
+
</div>
|
|
335
|
+
<div class="input-field col s12 m3">
|
|
336
|
+
<input id="http_user" type="text" />
|
|
337
|
+
<label for="http_user" class="translate">Username</label>
|
|
338
|
+
</div>
|
|
339
|
+
<div class="input-field col s12 m3">
|
|
340
|
+
<input id="http_pass" type="password" />
|
|
341
|
+
<label for="http_pass" class="translate">Password</label>
|
|
342
|
+
</div>
|
|
343
|
+
</div>
|
|
344
|
+
</div>
|
|
345
|
+
|
|
346
|
+
<div id="conn_udp" class="nexo-conn-block" style="display:none;">
|
|
347
|
+
<h6 class="translate">UDP Verbindung</h6>
|
|
348
|
+
<div class="row">
|
|
349
|
+
<div class="input-field col s12 m6">
|
|
350
|
+
<input id="udp_host" type="text" />
|
|
351
|
+
<label for="udp_host" class="translate">Host/IP</label>
|
|
352
|
+
</div>
|
|
353
|
+
<div class="input-field col s12 m2">
|
|
354
|
+
<input id="udp_port" type="number" min="1" max="65535" />
|
|
355
|
+
<label for="udp_port" class="translate">Port</label>
|
|
356
|
+
</div>
|
|
357
|
+
<div class="input-field col s12 m2">
|
|
358
|
+
<input id="udp_timeout" type="number" min="100" step="50" />
|
|
359
|
+
<label for="udp_timeout" class="translate">Timeout (ms)</label>
|
|
360
|
+
</div>
|
|
361
|
+
<div class="input-field col s12 m2">
|
|
362
|
+
<input id="udp_pause" type="number" min="0" step="10" />
|
|
363
|
+
<label for="udp_pause" class="translate">Cmd Pause (ms)</label>
|
|
364
|
+
</div>
|
|
365
|
+
</div>
|
|
366
|
+
</div>
|
|
367
|
+
|
|
368
|
+
<div id="conn_speedwire" class="nexo-conn-block" style="display:none;">
|
|
369
|
+
<h6 class="translate">Speedwire (UDP Multicast)</h6>
|
|
370
|
+
<div class="row">
|
|
371
|
+
<div class="input-field col s12 m4">
|
|
372
|
+
<input id="sw_filterHost" type="text" />
|
|
373
|
+
<label for="sw_filterHost" class="translate">Gerät-IP (Filter, optional)</label>
|
|
374
|
+
</div>
|
|
375
|
+
<div class="input-field col s12 m4">
|
|
376
|
+
<input id="sw_multicastGroup" type="text" />
|
|
377
|
+
<label for="sw_multicastGroup" class="translate">Multicast Gruppe</label>
|
|
378
|
+
</div>
|
|
379
|
+
<div class="input-field col s12 m2">
|
|
380
|
+
<input id="sw_port" type="number" min="1" max="65535" />
|
|
381
|
+
<label for="sw_port" class="translate">Port</label>
|
|
382
|
+
</div>
|
|
383
|
+
<div class="input-field col s12 m2">
|
|
384
|
+
<input id="sw_stale" type="number" min="0" step="100" />
|
|
385
|
+
<label for="sw_stale" class="translate">Stale Timeout (ms)</label>
|
|
386
|
+
</div>
|
|
387
|
+
</div>
|
|
388
|
+
<div class="row">
|
|
389
|
+
<div class="input-field col s12 m4">
|
|
390
|
+
<input id="sw_interface" type="text" />
|
|
391
|
+
<label for="sw_interface" class="translate">Interface IP (optional)</label>
|
|
392
|
+
</div>
|
|
393
|
+
<div class="col s12 m8 nexo-muted" style="margin-top: 12px; font-size: 0.9em;">
|
|
394
|
+
<span class="translate">Hinweis</span>: <span class="translate">Speedwire nutzt UDP Multicast. In VLAN/WiFi/Virtualisierung muss Multicast (IGMP) durchgelassen werden.</span>
|
|
395
|
+
</div>
|
|
396
|
+
</div>
|
|
397
|
+
</div>
|
|
398
|
+
|
|
399
|
+
<!-- Datapoints preview -->
|
|
400
|
+
<div class="row">
|
|
401
|
+
<div class="col s12">
|
|
402
|
+
<h6 class="translate">Datenpunkte</h6>
|
|
403
|
+
<table class="striped dp-table">
|
|
404
|
+
<thead>
|
|
405
|
+
<tr>
|
|
406
|
+
<th class="translate">ID</th>
|
|
407
|
+
<th class="translate">Name</th>
|
|
408
|
+
<th class="translate">Typ</th>
|
|
409
|
+
<th class="translate">R/W</th>
|
|
410
|
+
<th class="translate">Quelle</th>
|
|
411
|
+
</tr>
|
|
412
|
+
</thead>
|
|
413
|
+
<tbody id="dpBody"></tbody>
|
|
414
|
+
</table>
|
|
415
|
+
</div>
|
|
416
|
+
</div>
|
|
417
|
+
|
|
418
|
+
</div>
|
|
419
|
+
<div class="modal-footer">
|
|
420
|
+
<a href="#!" class="waves-effect waves-light btn-flat" id="btnCancelDevice"><span class="translate">Abbrechen</span></a>
|
|
421
|
+
<a href="#!" class="waves-effect waves-light btn" id="btnSaveDevice"><span class="translate">Speichern</span></a>
|
|
422
|
+
</div>
|
|
423
|
+
</div>
|
|
424
|
+
|
|
425
|
+
</div>
|
|
426
|
+
</body>
|
|
427
|
+
</html>
|