iobroker.alias-workbench 0.8.0
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 +21 -0
- package/README.md +516 -0
- package/admin/alias-workbench.png +0 -0
- package/admin/css/werkbank.css +916 -0
- package/admin/detector.js +1 -0
- package/admin/geraetewissen/tasmota-befehle.json +116 -0
- package/admin/i18n/de.json +552 -0
- package/admin/i18n/en.json +552 -0
- package/admin/js/aufzaehlungen.js +332 -0
- package/admin/js/basis.js +36 -0
- package/admin/js/baum.js +453 -0
- package/admin/js/detail.js +335 -0
- package/admin/js/einstellungen.js +40 -0
- package/admin/js/entwurf.js +908 -0
- package/admin/js/enums.js +23 -0
- package/admin/js/ergebnis.js +934 -0
- package/admin/js/erkennung.js +126 -0
- package/admin/js/katalog.js +313 -0
- package/admin/js/mqtt.js +885 -0
- package/admin/js/musternamen.js +94 -0
- package/admin/js/musterwahl.js +334 -0
- package/admin/js/objekte.js +243 -0
- package/admin/js/pruefungen.js +130 -0
- package/admin/js/quellentausch.js +570 -0
- package/admin/js/rollenwahl.js +199 -0
- package/admin/js/schreiben.js +1537 -0
- package/admin/js/sprache.js +137 -0
- package/admin/js/start.js +39 -0
- package/admin/js/verbindung.js +10 -0
- package/admin/js/vorlagen.js +572 -0
- package/admin/js/vorlagenblatt.js +1907 -0
- package/admin/js/vorschlagen.js +391 -0
- package/admin/js/werte.js +193 -0
- package/admin/js/zielleiste.js +339 -0
- package/admin/js/zuordnung.js +695 -0
- package/admin/js/zustand.js +47 -0
- package/admin/js/zustandsliste.js +515 -0
- package/admin/jsonConfig.json +249 -0
- package/admin/tab.html +148 -0
- package/admin/vorlagen/hm-dimmer.json +204 -0
- package/admin/vorlagen/hm-fensterkontakt-hm.json +176 -0
- package/admin/vorlagen/hm-fensterkontakt-hmip.json +191 -0
- package/admin/vorlagen/hm-heizgruppe.json +214 -0
- package/admin/vorlagen/hm-heizkoerper.json +236 -0
- package/admin/vorlagen/hm-rollladen.json +190 -0
- package/admin/vorlagen/hm-schaltaktor-lampe.json +197 -0
- package/admin/vorlagen/hm-schaltaktor-mehrfach.json +203 -0
- package/admin/vorlagen/hm-schaltaktor-steckdose.json +197 -0
- package/admin/vorlagen/hm-temperatur-feuchte.json +166 -0
- package/admin/vorlagen/hm-wandthermostat.json +228 -0
- package/admin/vorlagen/index.json +21 -0
- package/admin/vorlagen/messpunkt.json +225 -0
- package/admin/vorlagen/tasmota-lampe.json +263 -0
- package/admin/vorlagen/tasmota-mehrfach.json +203 -0
- package/admin/vorlagen/tasmota-rgb.json +239 -0
- package/admin/vorlagen/tasmota-steckdose.json +265 -0
- package/io-package.json +122 -0
- package/package.json +48 -0
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "tasmota-rgb",
|
|
3
|
+
"version": 5,
|
|
4
|
+
"rang": 25,
|
|
5
|
+
"name": {
|
|
6
|
+
"de": "Tasmota-Farblampe",
|
|
7
|
+
"en": "Tasmota colour light"
|
|
8
|
+
},
|
|
9
|
+
"geraetetyp": "rgbSingle",
|
|
10
|
+
"funktion": "light",
|
|
11
|
+
"erkennung": {
|
|
12
|
+
"erforderlich": [
|
|
13
|
+
"tele.STATE",
|
|
14
|
+
"cmnd.Color"
|
|
15
|
+
],
|
|
16
|
+
"inhalt": {
|
|
17
|
+
"tele.STATE": "Color"
|
|
18
|
+
},
|
|
19
|
+
"hinweis": "Das Farbfeld in tele.STATE ist der Unterschied zu einer gewoehnlichen Tasmota. stat.POWER steht nicht in der Pflichtliste - der Punkt entsteht erst beim ersten Schalten, der Zustand steht solange in tele.STATE."
|
|
20
|
+
},
|
|
21
|
+
"zustaende": [
|
|
22
|
+
{
|
|
23
|
+
"name": "RGB",
|
|
24
|
+
"rolle": "level.color.rgb",
|
|
25
|
+
"typ": "string",
|
|
26
|
+
"lesen": "tele.STATE",
|
|
27
|
+
"leseformel": "JSON.parse(val)?.Color ? '#' + String(JSON.parse(val).Color).slice(0, 6) : null",
|
|
28
|
+
"schreiben": "cmnd.Color",
|
|
29
|
+
"schreibformel": "String(val).replace('#', '')",
|
|
30
|
+
"hinweis": "Tasmota liefert die Farbe ohne Raute (F4FFCC), ioBroker und VIS erwarten sie mit. Bei RGBW-Geräten hängen weitere Kanäle hinten an, deshalb die ersten sechs Zeichen. Liest aus tele.STATE und schreibt nach cmnd — die Rückmeldung kommt deshalb erst mit der nächsten Telemetrie, bei TelePeriod 300 also bis zu fünf Minuten später. Tasmota antwortet zwar sofort auf stat/RESULT, aber dort steht nur der eine geänderte Schlüssel; als Lesequelle wäre das unbrauchbar. Abhilfe am Gerät: SetOption59 1 — dann schickt Tasmota tele/STATE bei jeder Änderung mit."
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"name": "DIMMER",
|
|
34
|
+
"rolle": "level.dimmer",
|
|
35
|
+
"typ": "number",
|
|
36
|
+
"einheit": "%",
|
|
37
|
+
"lesen": "tele.STATE",
|
|
38
|
+
"feld": "Dimmer",
|
|
39
|
+
"schreiben": "cmnd.Dimmer",
|
|
40
|
+
"hinweis": "Liest aus tele.STATE und schreibt nach cmnd — die Rückmeldung kommt deshalb erst mit der nächsten Telemetrie, bei TelePeriod 300 also bis zu fünf Minuten später. Tasmota antwortet zwar sofort auf stat/RESULT, aber dort steht nur der eine geänderte Schlüssel; als Lesequelle wäre das unbrauchbar. Abhilfe am Gerät: SetOption59 1 — dann schickt Tasmota tele/STATE bei jeder Änderung mit."
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"name": "ON",
|
|
44
|
+
"rolle": "switch.light",
|
|
45
|
+
"typ": "boolean",
|
|
46
|
+
"lesen": "stat.POWER",
|
|
47
|
+
"schreiben": "cmnd.POWER",
|
|
48
|
+
"schreibformel": "val ? \"ON\" : \"OFF\"",
|
|
49
|
+
"hinweis": "getrennte Quellen: sonst zeigt der Schalter den Befehl statt des Zustands",
|
|
50
|
+
"lesenSonst": {
|
|
51
|
+
"punkt": "tele.STATE",
|
|
52
|
+
"leseformel": "JSON.parse(val)?.POWER === 'ON'"
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"name": "ON_ACTUAL",
|
|
57
|
+
"rolle": "sensor.light",
|
|
58
|
+
"typ": "boolean",
|
|
59
|
+
"lesen": "stat.POWER",
|
|
60
|
+
"lesenSonst": {
|
|
61
|
+
"punkt": "tele.STATE",
|
|
62
|
+
"leseformel": "JSON.parse(val)?.POWER === 'ON'"
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"name": "EFFECT",
|
|
67
|
+
"rolle": "level.effect",
|
|
68
|
+
"typ": "number",
|
|
69
|
+
"lesen": "tele.STATE",
|
|
70
|
+
"feld": "Scheme",
|
|
71
|
+
"schreiben": "cmnd.Scheme",
|
|
72
|
+
"optional": true,
|
|
73
|
+
"werteliste": {
|
|
74
|
+
"0": "einfarbig",
|
|
75
|
+
"1": "Aufwachen",
|
|
76
|
+
"2": "Farben vorwärts",
|
|
77
|
+
"3": "Farben rückwärts",
|
|
78
|
+
"4": "zufällig"
|
|
79
|
+
},
|
|
80
|
+
"hinweis": "Der Platz EFFECT verlangt eine Werteliste — ohne common.states erkennt der type-detector ihn nicht. Liest aus tele.STATE und schreibt nach cmnd — die Rückmeldung kommt deshalb erst mit der nächsten Telemetrie, bei TelePeriod 300 also bis zu fünf Minuten später. Tasmota antwortet zwar sofort auf stat/RESULT, aber dort steht nur der eine geänderte Schlüssel; als Lesequelle wäre das unbrauchbar. Abhilfe am Gerät: SetOption59 1 — dann schickt Tasmota tele/STATE bei jeder Änderung mit."
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"name": "FADE",
|
|
84
|
+
"rolle": "switch",
|
|
85
|
+
"typ": "boolean",
|
|
86
|
+
"lesen": "tele.STATE",
|
|
87
|
+
"feld": "Fade",
|
|
88
|
+
"schreiben": "cmnd.Fade",
|
|
89
|
+
"leseformel": "JSON.parse(val)?.Fade === \"ON\"",
|
|
90
|
+
"schreibformel": "val ? \"ON\" : \"OFF\"",
|
|
91
|
+
"optional": true,
|
|
92
|
+
"vorgabeAus": true,
|
|
93
|
+
"hinweis": "weiche Übergänge. Kein Platz im rgbSingle-Muster, landet im info-Gerät. Liest aus tele.STATE und schreibt nach cmnd — die Rückmeldung kommt deshalb erst mit der nächsten Telemetrie, bei TelePeriod 300 also bis zu fünf Minuten später. Tasmota antwortet zwar sofort auf stat/RESULT, aber dort steht nur der eine geänderte Schlüssel; als Lesequelle wäre das unbrauchbar. Abhilfe am Gerät: SetOption59 1 — dann schickt Tasmota tele/STATE bei jeder Änderung mit."
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"name": "SPEED",
|
|
97
|
+
"rolle": "level",
|
|
98
|
+
"typ": "number",
|
|
99
|
+
"lesen": "tele.STATE",
|
|
100
|
+
"feld": "Speed",
|
|
101
|
+
"schreiben": "cmnd.Speed",
|
|
102
|
+
"optional": true,
|
|
103
|
+
"vorgabeAus": true,
|
|
104
|
+
"hinweis": "Geschwindigkeit des Effekts, 1 bis 40. Liest aus tele.STATE und schreibt nach cmnd — die Rückmeldung kommt deshalb erst mit der nächsten Telemetrie, bei TelePeriod 300 also bis zu fünf Minuten später. Tasmota antwortet zwar sofort auf stat/RESULT, aber dort steht nur der eine geänderte Schlüssel; als Lesequelle wäre das unbrauchbar. Abhilfe am Gerät: SetOption59 1 — dann schickt Tasmota tele/STATE bei jeder Änderung mit."
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"name": "UNREACH",
|
|
108
|
+
"rolle": "indicator.maintenance.unreach",
|
|
109
|
+
"typ": "boolean",
|
|
110
|
+
"lesen": "tele.LWT",
|
|
111
|
+
"leseformel": "val !== \"Online\"",
|
|
112
|
+
"optional": true
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
"name": "RSSI",
|
|
116
|
+
"rolle": "value.rssi",
|
|
117
|
+
"typ": "number",
|
|
118
|
+
"einheit": "dBm",
|
|
119
|
+
"lesen": "tele.STATE",
|
|
120
|
+
"feld": "Wifi.Signal",
|
|
121
|
+
"optional": true
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
"name": "UPTIME",
|
|
125
|
+
"rolle": "value",
|
|
126
|
+
"typ": "number",
|
|
127
|
+
"einheit": "s",
|
|
128
|
+
"lesen": "tele.STATE",
|
|
129
|
+
"feld": "UptimeSec",
|
|
130
|
+
"optional": true,
|
|
131
|
+
"vorgabeAus": true,
|
|
132
|
+
"hinweis": "Sekunden seit dem letzten Start. Fällt der Wert ständig zurück, startet das Gerät neu."
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
"name": "LAST_REPORT",
|
|
136
|
+
"rolle": "text",
|
|
137
|
+
"typ": "string",
|
|
138
|
+
"lesen": "tele.STATE",
|
|
139
|
+
"feld": "Time",
|
|
140
|
+
"optional": true,
|
|
141
|
+
"vorgabeAus": true
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
"name": "HEAP",
|
|
145
|
+
"rolle": "value",
|
|
146
|
+
"typ": "number",
|
|
147
|
+
"einheit": "kB",
|
|
148
|
+
"lesen": "tele.STATE",
|
|
149
|
+
"feld": "Heap",
|
|
150
|
+
"optional": true,
|
|
151
|
+
"vorgabeAus": true
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
"name": "WIFI_QUALITY",
|
|
155
|
+
"rolle": "value",
|
|
156
|
+
"typ": "number",
|
|
157
|
+
"einheit": "%",
|
|
158
|
+
"lesen": "tele.STATE",
|
|
159
|
+
"feld": "Wifi.RSSI",
|
|
160
|
+
"optional": true,
|
|
161
|
+
"vorgabeAus": true
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
"name": "WIFI_SSID",
|
|
165
|
+
"rolle": "text",
|
|
166
|
+
"typ": "string",
|
|
167
|
+
"lesen": "tele.STATE",
|
|
168
|
+
"feld": "Wifi.SSId",
|
|
169
|
+
"optional": true,
|
|
170
|
+
"vorgabeAus": true
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
"name": "WIFI_LINKCOUNT",
|
|
174
|
+
"rolle": "value",
|
|
175
|
+
"typ": "number",
|
|
176
|
+
"lesen": "tele.STATE",
|
|
177
|
+
"feld": "Wifi.LinkCount",
|
|
178
|
+
"optional": true,
|
|
179
|
+
"vorgabeAus": true
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
"name": "WIFI_DOWNTIME",
|
|
183
|
+
"rolle": "text",
|
|
184
|
+
"typ": "string",
|
|
185
|
+
"lesen": "tele.STATE",
|
|
186
|
+
"feld": "Wifi.Downtime",
|
|
187
|
+
"optional": true,
|
|
188
|
+
"vorgabeAus": true
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
"name": "IP",
|
|
192
|
+
"rolle": "text",
|
|
193
|
+
"typ": "string",
|
|
194
|
+
"lesen": "tele.STATE",
|
|
195
|
+
"feld": "IPAddress",
|
|
196
|
+
"optional": true,
|
|
197
|
+
"vorgabeAus": true,
|
|
198
|
+
"lesenSonst": [
|
|
199
|
+
{
|
|
200
|
+
"punkt": "tele.INFO2",
|
|
201
|
+
"feld": "Info2.IPAddress"
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
"punkt": "stat.STATUS5",
|
|
205
|
+
"feld": "StatusNET.IPAddress"
|
|
206
|
+
}
|
|
207
|
+
],
|
|
208
|
+
"hinweis": "Drei Wege, weil keiner allein reicht. tele.STATE steht zuerst, weil es alle paar Minuten frisch kommt und einem Adresswechsel folgt - allerdings fuehrt es die IP erst ab neuerer Firmware mit (gemessen: 12.5.0 nein, 15.5.0 ja). tele.INFO2 schickt eine Tasmota beim Start und laesst es retained stehen; das steht auch bei alter Firmware da, ist aber ein Standbild vom letzten Boot. stat.STATUS5 entsteht, wenn jemand den Status abfragt."
|
|
209
|
+
}
|
|
210
|
+
],
|
|
211
|
+
"nebenwirkungen": [
|
|
212
|
+
{
|
|
213
|
+
"art": "mqtt-publish",
|
|
214
|
+
"punkt": "cmnd.POWER"
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
"art": "mqtt-publish",
|
|
218
|
+
"punkt": "cmnd.Color"
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
"art": "mqtt-publish",
|
|
222
|
+
"punkt": "cmnd.Dimmer"
|
|
223
|
+
}
|
|
224
|
+
],
|
|
225
|
+
"weiterePunkte": {
|
|
226
|
+
"tele.LWT": "text",
|
|
227
|
+
"tele.STATE": "json",
|
|
228
|
+
"tele.SENSOR": "json",
|
|
229
|
+
"tele.INFO1": "json",
|
|
230
|
+
"tele.INFO2": "json",
|
|
231
|
+
"tele.INFO3": "json",
|
|
232
|
+
"tele.HASS_STATE": "json",
|
|
233
|
+
"stat.RESULT": "json",
|
|
234
|
+
"stat.STATUS": "json",
|
|
235
|
+
"stat.STATUS2": "json",
|
|
236
|
+
"stat.STATUS5": "json",
|
|
237
|
+
"stat.STATUS11": "json"
|
|
238
|
+
}
|
|
239
|
+
}
|
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "tasmota-steckdose",
|
|
3
|
+
"version": 6,
|
|
4
|
+
"rang": 20,
|
|
5
|
+
"name": {
|
|
6
|
+
"de": "Tasmota-Steckdose",
|
|
7
|
+
"en": "Tasmota socket"
|
|
8
|
+
},
|
|
9
|
+
"geraetetyp": "socket",
|
|
10
|
+
"funktion": "socket",
|
|
11
|
+
"erkennung": {
|
|
12
|
+
"erforderlich": [
|
|
13
|
+
"cmnd.POWER"
|
|
14
|
+
],
|
|
15
|
+
"inhalt": {
|
|
16
|
+
"tele.STATE": "POWER"
|
|
17
|
+
},
|
|
18
|
+
"namenshinweis": "steckdose|dose|stecker|plug|socket",
|
|
19
|
+
"hinweis": "stat.POWER steht bewusst nicht in der Pflichtliste: den Punkt legt der mqtt-Adapter erst an, wenn das Geraet zum ersten Mal geschaltet hat. Vorher haette die Vorlage nie gegriffen, obwohl der Schaltzustand die ganze Zeit in tele.STATE steht - von dort liest sie ersatzweise. cmnd.POWER bleibt dagegen Pflicht: es ist der Beleg dafuer, dass hier ueberhaupt etwas zu schalten ist. Ohne ihn wuerde jeder blosse Messpunkt mit Relaismeldung als Steckdose durchgehen."
|
|
20
|
+
},
|
|
21
|
+
"zustaende": [
|
|
22
|
+
{
|
|
23
|
+
"name": "SET",
|
|
24
|
+
"rolle": "switch",
|
|
25
|
+
"typ": "boolean",
|
|
26
|
+
"lesen": "stat.POWER",
|
|
27
|
+
"schreiben": "cmnd.POWER",
|
|
28
|
+
"schreibformel": "val ? \"ON\" : \"OFF\"",
|
|
29
|
+
"hinweis": "getrennte Quellen: sonst zeigt der Schalter den Befehl statt des Zustands",
|
|
30
|
+
"lesenSonst": {
|
|
31
|
+
"punkt": "tele.STATE",
|
|
32
|
+
"leseformel": "JSON.parse(val)?.POWER === 'ON'"
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"name": "ACTUAL",
|
|
37
|
+
"rolle": "sensor.switch",
|
|
38
|
+
"typ": "boolean",
|
|
39
|
+
"lesen": "stat.POWER",
|
|
40
|
+
"hinweis": "type-detector 6 verlangt sensor.switch oder state.active, blankes state passt nicht mehr",
|
|
41
|
+
"lesenSonst": {
|
|
42
|
+
"punkt": "tele.STATE",
|
|
43
|
+
"leseformel": "JSON.parse(val)?.POWER === 'ON'"
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"name": "ELECTRIC_POWER",
|
|
48
|
+
"rolle": "value.power",
|
|
49
|
+
"typ": "number",
|
|
50
|
+
"einheit": "W",
|
|
51
|
+
"lesen": "tele.SENSOR",
|
|
52
|
+
"feld": "ENERGY.Power",
|
|
53
|
+
"optional": true
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"name": "CONSUMPTION",
|
|
57
|
+
"rolle": "value.power.consumption",
|
|
58
|
+
"typ": "number",
|
|
59
|
+
"einheit": "kWh",
|
|
60
|
+
"lesen": "tele.SENSOR",
|
|
61
|
+
"feld": "ENERGY.Total",
|
|
62
|
+
"optional": true
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"name": "VOLTAGE",
|
|
66
|
+
"rolle": "value.voltage",
|
|
67
|
+
"typ": "number",
|
|
68
|
+
"einheit": "V",
|
|
69
|
+
"lesen": "tele.SENSOR",
|
|
70
|
+
"feld": "ENERGY.Voltage",
|
|
71
|
+
"optional": true
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"name": "CURRENT",
|
|
75
|
+
"rolle": "value.current",
|
|
76
|
+
"typ": "number",
|
|
77
|
+
"einheit": "A",
|
|
78
|
+
"lesen": "tele.SENSOR",
|
|
79
|
+
"feld": "ENERGY.Current",
|
|
80
|
+
"optional": true
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"name": "TODAY",
|
|
84
|
+
"rolle": "value",
|
|
85
|
+
"typ": "number",
|
|
86
|
+
"einheit": "kWh",
|
|
87
|
+
"lesen": "tele.SENSOR",
|
|
88
|
+
"feld": "ENERGY.Today",
|
|
89
|
+
"optional": true,
|
|
90
|
+
"vorgabeAus": true,
|
|
91
|
+
"hinweis": "hat in keinem Muster einen Platz und landet im info-Gerät"
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
"name": "YESTERDAY",
|
|
95
|
+
"rolle": "value",
|
|
96
|
+
"typ": "number",
|
|
97
|
+
"einheit": "kWh",
|
|
98
|
+
"lesen": "tele.SENSOR",
|
|
99
|
+
"feld": "ENERGY.Yesterday",
|
|
100
|
+
"optional": true,
|
|
101
|
+
"vorgabeAus": true
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"name": "APPARENT_POWER",
|
|
105
|
+
"rolle": "value",
|
|
106
|
+
"typ": "number",
|
|
107
|
+
"einheit": "VA",
|
|
108
|
+
"lesen": "tele.SENSOR",
|
|
109
|
+
"feld": "ENERGY.ApparentPower",
|
|
110
|
+
"optional": true,
|
|
111
|
+
"vorgabeAus": true,
|
|
112
|
+
"hinweis": "Scheinleistung. Kein Platz in socket oder light — landet wie TODAY im info-Geraet."
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
"name": "REACTIVE_POWER",
|
|
116
|
+
"rolle": "value",
|
|
117
|
+
"typ": "number",
|
|
118
|
+
"einheit": "var",
|
|
119
|
+
"lesen": "tele.SENSOR",
|
|
120
|
+
"feld": "ENERGY.ReactivePower",
|
|
121
|
+
"optional": true,
|
|
122
|
+
"vorgabeAus": true,
|
|
123
|
+
"hinweis": "Blindleistung."
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
"name": "POWER_FACTOR",
|
|
127
|
+
"rolle": "value",
|
|
128
|
+
"typ": "number",
|
|
129
|
+
"lesen": "tele.SENSOR",
|
|
130
|
+
"feld": "ENERGY.Factor",
|
|
131
|
+
"optional": true,
|
|
132
|
+
"vorgabeAus": true,
|
|
133
|
+
"hinweis": "Leistungsfaktor cos phi, 0 bis 1 — ohne Einheit."
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"name": "UNREACH",
|
|
137
|
+
"rolle": "indicator.maintenance.unreach",
|
|
138
|
+
"typ": "boolean",
|
|
139
|
+
"lesen": "tele.LWT",
|
|
140
|
+
"leseformel": "val !== \"Online\"",
|
|
141
|
+
"optional": true
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
"name": "RSSI",
|
|
145
|
+
"rolle": "value.rssi",
|
|
146
|
+
"typ": "number",
|
|
147
|
+
"einheit": "dBm",
|
|
148
|
+
"lesen": "tele.STATE",
|
|
149
|
+
"feld": "Wifi.Signal",
|
|
150
|
+
"optional": true
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
"name": "UPTIME",
|
|
154
|
+
"rolle": "value",
|
|
155
|
+
"typ": "number",
|
|
156
|
+
"einheit": "s",
|
|
157
|
+
"lesen": "tele.STATE",
|
|
158
|
+
"feld": "UptimeSec",
|
|
159
|
+
"optional": true,
|
|
160
|
+
"vorgabeAus": true,
|
|
161
|
+
"hinweis": "Sekunden seit dem letzten Start. Faellt der Wert staendig zurueck, startet das Geraet neu."
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
"name": "LAST_REPORT",
|
|
165
|
+
"rolle": "text",
|
|
166
|
+
"typ": "string",
|
|
167
|
+
"lesen": "tele.STATE",
|
|
168
|
+
"feld": "Time",
|
|
169
|
+
"optional": true,
|
|
170
|
+
"vorgabeAus": true,
|
|
171
|
+
"hinweis": "Zeitstempel der letzten Telemetrie des Geraets, nicht der von ioBroker."
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
"name": "HEAP",
|
|
175
|
+
"rolle": "value",
|
|
176
|
+
"typ": "number",
|
|
177
|
+
"einheit": "kB",
|
|
178
|
+
"lesen": "tele.STATE",
|
|
179
|
+
"feld": "Heap",
|
|
180
|
+
"optional": true,
|
|
181
|
+
"vorgabeAus": true,
|
|
182
|
+
"hinweis": "Freier Speicher. Wird er klein, wird das Geraet unzuverlaessig."
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
"name": "WIFI_QUALITY",
|
|
186
|
+
"rolle": "value",
|
|
187
|
+
"typ": "number",
|
|
188
|
+
"einheit": "%",
|
|
189
|
+
"lesen": "tele.STATE",
|
|
190
|
+
"feld": "Wifi.RSSI",
|
|
191
|
+
"optional": true,
|
|
192
|
+
"vorgabeAus": true,
|
|
193
|
+
"hinweis": "Guete 0 bis 100. RSSI in dBm steht getrennt daneben."
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
"name": "WIFI_SSID",
|
|
197
|
+
"rolle": "text",
|
|
198
|
+
"typ": "string",
|
|
199
|
+
"lesen": "tele.STATE",
|
|
200
|
+
"feld": "Wifi.SSId",
|
|
201
|
+
"optional": true,
|
|
202
|
+
"vorgabeAus": true
|
|
203
|
+
},
|
|
204
|
+
{
|
|
205
|
+
"name": "WIFI_LINKCOUNT",
|
|
206
|
+
"rolle": "value",
|
|
207
|
+
"typ": "number",
|
|
208
|
+
"lesen": "tele.STATE",
|
|
209
|
+
"feld": "Wifi.LinkCount",
|
|
210
|
+
"optional": true,
|
|
211
|
+
"vorgabeAus": true,
|
|
212
|
+
"hinweis": "Wie oft die WLAN-Verbindung seit dem Start neu aufgebaut wurde."
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
"name": "WIFI_DOWNTIME",
|
|
216
|
+
"rolle": "text",
|
|
217
|
+
"typ": "string",
|
|
218
|
+
"lesen": "tele.STATE",
|
|
219
|
+
"feld": "Wifi.Downtime",
|
|
220
|
+
"optional": true,
|
|
221
|
+
"vorgabeAus": true,
|
|
222
|
+
"hinweis": "Summe der Ausfallzeit seit dem Start."
|
|
223
|
+
},
|
|
224
|
+
{
|
|
225
|
+
"name": "IP",
|
|
226
|
+
"rolle": "text",
|
|
227
|
+
"typ": "string",
|
|
228
|
+
"lesen": "tele.STATE",
|
|
229
|
+
"feld": "IPAddress",
|
|
230
|
+
"optional": true,
|
|
231
|
+
"vorgabeAus": true,
|
|
232
|
+
"hinweis": "Drei Wege, weil keiner allein reicht. tele.STATE steht zuerst, weil es alle paar Minuten frisch kommt und einem Adresswechsel folgt - allerdings fuehrt es die IP erst ab neuerer Firmware mit (gemessen: 12.5.0 nein, 15.5.0 ja). tele.INFO2 schickt eine Tasmota beim Start und laesst es retained stehen; das steht auch bei alter Firmware da, ist aber ein Standbild vom letzten Boot. stat.STATUS5 entsteht, wenn jemand den Status abfragt.",
|
|
233
|
+
"lesenSonst": [
|
|
234
|
+
{
|
|
235
|
+
"punkt": "tele.INFO2",
|
|
236
|
+
"feld": "Info2.IPAddress"
|
|
237
|
+
},
|
|
238
|
+
{
|
|
239
|
+
"punkt": "stat.STATUS5",
|
|
240
|
+
"feld": "StatusNET.IPAddress"
|
|
241
|
+
}
|
|
242
|
+
]
|
|
243
|
+
}
|
|
244
|
+
],
|
|
245
|
+
"nebenwirkungen": [
|
|
246
|
+
{
|
|
247
|
+
"art": "mqtt-publish",
|
|
248
|
+
"punkt": "cmnd.POWER"
|
|
249
|
+
}
|
|
250
|
+
],
|
|
251
|
+
"weiterePunkte": {
|
|
252
|
+
"tele.LWT": "text",
|
|
253
|
+
"tele.STATE": "json",
|
|
254
|
+
"tele.SENSOR": "json",
|
|
255
|
+
"tele.INFO1": "json",
|
|
256
|
+
"tele.INFO2": "json",
|
|
257
|
+
"tele.INFO3": "json",
|
|
258
|
+
"tele.HASS_STATE": "json",
|
|
259
|
+
"stat.RESULT": "json",
|
|
260
|
+
"stat.STATUS": "json",
|
|
261
|
+
"stat.STATUS2": "json",
|
|
262
|
+
"stat.STATUS5": "json",
|
|
263
|
+
"stat.STATUS11": "json"
|
|
264
|
+
}
|
|
265
|
+
}
|
package/io-package.json
ADDED
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
{
|
|
2
|
+
"common": {
|
|
3
|
+
"name": "alias-workbench",
|
|
4
|
+
"version": "0.8.0",
|
|
5
|
+
"news": {
|
|
6
|
+
"0.8.0": {
|
|
7
|
+
"en": "Ready for the repository: settings page in eleven languages, ESLint and a CI workshop, checks that run before every commit. The buttons at the bottom now follow the mode. New description.",
|
|
8
|
+
"de": "Bereit fürs Repository: Einstellungsseite in elf Sprachen, ESLint und eine CI-Werkstatt, Prüfungen vor jedem Commit. Die Knöpfe unten richten sich jetzt nach dem Modus. Neue Beschreibung.",
|
|
9
|
+
"ru": "Готово для репозитория: страница настроек на одиннадцати языках, ESLint и CI-мастерская, проверки перед каждым коммитом. Кнопки внизу теперь зависят от режима. Новое описание.",
|
|
10
|
+
"pt": "Pronto para o repositório: página de definições em onze idiomas, ESLint e uma oficina de CI, verificações antes de cada commit. Os botões em baixo seguem agora o modo. Nova descrição.",
|
|
11
|
+
"nl": "Klaar voor de repository: instellingenpagina in elf talen, ESLint en een CI-werkplaats, controles voor elke commit. De knoppen onderaan volgen nu de modus. Nieuwe beschrijving.",
|
|
12
|
+
"fr": "Prêt pour le dépôt : page de réglages en onze langues, ESLint et un atelier CI, vérifications avant chaque commit. Les boutons du bas suivent désormais le mode. Nouvelle description.",
|
|
13
|
+
"it": "Pronto per il repository: pagina delle impostazioni in undici lingue, ESLint e un’officina CI, controlli prima di ogni commit. I pulsanti in basso seguono ora la modalità. Nuova descrizione.",
|
|
14
|
+
"es": "Listo para el repositorio: página de ajustes en once idiomas, ESLint y un taller de CI, comprobaciones antes de cada commit. Los botones de abajo ahora siguen el modo. Nueva descripción.",
|
|
15
|
+
"pl": "Gotowe do repozytorium: strona ustawień w jedenastu językach, ESLint i warsztat CI, sprawdzenia przed każdym commitem. Przyciski na dole podążają teraz za trybem. Nowy opis.",
|
|
16
|
+
"uk": "Готово до репозиторію: сторінка налаштувань одинадцятьма мовами, ESLint і CI-майстерня, перевірки перед кожним комітом. Кнопки внизу тепер залежать від режиму. Новий опис.",
|
|
17
|
+
"zh-cn": "已为仓库做好准备:十一种语言的设置页面、ESLint 与 CI 工作流、每次提交前的检查。底部按钮现在会随模式变化。全新的说明文字。"
|
|
18
|
+
},
|
|
19
|
+
"0.7.12": {
|
|
20
|
+
"en": "Tab rebuilt as ES modules; eleven Homematic templates; settings page; swap the source of an alias; picture preview beside room and function.",
|
|
21
|
+
"de": "Reiter in ES-Modulen; elf Homematic-Vorlagen; Einstellungsseite; Quelle eines Alias tauschen; Bildvorschau neben Raum und Funktion.",
|
|
22
|
+
"ru": "Вкладка перестроена на ES-модули; одиннадцать шаблонов Homematic; страница настроек; замена источника алиаса; предпросмотр значка рядом с комнатой и функцией.",
|
|
23
|
+
"pt": "Separador reconstruído como módulos ES; onze modelos Homematic; página de definições; trocar a fonte de um alias; pré-visualização da imagem junto a divisão e função.",
|
|
24
|
+
"nl": "Tabblad herbouwd als ES-modules; elf Homematic-sjablonen; instellingenpagina; de bron van een alias wisselen; afbeeldingsvoorbeeld naast ruimte en functie.",
|
|
25
|
+
"fr": "Onglet reconstruit en modules ES ; onze modèles Homematic ; page de réglages ; changer la source d'un alias ; aperçu de l'image à côté de la pièce et de la fonction.",
|
|
26
|
+
"it": "Scheda ricostruita come moduli ES; undici modelli Homematic; pagina delle impostazioni; sostituzione della sorgente di un alias; anteprima dell’immagine accanto a stanza e funzione.",
|
|
27
|
+
"es": "Pestaña reconstruida como módulos ES; once plantillas Homematic; página de ajustes; cambiar la fuente de un alias; vista previa de la imagen junto a la habitación y la función.",
|
|
28
|
+
"pl": "Zakładka przebudowana na moduły ES; jedenaście szablonów Homematic; strona ustawień; zamiana źródła aliasu; podgląd obrazka obok pomieszczenia i funkcji.",
|
|
29
|
+
"uk": "Вкладку перебудовано на ES-модулі; одинадцять шаблонів Homematic; сторінка налаштувань; заміна джерела аліаса; попередній перегляд зображення поруч із кімнатою та функцією.",
|
|
30
|
+
"zh-cn": "选项卡重构为 ES 模块;十一个 Homematic 模板;设置页面;更换别名的来源;房间和功能旁的图片预览。"
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
"titleLang": {
|
|
34
|
+
"en": "Alias Workbench",
|
|
35
|
+
"de": "Alias-Werkbank",
|
|
36
|
+
"ru": "Верстак алиасов",
|
|
37
|
+
"pt": "Bancada de alias",
|
|
38
|
+
"nl": "Alias-werkbank",
|
|
39
|
+
"fr": "Établi d'alias",
|
|
40
|
+
"it": "Banco di lavoro alias",
|
|
41
|
+
"es": "Banco de trabajo de alias",
|
|
42
|
+
"pl": "Warsztat aliasów",
|
|
43
|
+
"uk": "Верстак аліасів",
|
|
44
|
+
"zh-cn": "别名工作台"
|
|
45
|
+
},
|
|
46
|
+
"desc": {
|
|
47
|
+
"en": "Creates aliases the comfortable way — devices that vis, Alexa and the device adapter understand. Templates do the work: shipped ones for HomeMatic and Tasmota, your own for everything else. Live values while you build, dry run before anything is written.",
|
|
48
|
+
"de": "Erstellt komfortabel Aliase — Geräte, die vis, Alexa und der Geräte-Adapter verstehen. Vorlagen erledigen die Arbeit: mitgeliefert für Homematic und Tasmota, selbst gebaut für jedes weitere Gerät. Echte Werte beim Bauen, Trockenlauf vor jedem Schreibvorgang.",
|
|
49
|
+
"ru": "Удобно создаёт алиасы — устройства, которые понимают vis, Alexa и адаптер устройств. Работу выполняют шаблоны: готовые для HomeMatic и Tasmota, собственные для всего остального. Текущие значения во время сборки, пробный прогон перед любой записью.",
|
|
50
|
+
"pt": "Cria aliases de forma cómoda — dispositivos que o vis, a Alexa e o adaptador de dispositivos compreendem. Os modelos fazem o trabalho: os incluídos para HomeMatic e Tasmota, os seus próprios para tudo o resto. Valores ao vivo durante a construção, simulação antes de qualquer escrita.",
|
|
51
|
+
"nl": "Maakt aliassen op een comfortabele manier — apparaten die vis, Alexa en de apparaat-adapter begrijpen. Sjablonen doen het werk: meegeleverde voor HomeMatic en Tasmota, eigen voor al het andere. Live waarden tijdens het bouwen, proefrun voor elke schrijfactie.",
|
|
52
|
+
"fr": "Crée des alias de manière confortable — des appareils que vis, Alexa et l'adaptateur d'appareils comprennent. Les modèles font le travail : ceux fournis pour HomeMatic et Tasmota, les vôtres pour tout le reste. Valeurs en direct pendant la construction, simulation avant toute écriture.",
|
|
53
|
+
"it": "Crea alias in modo comodo — dispositivi che vis, Alexa e l'adattatore dispositivi comprendono. I modelli fanno il lavoro: quelli inclusi per HomeMatic e Tasmota, i propri per tutto il resto. Valori in tempo reale durante la creazione, simulazione prima di ogni scrittura.",
|
|
54
|
+
"es": "Crea alias de forma cómoda: dispositivos que vis, Alexa y el adaptador de dispositivos entienden. Las plantillas hacen el trabajo: las incluidas para HomeMatic y Tasmota, las propias para todo lo demás. Valores en vivo mientras construye, simulación antes de cualquier escritura.",
|
|
55
|
+
"pl": "Wygodnie tworzy aliasy — urządzenia, które rozumieją vis, Alexa i adapter urządzeń. Pracę wykonują szablony: dołączone dla HomeMatic i Tasmota, własne dla wszystkiego innego. Wartości na żywo podczas budowania, próbny przebieg przed każdym zapisem.",
|
|
56
|
+
"uk": "Зручно створює аліаси — пристрої, які розуміють vis, Alexa та адаптер пристроїв. Роботу виконують шаблони: вбудовані для HomeMatic і Tasmota, власні для всього іншого. Поточні значення під час створення, пробний запуск перед будь-яким записом.",
|
|
57
|
+
"zh-cn": "轻松创建别名——生成 vis、Alexa 和设备适配器都能识别的设备。模板承担主要工作:内置模板适用于 HomeMatic 和 Tasmota,自建模板适用于其他所有设备。构建时显示实时值,写入前先行试运行。"
|
|
58
|
+
},
|
|
59
|
+
"authors": [
|
|
60
|
+
"Ricardo"
|
|
61
|
+
],
|
|
62
|
+
"platform": "Javascript/Node.js",
|
|
63
|
+
"mode": "none",
|
|
64
|
+
"onlyWWW": true,
|
|
65
|
+
"singleton": true,
|
|
66
|
+
"type": "general",
|
|
67
|
+
"icon": "alias-workbench.png",
|
|
68
|
+
"enabled": true,
|
|
69
|
+
"compact": true,
|
|
70
|
+
"connectionType": "local",
|
|
71
|
+
"dataSource": "push",
|
|
72
|
+
"adminUI": {
|
|
73
|
+
"config": "json",
|
|
74
|
+
"tab": "materialize"
|
|
75
|
+
},
|
|
76
|
+
"adminTab": {
|
|
77
|
+
"name": {
|
|
78
|
+
"en": "Alias Workbench",
|
|
79
|
+
"de": "Alias-Werkbank"
|
|
80
|
+
},
|
|
81
|
+
"singleton": true,
|
|
82
|
+
"link": "/adapter/alias-workbench/tab.html?%instance%&noFooter"
|
|
83
|
+
},
|
|
84
|
+
"keywords": [
|
|
85
|
+
"alias",
|
|
86
|
+
"type-detector",
|
|
87
|
+
"device",
|
|
88
|
+
"template",
|
|
89
|
+
"mqtt",
|
|
90
|
+
"tasmota"
|
|
91
|
+
],
|
|
92
|
+
"readme": "https://github.com/RicardoHipp/ioBroker.alias-workbench/blob/main/README.md",
|
|
93
|
+
"dependencies": [
|
|
94
|
+
{
|
|
95
|
+
"js-controller": ">=6.0.11"
|
|
96
|
+
}
|
|
97
|
+
],
|
|
98
|
+
"globalDependencies": [
|
|
99
|
+
{
|
|
100
|
+
"admin": ">=7.6.20"
|
|
101
|
+
}
|
|
102
|
+
],
|
|
103
|
+
"licenseInformation": {
|
|
104
|
+
"license": "MIT",
|
|
105
|
+
"type": "free"
|
|
106
|
+
},
|
|
107
|
+
"tier": 3,
|
|
108
|
+
"messagebox": false,
|
|
109
|
+
"loglevel": "info",
|
|
110
|
+
"supportCustoms": false,
|
|
111
|
+
"noIntro": true,
|
|
112
|
+
"extIcon": "https://raw.githubusercontent.com/RicardoHipp/ioBroker.alias-workbench/main/admin/alias-workbench.png"
|
|
113
|
+
},
|
|
114
|
+
"native": {
|
|
115
|
+
"ikonRaeume": true,
|
|
116
|
+
"ikonFunktionen": true,
|
|
117
|
+
"ikonErsetzen": true,
|
|
118
|
+
"vorlagenVomAdmin": true
|
|
119
|
+
},
|
|
120
|
+
"objects": [],
|
|
121
|
+
"instanceObjects": []
|
|
122
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "iobroker.alias-workbench",
|
|
3
|
+
"version": "0.8.0",
|
|
4
|
+
"description": "Creates aliases the comfortable way — devices that vis, Alexa and the device adapter understand. Templates do the work: shipped ones for HomeMatic and Tasmota, your own for everything else. Live values while you build, dry run before anything is written.",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "Ricardo Hipp",
|
|
7
|
+
"email": "ricardo.hipp@googlemail.com"
|
|
8
|
+
},
|
|
9
|
+
"license": "MIT",
|
|
10
|
+
"keywords": [
|
|
11
|
+
"ioBroker",
|
|
12
|
+
"alias",
|
|
13
|
+
"type-detector"
|
|
14
|
+
],
|
|
15
|
+
"engines": {
|
|
16
|
+
"node": ">= 20"
|
|
17
|
+
},
|
|
18
|
+
"devDependencies": {
|
|
19
|
+
"@iobroker/eslint-config": "^2.3.4",
|
|
20
|
+
"@iobroker/testing": "^5.3.0",
|
|
21
|
+
"@iobroker/type-detector": "^6.0.0",
|
|
22
|
+
"esbuild": "^0.28.2",
|
|
23
|
+
"mocha": "^12.0.0"
|
|
24
|
+
},
|
|
25
|
+
"scripts": {
|
|
26
|
+
"build": "esbuild src/detector-bundle.js --bundle --minify --format=iife --target=es2019 --outfile=admin/detector.js",
|
|
27
|
+
"lint": "eslint .",
|
|
28
|
+
"lint:fix": "eslint . --fix",
|
|
29
|
+
"test:package": "mocha test/package.js --exit",
|
|
30
|
+
"test:vorpruefung": "mocha test/vorpruefung.js --exit",
|
|
31
|
+
"test": "mocha test/*.js --exit"
|
|
32
|
+
},
|
|
33
|
+
"files": [
|
|
34
|
+
"admin/",
|
|
35
|
+
"io-package.json",
|
|
36
|
+
"LICENSE"
|
|
37
|
+
],
|
|
38
|
+
"main": "io-package.json",
|
|
39
|
+
"readmeFilename": "README.md",
|
|
40
|
+
"homepage": "https://github.com/RicardoHipp/ioBroker.alias-workbench",
|
|
41
|
+
"repository": {
|
|
42
|
+
"type": "git",
|
|
43
|
+
"url": "git+https://github.com/RicardoHipp/ioBroker.alias-workbench.git"
|
|
44
|
+
},
|
|
45
|
+
"bugs": {
|
|
46
|
+
"url": "https://github.com/RicardoHipp/ioBroker.alias-workbench/issues"
|
|
47
|
+
}
|
|
48
|
+
}
|