iobroker.lorawan 1.22.7 → 1.22.9
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/README.md +6 -0
- package/admin/i18n/de/translations.json +21 -0
- package/admin/i18n/en/translations.json +24 -1
- package/admin/i18n/es/translations.json +21 -0
- package/admin/i18n/fr/translations.json +21 -0
- package/admin/i18n/it/translations.json +21 -0
- package/admin/i18n/nl/translations.json +21 -0
- package/admin/i18n/pl/translations.json +21 -0
- package/admin/i18n/pt/translations.json +21 -0
- package/admin/i18n/ru/translations.json +21 -0
- package/admin/i18n/uk/translations.json +21 -0
- package/admin/i18n/zh-cn/translations.json +21 -0
- package/admin/jsonConfig.json +274 -2
- package/io-package.json +16 -15
- package/lib/modules/bridge.js +309 -4
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -24,6 +24,12 @@ For now there is documentation in English here: https://wiki.hafenmeister.de
|
|
|
24
24
|
Placeholder for the next version (at the beginning of the line):
|
|
25
25
|
### **WORK IN PROGRESS**
|
|
26
26
|
-->
|
|
27
|
+
### 1.22.9 (2026-04-20)
|
|
28
|
+
* (BenAhrdt) error resolve git push
|
|
29
|
+
|
|
30
|
+
### 1.22.8 (2026-04-20)
|
|
31
|
+
* (BenAhrdt) implements first commands and states of lawn mower
|
|
32
|
+
|
|
27
33
|
### 1.22.7 (2026-04-16)
|
|
28
34
|
* (BenAhrdt) add more device_class entries to assign roles
|
|
29
35
|
|
|
@@ -93,6 +93,10 @@
|
|
|
93
93
|
"Enter new devicetype": "Geben Sie einen neuen Gerätetyp ein",
|
|
94
94
|
"Enter new name": "Geben Sie einen neuen Gerätenamen ein",
|
|
95
95
|
"Folder": "Ordner",
|
|
96
|
+
"HomeId": "HomeId",
|
|
97
|
+
"HomeNumber": "Home Nummer",
|
|
98
|
+
"HomeStateId": "Home Id",
|
|
99
|
+
"HomeStateNumber": "Home Nummer",
|
|
96
100
|
"Humidifier": "Luftbefeuchter",
|
|
97
101
|
"HumidifierActText": "Tatsächliche Luftfeuchtigkeit",
|
|
98
102
|
"HumidifierHeader": "Definieren Sie Zustände für eine Luftbefeuchterentität",
|
|
@@ -101,6 +105,8 @@
|
|
|
101
105
|
"HumidifierOnOffText": "Ein / Aus",
|
|
102
106
|
"HumidifierTargetText": "Zielfeuchtigkeit",
|
|
103
107
|
"HumidifierTooltip": "Luftbefeuchter / Luftentfeuchter",
|
|
108
|
+
"IdleStateId": "Idle Id",
|
|
109
|
+
"IdleStateNumber": "Pausiert Nummer",
|
|
104
110
|
"Info of this device": "Geräteinformationen",
|
|
105
111
|
"LastDiscover": "Letzte Discovery-Nachricht",
|
|
106
112
|
"LastPublish": "Letzte veröffentlichte Nachricht",
|
|
@@ -141,9 +147,19 @@
|
|
|
141
147
|
"LockUnlockText": "Entriegeln Id",
|
|
142
148
|
"LorawanOff": "Aus",
|
|
143
149
|
"MQTTInstance": "MQTT -Instanz",
|
|
150
|
+
"MowerHeader": "Definieren Sie Zustände für eine Rasenmäher-Entität",
|
|
151
|
+
"MowerInformation": "Hier können Sie eine Reihe von Rasenmäherdefinitionen definieren",
|
|
152
|
+
"MowerNameText": "Entitätsname",
|
|
153
|
+
"MowerSeparate": "Befehlstyp",
|
|
154
|
+
"MowerStateSeparate": "Statustyp",
|
|
155
|
+
"MowingStateId": "Mähen Id",
|
|
156
|
+
"MowingStateNumber": "Mäht Nummer",
|
|
144
157
|
"NoBridgeConfiged": "Es wurde keine Bridge Konfiguriert !!!",
|
|
158
|
+
"NumberId": "ID der Befehlsnummer",
|
|
145
159
|
"NumberSignalId": "ID für Nummernbegrenzungsschalter",
|
|
146
160
|
"NumberSignalText": "ID für Nummernbegrenzungsschalter",
|
|
161
|
+
"NumberStateId": "ID der Statusnummer",
|
|
162
|
+
"NumberStateText": "Statusnummern-ID",
|
|
147
163
|
"NumberText": "Nummern-ID",
|
|
148
164
|
"OneNumber": "eine Nummer für den Befehl",
|
|
149
165
|
"OneString": "ein String für die Befehle",
|
|
@@ -160,8 +176,13 @@
|
|
|
160
176
|
"ServersettingsHeader": "Server Einstellungen",
|
|
161
177
|
"Set the Base Ip for LoRaWAN devices": "Legen Sie die Basis-IP für LoRaWAN-Geräte fest",
|
|
162
178
|
"Set the Base Ip for bride devices": "Legen Sie die Basis-IP für Brautgeräte fest",
|
|
179
|
+
"StartId": "StartId",
|
|
180
|
+
"StartNumber": "Start Nummer",
|
|
181
|
+
"StatciTextMowerSeparate": "Die voreingestellten Werte sind für den Worx Adapter",
|
|
163
182
|
"State": "State",
|
|
164
183
|
"StateText": "Status Id",
|
|
184
|
+
"StopId": "StopId",
|
|
185
|
+
"StopNumber": "Pausiert Nummer",
|
|
165
186
|
"String": "Zeichenkette",
|
|
166
187
|
"UpText": "Up-Befehls-ID",
|
|
167
188
|
"VirtualMode": "Virtueller Modus",
|
|
@@ -304,5 +304,28 @@
|
|
|
304
304
|
"Base Ip for Bridge devices": "Base Ip for Bridge devices",
|
|
305
305
|
"Set the Base Ip for bride devices": "Set the Base Ip for bride devices",
|
|
306
306
|
"deviceObject": "Device Object",
|
|
307
|
-
"DeviceObject": "Device Object"
|
|
307
|
+
"DeviceObject": "Device Object",
|
|
308
|
+
|
|
309
|
+
|
|
310
|
+
"MowerHeader": "Define States for a Lawn-Mower Entity",
|
|
311
|
+
"MowerInformation": "Here you can define an array of Lawn-Mower definitions",
|
|
312
|
+
"MowerNameText": "Entityname",
|
|
313
|
+
"MowerSeparate": "sepaerate",
|
|
314
|
+
"MowerStateSeparate": "sepaerate",
|
|
315
|
+
"NumberId": "Id of Command-Number",
|
|
316
|
+
"StartNumber": "Start-Number",
|
|
317
|
+
"StopNumber": "Stop-Number",
|
|
318
|
+
"HomeNumber": "Home-Number",
|
|
319
|
+
"StartId": "StartId",
|
|
320
|
+
"StopId": "StopId",
|
|
321
|
+
"HomeId": "HomeId",
|
|
322
|
+
"NumberStateId": "Id of State-Number",
|
|
323
|
+
"MowingStateNumber": "Mowing-Number",
|
|
324
|
+
"IdleStateNumber": "Idle-Number",
|
|
325
|
+
"HomeStateNumber": "Home-Number",
|
|
326
|
+
"MowingStateId": "MowingStateId",
|
|
327
|
+
"IdleStateId": "IdleStateId",
|
|
328
|
+
"HomeStateId": "HomeStateId",
|
|
329
|
+
"NumberStateText": "State-Number Id",
|
|
330
|
+
"StatciTextMowerSeparate": "The default values are selected for the worx adapter"
|
|
308
331
|
}
|
|
@@ -93,6 +93,10 @@
|
|
|
93
93
|
"Enter new devicetype": "Ingrese el nuevo tipo de dispositivo",
|
|
94
94
|
"Enter new name": "Introduce un nuevo nombre",
|
|
95
95
|
"Folder": "Carpeta",
|
|
96
|
+
"HomeId": "ID de casa",
|
|
97
|
+
"HomeNumber": "Número de casa",
|
|
98
|
+
"HomeStateId": "InicioEstadoId.",
|
|
99
|
+
"HomeStateNumber": "Número de casa",
|
|
96
100
|
"Humidifier": "humidificador",
|
|
97
101
|
"HumidifierActText": "Humedad real",
|
|
98
102
|
"HumidifierHeader": "Definir estados para una entidad humidificadora",
|
|
@@ -101,6 +105,8 @@
|
|
|
101
105
|
"HumidifierOnOffText": "Encendido/Apagado",
|
|
102
106
|
"HumidifierTargetText": "Humedad objetivo",
|
|
103
107
|
"HumidifierTooltip": "humidificador / deshumidificador",
|
|
108
|
+
"IdleStateId": "ID de estado inactivo",
|
|
109
|
+
"IdleStateNumber": "Número inactivo",
|
|
104
110
|
"Info of this device": "Información de este dispositivo",
|
|
105
111
|
"LastDiscover": "Último descubrimiento",
|
|
106
112
|
"LastPublish": "último mensaje publicado",
|
|
@@ -141,9 +147,19 @@
|
|
|
141
147
|
"LockUnlockText": "Desbloquear identificación",
|
|
142
148
|
"LorawanOff": "apagado",
|
|
143
149
|
"MQTTInstance": "Instancia MQTT",
|
|
150
|
+
"MowerHeader": "Definir estados para una entidad cortadora de césped",
|
|
151
|
+
"MowerInformation": "Aquí puede definir una variedad de definiciones de cortacésped",
|
|
152
|
+
"MowerNameText": "nombre de entidad",
|
|
153
|
+
"MowerSeparate": "separar",
|
|
154
|
+
"MowerStateSeparate": "separar",
|
|
155
|
+
"MowingStateId": "ID del estado de corte",
|
|
156
|
+
"MowingStateNumber": "Número de corte",
|
|
144
157
|
"NoBridgeConfiged": "¡¡¡No hay ningún puente configurado !!!",
|
|
158
|
+
"NumberId": "ID del número de comando",
|
|
145
159
|
"NumberSignalId": "ID para interruptor de límite de número",
|
|
146
160
|
"NumberSignalText": "ID para interruptor de límite de número",
|
|
161
|
+
"NumberStateId": "ID del número de estado",
|
|
162
|
+
"NumberStateText": "Identificación del número de estado",
|
|
147
163
|
"NumberText": "Número de identificación",
|
|
148
164
|
"OneNumber": "un número para comando",
|
|
149
165
|
"OneString": "una cadena para el comando",
|
|
@@ -160,8 +176,13 @@
|
|
|
160
176
|
"ServersettingsHeader": "Configuración del servidor",
|
|
161
177
|
"Set the Base Ip for LoRaWAN devices": "Configure la IP base para dispositivos LoRaWAN",
|
|
162
178
|
"Set the Base Ip for bride devices": "Configurar la IP base para dispositivos de novia",
|
|
179
|
+
"StartId": "ID de inicio",
|
|
180
|
+
"StartNumber": "Número de inicio",
|
|
181
|
+
"StatciTextMowerSeparate": "Los valores predeterminados se seleccionan para el adaptador Worx.",
|
|
163
182
|
"State": "Estado",
|
|
164
183
|
"StateText": "identificación estatal",
|
|
184
|
+
"StopId": "ID de parada",
|
|
185
|
+
"StopNumber": "Número de parada",
|
|
165
186
|
"String": "Cadena",
|
|
166
187
|
"UpText": "ID de comando arriba",
|
|
167
188
|
"VirtualMode": "Modo Virtual",
|
|
@@ -93,6 +93,10 @@
|
|
|
93
93
|
"Enter new devicetype": "Entrez le nouveau type d'appareil",
|
|
94
94
|
"Enter new name": "Entrez un nouveau nom",
|
|
95
95
|
"Folder": "Dossier",
|
|
96
|
+
"HomeId": "Identifiant de la maison",
|
|
97
|
+
"HomeNumber": "Numéro de domicile",
|
|
98
|
+
"HomeStateId": "ID d'état d'accueil",
|
|
99
|
+
"HomeStateNumber": "Numéro de domicile",
|
|
96
100
|
"Humidifier": "Humidificateur",
|
|
97
101
|
"HumidifierActText": "Humidité réelle",
|
|
98
102
|
"HumidifierHeader": "Définir les états d'une entité humidificateur",
|
|
@@ -101,6 +105,8 @@
|
|
|
101
105
|
"HumidifierOnOffText": "Marche/Arrêt",
|
|
102
106
|
"HumidifierTargetText": "Humidité cible",
|
|
103
107
|
"HumidifierTooltip": "humidificateur / déshumidificateur",
|
|
108
|
+
"IdleStateId": "ID d'état inactif",
|
|
109
|
+
"IdleStateNumber": "Numéro inactif",
|
|
104
110
|
"Info of this device": "Informations sur cet appareil",
|
|
105
111
|
"LastDiscover": "Last Discover",
|
|
106
112
|
"LastPublish": "dernier message publié",
|
|
@@ -141,9 +147,19 @@
|
|
|
141
147
|
"LockUnlockText": "Déverrouiller l'identifiant",
|
|
142
148
|
"LorawanOff": "désactivé",
|
|
143
149
|
"MQTTInstance": "Instance MQTT",
|
|
150
|
+
"MowerHeader": "Définir des états pour une entité tondeuse à gazon",
|
|
151
|
+
"MowerInformation": "Ici, vous pouvez définir un tableau de définitions de tondeuse à gazon.",
|
|
152
|
+
"MowerNameText": "Nom de l'entité",
|
|
153
|
+
"MowerSeparate": "séparé",
|
|
154
|
+
"MowerStateSeparate": "séparé",
|
|
155
|
+
"MowingStateId": "ID d'état de tonte",
|
|
156
|
+
"MowingStateNumber": "Numéro de tonte",
|
|
144
157
|
"NoBridgeConfiged": "Il n'y a pas de pont configuré !!!",
|
|
158
|
+
"NumberId": "Identifiant du numéro de commande",
|
|
145
159
|
"NumberSignalId": "identifiant pour le fin de course numérique",
|
|
146
160
|
"NumberSignalText": "identifiant pour le fin de course numérique",
|
|
161
|
+
"NumberStateId": "Identifiant de l'État-Numéro",
|
|
162
|
+
"NumberStateText": "Identifiant du numéro d'état",
|
|
147
163
|
"NumberText": "Numéro d'identification",
|
|
148
164
|
"OneNumber": "un numéro pour la commande",
|
|
149
165
|
"OneString": "une chaîne pour la commande",
|
|
@@ -160,8 +176,13 @@
|
|
|
160
176
|
"ServersettingsHeader": "Paramètres du serveur",
|
|
161
177
|
"Set the Base Ip for LoRaWAN devices": "Définir l'adresse IP de base pour les appareils LoRaWAN",
|
|
162
178
|
"Set the Base Ip for bride devices": "Définir l'adresse IP de base pour les appareils de la mariée",
|
|
179
|
+
"StartId": "ID de démarrage",
|
|
180
|
+
"StartNumber": "Numéro de départ",
|
|
181
|
+
"StatciTextMowerSeparate": "Les valeurs par défaut sont sélectionnées pour l'adaptateur Worx",
|
|
163
182
|
"State": "État",
|
|
164
183
|
"StateText": "ID d'État",
|
|
184
|
+
"StopId": "ID d'arrêt",
|
|
185
|
+
"StopNumber": "Numéro d'arrêt",
|
|
165
186
|
"String": "Chaîne",
|
|
166
187
|
"UpText": "ID de commande vers le haut",
|
|
167
188
|
"VirtualMode": "Mode virtuel",
|
|
@@ -93,6 +93,10 @@
|
|
|
93
93
|
"Enter new devicetype": "Inserisci il nuovo tipo di dispositivo",
|
|
94
94
|
"Enter new name": "Inserisci il nuovo nome",
|
|
95
95
|
"Folder": "Cartella",
|
|
96
|
+
"HomeId": "ID casa",
|
|
97
|
+
"HomeNumber": "Numero di casa",
|
|
98
|
+
"HomeStateId": "HomeStateId",
|
|
99
|
+
"HomeStateNumber": "Numero di casa",
|
|
96
100
|
"Humidifier": "Umidificatore",
|
|
97
101
|
"HumidifierActText": "Umidità effettiva",
|
|
98
102
|
"HumidifierHeader": "Definire gli stati per un'entità umidificatore",
|
|
@@ -101,6 +105,8 @@
|
|
|
101
105
|
"HumidifierOnOffText": "Acceso/Spento",
|
|
102
106
|
"HumidifierTargetText": "Umidità target",
|
|
103
107
|
"HumidifierTooltip": "umidificatore/deumidificatore",
|
|
108
|
+
"IdleStateId": "IdleStateId",
|
|
109
|
+
"IdleStateNumber": "Numero inattivo",
|
|
104
110
|
"Info of this device": "Informazioni su questo dispositivo",
|
|
105
111
|
"LastDiscover": "Ultima scoperta",
|
|
106
112
|
"LastPublish": "ultimo messaggio pubblicato",
|
|
@@ -141,9 +147,19 @@
|
|
|
141
147
|
"LockUnlockText": "Sblocca l'identità",
|
|
142
148
|
"LorawanOff": "spento",
|
|
143
149
|
"MQTTInstance": "Istanza MQTT",
|
|
150
|
+
"MowerHeader": "Definire gli stati per un'entità tosaerba",
|
|
151
|
+
"MowerInformation": "Qui è possibile definire una serie di definizioni di rasaerba",
|
|
152
|
+
"MowerNameText": "Nome entità",
|
|
153
|
+
"MowerSeparate": "separato",
|
|
154
|
+
"MowerStateSeparate": "separato",
|
|
155
|
+
"MowingStateId": "MowingStateId",
|
|
156
|
+
"MowingStateNumber": "Numero di taglio",
|
|
144
157
|
"NoBridgeConfiged": "Non c'è nessun bridge configurato!!!",
|
|
158
|
+
"NumberId": "ID del numero di comando",
|
|
145
159
|
"NumberSignalId": "id per il finecorsa numerico",
|
|
146
160
|
"NumberSignalText": "id per il finecorsa numerico",
|
|
161
|
+
"NumberStateId": "Id del numero di stato",
|
|
162
|
+
"NumberStateText": "ID numero stato",
|
|
147
163
|
"NumberText": "Numero identificativo",
|
|
148
164
|
"OneNumber": "un numero per comando",
|
|
149
165
|
"OneString": "una stringa per il comando",
|
|
@@ -160,8 +176,13 @@
|
|
|
160
176
|
"ServersettingsHeader": "Impostazioni del server",
|
|
161
177
|
"Set the Base Ip for LoRaWAN devices": "Imposta l'IP di base per i dispositivi LoRaWAN",
|
|
162
178
|
"Set the Base Ip for bride devices": "Imposta l'Ip Base per i dispositivi sposa",
|
|
179
|
+
"StartId": "StartId",
|
|
180
|
+
"StartNumber": "Numero di partenza",
|
|
181
|
+
"StatciTextMowerSeparate": "I valori predefiniti sono selezionati per l'adattatore Worx",
|
|
163
182
|
"State": "Stato",
|
|
164
183
|
"StateText": "ID dello stato",
|
|
184
|
+
"StopId": "StopId",
|
|
185
|
+
"StopNumber": "Numero di fermata",
|
|
165
186
|
"String": "Corda",
|
|
166
187
|
"UpText": "ID comando su",
|
|
167
188
|
"VirtualMode": "Modalità virtuale",
|
|
@@ -93,6 +93,10 @@
|
|
|
93
93
|
"Enter new devicetype": "Voer een nieuw apparaattype in",
|
|
94
94
|
"Enter new name": "Voer een nieuwe naam in",
|
|
95
95
|
"Folder": "Map",
|
|
96
|
+
"HomeId": "HomeId",
|
|
97
|
+
"HomeNumber": "Thuisnummer",
|
|
98
|
+
"HomeStateId": "HomeStateId",
|
|
99
|
+
"HomeStateNumber": "Thuisnummer",
|
|
96
100
|
"Humidifier": "Luchtbevochtiger",
|
|
97
101
|
"HumidifierActText": "Werkelijke luchtvochtigheid",
|
|
98
102
|
"HumidifierHeader": "Definieer statussen voor een luchtbevochtigerentiteit",
|
|
@@ -101,6 +105,8 @@
|
|
|
101
105
|
"HumidifierOnOffText": "Aan / Uit",
|
|
102
106
|
"HumidifierTargetText": "Doelvochtigheid",
|
|
103
107
|
"HumidifierTooltip": "luchtbevochtiger/ontvochtiger",
|
|
108
|
+
"IdleStateId": "IdleStateId",
|
|
109
|
+
"IdleStateNumber": "Inactief nummer",
|
|
104
110
|
"Info of this device": "Informatie over dit apparaat",
|
|
105
111
|
"LastDiscover": "Laatste ontdekking",
|
|
106
112
|
"LastPublish": "laatst gepubliceerde bericht",
|
|
@@ -141,9 +147,19 @@
|
|
|
141
147
|
"LockUnlockText": "Ontgrendel ID",
|
|
142
148
|
"LorawanOff": "uit",
|
|
143
149
|
"MQTTInstance": "MQTT-instantie",
|
|
150
|
+
"MowerHeader": "Definieer statussen voor een grasmaaierentiteit",
|
|
151
|
+
"MowerInformation": "Hier kunt u een reeks definities voor grasmaaiers definiëren",
|
|
152
|
+
"MowerNameText": "Entiteitsnaam",
|
|
153
|
+
"MowerSeparate": "apart",
|
|
154
|
+
"MowerStateSeparate": "apart",
|
|
155
|
+
"MowingStateId": "MaaistatusId",
|
|
156
|
+
"MowingStateNumber": "Maainummer",
|
|
144
157
|
"NoBridgeConfiged": "Er is geen bridge geconfigureerd!!!",
|
|
158
|
+
"NumberId": "Id van opdrachtnummer",
|
|
145
159
|
"NumberSignalId": "ID voor nummerlimietschakelaar",
|
|
146
160
|
"NumberSignalText": "ID voor nummerlimietschakelaar",
|
|
161
|
+
"NumberStateId": "Id van staatsnummer",
|
|
162
|
+
"NumberStateText": "Staatsnummer-ID",
|
|
147
163
|
"NumberText": "Nummer-ID",
|
|
148
164
|
"OneNumber": "één nummer voor commando",
|
|
149
165
|
"OneString": "één string voor commando",
|
|
@@ -160,8 +176,13 @@
|
|
|
160
176
|
"ServersettingsHeader": "Serverinstellingen",
|
|
161
177
|
"Set the Base Ip for LoRaWAN devices": "Stel het basis-IP in voor LoRaWAN-apparaten",
|
|
162
178
|
"Set the Base Ip for bride devices": "Stel het basis-IP in voor bruidapparaten",
|
|
179
|
+
"StartId": "StartId",
|
|
180
|
+
"StartNumber": "Startnummer",
|
|
181
|
+
"StatciTextMowerSeparate": "Voor de worx-adapter zijn de standaardwaarden geselecteerd",
|
|
163
182
|
"State": "Staat",
|
|
164
183
|
"StateText": "Staats-ID",
|
|
184
|
+
"StopId": "StopId",
|
|
185
|
+
"StopNumber": "Stopnummer",
|
|
165
186
|
"String": "Snaar",
|
|
166
187
|
"UpText": "Commando-ID omhoog",
|
|
167
188
|
"VirtualMode": "Virtuele modus",
|
|
@@ -93,6 +93,10 @@
|
|
|
93
93
|
"Enter new devicetype": "Wprowadź nowy typ urządzenia",
|
|
94
94
|
"Enter new name": "Wprowadź nową nazwę",
|
|
95
95
|
"Folder": "Falcówka",
|
|
96
|
+
"HomeId": "Identyfikator domu",
|
|
97
|
+
"HomeNumber": "Numer domowy",
|
|
98
|
+
"HomeStateId": "Strona głównaStanId",
|
|
99
|
+
"HomeStateNumber": "Numer domowy",
|
|
96
100
|
"Humidifier": "Nawilżacz",
|
|
97
101
|
"HumidifierActText": "Rzeczywista wilgotność",
|
|
98
102
|
"HumidifierHeader": "Zdefiniuj stany dla nawilżacza",
|
|
@@ -101,6 +105,8 @@
|
|
|
101
105
|
"HumidifierOnOffText": "Wł./Wył",
|
|
102
106
|
"HumidifierTargetText": "Docelowa wilgotność",
|
|
103
107
|
"HumidifierTooltip": "nawilżacz / osuszacz",
|
|
108
|
+
"IdleStateId": "IdleStateId",
|
|
109
|
+
"IdleStateNumber": "Numer bezczynny",
|
|
104
110
|
"Info of this device": "Informacje o tym urządzeniu",
|
|
105
111
|
"LastDiscover": "Ostatnie odkrycie",
|
|
106
112
|
"LastPublish": "ostatnia opublikowana wiadomość",
|
|
@@ -141,9 +147,19 @@
|
|
|
141
147
|
"LockUnlockText": "Odblokuj identyfikator",
|
|
142
148
|
"LorawanOff": "wyłączony",
|
|
143
149
|
"MQTTInstance": "Instancja MQTT",
|
|
150
|
+
"MowerHeader": "Zdefiniuj stany dla elementu kosiarki",
|
|
151
|
+
"MowerInformation": "Tutaj możesz zdefiniować tablicę definicji kosiarki",
|
|
152
|
+
"MowerNameText": "Nazwa jednostki",
|
|
153
|
+
"MowerSeparate": "oddzielić",
|
|
154
|
+
"MowerStateSeparate": "oddzielić",
|
|
155
|
+
"MowingStateId": "Identyfikator stanu koszenia",
|
|
156
|
+
"MowingStateNumber": "Numer koszenia",
|
|
144
157
|
"NoBridgeConfiged": "Nie ma skonfigurowanego mostu!!!",
|
|
158
|
+
"NumberId": "Identyfikator numeru polecenia",
|
|
145
159
|
"NumberSignalId": "identyfikator wyłącznika krańcowego numeru",
|
|
146
160
|
"NumberSignalText": "identyfikator wyłącznika krańcowego numeru",
|
|
161
|
+
"NumberStateId": "Identyfikator numeru stanu",
|
|
162
|
+
"NumberStateText": "Identyfikator numeru stanu",
|
|
147
163
|
"NumberText": "Numer identyfikacyjny",
|
|
148
164
|
"OneNumber": "jeden numer do polecenia",
|
|
149
165
|
"OneString": "jeden ciąg dla polecenia",
|
|
@@ -160,8 +176,13 @@
|
|
|
160
176
|
"ServersettingsHeader": "Ustawienia serwera",
|
|
161
177
|
"Set the Base Ip for LoRaWAN devices": "Ustaw podstawowy adres IP dla urządzeń LoRaWAN",
|
|
162
178
|
"Set the Base Ip for bride devices": "Ustaw podstawowy adres IP dla urządzeń panny młodej",
|
|
179
|
+
"StartId": "Identyfikator początkowy",
|
|
180
|
+
"StartNumber": "Numer początkowy",
|
|
181
|
+
"StatciTextMowerSeparate": "Dla adaptera worx wybrane są wartości domyślne",
|
|
163
182
|
"State": "Państwo",
|
|
164
183
|
"StateText": "Stanowy identyfikator",
|
|
184
|
+
"StopId": "Identyfikator zatrzymania",
|
|
185
|
+
"StopNumber": "Numer zatrzymania",
|
|
165
186
|
"String": "Smyczkowy",
|
|
166
187
|
"UpText": "W górę identyfikator polecenia",
|
|
167
188
|
"VirtualMode": "Tryb wirtualny",
|
|
@@ -93,6 +93,10 @@
|
|
|
93
93
|
"Enter new devicetype": "Insira o novo tipo de dispositivo",
|
|
94
94
|
"Enter new name": "Digite o novo nome",
|
|
95
95
|
"Folder": "Pasta",
|
|
96
|
+
"HomeId": "HomeId",
|
|
97
|
+
"HomeNumber": "Número residencial",
|
|
98
|
+
"HomeStateId": "HomeStateId",
|
|
99
|
+
"HomeStateNumber": "Número residencial",
|
|
96
100
|
"Humidifier": "Umidificador",
|
|
97
101
|
"HumidifierActText": "Umidade real",
|
|
98
102
|
"HumidifierHeader": "Definir estados para uma entidade umidificadora",
|
|
@@ -101,6 +105,8 @@
|
|
|
101
105
|
"HumidifierOnOffText": "Ligado/Desligado",
|
|
102
106
|
"HumidifierTargetText": "Umidade alvo",
|
|
103
107
|
"HumidifierTooltip": "umidificador / desumidificador",
|
|
108
|
+
"IdleStateId": "IdleStateId",
|
|
109
|
+
"IdleStateNumber": "Número ocioso",
|
|
104
110
|
"Info of this device": "Informações deste dispositivo",
|
|
105
111
|
"LastDiscover": "Última descoberta",
|
|
106
112
|
"LastPublish": "última mensagem publicada",
|
|
@@ -141,9 +147,19 @@
|
|
|
141
147
|
"LockUnlockText": "ID de desbloqueio",
|
|
142
148
|
"LorawanOff": "desligado",
|
|
143
149
|
"MQTTInstance": "Instância MQTT",
|
|
150
|
+
"MowerHeader": "Definir estados para uma entidade cortadora de grama",
|
|
151
|
+
"MowerInformation": "Aqui você pode definir uma série de definições de cortador de grama",
|
|
152
|
+
"MowerNameText": "Nome da entidade",
|
|
153
|
+
"MowerSeparate": "separar",
|
|
154
|
+
"MowerStateSeparate": "separar",
|
|
155
|
+
"MowingStateId": "CortarStateId",
|
|
156
|
+
"MowingStateNumber": "Número de corte",
|
|
144
157
|
"NoBridgeConfiged": "Não há nenhuma ponte configurada!!!",
|
|
158
|
+
"NumberId": "ID do número de comando",
|
|
145
159
|
"NumberSignalId": "id para interruptor de limite de número",
|
|
146
160
|
"NumberSignalText": "id para interruptor de limite de número",
|
|
161
|
+
"NumberStateId": "Id do número do estado",
|
|
162
|
+
"NumberStateText": "ID do número do estado",
|
|
147
163
|
"NumberText": "ID do número",
|
|
148
164
|
"OneNumber": "um número para comando",
|
|
149
165
|
"OneString": "uma string para comando",
|
|
@@ -160,8 +176,13 @@
|
|
|
160
176
|
"ServersettingsHeader": "Configurações do servidor",
|
|
161
177
|
"Set the Base Ip for LoRaWAN devices": "Defina o IP base para dispositivos LoRaWAN",
|
|
162
178
|
"Set the Base Ip for bride devices": "Defina o IP base para dispositivos noivas",
|
|
179
|
+
"StartId": "ID de início",
|
|
180
|
+
"StartNumber": "Número inicial",
|
|
181
|
+
"StatciTextMowerSeparate": "Os valores padrão são selecionados para o adaptador worx",
|
|
163
182
|
"State": "Estado",
|
|
164
183
|
"StateText": "ID do estado",
|
|
184
|
+
"StopId": "ID de parada",
|
|
185
|
+
"StopNumber": "Número de parada",
|
|
165
186
|
"String": "Corda",
|
|
166
187
|
"UpText": "ID do comando para cima",
|
|
167
188
|
"VirtualMode": "Modo Virtual",
|
|
@@ -93,6 +93,10 @@
|
|
|
93
93
|
"Enter new devicetype": "Введите новый тип устройства",
|
|
94
94
|
"Enter new name": "Введите новое имя",
|
|
95
95
|
"Folder": "Папка",
|
|
96
|
+
"HomeId": "HomeId",
|
|
97
|
+
"HomeNumber": "Домашний номер",
|
|
98
|
+
"HomeStateId": "HomeStateId",
|
|
99
|
+
"HomeStateNumber": "Домашний номер",
|
|
96
100
|
"Humidifier": "Увлажнитель",
|
|
97
101
|
"HumidifierActText": "Фактическая влажность",
|
|
98
102
|
"HumidifierHeader": "Определите состояния для объекта увлажнителя",
|
|
@@ -101,6 +105,8 @@
|
|
|
101
105
|
"HumidifierOnOffText": "Вкл/Выкл",
|
|
102
106
|
"HumidifierTargetText": "Целевая влажность",
|
|
103
107
|
"HumidifierTooltip": "увлажнитель / осушитель",
|
|
108
|
+
"IdleStateId": "IdleStateId",
|
|
109
|
+
"IdleStateNumber": "Свободный номер",
|
|
104
110
|
"Info of this device": "Информация об этом устройстве",
|
|
105
111
|
"LastDiscover": "Последнее открытие",
|
|
106
112
|
"LastPublish": "последнее опубликованное сообщение",
|
|
@@ -141,9 +147,19 @@
|
|
|
141
147
|
"LockUnlockText": "Разблокировать идентификатор",
|
|
142
148
|
"LorawanOff": "выключенный",
|
|
143
149
|
"MQTTInstance": "Экземпляр MQTT",
|
|
150
|
+
"MowerHeader": "Определите состояния для объекта-газонокосилки",
|
|
151
|
+
"MowerInformation": "Здесь вы можете определить массив определений газонокосилок.",
|
|
152
|
+
"MowerNameText": "Имя объекта",
|
|
153
|
+
"MowerSeparate": "отдельный",
|
|
154
|
+
"MowerStateSeparate": "отдельный",
|
|
155
|
+
"MowingStateId": "MowingStateId",
|
|
156
|
+
"MowingStateNumber": "Номер кошения",
|
|
144
157
|
"NoBridgeConfiged": "Не настроен мост!!!",
|
|
158
|
+
"NumberId": "Идентификатор номера команды",
|
|
145
159
|
"NumberSignalId": "идентификатор концевого выключателя номера",
|
|
146
160
|
"NumberSignalText": "идентификатор концевого выключателя номера",
|
|
161
|
+
"NumberStateId": "Идентификатор номера штата",
|
|
162
|
+
"NumberStateText": "Идентификатор номера штата",
|
|
147
163
|
"NumberText": "Идентификатор номера",
|
|
148
164
|
"OneNumber": "один номер для команды",
|
|
149
165
|
"OneString": "одна строка для команды",
|
|
@@ -160,8 +176,13 @@
|
|
|
160
176
|
"ServersettingsHeader": "Настройки сервера",
|
|
161
177
|
"Set the Base Ip for LoRaWAN devices": "Установите базовый IP-адрес для устройств LoRaWAN",
|
|
162
178
|
"Set the Base Ip for bride devices": "Установите базовый IP-адрес для устройств невесты",
|
|
179
|
+
"StartId": "СтартИд",
|
|
180
|
+
"StartNumber": "Начальный номер",
|
|
181
|
+
"StatciTextMowerSeparate": "Для адаптера worx выбраны значения по умолчанию.",
|
|
163
182
|
"State": "Состояние",
|
|
164
183
|
"StateText": "Государственный идентификатор",
|
|
184
|
+
"StopId": "СтопИд",
|
|
185
|
+
"StopNumber": "Стоп-номер",
|
|
165
186
|
"String": "Нить",
|
|
166
187
|
"UpText": "Идентификатор команды вверх",
|
|
167
188
|
"VirtualMode": "Виртуальный режим",
|
|
@@ -93,6 +93,10 @@
|
|
|
93
93
|
"Enter new devicetype": "Введіть новий тип пристрою",
|
|
94
94
|
"Enter new name": "Введіть нове ім'я",
|
|
95
95
|
"Folder": "Папка",
|
|
96
|
+
"HomeId": "HomeId",
|
|
97
|
+
"HomeNumber": "Домашній номер",
|
|
98
|
+
"HomeStateId": "HomeStateId",
|
|
99
|
+
"HomeStateNumber": "Домашній номер",
|
|
96
100
|
"Humidifier": "Зволожувач повітря",
|
|
97
101
|
"HumidifierActText": "Фактична вологість",
|
|
98
102
|
"HumidifierHeader": "Визначення станів для об’єкта зволожувача",
|
|
@@ -101,6 +105,8 @@
|
|
|
101
105
|
"HumidifierOnOffText": "Увімк. / Вимк",
|
|
102
106
|
"HumidifierTargetText": "Цільова вологість",
|
|
103
107
|
"HumidifierTooltip": "зволожувач / осушувач повітря",
|
|
108
|
+
"IdleStateId": "IdleStateId",
|
|
109
|
+
"IdleStateNumber": "Idle-Number",
|
|
104
110
|
"Info of this device": "Інформація про цей пристрій",
|
|
105
111
|
"LastDiscover": "Останнє відкриття",
|
|
106
112
|
"LastPublish": "останнє опубліковане повідомлення",
|
|
@@ -141,9 +147,19 @@
|
|
|
141
147
|
"LockUnlockText": "Розблокувати ID",
|
|
142
148
|
"LorawanOff": "вимкнено",
|
|
143
149
|
"MQTTInstance": "Екземпляр MQTT",
|
|
150
|
+
"MowerHeader": "Визначте стани для сутності газонокосарки",
|
|
151
|
+
"MowerInformation": "Тут ви можете визначити масив визначень газонокосарки",
|
|
152
|
+
"MowerNameText": "Назва сутності",
|
|
153
|
+
"MowerSeparate": "відокремити",
|
|
154
|
+
"MowerStateSeparate": "відокремити",
|
|
155
|
+
"MowingStateId": "MowingStateId",
|
|
156
|
+
"MowingStateNumber": "Косіння-Номер",
|
|
144
157
|
"NoBridgeConfiged": "Міст не налаштований !!!",
|
|
158
|
+
"NumberId": "Ідентифікатор командного номера",
|
|
145
159
|
"NumberSignalId": "ідентифікатор для обмеження кількості",
|
|
146
160
|
"NumberSignalText": "ідентифікатор для обмеження кількості",
|
|
161
|
+
"NumberStateId": "Ідентифікатор державного номера",
|
|
162
|
+
"NumberStateText": "Ідентифікатор державного номера",
|
|
147
163
|
"NumberText": "ID номера",
|
|
148
164
|
"OneNumber": "одна цифра для команди",
|
|
149
165
|
"OneString": "один рядок для команди",
|
|
@@ -160,8 +176,13 @@
|
|
|
160
176
|
"ServersettingsHeader": "Налаштування сервера",
|
|
161
177
|
"Set the Base Ip for LoRaWAN devices": "Встановіть базовий IP для пристроїв LoRaWAN",
|
|
162
178
|
"Set the Base Ip for bride devices": "Встановіть базовий IP для пристроїв нареченої",
|
|
179
|
+
"StartId": "StartId",
|
|
180
|
+
"StartNumber": "Стартовий номер",
|
|
181
|
+
"StatciTextMowerSeparate": "Для адаптера worx вибрано значення за замовчуванням",
|
|
163
182
|
"State": "Держава",
|
|
164
183
|
"StateText": "Державний ідентифікатор",
|
|
184
|
+
"StopId": "StopId",
|
|
185
|
+
"StopNumber": "Стоп-номер",
|
|
165
186
|
"String": "Рядок",
|
|
166
187
|
"UpText": "Ідентифікатор команди вгору",
|
|
167
188
|
"VirtualMode": "Віртуальний режим",
|
|
@@ -93,6 +93,10 @@
|
|
|
93
93
|
"Enter new devicetype": "输入新的设备类型",
|
|
94
94
|
"Enter new name": "输入新名称",
|
|
95
95
|
"Folder": "文件夹",
|
|
96
|
+
"HomeId": "家庭ID",
|
|
97
|
+
"HomeNumber": "家庭号码",
|
|
98
|
+
"HomeStateId": "家乡ID",
|
|
99
|
+
"HomeStateNumber": "家庭号码",
|
|
96
100
|
"Humidifier": "加湿器",
|
|
97
101
|
"HumidifierActText": "实际湿度",
|
|
98
102
|
"HumidifierHeader": "定义加湿器实体的状态",
|
|
@@ -101,6 +105,8 @@
|
|
|
101
105
|
"HumidifierOnOffText": "开/关",
|
|
102
106
|
"HumidifierTargetText": "目标湿度",
|
|
103
107
|
"HumidifierTooltip": "加湿器/除湿器",
|
|
108
|
+
"IdleStateId": "空闲状态ID",
|
|
109
|
+
"IdleStateNumber": "空闲号码",
|
|
104
110
|
"Info of this device": "该设备的信息",
|
|
105
111
|
"LastDiscover": "最后发现",
|
|
106
112
|
"LastPublish": "最后发布的消息",
|
|
@@ -141,9 +147,19 @@
|
|
|
141
147
|
"LockUnlockText": "解锁ID",
|
|
142
148
|
"LorawanOff": "离开",
|
|
143
149
|
"MQTTInstance": "MQTT实例",
|
|
150
|
+
"MowerHeader": "定义割草机实体的状态",
|
|
151
|
+
"MowerInformation": "您可以在此处定义一系列割草机定义",
|
|
152
|
+
"MowerNameText": "实体名称",
|
|
153
|
+
"MowerSeparate": "分开的",
|
|
154
|
+
"MowerStateSeparate": "分开的",
|
|
155
|
+
"MowingStateId": "割草状态 ID",
|
|
156
|
+
"MowingStateNumber": "割草号码",
|
|
144
157
|
"NoBridgeConfiged": "没有配置桥接!!!",
|
|
158
|
+
"NumberId": "命令编号的 ID",
|
|
145
159
|
"NumberSignalId": "数量限制开关的 id",
|
|
146
160
|
"NumberSignalText": "数量限制开关的 id",
|
|
161
|
+
"NumberStateId": "州号 ID",
|
|
162
|
+
"NumberStateText": "州号 ID",
|
|
147
163
|
"NumberText": "号码 ID",
|
|
148
164
|
"OneNumber": "一个数字用于命令",
|
|
149
165
|
"OneString": "一个命令字符串",
|
|
@@ -160,8 +176,13 @@
|
|
|
160
176
|
"ServersettingsHeader": "服务器设置",
|
|
161
177
|
"Set the Base Ip for LoRaWAN devices": "设置 LoRaWAN 设备的基本 IP",
|
|
162
178
|
"Set the Base Ip for bride devices": "设置新娘设备的基本IP",
|
|
179
|
+
"StartId": "起始ID",
|
|
180
|
+
"StartNumber": "起始编号",
|
|
181
|
+
"StatciTextMowerSeparate": "为 worx 适配器选择默认值",
|
|
163
182
|
"State": "状态",
|
|
164
183
|
"StateText": "州身份证",
|
|
184
|
+
"StopId": "停止编号",
|
|
185
|
+
"StopNumber": "停止号码",
|
|
165
186
|
"String": "细绳",
|
|
166
187
|
"UpText": "向上命令ID",
|
|
167
188
|
"VirtualMode": "虚拟模式",
|
package/admin/jsonConfig.json
CHANGED
|
@@ -842,7 +842,11 @@
|
|
|
842
842
|
{"label":"foreign devices","value":"foreignDevices"},
|
|
843
843
|
{"label":"toIob devices","value":"toIobDevices"}
|
|
844
844
|
],
|
|
845
|
-
"default":
|
|
845
|
+
"default": [
|
|
846
|
+
"toIobDevices",
|
|
847
|
+
"foreignDevices",
|
|
848
|
+
"lorawanDevices"
|
|
849
|
+
],
|
|
846
850
|
"xs": 12,
|
|
847
851
|
"sm": 3,
|
|
848
852
|
"md": 3,
|
|
@@ -2484,7 +2488,275 @@
|
|
|
2484
2488
|
"xl": 2
|
|
2485
2489
|
}
|
|
2486
2490
|
]
|
|
2487
|
-
}
|
|
2491
|
+
},
|
|
2492
|
+
"_MowerForeignHeader":{
|
|
2493
|
+
"newLine": true,
|
|
2494
|
+
"type": "header",
|
|
2495
|
+
"text": "MowerHeader",
|
|
2496
|
+
"size": 3,
|
|
2497
|
+
"xs": 12,
|
|
2498
|
+
"sm": 12,
|
|
2499
|
+
"md": 12,
|
|
2500
|
+
"lg": 12,
|
|
2501
|
+
"xl": 12
|
|
2502
|
+
},
|
|
2503
|
+
"_MowerForeignInformation":{
|
|
2504
|
+
"newLine":true,
|
|
2505
|
+
"type": "staticText",
|
|
2506
|
+
"label": "MowerInformation",
|
|
2507
|
+
"xs": 12,
|
|
2508
|
+
"sm": 12,
|
|
2509
|
+
"md": 12,
|
|
2510
|
+
"lg": 12,
|
|
2511
|
+
"xl": 12
|
|
2512
|
+
},
|
|
2513
|
+
"MowerForeignConfig":{
|
|
2514
|
+
"newLine": true,
|
|
2515
|
+
"type":"accordion",
|
|
2516
|
+
"titleAttr": "MowerName",
|
|
2517
|
+
"clone": true,
|
|
2518
|
+
"xs": 12,
|
|
2519
|
+
"sm": 12,
|
|
2520
|
+
"md": 12,
|
|
2521
|
+
"lg": 12,
|
|
2522
|
+
"xl": 12,
|
|
2523
|
+
"items":[
|
|
2524
|
+
{
|
|
2525
|
+
"type": "text",
|
|
2526
|
+
"attr": "MowerName",
|
|
2527
|
+
"label": "MowerNameText",
|
|
2528
|
+
"validator": "if(data.MowerName === ''){return false;}else{return true;}",
|
|
2529
|
+
"validatorNoSaveOnError": true,
|
|
2530
|
+
"default": "Mower Name",
|
|
2531
|
+
"xs": 12,
|
|
2532
|
+
"sm": 4,
|
|
2533
|
+
"md": 4,
|
|
2534
|
+
"lg": 4,
|
|
2535
|
+
"xl": 4
|
|
2536
|
+
},
|
|
2537
|
+
{
|
|
2538
|
+
"type": "select",
|
|
2539
|
+
"attr": "MowerSeparate",
|
|
2540
|
+
"label": "MowerSeparate",
|
|
2541
|
+
"tooltip": "MowerSeparateTooltip",
|
|
2542
|
+
"options": [
|
|
2543
|
+
{"label":"OneNumber","value":"number"},
|
|
2544
|
+
{"label":"SeparateIds","value":"separate"}
|
|
2545
|
+
],
|
|
2546
|
+
"default": "number",
|
|
2547
|
+
"xs": 12,
|
|
2548
|
+
"sm": 2,
|
|
2549
|
+
"md": 2,
|
|
2550
|
+
"lg": 2,
|
|
2551
|
+
"xl": 2
|
|
2552
|
+
},
|
|
2553
|
+
{
|
|
2554
|
+
"type": "select",
|
|
2555
|
+
"attr": "MowerStateSeparate",
|
|
2556
|
+
"label": "MowerStateSeparate",
|
|
2557
|
+
"tooltip": "MowerStateSeparateTooltip",
|
|
2558
|
+
"options": [
|
|
2559
|
+
{"label":"OneNumberState","value":"number"},
|
|
2560
|
+
{"label":"SeparateStateIds","value":"separate"}
|
|
2561
|
+
],
|
|
2562
|
+
"default": "number",
|
|
2563
|
+
"xs": 12,
|
|
2564
|
+
"sm": 2,
|
|
2565
|
+
"md": 2,
|
|
2566
|
+
"lg": 2,
|
|
2567
|
+
"xl": 2
|
|
2568
|
+
},
|
|
2569
|
+
{
|
|
2570
|
+
"type": "staticText",
|
|
2571
|
+
"attr": "_statciTextMowerSeparate",
|
|
2572
|
+
"label": "StatciTextMowerSeparate",
|
|
2573
|
+
"hidden": "data.MowerSeparate !== 'number' && data.MowerStateSeparate !== 'number'",
|
|
2574
|
+
"xs": 12,
|
|
2575
|
+
"sm": 4,
|
|
2576
|
+
"md": 4,
|
|
2577
|
+
"lg": 4,
|
|
2578
|
+
"xl": 4
|
|
2579
|
+
},
|
|
2580
|
+
{
|
|
2581
|
+
"type": "objectId",
|
|
2582
|
+
"newLine": true,
|
|
2583
|
+
"attr": "NumberId",
|
|
2584
|
+
"label": "NumberText",
|
|
2585
|
+
"customFilter": {"common": { "type": [ "number", "mixed" ] } },
|
|
2586
|
+
"hidden": "data.MowerSeparate !== 'number'",
|
|
2587
|
+
"xs": 12,
|
|
2588
|
+
"sm": 4,
|
|
2589
|
+
"md": 4,
|
|
2590
|
+
"lg": 4,
|
|
2591
|
+
"xl": 4
|
|
2592
|
+
},
|
|
2593
|
+
{
|
|
2594
|
+
"type": "number",
|
|
2595
|
+
"label": "StartNumber",
|
|
2596
|
+
"attr": "StartNumber",
|
|
2597
|
+
"tooltip": "StartNumberTooltip",
|
|
2598
|
+
"default": 1,
|
|
2599
|
+
"hidden": "data.MowerSeparate !== 'number'",
|
|
2600
|
+
"xs": 12,
|
|
2601
|
+
"sm": 1,
|
|
2602
|
+
"md": 1,
|
|
2603
|
+
"lg": 1,
|
|
2604
|
+
"xl": 1
|
|
2605
|
+
},
|
|
2606
|
+
{
|
|
2607
|
+
"type": "number",
|
|
2608
|
+
"label": "StopNumber",
|
|
2609
|
+
"attr": "StopNumber",
|
|
2610
|
+
"tooltip": "StopNumberTooltip",
|
|
2611
|
+
"default": 2,
|
|
2612
|
+
"hidden": "data.MowerSeparate !== 'number'",
|
|
2613
|
+
"xs": 12,
|
|
2614
|
+
"sm": 1,
|
|
2615
|
+
"md": 1,
|
|
2616
|
+
"lg": 1,
|
|
2617
|
+
"xl": 1
|
|
2618
|
+
},
|
|
2619
|
+
{
|
|
2620
|
+
"type": "number",
|
|
2621
|
+
"label": "HomeNumber",
|
|
2622
|
+
"attr": "HomeNumber",
|
|
2623
|
+
"tooltip": "HomeNumberTooltip",
|
|
2624
|
+
"default": 3,
|
|
2625
|
+
"hidden": "data.MowerSeparate !== 'number'",
|
|
2626
|
+
"xs": 12,
|
|
2627
|
+
"sm": 1,
|
|
2628
|
+
"md": 1,
|
|
2629
|
+
"lg": 1,
|
|
2630
|
+
"xl": 1
|
|
2631
|
+
},
|
|
2632
|
+
{
|
|
2633
|
+
"type": "objectId",
|
|
2634
|
+
"newLine": true,
|
|
2635
|
+
"attr": "StartId",
|
|
2636
|
+
"label": "CoverOpenText",
|
|
2637
|
+
"customFilter": {"common": { "type": [ "boolean", "mixed" ] } },
|
|
2638
|
+
"hidden": "data.MowerSeparate !== 'separate'",
|
|
2639
|
+
"xs": 12,
|
|
2640
|
+
"sm": 4,
|
|
2641
|
+
"md": 4,
|
|
2642
|
+
"lg": 4,
|
|
2643
|
+
"xl": 4
|
|
2644
|
+
},
|
|
2645
|
+
{
|
|
2646
|
+
"type": "objectId",
|
|
2647
|
+
"attr": "StopId",
|
|
2648
|
+
"label": "CoverOpenText",
|
|
2649
|
+
"customFilter": {"common": { "type": [ "boolean", "mixed" ] } },
|
|
2650
|
+
"hidden": "data.MowerSeparate !== 'separate'",
|
|
2651
|
+
"xs": 12,
|
|
2652
|
+
"sm": 4,
|
|
2653
|
+
"md": 4,
|
|
2654
|
+
"lg": 4,
|
|
2655
|
+
"xl": 4
|
|
2656
|
+
},
|
|
2657
|
+
{
|
|
2658
|
+
"type": "objectId",
|
|
2659
|
+
"attr": "HomeId",
|
|
2660
|
+
"label": "CoverOpenText",
|
|
2661
|
+
"customFilter": {"common": { "type": [ "boolean", "mixed" ] } },
|
|
2662
|
+
"hidden": "data.MowerSeparate !== 'separate'",
|
|
2663
|
+
"xs": 12,
|
|
2664
|
+
"sm": 4,
|
|
2665
|
+
"md": 4,
|
|
2666
|
+
"lg": 4,
|
|
2667
|
+
"xl": 4
|
|
2668
|
+
},
|
|
2669
|
+
{
|
|
2670
|
+
"type": "objectId",
|
|
2671
|
+
"newLine": true,
|
|
2672
|
+
"attr": "NumberStateId",
|
|
2673
|
+
"label": "NumberStateText",
|
|
2674
|
+
"customFilter": {"common": { "type": [ "number", "mixed" ] } },
|
|
2675
|
+
"hidden": "data.MowerStateSeparate !== 'number'",
|
|
2676
|
+
"xs": 12,
|
|
2677
|
+
"sm": 4,
|
|
2678
|
+
"md": 4,
|
|
2679
|
+
"lg": 4,
|
|
2680
|
+
"xl": 4
|
|
2681
|
+
},
|
|
2682
|
+
{
|
|
2683
|
+
"type": "number",
|
|
2684
|
+
"label": "MowingStateNumber",
|
|
2685
|
+
"attr": "MowingStateNumber",
|
|
2686
|
+
"tooltip": "MowingStateNumberTooltip",
|
|
2687
|
+
"default": 7,
|
|
2688
|
+
"hidden": "data.MowerStateSeparate !== 'number'",
|
|
2689
|
+
"xs": 12,
|
|
2690
|
+
"sm": 1,
|
|
2691
|
+
"md": 1,
|
|
2692
|
+
"lg": 1,
|
|
2693
|
+
"xl": 1
|
|
2694
|
+
},
|
|
2695
|
+
{
|
|
2696
|
+
"type": "number",
|
|
2697
|
+
"label": "IdleStateNumber",
|
|
2698
|
+
"attr": "IdleStateNumber",
|
|
2699
|
+
"tooltip": "IdleStateNumberTooltip",
|
|
2700
|
+
"default": 0,
|
|
2701
|
+
"hidden": "data.MowerStateSeparate !== 'number'",
|
|
2702
|
+
"xs": 12,
|
|
2703
|
+
"sm": 1,
|
|
2704
|
+
"md": 1,
|
|
2705
|
+
"lg": 1,
|
|
2706
|
+
"xl": 1
|
|
2707
|
+
},
|
|
2708
|
+
{
|
|
2709
|
+
"type": "number",
|
|
2710
|
+
"label": "HomeStateNumber",
|
|
2711
|
+
"attr": "HomeStateNumber",
|
|
2712
|
+
"tooltip": "HomeStateNumberTooltip",
|
|
2713
|
+
"default": 1,
|
|
2714
|
+
"hidden": "data.MowerStateSeparate !== 'number'",
|
|
2715
|
+
"xs": 12,
|
|
2716
|
+
"sm": 1,
|
|
2717
|
+
"md": 1,
|
|
2718
|
+
"lg": 1,
|
|
2719
|
+
"xl": 1
|
|
2720
|
+
},
|
|
2721
|
+
{
|
|
2722
|
+
"type": "objectId",
|
|
2723
|
+
"newLine": true,
|
|
2724
|
+
"attr": "MowingStateId",
|
|
2725
|
+
"label": "MowingStateText",
|
|
2726
|
+
"customFilter": {"common": { "type": [ "boolean", "mixed" ] } },
|
|
2727
|
+
"hidden": "data.MowerStateSeparate !== 'separate'",
|
|
2728
|
+
"xs": 12,
|
|
2729
|
+
"sm": 4,
|
|
2730
|
+
"md": 4,
|
|
2731
|
+
"lg": 4,
|
|
2732
|
+
"xl": 4
|
|
2733
|
+
},
|
|
2734
|
+
{
|
|
2735
|
+
"type": "objectId",
|
|
2736
|
+
"attr": "IdleStateId",
|
|
2737
|
+
"label": "IdleStateText",
|
|
2738
|
+
"customFilter": {"common": { "type": [ "boolean", "mixed" ] } },
|
|
2739
|
+
"hidden": "data.MowerStateSeparate !== 'separate'",
|
|
2740
|
+
"xs": 12,
|
|
2741
|
+
"sm": 4,
|
|
2742
|
+
"md": 4,
|
|
2743
|
+
"lg": 4,
|
|
2744
|
+
"xl": 4
|
|
2745
|
+
},
|
|
2746
|
+
{
|
|
2747
|
+
"type": "objectId",
|
|
2748
|
+
"attr": "HomeStateId",
|
|
2749
|
+
"label": "HomeStateText",
|
|
2750
|
+
"customFilter": {"common": { "type": [ "boolean", "mixed" ] } },
|
|
2751
|
+
"hidden": "data.MowerStateSeparate !== 'separate'",
|
|
2752
|
+
"xs": 12,
|
|
2753
|
+
"sm": 4,
|
|
2754
|
+
"md": 4,
|
|
2755
|
+
"lg": 4,
|
|
2756
|
+
"xl": 4
|
|
2757
|
+
}
|
|
2758
|
+
]
|
|
2759
|
+
}
|
|
2488
2760
|
}
|
|
2489
2761
|
}
|
|
2490
2762
|
}
|
package/io-package.json
CHANGED
|
@@ -1,8 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"common": {
|
|
3
3
|
"name": "lorawan",
|
|
4
|
-
"version": "1.22.
|
|
4
|
+
"version": "1.22.9",
|
|
5
5
|
"news": {
|
|
6
|
+
"1.22.9": {
|
|
7
|
+
"en": "error resolve git push",
|
|
8
|
+
"de": "fehler beheben git push",
|
|
9
|
+
"ru": "решение ошибки git push",
|
|
10
|
+
"pt": "erro resolver git push",
|
|
11
|
+
"nl": "fout bij oplossen git push",
|
|
12
|
+
"fr": "erreur résoudre git push",
|
|
13
|
+
"it": "errore risolvere git push",
|
|
14
|
+
"es": "error resolver git push",
|
|
15
|
+
"pl": "błąd rozwiązać git push",
|
|
16
|
+
"uk": "виправлення помилок git push",
|
|
17
|
+
"zh-cn": "错误解析 git 推"
|
|
18
|
+
},
|
|
6
19
|
"1.22.7": {
|
|
7
20
|
"en": "add more device_class entries to assign roles",
|
|
8
21
|
"de": "mehr device class einträge hinzufügen, um rollen zuzuordnen",
|
|
@@ -80,19 +93,6 @@
|
|
|
80
93
|
"pl": "usuń flagę readOnly z jsonEditor",
|
|
81
94
|
"uk": "remove readOnly прапорець з jsonEditor",
|
|
82
95
|
"zh-cn": "从json编辑器中删除只读的旗"
|
|
83
|
-
},
|
|
84
|
-
"1.22.1": {
|
|
85
|
-
"en": "add more roles to toIob devices",
|
|
86
|
-
"de": "weitere Rollen zu Iob-Geräten hinzufügen",
|
|
87
|
-
"ru": "добавьте больше ролей в устройства Iob",
|
|
88
|
-
"pt": "adicionar mais funções aos dispositivos toIob",
|
|
89
|
-
"nl": "meer rollen toevoegen aan Iob-apparaten",
|
|
90
|
-
"fr": "ajouter plus de rôles aux périphériques toIob",
|
|
91
|
-
"it": "aggiungere più ruoli ai dispositivi toIob",
|
|
92
|
-
"es": "añadir más roles a los dispositivos",
|
|
93
|
-
"pl": "dodaj więcej ról do urządzeń tolob",
|
|
94
|
-
"uk": "додати більше ролей до пристроїв",
|
|
95
|
-
"zh-cn": "向 toIob 设备添加更多角色"
|
|
96
96
|
}
|
|
97
97
|
},
|
|
98
98
|
"titleLang": {
|
|
@@ -465,7 +465,8 @@
|
|
|
465
465
|
"HumidifierForeignConfig": [],
|
|
466
466
|
"LightForeignConfig": [],
|
|
467
467
|
"CoverForeignConfig": [],
|
|
468
|
-
"LockForeignConfig": []
|
|
468
|
+
"LockForeignConfig": [],
|
|
469
|
+
"MowerForeignConfig": []
|
|
469
470
|
},
|
|
470
471
|
"objects": [],
|
|
471
472
|
"instanceObjects": [
|
package/lib/modules/bridge.js
CHANGED
|
@@ -58,6 +58,7 @@ class bridgeClass extends EventEmiter {
|
|
|
58
58
|
this.DeHumidifierEntityType = 'dehumidifier';
|
|
59
59
|
this.NotificationEntityType = 'device_automation';
|
|
60
60
|
this.CoverEntityType = 'cover';
|
|
61
|
+
this.MowerEntityType = 'lawn_mower';
|
|
61
62
|
this.LockEntityType = 'lock';
|
|
62
63
|
this.MaxValueCount = 5;
|
|
63
64
|
this.Words = {
|
|
@@ -309,6 +310,20 @@ class bridgeClass extends EventEmiter {
|
|
|
309
310
|
}
|
|
310
311
|
}
|
|
311
312
|
|
|
313
|
+
// Cover
|
|
314
|
+
if (this.SubscribedTopics[topic].mower) {
|
|
315
|
+
if (this.SubscribedTopics[topic].messageAssign) {
|
|
316
|
+
if (Object.hasOwn(this.SubscribedTopics[topic].messageAssign, message)) {
|
|
317
|
+
message = this.SubscribedTopics[topic].messageAssign[message];
|
|
318
|
+
} else {
|
|
319
|
+
this.adapter.log.warn(
|
|
320
|
+
`Incoming Message: ${message} at topic: ${topic} can not be found in possible values.`,
|
|
321
|
+
);
|
|
322
|
+
return;
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
|
|
312
327
|
// Check for namespace and write own, oder foreign state
|
|
313
328
|
if (this.SubscribedTopics[topic].id.startsWith(this.adapter.namespace)) {
|
|
314
329
|
// Special DataExchange
|
|
@@ -936,6 +951,17 @@ class bridgeClass extends EventEmiter {
|
|
|
936
951
|
}
|
|
937
952
|
}
|
|
938
953
|
|
|
954
|
+
// Cover
|
|
955
|
+
if (publish.mower) {
|
|
956
|
+
if (publish.messageAssign) {
|
|
957
|
+
if (Object.hasOwn(publish.messageAssign, value)) {
|
|
958
|
+
value = publish.messageAssign[value];
|
|
959
|
+
} else {
|
|
960
|
+
return;
|
|
961
|
+
}
|
|
962
|
+
}
|
|
963
|
+
}
|
|
964
|
+
|
|
939
965
|
// safe old values (5 last values)
|
|
940
966
|
if (publish.values) {
|
|
941
967
|
if (!publish.oldValues) {
|
|
@@ -1909,6 +1935,7 @@ class bridgeClass extends EventEmiter {
|
|
|
1909
1935
|
await this.getForeignLightConfig();
|
|
1910
1936
|
await this.getForeignCoverConfig();
|
|
1911
1937
|
await this.getForeignLockConfig();
|
|
1938
|
+
await this.getForeignMowerConfig();
|
|
1912
1939
|
await this.checkDiscoveries();
|
|
1913
1940
|
} catch (error) {
|
|
1914
1941
|
this.adapter.log.error(`error at ${activeFunction}: ${error}`);
|
|
@@ -2445,7 +2472,7 @@ class bridgeClass extends EventEmiter {
|
|
|
2445
2472
|
this.adapter.log[this.adapter.logtypes.bridgeDiscovery]?.(
|
|
2446
2473
|
`${activeFunction} called with config: ${JSON.stringify(config)}`,
|
|
2447
2474
|
);
|
|
2448
|
-
// Assign the Ids (use the codenameing of
|
|
2475
|
+
// Assign the Ids (use the codenameing of discoverHumidifier)
|
|
2449
2476
|
if (!(await this.generateForeignHumidifierIds(config))) {
|
|
2450
2477
|
this.adapter.log.warn(
|
|
2451
2478
|
`The Foreign Humidifier config is not complete, or has error(s): ${config.ClimateName}`,
|
|
@@ -2686,7 +2713,7 @@ class bridgeClass extends EventEmiter {
|
|
|
2686
2713
|
this.adapter.log[this.adapter.logtypes.bridgeDiscovery]?.(
|
|
2687
2714
|
`${activeFunction} called with config: ${JSON.stringify(config)}`,
|
|
2688
2715
|
);
|
|
2689
|
-
// Assign the Ids (use the codenameing of
|
|
2716
|
+
// Assign the Ids (use the codenameing of discoverLight)
|
|
2690
2717
|
if (!(await this.generateForeignLightIds(config))) {
|
|
2691
2718
|
this.adapter.log.warn(
|
|
2692
2719
|
`The Foreign Light config is not complete, or has error(s): ${config.ClimateName}`,
|
|
@@ -3022,7 +3049,7 @@ class bridgeClass extends EventEmiter {
|
|
|
3022
3049
|
this.adapter.log[this.adapter.logtypes.bridgeDiscovery]?.(
|
|
3023
3050
|
`${activeFunction} called with config: ${JSON.stringify(config)}`,
|
|
3024
3051
|
);
|
|
3025
|
-
// Assign the Ids (use the codenameing of
|
|
3052
|
+
// Assign the Ids (use the codenameing of discoverCover)
|
|
3026
3053
|
if (!(await this.generateForeignCoverIds(config))) {
|
|
3027
3054
|
this.adapter.log.warn(
|
|
3028
3055
|
`The Foreign Cover config is not complete, or has error(s): ${config.ClimateName}`,
|
|
@@ -3563,7 +3590,7 @@ class bridgeClass extends EventEmiter {
|
|
|
3563
3590
|
this.adapter.log[this.adapter.logtypes.bridgeDiscovery]?.(
|
|
3564
3591
|
`${activeFunction} called with config: ${JSON.stringify(config)}`,
|
|
3565
3592
|
);
|
|
3566
|
-
// Assign the Ids (use the codenameing of
|
|
3593
|
+
// Assign the Ids (use the codenameing of discoverLock)
|
|
3567
3594
|
if (!(await this.generateForeignLockIds(config))) {
|
|
3568
3595
|
this.adapter.log.warn(`The Foreign Cover config is not complete, or has error(s): ${config.LockName}`);
|
|
3569
3596
|
return;
|
|
@@ -3746,6 +3773,284 @@ class bridgeClass extends EventEmiter {
|
|
|
3746
3773
|
}
|
|
3747
3774
|
}
|
|
3748
3775
|
|
|
3776
|
+
/**
|
|
3777
|
+
* get Foreign states for Bridge
|
|
3778
|
+
*/
|
|
3779
|
+
async getForeignMowerConfig() {
|
|
3780
|
+
const activeFunction = 'bridge.js - getForeignMowerConfig';
|
|
3781
|
+
this.adapter.log.silly(`Function ${activeFunction} started.`);
|
|
3782
|
+
try {
|
|
3783
|
+
for (const config of this.adapter.config.MowerForeignConfig) {
|
|
3784
|
+
await this.discoverForeignMower(config);
|
|
3785
|
+
}
|
|
3786
|
+
} catch (error) {
|
|
3787
|
+
this.adapter.log.error(`error at ${activeFunction}: ${error}`);
|
|
3788
|
+
}
|
|
3789
|
+
}
|
|
3790
|
+
|
|
3791
|
+
/**
|
|
3792
|
+
* get Foreign states for Bridge
|
|
3793
|
+
*
|
|
3794
|
+
* @param config config of the cover entity
|
|
3795
|
+
*/
|
|
3796
|
+
async discoverForeignMower(config) {
|
|
3797
|
+
const activeFunction = 'bridge.js - discoverForeignMower';
|
|
3798
|
+
this.adapter.log.silly(`Function ${activeFunction} started.`);
|
|
3799
|
+
try {
|
|
3800
|
+
this.adapter.log[this.adapter.logtypes.bridgeDiscovery]?.(
|
|
3801
|
+
`${activeFunction} called with config: ${JSON.stringify(config)}`,
|
|
3802
|
+
);
|
|
3803
|
+
// Assign the Ids (use the codenameing of discoverMower)
|
|
3804
|
+
if (!(await this.generateForeignMowerIds(config))) {
|
|
3805
|
+
this.adapter.log.warn(
|
|
3806
|
+
`The Foreign Mower config is not complete, or has error(s): ${config.ClimateName}`,
|
|
3807
|
+
);
|
|
3808
|
+
return;
|
|
3809
|
+
}
|
|
3810
|
+
|
|
3811
|
+
const Mower = {};
|
|
3812
|
+
const setAssign = {};
|
|
3813
|
+
// Command
|
|
3814
|
+
if (config.MowerIds.CommandId) {
|
|
3815
|
+
Mower.command = {};
|
|
3816
|
+
setAssign.start_mowing = { id: config.MowerIds.CommandId, val: config.StartNumber };
|
|
3817
|
+
setAssign.pause = { id: config.MowerIds.CommandId, val: config.StopNumber };
|
|
3818
|
+
setAssign.dock = { id: config.MowerIds.CommandId, val: config.HomeNumber };
|
|
3819
|
+
Mower.command.DeviceIdentifier = (await this.getParentNameing(config.MowerIds.CommandId))?.parentName;
|
|
3820
|
+
}
|
|
3821
|
+
|
|
3822
|
+
// Start
|
|
3823
|
+
if (config.MowerIds.StartId) {
|
|
3824
|
+
Mower.start = {};
|
|
3825
|
+
setAssign.start_mowing = { id: config.MowerIds.StartId, val: true };
|
|
3826
|
+
Mower.start.DeviceIdentifier = (await this.getParentNameing(config.MowerIds.StartId))?.parentName;
|
|
3827
|
+
}
|
|
3828
|
+
|
|
3829
|
+
// Stop
|
|
3830
|
+
if (config.MowerIds.StopId) {
|
|
3831
|
+
setAssign.pause = { id: config.MowerIds.StopId, val: true };
|
|
3832
|
+
}
|
|
3833
|
+
|
|
3834
|
+
// Home
|
|
3835
|
+
if (config.MowerIds.HomeId) {
|
|
3836
|
+
setAssign.dock = { id: config.MowerIds.HomeId, val: true };
|
|
3837
|
+
}
|
|
3838
|
+
|
|
3839
|
+
// Assign deviceIdentifier
|
|
3840
|
+
let deviceIdentifier = '';
|
|
3841
|
+
if (Mower.command) {
|
|
3842
|
+
deviceIdentifier = Mower.command.DeviceIdentifier;
|
|
3843
|
+
} else if (Mower.start) {
|
|
3844
|
+
deviceIdentifier = Mower.start.DeviceIdentifier;
|
|
3845
|
+
}
|
|
3846
|
+
|
|
3847
|
+
// unique string
|
|
3848
|
+
const mowerUniqueString = await this.getUniqueString(
|
|
3849
|
+
`${this.adapter.namespace}.${config.MowerName}`,
|
|
3850
|
+
deviceIdentifier,
|
|
3851
|
+
);
|
|
3852
|
+
const DiscoveryTopic =
|
|
3853
|
+
`${this.BridgeDiscoveryPrefix[this.adapter.config.BridgeType]}${this.MowerEntityType}/${mowerUniqueString?.path}/config`.toLowerCase();
|
|
3854
|
+
const Id = mowerUniqueString?.flat + this.EndingVirtualCover;
|
|
3855
|
+
|
|
3856
|
+
// Generate Mower Topic
|
|
3857
|
+
const mowerTopic = `${this.bridgeMqttClient.BridgePrefix}${mowerUniqueString?.path}`.toLowerCase();
|
|
3858
|
+
|
|
3859
|
+
const DiscoveryPayload = {
|
|
3860
|
+
name: config.MowerName,
|
|
3861
|
+
unique_id: `${mowerUniqueString?.flat}`.toLowerCase(),
|
|
3862
|
+
device: {
|
|
3863
|
+
identifiers: [this.normalizeString(deviceIdentifier).toLowerCase()],
|
|
3864
|
+
name: deviceIdentifier,
|
|
3865
|
+
},
|
|
3866
|
+
start_mowing_command_topic: `${mowerTopic}${this.EndingSet}`,
|
|
3867
|
+
pause_command_topic: `${mowerTopic}${this.EndingSet}`,
|
|
3868
|
+
dock_command_topic: `${mowerTopic}${this.EndingSet}`,
|
|
3869
|
+
activity_state_topic: `${mowerTopic}${this.EndingState}`,
|
|
3870
|
+
};
|
|
3871
|
+
|
|
3872
|
+
// Assign Subscribed Topics
|
|
3873
|
+
// Incoming set
|
|
3874
|
+
this.assignTopicStructure(
|
|
3875
|
+
this.SubscribedTopics,
|
|
3876
|
+
`${mowerTopic}${this.EndingSet}`,
|
|
3877
|
+
{
|
|
3878
|
+
usedDeviceId: deviceIdentifier,
|
|
3879
|
+
},
|
|
3880
|
+
DiscoveryTopic,
|
|
3881
|
+
DiscoveryPayload,
|
|
3882
|
+
Id,
|
|
3883
|
+
{ mower: true, messageAssign: setAssign },
|
|
3884
|
+
);
|
|
3885
|
+
|
|
3886
|
+
// Assign Published Ids
|
|
3887
|
+
// State (number)
|
|
3888
|
+
if (config.MowerIds.StateId) {
|
|
3889
|
+
const MowingStateNumber = config.MowingStateNumber;
|
|
3890
|
+
const IdleStateNumber = config.IdleStateNumber;
|
|
3891
|
+
const HomeStateNumber = config.HomeStateNumber;
|
|
3892
|
+
this.assignIdStructure(
|
|
3893
|
+
this.PublishedIds,
|
|
3894
|
+
config.MowerIds.StateId,
|
|
3895
|
+
{
|
|
3896
|
+
usedDeviceId: deviceIdentifier,
|
|
3897
|
+
},
|
|
3898
|
+
DiscoveryTopic,
|
|
3899
|
+
DiscoveryPayload,
|
|
3900
|
+
`${mowerTopic}${this.EndingState}`,
|
|
3901
|
+
{
|
|
3902
|
+
mower: true,
|
|
3903
|
+
messageAssign: {
|
|
3904
|
+
[MowingStateNumber]: 'mowing',
|
|
3905
|
+
[IdleStateNumber]: 'paused',
|
|
3906
|
+
[HomeStateNumber]: 'docked',
|
|
3907
|
+
},
|
|
3908
|
+
},
|
|
3909
|
+
);
|
|
3910
|
+
}
|
|
3911
|
+
|
|
3912
|
+
// Mowing State
|
|
3913
|
+
if (config.MowerIds.MowingStateId) {
|
|
3914
|
+
this.assignIdStructure(
|
|
3915
|
+
this.PublishedIds,
|
|
3916
|
+
config.MowerIds.MowingStateId,
|
|
3917
|
+
{
|
|
3918
|
+
usedDeviceId: deviceIdentifier,
|
|
3919
|
+
},
|
|
3920
|
+
DiscoveryTopic,
|
|
3921
|
+
DiscoveryPayload,
|
|
3922
|
+
`${mowerTopic}${this.EndingState}`,
|
|
3923
|
+
{
|
|
3924
|
+
mower: true,
|
|
3925
|
+
messageAssign: { true: 'mowing' },
|
|
3926
|
+
},
|
|
3927
|
+
);
|
|
3928
|
+
}
|
|
3929
|
+
|
|
3930
|
+
// Idle State
|
|
3931
|
+
if (config.MowerIds.IdleStateId) {
|
|
3932
|
+
this.assignIdStructure(
|
|
3933
|
+
this.PublishedIds,
|
|
3934
|
+
config.MowerIds.IdleStateId,
|
|
3935
|
+
{
|
|
3936
|
+
usedDeviceId: deviceIdentifier,
|
|
3937
|
+
},
|
|
3938
|
+
DiscoveryTopic,
|
|
3939
|
+
DiscoveryPayload,
|
|
3940
|
+
`${mowerTopic}${this.EndingState}`,
|
|
3941
|
+
{
|
|
3942
|
+
mower: true,
|
|
3943
|
+
messageAssign: { true: 'paused' },
|
|
3944
|
+
},
|
|
3945
|
+
);
|
|
3946
|
+
}
|
|
3947
|
+
|
|
3948
|
+
// Home State
|
|
3949
|
+
if (config.MowerIds.HomeStateId) {
|
|
3950
|
+
this.assignIdStructure(
|
|
3951
|
+
this.PublishedIds,
|
|
3952
|
+
config.MowerIds.HomeStateId,
|
|
3953
|
+
{
|
|
3954
|
+
usedDeviceId: deviceIdentifier,
|
|
3955
|
+
},
|
|
3956
|
+
DiscoveryTopic,
|
|
3957
|
+
DiscoveryPayload,
|
|
3958
|
+
`${mowerTopic}${this.EndingState}`,
|
|
3959
|
+
{
|
|
3960
|
+
mower: true,
|
|
3961
|
+
messageAssign: { true: 'docked' },
|
|
3962
|
+
},
|
|
3963
|
+
);
|
|
3964
|
+
}
|
|
3965
|
+
|
|
3966
|
+
const informations = {
|
|
3967
|
+
cover: {
|
|
3968
|
+
usedDeviceId: deviceIdentifier,
|
|
3969
|
+
},
|
|
3970
|
+
};
|
|
3971
|
+
|
|
3972
|
+
// Publishing the discover message
|
|
3973
|
+
await this.publishDiscovery(Id, {
|
|
3974
|
+
topic: DiscoveryTopic,
|
|
3975
|
+
payload: structuredClone(DiscoveryPayload),
|
|
3976
|
+
ids: config.MowerIds,
|
|
3977
|
+
informations: informations,
|
|
3978
|
+
from: 'foreignDevices',
|
|
3979
|
+
});
|
|
3980
|
+
// Delay for publish new entity
|
|
3981
|
+
setTimeout(async () => {
|
|
3982
|
+
// Subscribe state for onStatechange mathode
|
|
3983
|
+
if (config.MowerIds.StateId) {
|
|
3984
|
+
await this.publishId(config.MowerIds.StateId, undefined, {});
|
|
3985
|
+
await this.adapter.subscribeForeignStatesAsync(config.MowerIds.StateId);
|
|
3986
|
+
}
|
|
3987
|
+
if (config.MowerIds.MowingStateId) {
|
|
3988
|
+
await this.publishId(config.MowerIds.MowingStateId, undefined, {});
|
|
3989
|
+
await this.adapter.subscribeForeignStatesAsync(config.MowerIds.MowingStateId);
|
|
3990
|
+
}
|
|
3991
|
+
if (config.MowerIds.IdleStateId) {
|
|
3992
|
+
await this.publishId(config.MowerIds.IdleStateId, undefined, {});
|
|
3993
|
+
await this.adapter.subscribeForeignStatesAsync(config.MowerIds.IdleStateId);
|
|
3994
|
+
}
|
|
3995
|
+
if (config.MowerIds.HomeStateId) {
|
|
3996
|
+
await this.publishId(config.MowerIds.HomeStateId, undefined, {});
|
|
3997
|
+
await this.adapter.subscribeForeignStatesAsync(config.MowerIds.HomeStateId);
|
|
3998
|
+
}
|
|
3999
|
+
}, 1000);
|
|
4000
|
+
} catch (error) {
|
|
4001
|
+
this.adapter.log.error(`error at ${activeFunction}: ${error}`);
|
|
4002
|
+
}
|
|
4003
|
+
}
|
|
4004
|
+
|
|
4005
|
+
/*********************************************************************
|
|
4006
|
+
* *************** generate Foreign Cover Ids **********************
|
|
4007
|
+
* ******************************************************************/
|
|
4008
|
+
|
|
4009
|
+
/**
|
|
4010
|
+
* @param config Configuration of the cover entity, wich is to genereate
|
|
4011
|
+
*/
|
|
4012
|
+
async generateForeignMowerIds(config) {
|
|
4013
|
+
const activeFunction = 'generateForeignMowerIds';
|
|
4014
|
+
this.adapter.log.silly(`Function ${activeFunction} started.`);
|
|
4015
|
+
try {
|
|
4016
|
+
const MowerIds = {};
|
|
4017
|
+
if (config.MowerSeparate === 'number') {
|
|
4018
|
+
MowerIds.CommandId = config.NumberId;
|
|
4019
|
+
}
|
|
4020
|
+
if (config.MowerSeparate === 'seperate') {
|
|
4021
|
+
MowerIds.StartId = config.StartId;
|
|
4022
|
+
MowerIds.StopId = config.StopId;
|
|
4023
|
+
MowerIds.HomeId = config.HomeId;
|
|
4024
|
+
}
|
|
4025
|
+
if (config.MowerStateSeparate === 'number') {
|
|
4026
|
+
MowerIds.StateId = config.NumberStateId;
|
|
4027
|
+
}
|
|
4028
|
+
if (config.MowerStateSeparate === 'seperate') {
|
|
4029
|
+
MowerIds.MowingStateId = config.MowingStateId;
|
|
4030
|
+
MowerIds.IdleStateId = config.IdleStateId;
|
|
4031
|
+
MowerIds.HomeStateId = config.HomeStateId;
|
|
4032
|
+
}
|
|
4033
|
+
for (const id of Object.values(MowerIds)) {
|
|
4034
|
+
if (!(await this.adapter.foreignObjectExists(id))) {
|
|
4035
|
+
this.adapter.log.debug(`Id: ${id} does not exsit.`);
|
|
4036
|
+
return false;
|
|
4037
|
+
}
|
|
4038
|
+
}
|
|
4039
|
+
if (config.MowerName === '') {
|
|
4040
|
+
this.adapter.log.debug(`Mower name is empty`);
|
|
4041
|
+
return false;
|
|
4042
|
+
}
|
|
4043
|
+
const indexOfSpace = config.MowerName.indexOf(' -- ');
|
|
4044
|
+
if (indexOfSpace > 0) {
|
|
4045
|
+
config.MowerName = config.MowerName.substring(0, indexOfSpace);
|
|
4046
|
+
}
|
|
4047
|
+
config.MowerIds = MowerIds;
|
|
4048
|
+
return true;
|
|
4049
|
+
} catch (error) {
|
|
4050
|
+
this.adapter.log.error(`error at ${activeFunction}: ${error}`);
|
|
4051
|
+
}
|
|
4052
|
+
}
|
|
4053
|
+
|
|
3749
4054
|
/**
|
|
3750
4055
|
* @param id id to discover foreign state
|
|
3751
4056
|
* @param clear clear the ids from internal memory
|