iobroker.zigbee 3.0.0 → 3.0.2

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/admin/tab_m.html CHANGED
@@ -935,113 +935,126 @@
935
935
  </div>
936
936
  </div>
937
937
  </div>
938
- <div class="row epid0">
939
- <div class="col">
940
- <div class=endpointid>
941
- <p class="translate device_with_endpoint">Main Endpoint</p>
942
- </div>
943
- </div>
944
- <div class="col1">
945
- <div class="input-field groups">
946
- <select id="d_groups_ep0" class="materialSelect" multiple>
947
- <option value="1">select</option>
948
- </select>
949
- <label for="d_groups_ep0" class="translate">Groups</label>
950
- </div>
951
- </div>
952
- </div>
953
- <div class="row epid1">
954
- <div class="col epid">
955
- <div class=endpointid>
956
- <p class="translate device_with_endpoint">Sub Endpoint 1</p>
957
- </div>
958
- </div>
959
- <div class="col">
960
- <div class="input-field groups">
961
- <select id="d_groups_ep1" class="materialSelect" multiple>
962
- <option value="1">select</option>
963
- </select>
964
- <label for="d_groups_ep1" class="translate">Groups</label>
965
- </div>
966
- </div>
967
- </div>
968
- <div class="row epid2">
969
- <div class="col epid">
970
- <div class=endpointid>
971
- <p class="translate device_with_endpoint">Sub Endpoint 2</p>
972
- </div>
973
- </div>
974
- <div class="col">
975
- <div class="input-field groups">
976
- <select id="d_groups_ep2" class="materialSelect" multiple>
977
- <option value="1">select</option>
978
- </select>
979
- <label for="d_groups_ep2" class="translate">Groups</label>
980
- </div>
981
- </div>
982
- </div>
983
- <div class="row epid3">
984
- <div class="col epid">
985
- <div class=endpointid>
986
- <p class="translate device_with_endpoint">Sub Endpoint 3</p>
987
- </div>
988
- </div>
989
- <div class="col">
990
- <div class="input-field groups">
991
- <select id="d_groups_ep3" class="materialSelect" multiple>
992
- <option value="1">select</option>
993
- </select>
994
- <label for="d_groups_ep3" class="translate">Groups</label>
995
- </div>
996
- </div>
938
+ <div class="groups_available">
939
+ <div class="row">
940
+ <h6>Groups</h6>
997
941
  </div>
998
- <div class="row epid4">
999
- <div class="col epid">
1000
- <div class=endpointid>
1001
- <p class="translate device_with_endpoint">Sub Endpoint 4</p>
942
+ <div class="row epid0">
943
+ <div class="col">
944
+ <div class=endpointid>
945
+ <p class="translate device_with_endpoint">Main Endpoint</p>
946
+ </div>
947
+ </div>
948
+ <div class="col1">
949
+ <div class="input-field groups">
950
+ <select id="d_groups_ep0" class="materialSelect" multiple>
951
+ <option value="1">select</option>
952
+ </select>
953
+ <label for="d_groups_ep0" class="translate">Groups</label>
954
+ </div>
1002
955
  </div>
1003
956
  </div>
1004
- <div class="col">
1005
- <div class="input-field groups">
1006
- <select id="d_groups_ep4" class="materialSelect" multiple>
1007
- <option value="1">select</option>
1008
- </select>
1009
- <label for="d_groups_ep4" class="translate">Groups</label>
957
+ <div class="row epid1">
958
+ <div class="col epid">
959
+ <div class=endpointid>
960
+ <p class="translate device_with_endpoint">Sub Endpoint 1</p>
961
+ </div>
962
+ </div>
963
+ <div class="col">
964
+ <div class="input-field groups">
965
+ <select id="d_groups_ep1" class="materialSelect" multiple>
966
+ <option value="1">select</option>
967
+ </select>
968
+ <label for="d_groups_ep1" class="translate">Groups</label>
969
+ </div>
1010
970
  </div>
1011
971
  </div>
1012
- </div>
1013
- <div class="row epid5">
972
+ <div class="row epid2">
973
+ <div class="col epid">
974
+ <div class=endpointid>
975
+ <p class="translate device_with_endpoint">Sub Endpoint 2</p>
976
+ </div>
977
+ </div>
978
+ <div class="col">
979
+ <div class="input-field groups">
980
+ <select id="d_groups_ep2" class="materialSelect" multiple>
981
+ <option value="1">select</option>
982
+ </select>
983
+ <label for="d_groups_ep2" class="translate">Groups</label>
984
+ </div>
985
+ </div>
986
+ </div>
987
+ <div class="row epid3">
988
+ <div class="col epid">
989
+ <div class=endpointid>
990
+ <p class="translate device_with_endpoint">Sub Endpoint 3</p>
991
+ </div>
992
+ </div>
993
+ <div class="col">
994
+ <div class="input-field groups">
995
+ <select id="d_groups_ep3" class="materialSelect" multiple>
996
+ <option value="1">select</option>
997
+ </select>
998
+ <label for="d_groups_ep3" class="translate">Groups</label>
999
+ </div>
1000
+ </div>
1001
+ </div>
1002
+ <div class="row epid4">
1003
+ <div class="col epid">
1004
+ <div class=endpointid>
1005
+ <p class="translate device_with_endpoint">Sub Endpoint 4</p>
1006
+ </div>
1007
+ </div>
1008
+ <div class="col">
1009
+ <div class="input-field groups">
1010
+ <select id="d_groups_ep4" class="materialSelect" multiple>
1011
+ <option value="1">select</option>
1012
+ </select>
1013
+ <label for="d_groups_ep4" class="translate">Groups</label>
1014
+ </div>
1015
+ </div>
1016
+ </div>
1017
+ <div class="row epid5">
1018
+ <div class="col epid">
1019
+ <div class=endpointid>
1020
+ <p class="translate device_with_endpoint">Sub Endpoint 5</p>
1021
+ </div>
1022
+ </div>
1023
+ <div class="col">
1024
+ <div class="input-field groups">
1025
+ <select id="d_groups_ep5" class="materialSelect" multiple>
1026
+ <option value="1">select</option>
1027
+ </select>
1028
+ <label for="d_groups_ep5" class="translate">Groups</label>
1029
+ </div>
1030
+ </div>
1031
+ </div>
1032
+ <div class="row epid6">
1014
1033
  <div class="col epid">
1015
1034
  <div class=endpointid>
1016
- <p class="translate device_with_endpoint">Sub Endpoint 5</p>
1035
+ <p class="translate device_with_endpoint">Sub Endpoint 6</p>
1017
1036
  </div>
1018
1037
  </div>
1019
1038
  <div class="col">
1020
1039
  <div class="input-field groups">
1021
- <select id="d_groups_ep5" class="materialSelect" multiple>
1040
+ <select id="d_groups_ep6" class="materialSelect" multiple>
1022
1041
  <option value="1">select</option>
1023
1042
  </select>
1024
- <label for="d_groups_ep5" class="translate">Groups</label>
1043
+ <label for="d_groups_ep6" class="translate">Groups</label>
1044
+ </div>
1025
1045
  </div>
1026
1046
  </div>
1027
- </div>
1028
- <div class="row epid6">
1029
- <div class="col epid">
1030
- <div class=endpointid>
1031
- <p class="translate device_with_endpoint">Sub Endpoint 6</p>
1032
- </div>
1033
1047
  </div>
1034
- <div class="col">
1035
- <div class="input-field groups">
1036
- <select id="d_groups_ep6" class="materialSelect" multiple>
1037
- <option value="1">select</option>
1038
- </select>
1039
- <label for="d_groups_ep6" class="translate">Groups</label>
1040
- </div>
1041
- </div>
1048
+ <div class="row">
1049
+ <div class="options_available col1">
1050
+ <h6>Options</h6>
1051
+ <div class="options_grid">
1052
+ </div>
1053
+ </div>
1042
1054
  </div>
1043
1055
  </div>
1044
1056
  <div class="modal-footer">
1057
+ <a name="add_options" class="waves-effect waves-green btn green translate"><i class="material-icons large">add_circle</i></a>
1045
1058
  <a name="save" href="#!" class="modal-action modal-close waves-effect waves-green btn green translate">Save</a>
1046
1059
  <a href="#!" class="modal-action modal-close waves-effect waves-red btn-flat translate">Cancel</a>
1047
1060
  </div>
package/docs/de/readme.md CHANGED
@@ -40,8 +40,8 @@ Das folgende Beispiel zeigt eine Linux-Installation auf einem Raspberry PI. Der
40
40
  5. Konfiguration des Adapters öffnen. Das folgende Bild zeigt das Interface ab der Version 2.1.0.<br>![](img/Zigbee_config_de.jpg)<br>
41
41
  Der Admin zeigt in dieser Situation an ob das Zigbee-Subsystem gestartet ist (A).
42
42
  6. Port zum Koordinator eintragen. (B) Im Fall von USB Koordinatoren ist das der zuvor ermittelte Device-Pfad. Im Fall von über das Netzwerk angesteuerten Koordinatoren muss an Stelle des Gerätepfades die Netzwerkaddresse samt port in der Form tcp://ip:port angegeben werden. Sofern der Adapter selber (nicht das Zigbee-Subsyste) aktiv ist steht eine Liste der verfügbaren seriellen Schnittstellen zur Auswahl zur Verfügung. Bei der Auswahl gilt:
43
- - Sofern am System mehrere Adapter mit unterschiedlichen USB Geräten zur Kommunikation verwendet werden sollte **unbedingt** ein Port aus dem Verzeichnis /dev/serial/by-id (sofern verfügbar) ausgewählt werden. Damit wird sicher gestellt das bei einem Neustart des Systems die Zuordnung des Adapters zum Koordinator erhalte bleibt
44
- - Sofern ausschliesslich ein USB Gerät verwendet wird ist die Verwendung des /dev/TTY* Anschlusses zu bevorzugen. Damit kann der Koordinator bei Defekt durch ein baugleiches Gerät ersetzt werden ohne das die Konfiguration angepasst werden muss.
43
+ - Sofern am System mehrere Adapter mit unterschiedlichen USB Geräten zur Kommunikation verwendet werden und der ioBroker nativ auf dem System läuft (nicht in einem Container) sollte **unbedingt** ein Port aus dem Verzeichnis /dev/serial/by-id (sofern verfügbar) ausgewählt werden. Damit wird sicher gestellt das bei einem Neustart des Systems die Zuordnung des Adapters zum Koordinator erhalte bleibt.
44
+ - Sofern ausschliesslich ein USB Gerät verwendet wird oder wenn der ioBroker *virtualisiert* - sprich in einem Container oder einer VM läuft - ist die Verwendung des /dev/TTY* Anschlusses zu bevorzugen. Damit kann der Koordinator bei Defekt durch ein baugleiches Gerät ersetzt werden ohne das die Konfiguration des Adapters zwingend angepasst werden muss. Bei der *virtuellen* Umgebung muss allerdings die Weitergabe des korrekten USB Gerätes an die virtuelle Umgebung angepasst werden.
45
45
  7. Netzwerk-ID und Pan ID vergeben zur Unterscheidung von anderen ZigBee-Netzwerken in Funkreichweite, z.B. Ab Adapter Version 2.1.0 weden ExtPanID (C) und PanID (D) automatisch mit zufälligen Werten vorbelegt bis die Konfiguration gespeichert wurde.<br>
46
46
  8. Geeigneten Zigbee-Kanal (E) auswählen. Dabei ist zu beachten das Zigbee und 2.4GHz WLAN sich das gleiche Frequenzband teilen. Der optimale Kanal hängt also unter anderem auch von den in der Umgebung verwendeten WLan Kanälen ab. Dabei sind die Kanalbezeichnungen von Zigbee und WLan **nicht** identisch. Weiterhin ist es Sinnvoll sich bei der Auswahl auf die Zigbee Light Link Kanäle (11,15,20,25) zu beschränken. Wird ein Kanal ausgewählt der nicht zum ZLL gerhört zeigt das Interface ein gelbes Dreieck mit Ausrufungszeichen über dem eingetragenen Kanal.<br>
47
47
  Nachdem der Adapter erfolgreich gestartet wurde kann über die Konfiguration auch ein Scan der Netzwerkkanäle durchgeführt werden.<br>
@@ -108,17 +108,21 @@ In Beiden Fällen ist es hinreichend den Adapter neu zu starten - die entspreche
108
108
  | ![](img/Bild33.png) | **Touchlink zurücksetzen und koppeln** <br> Touchlink ist eine Funktion von des Zigbee Light Link (ZLL), die es physisch nahe beieinander liegenden Geräten ermöglicht miteinander zu kommunizieren, ohne an einen Koordinator angebunden zu sein. Diese Funktion wird nicht von allen Geräten unterstützt. Um ein ZigBee-Gerät über Touchlink auf Werkseinstellungen zurückzusetzen, bringe das Gerät in die Nähe (< 10 cm) des ZigBee-Koordinators und drücke dann das grüne Symbol. **Warnung** durch inkorrekte Umsetzung des Touchlink reset Prozesses kann es passieren das auch Geräte mit grösserem Abstand zurück gesetzt werden. Im Zweifelsfall ist es Angeraten eventuell betroffene Geräte kurzfristig stromlos zu machen. |
109
109
  | ![](img/Bild34.png) | **Pairing mit QR Code** <br>Es gibt Geräte die für das Pairing mit einem Netzwerk einen zusätzlichen Sicherheitscode benötigen. Dieser ist üblicherweise als QR Code auf dem und/oder der Anleitung angebracht. Ein Pairing mit diesen Geräten kann nur erfolgen wenn der entsprechende Code vorher angegeben wurde. **Hinweis** In vielen Anleitungen sind werden QR Codes angegeben die mit der Herstellerspezifischen App gelesen werden sollen um das Gerät an das Hersteller-Gateway anzubinden, obwohl die Geräte keinen Sicherheitscode unterstützen. In diesem Fall gibt der Adapter einen Fehler wenn versucht wird den Code einzugeben. Wenn das passiert macht es Sinn zu versuchen das Gerät 'normal' anzulernen. |
110
110
  | ![](img/Bild35.png) | **Pairing** <br> Anlernvorgang neuer ZigBee-Geräte (Pairing) starten. Durch drücken auf diese Schaltfläche wird das Netzwerk für eine (konfigurierbare) Zeit zwischen 10 und 250 sekunden geöffnet so das neue Geräte in das Netzwerk aufgenommen werden
111
- ## Gerätekacheln
111
+ ## Gerätekacheln - Symbole (oben)
112
112
  | Bild | Beschreibung |
113
113
  |---------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
114
114
  | ![](img/Bild36.png) | Zeit seit mit diesem ZigBee-Gerät <br> zuletzt ein Datenaustausch stattgefunden hat. |
115
115
  | ![](img/battery.png) | Batteriestand <br> sofern das Gerät einen Batteriestand meldet. |
116
116
  | ![](img/Bild37.png)<br>![](img/disconnected.png) | Stärke des ZigBee-Funksignals <br> an diesem ZigBee-Gerät (<10 schlecht, <50 mittel, >50 gut).ZigBee ist ein Funk-Mesh-Netzwerk. Die meisten netzbetriebenen ZigBee-Geräte (z.B. Philips Hue Lampe) können als ZigBee-Router wirken, also als Funkknotenpunkt. ZigBee-Geräte müssen somit nicht zwingend eine direkte Funkverbindung zum Koordinator aufbauen sondern können stattdessen jeden Router im Netzwerk zur Funkverbindung nutzen. Mit jedem ZigBee-Router wird somit die Funkreichweite des Netzwerkes erweitert. Alle ZigBee-Geräte prüfen regelmäßig, ob es eine bessere Funkroute gibt und stellen sich automatisch um. Dieser Vorgang kann jedoch etliche Minuten dauern.<br>Eine manuelle zuordnugn von Geräten zu Routern ist **nicht** möglich.<br> Das rote, durchgestrichene Symbol wird angezeigt wenn ein Gerät als 'nicht verbunden' gewertet wird. |
117
117
  | ![](img/grp_ok.png) ![](img/grp_nok.png) | Zustand einer Gruppe <br> Ein grüner Kreis signalisiert das eine Gruppe mit Mitgliedern versorgt und Funktionstüchtig ist, das rote X erscheint wenn eine Gruppe leer oder aus anderen Gründen nicht einsetzbar ist. |
118
+ ## Gerätekacheln - Buttons (unten)
119
+ | Bild | Beschreibung |
120
+ |---------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
118
121
  | ![](img/info.png) | Info <br> Öffnet die Informationsanzeige zum Gerät. Die auf dieser Seite dargestellten Informationen stammen direkt vom Gerät. Sie sind auch für unbekannte Geräte verfügbar. |
119
122
  | ![](img/debug.png) | Gerät debuggen <br> Aktiviert / deaktivert die Erzeugung von erweiterten Debug-Meldungen für dieses Gerät. Die Farbe des Icons zeigt den aktuellen Status an: (Schwarz/Weiss: keine Debug Meldungen, Grün Debug Meldungen - deaktivierbar mit dieser Schaltflächce. Orange - Debug Meldungen via Filter unter zigbee.x.info.debugmessages. |
120
123
  | ![](img/on_off.png) | An/Aus <br> Mit dieser Schaltfläche kann ein Gerät aktiviert / deaktiviert werden. Mit deaktiverten Geräten findet keine Kommunikation statt. |
121
124
  | ![](img/edit_image.png) | Bild / Name zusweisen <br> Mit dieser Schaltfläche ist es Möglich für das Gerät basierend auf dem Gerät oder dem Gerätetyp ein eigenes Bild und / oder einen eigenen Namen vorzugeben. Vorgaben die so gemacht werden bleiben erhalten wenn das Gerät gelöscht wird. |
125
+ | ![](img/reconfigure.png) | Das Gerät konfigurieren. <br> Mit dieser Schaltfläche ist es Möglich für das Gerät erneut zu konfigurieren. Dabei wird der *Converter* Angewiesen die Aktionen durchzufuehren die zur Konfiguration vorgesehen sind. Ueblicherweise werden damit verscheidene Cluster / Attribute an den Koordinator gebunden, um dafuer zu sorgen das das Gerät Informationen *Event* getriggert an den Koordinator sendet.<br>Damit dieses erfolgreich ist muss das Gerät aktiv sein. Insbesondere bei Batterie-betriebenen Geräten ist das of nut kurz nach einer Aktivierung der Fall.<br>Bei einer erfolgreichen Konfiguration verschwindet der Dialog ohne weitere Meldung, und es wird eine Info Meldung im Log platziert. Nur wenn die Konfiguration nicht erfolgreich war gibt es eine Meldung. Dabei sind 2 Arten von Meldungen zu unterscheiden - eine allgemeine Zeitüberschreitung (The device did not repond in time to the configuration request. Another attempt will be made when the device is awake.) oder eine echte Fehlermeldung. Im Falle der Zeitüberschreitung wird das Gerät in eine Liste eingetragen und bei der naechsten Kontaktaufnahme konfiguriert. Im Fehlerfall unterbleibt die Konfiguration. |
122
126
  | ![](img/edit_grp.png) | Name / Gruppen editieren <br> Über diese Schaltfläche lässt sich der Name eines Gerätes sowie - wenn zutreffent - die Zuordnung des Gerätes zu einer oder mehreren Gruppen anpassen. |
123
127
  | ![](img/delete.png) | Gerät löschen <br> Started den Löschvorgang für dieses Gerät. |
124
128
 
package/docs/en/readme.md CHANGED
@@ -31,24 +31,19 @@ The software is divided into "converter" and "adapter".
31
31
 
32
32
 
33
33
  ## Installation
34
- 1. Connect the coordinator hardware to the Raspberry Pi.<br>
35
- 2. Connect to the Raspberry Pi using PuTTY, for example.<br>
36
- 3. Determine the coordinator path. On Linux systems, this is often located in the /dev/serial/by-id directory. Alternatively, /dev/ttyUSB*, /dev/ttyAM* (Linux), /dev/tty.usbserial-* (macOS), or com* (Windows) are expected.<br>
34
+ 1. Connect the coordinator hardware to computer running ioBroker (or the network, in case of LAN/WLan coordinators).<br>
35
+ 2. Open a console on the server. In case of Unix/Linux based systems, this can be done remotely via ssh. Depending on the OS used, additional programs (e.g. puTTY on Windows) may be needed.<br>
36
+ 3. Determine the coordinator path. On Unix/Linux systems, this is often located in the /dev/serial/by-id directory. Alternatively, /dev/ttyUSB*, /dev/ttyAM* (Unix/Linux), /dev/tty.usbserial-* (macOS), or com* (Windows) are expected.<br>
37
37
  The following example shows a Linux installation on a Raspberry Pi. The command `ls -la /dev/serial/by-id/` produces the output shown in the image.
38
38
  ![](../de/img/Bild2.png)
39
- 4. ioBroker -> Install the ZigBee adapter, here version 1.8.10 as an example. <br> ![](../de/img/Bild3.png) <br> This installs all required software components (converter and adapter).
40
- 5. Open the adapter configuration. The following image shows the interface from version 2.1.0 onwards.<br>![](img/Zigbee_config_en.png)<br>
39
+ 4. ioBroker -> Install the ZigBee adapter, here version 1.8.10 as an example. <br> ![](../de/img/Bild3.png) <br> This installs all required software components (converter and adapter). <br>![](img/Zigbee_config_en.png)<br>
40
+ 5. Open the adapter configuration. The above image shows the interface version 3.0.0 or newer.
41
41
  In this situation, the admin indicates whether the ZigBee subsystem is started (A).
42
- 6. Enter the port for the coordinator. (B) In the case of USB coordinators, this is the previously determined device path.
43
- (B) In the case of USB coordinators, this is the previously determined device path.
44
- (B) Bei USB-Koordinatoren ist dies der zuvor ermittelte Gerätepfad.
45
- (B) In the case of USB coordinators, this is the device path previously determined.
46
- (B) Bei USB-Koordinatoren ist dies der zuvor ermittelte Gerätepfad.
47
- For coordinators controlled via the network, the network address and port must be specified in the form tcp://ip:port instead of the device path. If the adapter itself (not the Zigbee subsystem) is active, a list of available serial interfaces is available for selection. The following applies when selecting:
42
+ 6. Enter the port for the coordinator (B). In the case of USB coordinators, this is the previously determined device path. For coordinators controlled via the network, the network address and port must be specified in the form tcp://ip:port instead of the device path. If the adapter itself (not the Zigbee subsystem) is active, a list of available serial interfaces is available for selection. The following applies when selecting:
48
43
  - If multiple adapters with different USB devices are used for communication on the system, a port from the /dev/serial/by-id directory (if available) should **absolutely** be selected. This ensures that the adapter's association with the coordinator is retained when the system is restarted.
49
44
  - If only one USB device is used, the /dev/TTY* port is preferable. This allows the coordinator to be replaced with an identical device in the event of a defect without having to adjust the configuration.
50
45
  7. Assign a Network ID and Pan ID to distinguish it from other ZigBee networks within wireless range. e.g., starting with adapter version 2.1.0, ExtPanID (C) and PanID (D) are automatically pre-assigned with random values ​​until the configuration is saved.<br>
51
- 8. Select a suitable ZigBee channel (E). Please note that ZigBee and 2.4GHz Wi-Fi share the same frequency band. The optimal channel therefore depends, among other things, on the Wi-Fi channels used in the area. The channel names for ZigBee and Wi-Fi are **not** identical. It is also advisable to limit your selection to the ZigBee Light Link channels (11, 15, 20, 25). If a channel is selected that does not belong to the ZLL, the interface displays a yellow triangle with an exclamation mark above the entered channel. <br>After the adapter has been successfully started, a scan of the network channels can also be performed via the configuration.<br>
46
+ 8. Select a suitable ZigBee channel (E). Please note that ZigBee and 2.4GHz Wi-Fi share the same frequency band. The optimal channel therefore depends, among other things, on the Wi-Fi channels used in the area. The channel names for ZigBee and Wi-Fi are **not** identical, e.g. WIFI channel 11 and Zigbee channel 11 do **not** interfere with each other. It is also advisable to limit your selection to the ZigBee Light Link channels (11, 15, 20, 25). If a channel is selected that does not belong to the ZLL, the interface displays a yellow triangle with an exclamation mark above the entered channel. <br>After the adapter has been successfully started, a scan of the network channels can also be performed via the configuration.<br>
52
47
  **Note:** Starting with adapter version 2.1.0, it is possible to change the channel without deleting the configuration and re-learning all devices. However, **this feature is considered experimental** – individual devices may not respond to the channel change; these devices will then need to be re-learned.<br>
53
48
  9. Check whether the Zigbee subsystem is starting. To do this, try starting the Zigbee subsystem using *Start/Stop* (F). The progress of the start attempt can be observed in the log. The icon (A) changes from black/red to black/orange while the Herdsman starts. If the attempt was successful, the icon disappears completely; otherwise, it turns red again, and the messages in the log provide clues as to the cause.<br>
54
49
  The Herdsman can also be stopped using the same button. The icon is also displayed in black/orange. **Important: Stopping can take up to 2 minutes in some cases – especially when using network coordinators.** Patience is required here. After Herdsman has been terminated, the icon appears in black/red and the message 'Herdsman stopped!' appears.
package/io-package.json CHANGED
@@ -1,8 +1,34 @@
1
1
  {
2
2
  "common": {
3
3
  "name": "zigbee",
4
- "version": "3.0.0",
4
+ "version": "3.0.2",
5
5
  "news": {
6
+ "3.0.2": {
7
+ "en": "fix images",
8
+ "de": "bilder",
9
+ "ru": "фиксировать изображения",
10
+ "pt": "corrigir imagens",
11
+ "nl": "afbeeldingen herstellen",
12
+ "fr": "réparer les images",
13
+ "it": "fissare le immagini",
14
+ "es": "fijar imágenes",
15
+ "pl": "poprawianie obrazów",
16
+ "uk": "фіксувати зображення",
17
+ "zh-cn": "修正图像"
18
+ },
19
+ "3.0.1": {
20
+ "en": "Fix for Ikea SOMRIG configuration raising 'definition.endpoint is not a function' error.\nAccess to 'zigbee2mqtt options as settings in zigbee adapter (ALPHA Stage !)\nFix for 'error: zigbee.0 (1118300) zigbee.0 already running' at adapter start (Alpha Stage)\nUpdated hardware configuration panel - exchanged text buttons for buttons with icons.\nLimited states on device tiles to states which are read only or which can be modified sensibly via the device tile.\n",
21
+ "de": "Fix für Ikea SOMRIG Konfiguration erhöhen 'Definition. Endpoint ist kein Funktionsfehler.\nZugriff auf 'zigbee2mqtt Optionen als Einstellungen im Zickbee Adapter (ALPHA Stage!)\nFix für 'error: zigbee.0 (1118300) zigbee.0 bereits läuft' bei Adapterstart (Alpha Stage)\nAktualisiertes Hardware-Konfigurationsfeld - ausgetauschte Texttasten für Tasten mit Symbolen.\nBegrenzte Zustände auf Gerätefliesen zu Zuständen, die nur gelesen werden oder über die Gerätefliese sensibel modifiziert werden können.\n",
22
+ "ru": "Исправьте конфигурацию IKEA SOMRIG, повысив «определение». Конечная точка не является ошибкой функции.\nДоступ к опциям Zigbee2mqtt в качестве настроек в адаптере Zigbee (стадия ALPHA!)\nИсправьте ошибку: zigbee.0 (1118300) zigbee.0 уже работает на старте адаптера\nОбновленная аппаратная панель конфигурации - обмен текстовыми кнопками на кнопки с иконками.\nОграниченные состояния на плитках устройства к состояниям, которые читаются только или которые могут быть изменены чувственно через плитку устройства.\n",
23
+ "pt": "Corrigir para configuração Ikea SOMRIG elevando 'definição. endpoint não é um erro de função.\nAcesso às opções \"zigbee2mqttt como configurações no adaptador zigbee (Estação LAPHA!)\nFix for 'error: zigbee.0 (1118300) zigbee.0 já em execução' no início do adaptador (Alpha Stage)\nPainel de configuração de hardware atualizado - botões de texto trocados para botões com ícones.\nEstados limitados em telhas de dispositivo para estados que são lidos apenas ou que podem ser modificados sensivelmente através da telha do dispositivo.\n",
24
+ "nl": "Fix voor Ikea SOMRIG configuratie verhogen 'definitie. eindpunt is geen functiefout.\nToegang tot 'zigbee2mqtt opties als instellingen in zigbee adapter (ALPHA Stage !)\nFix voor 'fout: zigbee.0 (1118300) zigbee.0 al actief' bij adapterstart (Alpha Stage)\nBijgewerkt hardware configuratiepaneel - uitgewisselde tekstknoppen voor knoppen met pictogrammen.\nBeperkte toestanden op apparaattegels naar toestanden die alleen worden gelezen of die verstandig kunnen worden gewijzigd via de apparaattegel.\n",
25
+ "fr": "Correction pour la configuration Ikea SOMRIG augmentant la définition. le paramètre n'est pas une erreur de fonction.\nAccès aux options 'zigbee2mqtt comme réglages dans l'adaptateur zigbee (ALPHA Stage !)\nCorrection pour 'erreur: zigbee.0 (1118300) zigbee.0 déjà en cours d'exécution' au démarrage de l'adaptateur (Alpha Stage)\nPanneau de configuration du matériel mis à jour - boutons texte échangés pour les boutons avec des icônes.\nLes états limités sur les tuiles de l'appareil aux états qui sont lus seulement ou qui peuvent être modifiés de façon sensible via la tuile de l'appareil.\n",
26
+ "it": "Fissare per Ikea SOMRIG configurazione aumentando 'definizione. endpoint non è un errore di funzione.\nAccesso alle opzioni 'zigbee2mqtt come impostazioni nell'adattatore zigbee (ALPHA Stage !)\nCorrezione per 'error: zigbee.0 (1118300) zigbee.0 già in esecuzione' all'inizio dell'adattatore (Alpha Stage)\nPannello di configurazione hardware aggiornato - pulsanti di testo scambiati per pulsanti con icone.\nStati limitati su piastrelle di dispositivo a stati che sono letti solo o che possono essere modificati sensibilmente tramite la piastrella del dispositivo.\n",
27
+ "es": "Arregla para la configuración de Ikea SOMRIG criando 'definición. endpoint no es un error de función.\nAcceso a las opciones 'zigbee2mqtt como configuración en el adaptador de zigbee (ALPHA Stage !)\nFijación para 'error: zigbee.0 (1118300) zigbee.0 ya funcionando en el inicio del adaptador (Alpha Stage)\nPanel de configuración de hardware actualizado - botones de texto intercambiados para botones con iconos.\nEstados limitados en fichas de dispositivo a estados que se leen solamente o que pueden ser modificados de forma sensata a través de la ficha del dispositivo.\n",
28
+ "pl": "Napraw dla definicji podnoszenie konfiguracji Ikea SOMRIG. Punkt końcowy nie jest błędem funkcji.\nDostęp do opcji 'zigbee2mqtt jako ustawień w adapterze zigbee (ALPHA Stage!)\nFix for 'error: zigbee.0 (1118300) zigbee.0 already running' at adapter start (Alpha Stage)\nAktualizacja panelu konfiguracji sprzętowej - wymieniono przyciski tekstowe na przyciski z ikonami.\nOgraniczone stany na płytkach urządzenia do stanów, które są tylko odczytywane lub które mogą być modyfikowane w sposób rozsądny za pomocą płytki urządzenia.\n",
29
+ "uk": "Виправлення для налаштування Ikea SOMRIG 'Визначення. кінцева точка не є помилкою функції.\nДоступ до опцій Zigbee2mqtt як налаштування адаптера Zigbee (ALPHA Stage !)\nВиправлення для 'error: zigbee.0 (1118300) zigbee.0 вже запущений' при запуску адаптера (Alpha Stage)\nОновлена панель конфігурації обладнання - обмінні текстові кнопки для гудзиків з іконками.\nОбмежені стани на плитці пристрою для станів, які читаються тільки або які можуть бути змінені, швидко через плитку пристрою.\n",
30
+ "zh-cn": "修复Ikea SOMRIG 配置提升定义 。 结束点不是一个函数'错误.\n访问 'zigbee2mqtt 选项作为 Zigbee 适配器的设置( ALPHA stage !) \n在适配器启动( Alpha Stage)时为 'error: zigbee. 0 (1118300) zigbee. 0 已经运行' 进行修复\n更新的硬件配置面板 - 用图标交换文本按钮作为按钮.\n将设备瓦片的状态限制在只读或通过设备瓦片可敏感修改的状态.\n"
31
+ },
6
32
  "3.0.0": {
7
33
  "en": "Breaking change: Start of zigbee subsystem requires configuration entry !!!\nHardware configuration panel\nUpdate for external converter - detect /dist/ subfolder\nUpdate device image: use of icons defined in external converter (beta)\n",
8
34
  "de": "Bruchänderung: Beginn des Zickbee Subsystems erfordert Konfigurationseintrag!!!\nHardware-Konfigurationspanel\nUpdate für externen Konverter - Erkennung /dist/ Unterordner\nGerätebild aktualisieren: Verwendung von Icons, die im externen Konverter (beta) definiert sind\n",
@@ -67,32 +93,6 @@
67
93
  "pl": "naprawić generowanie ekspozycji z funkcją odsłaniania wymagającą urządzenia. (Wydanie # 1842)\nnaprawić awarię konfiguracji dla urządzeń wymagających wielu konfiguracji (wydanie # 2375)\nfix hold / release and press / release action handling (wydanie # 2387)\nfix lib / last requirement for external konwerters (issue # 2376)\nulepszona obsługa zewnętrznego konwertera\nnaprawić błąd OTA\nulepszona obsługa wiadomości dla urządzeń, które przekazują wartości poza określonymi zakresami\nprzygotowanie do ZHC 22.x (definicja modelu załadowana na żądanie\nnaprawić dotychczasową definicję urządzeń\ndodano stan działania pilotów.\n",
68
94
  "uk": "фіксувати генерацію висадки з функцією вистоювання, що вимагає пристрою. (Issue #1842)\nвиправлена відмова налаштовувати для пристроїв, які потребують декількох конфігурацій (Issue #2375)\nфіксувати передачу/випуск та прес/випуск дії (Issue #2387)\nфіксувати вимогу lib/legacy для зовнішніх перетворювачів (Issue #2376)\nпокращений зовнішній конвертер\nвиправлення помилок OTA\nпокращена обробка повідомлень для пристроїв, які повідомляють значення поза визначеними діапазонами\nпідготовка до ZHC 22.x (модельне визначення, завантажене на попит\nфіксувати визначення спадщини для пристроїв\nдодано стан дії для пультів.\n",
69
95
  "zh-cn": "固定需要设备的曝光函数的曝光生成。 (问题1842)\n为需要多个配置的设备设置固定失败( 问题 # 2375)\n固定持有/释放和按压/释放处理(第2387号问题)\n固定外部转换器的 lib/ legacy 要求(问题 # 2376)\n改进外部转换器处理\n修复OTA 错误\n改进对报告超出规定范围值的设备的信息处理\nzHC 22.x(按要求装入的模型定义)\n固定设备的遗留定义\n为远程添加动作状态 .\n"
70
- },
71
- "2.0.1": {
72
- "en": "BREAKING CHANGES\n\nswitch to converters 21 changes the exposes for a large numbern of devices (mostly remotes)\nnew method for controlling color based on subchannels for rgb, hs and xy\nExposes as default for ALL devices. Use of old definition as option only\nRequires Node 20.x or newer\n\nFix Pairing\nchange ping\ndelay map generation until refresh is activated, map messages after generation\nremove bindings tab from zigbee tab\nreorder tabs in configuration\nremove binding tab from configuration\nremove map from configuration\nadd debug to zigbee tab\nHerdsman 3.2.5, Converters 21.30.0\nExposes as default, use of old device definitions as legacy optional\nUser specific images (model based, device based)\nImproved group editing - remove members from group card",
73
- "de": "VERÄNDERUNGEN\n\nschalter auf konverter 21 ändert die belichtung für eine große anzahl von geräten (meist fernbedienungen)\nneue methode zur farbsteuerung auf basis von subkanälen für rgb, hs und xy\nExposes als Standard für ALL Geräte. Verwendung der alten Definition nur als Option\nErfordert Node 20.x oder neuer\n\nFeste Paarung\nänderung ping\nverzögerung der kartenerzeugung, bis das update aktiviert ist, kartennachrichten nach generation\nbinden tab aus zickbee tab entfernen\nreorder tabs in konfiguration\nbindelasche aus der konfiguration entfernen\nkarte aus der konfiguration entfernen\ndebug to zigbee tab hinzufügen\nHerdsman 3.2.5, Konverter 21.30.0\nExposes als Standard, Verwendung von alten Gerätedefinitionen als Vermächtnis optional\nBenutzerspezifische Bilder (modellbasierte, gerätebasierte)\nVerbesserte Gruppenbearbeitung - Mitglieder aus Gruppenkarte entfernen",
74
- "ru": "ПЕРЕМЕНЫ ДЫХАНИЯ\n\nпереход на преобразователи 21 изменяет экспозиции для большого количества устройств (в основном пультов)\nновый метод управления цветом на основе подканалов для rgb, hs и xy\nВыставляется по умолчанию для всех устройств. Использование старого определения только в качестве варианта\nТребуется Node 20.x или новый\n\nФиксация пар\nизменить пинг\nзадержка генерации карт до активации обновления, сообщения карт после генерации\nудалить вкладку связывания из вкладки zigbee\nзакладки переупорядочения в конфигурации\nудалить вкладку связывания из конфигурации\nудалить карту из конфигурации\nдобавить отладку в zigbee tab\nСтадовод 3.2.5, Преобразователи 21.30.0\nОбъявления по умолчанию, использование старых определений устройств в качестве устаревших опций\nПользовательские изображения (на основе модели, устройства)\nУлучшенное редактирование группы - удаление членов с карты группы",
75
- "pt": "ALTERAÇÕES DE TRABALHO\n\nmudar para conversores 21 altera as exposiçãμes para um grande nãomero de dispositivos (principalmente remotos)\nnovo método para controlar a cor com base em subcanais para rgb, hs e xy\nExpõe como padrão para todos os dispositivos. Uso da definição antiga como opção apenas\nRequer nó 20.x ou mais recente\n\nEmparelhamento fixo\nmudança de ping\ngeração de mapas de atraso até que a atualização seja ativada, mapeie mensagens após a geração\nremover encadernações guia da aba zigbee\nreordenar as abas na configuração\nremover guia de ligação da configuração\nremover mapa da configuração\nadd debug to ziigbee tab\nHerdsman 3.2.5, Conversores 21.30.0\nExpõe como padrão, uso de definições de dispositivos antigos como legado opcional\nImagens específicas do usuário (modelo baseado, dispositivo baseado)\nEdição de grupo melhorada - remover membros do cartão de grupo",
76
- "nl": "BEREIDINGSVERANDERINGEN\n\nswitch to converters 21 verandert de expos voor een groot aantal apparaten (meestal afstandsbedieningen)\nnieuwe methode voor het controleren van kleur op basis van subkanalen voor rgb, hs en xy\nExposeert als standaard voor ALLE apparaten. Gebruik van oude definitie als optie\nVereist Node 20.x of nieuwer\n\nRepareren\nverandering ping\nde mapgeneratie uitstellen tot het vernieuwen is geactiveerd, berichten na generatie in kaart brengen\ntabblad bindingen verwijderen uit zigbee-tabblad\ntabbladen opnieuw ordenen in configuratie\ntabblad binding verwijderen uit configuratie\nkaart uit configuratie verwijderen\ndebug toevoegen aan zigbee-tabblad\nHerdsman 3.2.5, Converters 21.30.0\nExposeert als standaard, gebruik van oude apparaatdefinities als optioneel legacy\nGebruikersspecifieke afbeeldingen (op basis van model, apparaat)\nVerbeterde groepsbewerking - leden verwijderen van groepskaart",
77
- "fr": "CHANGEMENTS\n\nbasculer vers les convertisseurs 21 modifie les expositions pour un grand nombre de dispositifs (principalement des télécommandes)\nnouvelle méthode pour contrôler la couleur basée sur les sous-canaux pour rgb, hs et xy\nExposes par défaut pour TOUS les appareils. Utilisation de l'ancienne définition comme option seulement\nNécessite le Node 20.x ou plus récents\n\nCorrection de l'appariement\nchangement ping\nretarder la génération de la carte jusqu'à ce que le rafraîchissement soit activé, map messages after generation\nsupprimer l'onglet reliures de l'onglet zigbee\nréorganiser les onglets dans la configuration\nsupprimer l'onglet de liaison de la configuration\nsupprimer la carte de la configuration\najouter debug à l'onglet zigbee\nHerdsman 3.2.5, Convertisseurs 21.30.0\nExposes comme par défaut, utilisation des anciennes définitions d'appareils comme legs optionnel\nImages spécifiques à l'utilisateur (sur modèle, sur périphérique)\nAmélioration de l'édition de groupe - supprimer les membres de la carte de groupe",
78
- "it": "VARIAZIONI\n\ncommutazione a convertitori 21 cambia l'esposizione per un gran numero di dispositivi (per lo più remoti)\nnuovo metodo per il controllo del colore basato su sottocanali per rgb, hs e xy\nMostra come predefinito per tutti i dispositivi. Uso della vecchia definizione come opzione solo\nRichiede Node 20.x o nuovo\n\nFissare l'accoppiamento\ncambiamento ping\nritardare la generazione della mappa fino all'attivazione del aggiornamento, mappare i messaggi dopo generazione\nrimuovere la scheda binding dalla scheda zigbee\nriordinare le schede nella configurazione\nrimuovere la scheda di binding dalla configurazione\nrimuovere la mappa dalla configurazione\naggiungere debug a zigbee scheda\nHerdsman 3.2.5, Convertitori 21.30.0\nEsposizioni come predefinito, uso di vecchie definizioni del dispositivo come legacy opzionale\nImmagini specifiche dell'utente (modello basato, dispositivo basato)\nModifica del gruppo migliorato - rimuovere i membri dalla scheda di gruppo",
79
- "es": "BREAKING CHANGS\n\ninterruptor a convertidores 21 cambios de los expuestos para un gran número de dispositivos (en su mayoría remotos)\nnuevo método para controlar el color basado en subcanales para rgb, hs y xy\nExposes como predeterminado para TODOS los dispositivos. Uso de la vieja definición como opción solamente\nRequiere Nodo 20.x o más nuevos\n\nPareja fija\ncambio de ping\nretraso de la generación del mapa hasta que se activa el refresco, mapa mensajes después de la generación\neliminar la ficha de unión de la pestaña zigbee\npestañas reordenadas en configuración\neliminar la pestaña de unión de configuración\neliminar mapa de la configuración\nañadir debug a la pestaña zigbee\nHerdsman 3.2.5, convertidores 21.30.0\nExposes as default, use of old device definitions as legacy Optional\nImágenes específicas del usuario (con base de modelo, basadas en dispositivos)\nMejor edición de grupo - eliminar miembros de la tarjeta de grupo",
80
- "pl": "ZMIANY ZBIORCZE\n\nprzełączanie na konwertery 21 zmienia eksponaty dużej liczby urządzeń (głównie pilotów)\nnowa metoda kontrolowania koloru na podstawie podkanałów dla rgb, hs i xy\nWyświetla jako domyślne dla urządzeń ALL. Używanie starej definicji jako opcji\nWymaga węzła 20.x lub nowsze\n\nNapraw parowanie\nzmienić ping\nopóźnianie generowania mapy aż do uruchomienia odświeżania, wiadomości mapy po generacji\nusunąć zakładkę wiązania z zakładki zigbee\nponownie zamówić karty w konfiguracji\nusunąć zakładkę wiązania z konfiguracji\nusuń mapę z konfiguracji\ndodaj debug do karty zigbee\nHerdsman 3.2.5, Konwertery 21.30.0\nWyświetla jako domyślne, użycie starych definicji urządzenia jako dotychczasowe opcjonalne\nObrazy specyficzne dla użytkownika (oparte na modelu, na urządzeniu)\nUlepszona edycja grupowa - usunąć członków z karty grupowej",
81
- "uk": "БРЕАКІНГОВІ ЗМІНИ\n\nперемикач на перетворювачі 21 змінює висадки для великої кількості пристроїв (найбільш віддалені)\nновий метод контролю кольору на основі підканалів для rgb, hs і xy\nЗа замовчуванням для всіх пристроїв. Використання старого визначення як варіант\nВимагає Node 20.x або нові\n\nФіксація Пірсинг\nзмінити пінг\nгенерація карти затримки до освіження активується, повідомлення після генерації\nвидалити вкладку в'язання з вкладки zigbee\nвкладка зворотного замовлення в конфігурації\nвидалити вкладку з конфігурації\nвидалити карту з конфігурації\nadd debug до zigbee tab\nEnglish, Українська, Français..\nЕкспози як за замовчуванням, використання застарілих параметрів пристрою, як необов'язковий\nКористувальницькі специфічні зображення (моделі на основі пристрою)\nУдосконалено редагування груп - видалення членів з групової картки",
82
- "zh-cn": "裂变\n\n21 更改大量设备(大多为远程设备)的曝光量\n基于 rgb、 hs 和 xy 子通道的新的颜色控制方法\n曝光为默认所有设备 。 仅将旧定义用作选项\n需要节点 20.x 或更新\n\n修复对齐\n更改键\n将映射生成延迟到刷新启动, 映射消息生成后\n从 zigbee 标签中删除绑定标签\n在配置中重新排序标签\n从配置中删除绑定标签\n从配置中删除地图\n添加调试到 zigbee 标签\n牧民 3.2.5,转换器 21.30.0\n将曝光作为默认, 将旧设备定义作为遗留选项\n用户特定图像( 基于模型、 设备)\n改进组编辑 - 从组卡中删除成员"
83
- },
84
- "1.10.14": {
85
- "en": "Herdsman 2.1.9, Converters 20.58.0\nFix: Aqara T1M (CL-L02D) \ndeleteDeviceStates change to deleteObj",
86
- "de": "Herdsman 2.1.9, Konverter 20.58.0\nFix: Aqara T1M (CL-L02D)\nlöschen DeviceState Änderung zum Löschen Ob",
87
- "ru": "Herdsman 2.1.9, Converters 20.58.0\nFix: Aqara T1M (CL-L02D)\nудалить Устройства меняются для удаления Obj",
88
- "pt": "Herdsman 2.1.9, Conversores 20.58.0\nFix: Aqara T1M (CL-L02D)\nexcluir DeviceStates mudam para excluir Objecção",
89
- "nl": "Herdsman 2.1.9, Converters 20.58.0\nFix: Aqara T1M (CL-L02D)\nverwijderen Apparaatstaten wijzigen om te verwijderen Obj",
90
- "fr": "Herdsman 2.1.9, Convertisseurs 20.58.0\nCorrection: Aqara T1M (CL-L02D)\nsupprimer Les états de périphérique changent pour supprimer OBJ",
91
- "it": "Herdsman 2.1.9, Convertitori 20.58.0\nFisso: Aqara T1M (CL-L02D)\ncancella DeviceStates modifica per eliminare Obj",
92
- "es": "Herdsman 2.1.9, convertidores 20.58.0\nFijación: Aqara T1M (CL-L02D)\nborrar Los Estados de dispositivos cambian para eliminar Obj",
93
- "pl": "Herdsman 2.1.9, konwertery 20.58.0\nFix: Aqara T1M (CL- L02D)\nusuń DeviceStates zmienić, aby usunąć Obj",
94
- "uk": "Herdsman 2.1.9, Конвертер 20.58.0\nФіксація: Aqara T1M (CL-L02D)\nвидалити Зміна стану пристроїв для видалення Офіціант",
95
- "zh-cn": "牧民2.1.9,转换器 20.58.0\n修补:Aqara T1M(CL-L02D)\n删除 设备状态更改以删除 欧比"
96
96
  }
97
97
  },
98
98
  "titleLang": {
@@ -159,6 +159,7 @@
159
159
  "tab": "materialize"
160
160
  },
161
161
  "messagebox": true,
162
+ "stopTimeout": 30000,
162
163
  "stopBeforeUpdate": true,
163
164
  "dataFolder": "zigbee_%INSTANCE%",
164
165
  "compact": true,
package/lib/commands.js CHANGED
@@ -149,9 +149,14 @@ class Commands {
149
149
  this.updateDeviceImage(obj.from, obj.command, obj.message, obj.callback);
150
150
  }
151
151
  break;
152
- case 'updateDeviceData':
152
+ case 'updateLocalConfigItems':
153
153
  if (obj.message && typeof obj.message === 'object') {
154
- this.updateDeviceData(obj.from, obj.command, obj.message, obj.callback);
154
+ this.updateLocalConfigItems(obj.from, obj.command, obj.message, obj.callback);
155
+ }
156
+ break;
157
+ case 'getLocalConfigItems':
158
+ if (obj.message && typeof obj.message === 'object') {
159
+ this.getLocalConfigItems(obj.from, obj.command, obj.message, obj.callback);
155
160
  }
156
161
  break;
157
162
  case 'getDeviceCleanupRequired':
@@ -175,7 +180,7 @@ class Commands {
175
180
  }
176
181
 
177
182
  async readNvBackup(from, command, msg, callback) {
178
- this.warn('readNvBackup called')
183
+ this.debug('readNvBackup called')
179
184
  try {
180
185
  const zo = this.adapter.getZigbeeOptions();
181
186
  const name = require('path').join(zo.dbDir, zo.backupPath);
@@ -186,7 +191,7 @@ class Commands {
186
191
  rv.precfgkey = (nvBackupJson.network_key ? nvBackupJson.network_key.key : undefined);
187
192
  rv.extPanID = nvBackupJson.extended_pan_id ? reverseByteString(nvBackupJson.extended_pan_id) : undefined;
188
193
  rv.panID = parseInt('0x'+nvBackupJson.pan_id);
189
- this.warn('readNvBackup returns ' + JSON.stringify(rv))
194
+ this.debug('readNvBackup returns ' + JSON.stringify(rv))
190
195
  this.adapter.sendTo(from, command, rv, callback)
191
196
  }
192
197
  catch (error) {
@@ -702,10 +707,10 @@ class Commands {
702
707
  }
703
708
  }
704
709
 
705
- async updateDeviceData(from, command, msg, callback) {
710
+ async updateLocalConfigItems(from, command, msg, callback) {
706
711
  if (this.stController) {
707
- this.debug(`UpdateDeviceData : ${JSON.stringify(msg)}`)
708
- const target = msg.target.replace(`${this.adapter.namespace}.`, '');
712
+ this.debug(`updateLocalConfigItems : ${JSON.stringify(msg)}`);
713
+ const target = msg.global ? msg.target : msg.target.replace(`${this.adapter.namespace}.`, '');
709
714
  const entity = await this.zbController.resolveEntity(target);
710
715
  //this.warn('entity for ' + target + ' is '+ JSON.stringify(entity))
711
716
  if (entity && !entity.mapped) {
@@ -720,16 +725,42 @@ class Commands {
720
725
  }
721
726
  }
722
727
  if (entity) {
723
- //this.warn('with Entity');
728
+ this.debug('updateLocalConfigItems with Entity');
724
729
  this.stController.updateDev(target, entity.mapped.model, entity.mapped.model, () => {this.adapter.sendTo(from, command, {}, callback)});
725
730
  }
726
731
  else {
727
- //this.warn('without Entity');
732
+ this.debug('updateLocalConfigItems without Entity');
728
733
  this.stController.updateDev(target, undefined, 'group',() => {this.adapter.sendTo(from, command, {}, callback)});
729
734
  }
730
735
  }
731
736
  }
732
737
 
738
+ async getLocalConfigItems(from, command, msg, callback)
739
+ {
740
+ const rv = {};
741
+ if (this.stController) {
742
+ this.debug(`getLocalConfigItems : ${JSON.stringify(msg)}`)
743
+
744
+ if (msg.hasOwnProperty('global') && msg.hasOwnProperty('target') && (msg.hasOwnProperty('keys') || msg.hasOwnProperty('key')))
745
+ {
746
+ const target = msg.global ? msg.target : msg.target.replace(`${this.adapter.namespace}.`, '');
747
+ const keys = msg.hasOwnProperty('keys') ? msg.keys : [msg.key];
748
+ for (const key of keys) {
749
+ const ld = this.stController.localConfig.getOverrideWithTargetAndKey(target, key, msg.global);
750
+ if (ld != undefined) rv[key] = ld;
751
+ }
752
+
753
+ //const targetId = msg.id ? msg.id.replace(`${this.adapter.namespace}.`, '') : '';
754
+ //const targetModel = msg.model ? msg.model : '';
755
+ }
756
+ else {
757
+ rv.error = `missing data in message ${JSON.stringify(msg)}`;
758
+ }
759
+ }
760
+ else rv.error = 'stController not initialized - no Data sent'
761
+
762
+ this.adapter.sendTo(from, command, rv, callback);
763
+ }
733
764
 
734
765
  async reconfigure(from, command, msg, callback) {
735
766
  if (this.zbController && this.zbController.herdsmanStarted) {
package/lib/groups.js CHANGED
@@ -265,7 +265,7 @@ class Groups {
265
265
  this.warn(`renameGroup caught error ${JSON.stringify(e.code)}`);
266
266
  }
267
267
  }
268
- this.warn(`rename group name ${name}, id ${id}, icon ${icon} remove ${JSON.stringify(message.removeMembers)}`);
268
+ this.debug(`rename group name ${name}, id ${id}, icon ${icon} remove ${JSON.stringify(message.removeMembers)}`);
269
269
  const group = await this.adapter.getObjectAsync(id);
270
270
  if (!group) {
271
271
  this.debug('group object doesnt exist ')
@@ -18,7 +18,6 @@ class localConfig extends EventEmitter {
18
18
  this.basefolder = undefined;
19
19
  this.retTimeoutHanlde = undefined;
20
20
  this.adapter.on('ready', () => this.onReady());
21
- this.adapter.on('unload', callback => this.onUnload(callback));
22
21
  }
23
22
 
24
23
 
@@ -28,9 +27,9 @@ class localConfig extends EventEmitter {
28
27
 
29
28
  async onUnload(callback)
30
29
  {
31
- this.info('local config saved');
32
30
  this.retainData();
33
- callback();
31
+ // No callback here -
32
+ //callback();
34
33
  }
35
34
 
36
35
  info(message) {
@@ -76,14 +75,14 @@ class localConfig extends EventEmitter {
76
75
  async updateLocalOverride(_target, model, key, data, global)
77
76
  {
78
77
  const target = (global ? model : _target);
79
- this.info(`updating local data: (${global ? 'global':'local'}) : ${target}:${key}:${data}`);
78
+ this.info(`updating local data: (${global ? 'global':'local'}) : ${target}:${key}:${JSON.stringify(data)}`);
80
79
 
81
80
  if (typeof target != 'string' || typeof key != 'string') {
82
81
  this.error(`update called with illegal id data:${JSON.stringify(target)}:${JSON.stringify(key)}:${JSON.stringify(data)}`)
83
82
  return false;
84
83
  }
85
84
  const base = global ? this.localData.by_model[target] || {} : this.localData.by_id[target] || {};
86
- if (data && data.length > 0 && data != 'none') {
85
+ if (data && Object.keys(data).length > 0 && data != 'none') {
87
86
  if (key == 'icon')
88
87
  base[key] = data.replace(this.basefolder, '.');
89
88
  else
@@ -103,10 +102,24 @@ class localConfig extends EventEmitter {
103
102
  if (base == {}) delete this.localData.by_id[target];
104
103
  else this.localData.by_id[target] = base;
105
104
  }
106
- this.info(`Local Data for ${target} is ${JSON.stringify(base)}`);
105
+ this.info(`Local Data for ${target} is ${JSON.stringify(base)} after update`);
107
106
  return true;
108
107
  }
109
108
 
109
+ async getLocalOverride(_target, model, key, global)
110
+ {
111
+ const target = (global ? model : _target);
112
+ this.info(`getting local data: (${global ? 'global':'local'}) : ${target}:${key}`);
113
+
114
+ if (typeof target != 'string' || typeof key != 'string') {
115
+ this.error(`update called with illegal id data:${JSON.stringify(target)}:${JSON.stringify(key)}`)
116
+ return false;
117
+ }
118
+ const base = global ? this.localData.by_model[target] || {} : this.localData.by_id[target] || {};
119
+ const rv = {};
120
+ if (base.hasOwnProperty(key)) rv[key] = base[key];
121
+ return rv;
122
+ }
110
123
 
111
124
  NameForId(id, model, defaultName) {
112
125
  this.debug('name for id with ' + id + ' and ' + defaultName + ' from ' + JSON.stringify(this.localData));
@@ -213,7 +226,7 @@ class localConfig extends EventEmitter {
213
226
  return rv;
214
227
  }
215
228
 
216
- getOverrideWithKey(target, key, isGlobal) {
229
+ getOverrideWithTargetAndKey(target, key, isGlobal) {
217
230
  const targetdata = this.getOverrideData(target, isGlobal);
218
231
  if (targetdata && targetdata.hasOwnProperty(key)) return targetdata[key];
219
232
  return undefined;
@@ -221,6 +234,7 @@ class localConfig extends EventEmitter {
221
234
 
222
235
  async updateFromDeviceNames() {
223
236
  const fn = this.adapter.expandFileName('dev_names.json');
237
+ this.info('Initializing localConfig from dev_names.json')
224
238
  fs.readFile(fn, (err, content) => {
225
239
  if (!err) {
226
240
  let data_js = {};
@@ -233,8 +247,10 @@ class localConfig extends EventEmitter {
233
247
  }
234
248
  try {
235
249
  for (const prop in data_js) {
236
- if (data_js[prop] != 'undefined')
250
+ if (data_js[prop] != 'undefined') {
251
+ this.info(`updating device name for ${prop} as ${data_js[prop]}`);
237
252
  this.updateDeviceName(prop, data_js[prop]);
253
+ }
238
254
  }
239
255
  }
240
256
  catch (error) {
@@ -295,6 +311,13 @@ class localConfig extends EventEmitter {
295
311
  return rv;
296
312
  }
297
313
 
314
+ getOptions(dev_id) {
315
+ const ld = this.localData.by_id[dev_id];
316
+ if (ld === undefined || ld.options === undefined) return {};
317
+ this.debug(`getOptions for ${dev_id} : ${JSON.stringify(ld.options)}`);
318
+ return ld.options;
319
+ }
320
+
298
321
  }
299
322
 
300
323
  module.exports = localConfig;