iobroker.tr-064 5.1.5 → 5.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/README.md +33 -40
  2. package/admin/custom/.vite/manifest.json +68 -68
  3. package/admin/custom/assets/Components-DnyXLngv.js +1 -0
  4. package/admin/custom/assets/MeshTopology-DdxCvD6W.js +4 -0
  5. package/admin/custom/assets/_virtual_mf-localSharedImportMap___mfe_internal__ConfigCustomTr064Set__mf_owner__1-C-7VEH2M.js +1 -0
  6. package/admin/custom/assets/{_virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__259378411809170__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-DdhKfc_O.js → _virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__80542807241481__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-DwHxH2Tb.js} +96 -96
  7. package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__80542807241481__loadShare__shared-C3F6xhja.js +2 -0
  8. package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__80542807241481__prebuild___mf_0_iobroker_mf_1_json_mf_2_config__prebuild__-B5JQBr75.js +122 -0
  9. package/admin/custom/assets/{_virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__259378411809170__prebuild__react_mf_2_dom_mf_1_client__prebuild__-BInMjdwk.js → _virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__80542807241481__prebuild__react_mf_2_dom_mf_1_client__prebuild__-D8dfJFpB.js} +1 -1
  10. package/admin/custom/assets/{dist-DaURp8MG.js → dist-DiU1y0R9.js} +1 -1
  11. package/admin/custom/assets/helpers-Dot7vgQQ.js +1 -0
  12. package/admin/custom/assets/{hostInit-C4-y6noJ.js → hostInit-C9ukT_fL.js} +1 -1
  13. package/admin/custom/assets/{lib-Bz6IScan.js → lib-C0xNRO2P.js} +2 -2
  14. package/admin/custom/assets/pendingShares-CJcHAY7c.js +2 -0
  15. package/admin/custom/assets/{utils-sDCNnUxL.js → utils-towTPKqG.js} +1 -1
  16. package/admin/custom/assets/vite-preload-helper-BbbETgeG.js +1 -0
  17. package/admin/custom/customComponents.js +2 -2
  18. package/admin/custom/mf-manifest.json +1 -1
  19. package/admin/dm-widgets/.vite/manifest.json +31 -31
  20. package/admin/dm-widgets/assets/Components-BjwJD5XF.js +4 -0
  21. package/admin/dm-widgets/assets/{_virtual_mf-localSharedImportMap___mfe_internal__DevicesWidgetTr064Set__mf_owner__1-BF5b7ZEP.js → _virtual_mf-localSharedImportMap___mfe_internal__DevicesWidgetTr064Set__mf_owner__1-BLwubH36.js} +1 -1
  22. package/admin/dm-widgets/assets/{_virtual_mf___mfe_internal__DevicesWidgetTr064Set__mf_owner__212620212104624__loadShare__shared-8564RYVs.js → _virtual_mf___mfe_internal__DevicesWidgetTr064Set__mf_owner__212620212104624__loadShare__shared-4SQSrCDF.js} +1 -1
  23. package/admin/dm-widgets/assets/{dist-DAUjjciP.js → dist-BkS8HKl2.js} +1 -1
  24. package/admin/dm-widgets/assets/helpers-ClFTp7rx.js +1 -0
  25. package/admin/dm-widgets/assets/{hostInit-DQpykEkM.js → hostInit-DEK6nxUq.js} +1 -1
  26. package/admin/dm-widgets/assets/{no-page-C-g_PIyM.js → no-page-DXBOpctw.js} +2 -2
  27. package/admin/dm-widgets/assets/{pendingShares-CNny_2LZ.js → pendingShares-BZTJ8U1k.js} +2 -2
  28. package/admin/dm-widgets/assets/translations-BZhya0jA.js +1 -0
  29. package/{widgets/tr-064/assets/utils-DEUY4RDL.js → admin/dm-widgets/assets/utils-D1AcFl0O.js} +1 -1
  30. package/admin/dm-widgets/assets/vite-preload-helper-BbbETgeG.js +1 -0
  31. package/admin/dm-widgets/customDevices.js +2 -2
  32. package/admin/dm-widgets/mf-manifest.json +1 -1
  33. package/admin/dm-widgets/person.svg +6 -0
  34. package/admin/i18n/de.json +14 -0
  35. package/admin/i18n/en.json +14 -0
  36. package/admin/i18n/es.json +14 -0
  37. package/admin/i18n/fr.json +14 -0
  38. package/admin/i18n/it.json +14 -0
  39. package/admin/i18n/nl.json +14 -0
  40. package/admin/i18n/pl.json +14 -0
  41. package/admin/i18n/pt.json +14 -0
  42. package/admin/i18n/ru.json +14 -0
  43. package/admin/i18n/uk.json +14 -0
  44. package/admin/i18n/zh-cn.json +14 -0
  45. package/admin/jsonConfig.json +118 -3
  46. package/build/lib/presence.js +436 -0
  47. package/build/lib/presence.js.map +1 -0
  48. package/build/lib/tr064.js +20 -5
  49. package/build/lib/tr064.js.map +1 -1
  50. package/build/lib/utils.js +21 -0
  51. package/build/lib/utils.js.map +1 -1
  52. package/build/main.js +35 -2
  53. package/build/main.js.map +1 -1
  54. package/io-package.json +52 -28
  55. package/package.json +1 -1
  56. package/widgets/tr-064/.vite/manifest.json +134 -110
  57. package/widgets/tr-064/assets/{Generic-CB13arWC.js → Generic-Cl0kKUW7.js} +1 -1
  58. package/widgets/tr-064/assets/MeshView-D8u-FaDb.js +4 -0
  59. package/widgets/tr-064/assets/PresenceSelect-aqA9gP3R.js +1 -0
  60. package/widgets/tr-064/assets/Tr064FritzBox-DYI1xQht.js +1 -0
  61. package/widgets/tr-064/assets/{Tr064Mesh-DhOz-cyO.js → Tr064Mesh-BOifuPq4.js} +1 -1
  62. package/widgets/tr-064/assets/Tr064Person-Dh3sNGqw.js +1 -0
  63. package/widgets/tr-064/assets/Tr064Presence-B4AW5nzP.js +1 -0
  64. package/widgets/tr-064/assets/{_virtual_mf-localSharedImportMap___mfe_internal__vis2Tr064Widgets__mf_owner__1-mmPQI-0W.js → _virtual_mf-localSharedImportMap___mfe_internal__vis2Tr064Widgets__mf_owner__1-DEqHJtFZ.js} +1 -1
  65. package/widgets/tr-064/assets/_virtual_mf___mfe_internal__vis2Tr064Widgets__mf_owner__177553934835196__loadShare__shared-ZlVQj1oA.js +2 -0
  66. package/widgets/tr-064/assets/{_virtual_mf___mfe_internal__vis2Tr064Widgets__mf_owner__105226804110546__prebuild___mf_0_emotion_mf_1_react__prebuild__-BdRMcX2u.js → _virtual_mf___mfe_internal__vis2Tr064Widgets__mf_owner__177553934835196__prebuild___mf_0_emotion_mf_1_react__prebuild__-CRl1X4pK.js} +1 -1
  67. package/widgets/tr-064/assets/_virtual_mf___mfe_internal__vis2Tr064Widgets__mf_owner__177553934835196__prebuild___mf_0_mui_mf_1_material__prebuild__-UlVF-Z6-.js +245 -0
  68. package/widgets/tr-064/assets/{_virtual_mf___mfe_internal__vis2Tr064Widgets__mf_owner__105226804110546__prebuild___mf_0_mui_mf_1_private_mf_2_theming__prebuild__-CimLpZsS.js → _virtual_mf___mfe_internal__vis2Tr064Widgets__mf_owner__177553934835196__prebuild___mf_0_mui_mf_1_private_mf_2_theming__prebuild__-huudgrZj.js} +1 -1
  69. package/widgets/tr-064/assets/defineProperty-Ba_vd0xC.js +10 -0
  70. package/widgets/tr-064/assets/{dist-DAUjjciP.js → dist-BkS8HKl2.js} +1 -1
  71. package/widgets/tr-064/assets/{emotion-use-insertion-effect-with-fallbacks.browser.esm-Bsd24U4Y.js → emotion-use-insertion-effect-with-fallbacks.browser.esm-mAEKd7Xg.js} +1 -1
  72. package/widgets/tr-064/assets/helpers-ClFTp7rx.js +1 -0
  73. package/widgets/tr-064/assets/{hostInit-CaekyPEZ.js → hostInit-DiVyQxZ5.js} +1 -1
  74. package/widgets/tr-064/assets/{pendingShares-D9r9YlHr.js → pendingShares-dmF1p6Vs.js} +2 -2
  75. package/widgets/tr-064/assets/translations-Ck6haIQU.js +1 -0
  76. package/{admin/dm-widgets/assets/utils-DEUY4RDL.js → widgets/tr-064/assets/utils-D1AcFl0O.js} +1 -1
  77. package/widgets/tr-064/assets/vite-preload-helper-BbbETgeG.js +1 -0
  78. package/widgets/tr-064/customWidgets.js +2 -2
  79. package/widgets/tr-064/img/prev_tr064_person.png +0 -0
  80. package/widgets/tr-064/mf-manifest.json +1 -1
  81. package/admin/custom/assets/Components-BZCHs6EJ.js +0 -1
  82. package/admin/custom/assets/MeshTopology-BAbAoHI2.js +0 -4
  83. package/admin/custom/assets/_virtual_mf-localSharedImportMap___mfe_internal__ConfigCustomTr064Set__mf_owner__1-Cenjta-f.js +0 -1
  84. package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__259378411809170__loadShare__shared-C-z_ew1q.js +0 -2
  85. package/admin/custom/assets/_virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__259378411809170__prebuild___mf_0_iobroker_mf_1_json_mf_2_config__prebuild__-DEVnYCRU.js +0 -122
  86. package/admin/custom/assets/helpers-B6m49UKI.js +0 -1
  87. package/admin/custom/assets/pendingShares-_Lyy3-xQ.js +0 -2
  88. package/admin/custom/assets/vite-preload-helper-DjNwdemH.js +0 -1
  89. package/admin/dm-widgets/assets/Components-Bh-mXe3F.js +0 -4
  90. package/admin/dm-widgets/assets/helpers-LL3aTdF3.js +0 -1
  91. package/admin/dm-widgets/assets/translations-CZMfeIvV.js +0 -1
  92. package/admin/dm-widgets/assets/vite-preload-helper-DjNwdemH.js +0 -1
  93. package/widgets/tr-064/assets/MeshView-Bi3Tqv5B.js +0 -4
  94. package/widgets/tr-064/assets/Tr064FritzBox-DyWkO-Eq.js +0 -1
  95. package/widgets/tr-064/assets/Tr064Presence-Br3Z1Vay.js +0 -1
  96. package/widgets/tr-064/assets/_virtual_mf___mfe_internal__vis2Tr064Widgets__mf_owner__105226804110546__loadShare__shared-Db_nfl79.js +0 -2
  97. package/widgets/tr-064/assets/_virtual_mf___mfe_internal__vis2Tr064Widgets__mf_owner__105226804110546__prebuild___mf_0_mui_mf_1_material__prebuild__-DxKWlQDg.js +0 -245
  98. package/widgets/tr-064/assets/defineProperty-DeZ0csto.js +0 -10
  99. package/widgets/tr-064/assets/helpers-LL3aTdF3.js +0 -1
  100. package/widgets/tr-064/assets/translations-CqowGBNV.js +0 -1
  101. package/widgets/tr-064/assets/vite-preload-helper-DjNwdemH.js +0 -1
  102. /package/admin/custom/assets/{_virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__259378411809170__prebuild__react_mf_1_jsx_mf_2_runtime__prebuild__-B_v57Qfr.js → _virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__80542807241481__prebuild__react_mf_1_jsx_mf_2_runtime__prebuild__-B_v57Qfr.js} +0 -0
  103. /package/widgets/tr-064/assets/{_virtual_mf___mfe_internal__vis2Tr064Widgets__mf_owner__105226804110546__prebuild__react__prebuild__-BfR62PXi.js → _virtual_mf___mfe_internal__vis2Tr064Widgets__mf_owner__177553934835196__prebuild__react__prebuild__-BfR62PXi.js} +0 -0
  104. /package/widgets/tr-064/assets/{_virtual_mf___mfe_internal__vis2Tr064Widgets__mf_owner__105226804110546__prebuild__react_mf_1_jsx_mf_2_dev_mf_2_runtime__prebuild__-Cbwz_BNS.js → _virtual_mf___mfe_internal__vis2Tr064Widgets__mf_owner__177553934835196__prebuild__react_mf_1_jsx_mf_2_dev_mf_2_runtime__prebuild__-Cbwz_BNS.js} +0 -0
  105. /package/widgets/tr-064/assets/{_virtual_mf___mfe_internal__vis2Tr064Widgets__mf_owner__105226804110546__prebuild__react_mf_1_jsx_mf_2_runtime__prebuild__-ls7Ro8xU.js → _virtual_mf___mfe_internal__vis2Tr064Widgets__mf_owner__177553934835196__prebuild__react_mf_1_jsx_mf_2_runtime__prebuild__-ls7Ro8xU.js} +0 -0
  106. /package/widgets/tr-064/assets/{_virtual_mf___mfe_internal__vis2Tr064Widgets__mf_owner__105226804110546__prebuild__react_mf_2_dom__prebuild__-C80Z9tvh.js → _virtual_mf___mfe_internal__vis2Tr064Widgets__mf_owner__177553934835196__prebuild__react_mf_2_dom__prebuild__-C80Z9tvh.js} +0 -0
  107. /package/widgets/tr-064/assets/{_virtual_mf___mfe_internal__vis2Tr064Widgets__mf_owner__105226804110546__prebuild__react_mf_2_dom_mf_1_client__prebuild__-DIVBnK0o.js → _virtual_mf___mfe_internal__vis2Tr064Widgets__mf_owner__177553934835196__prebuild__react_mf_2_dom_mf_1_client__prebuild__-DIVBnK0o.js} +0 -0
package/README.md CHANGED
@@ -11,7 +11,7 @@
11
11
  [![Downloads](https://img.shields.io/npm/dm/iobroker.tr-064.svg)](https://www.npmjs.com/package/iobroker.tr-064)
12
12
 
13
13
  > [!IMPORTANT]
14
- > This adapter cannot be installed from github
14
+ > This adapter cannot be installed from GitHub
15
15
 
16
16
  **This adapter uses the Sentry libraries. These libraries report exceptions and code errors automatically to the developers.** For more details, and for information about how to switch off the error reporting, see the [documentation of the Sentry plugin](https://github.com/ioBroker/plugin-sentry#plugin-sentry). The Sentry reporting is used from js-controller 3.0 on.
17
17
 
@@ -76,6 +76,28 @@ Users report that the detection also works reliably for iOS devices, for example
76
76
 
77
77
  The ioBroker community has published a script that uses this information of the adapter to trigger actions. Examples are: switch off everything automatically after all persons have left the home, show the number of persons that are at home, or show the status of a person in VIS. See the [thread in the ioBroker forum](https://forum.iobroker.net/topic/4538/anwesenheitscontrol-basierend-auf-tr64-adapter-script) (in German).
78
78
 
79
+ ### Persons, groups, guests (like fb-checkpresence)
80
+
81
+ The tab "Persons" watches persons instead of single devices. Every row is one person with a name, an optional group and the MAC or IP addresses of all its devices, separated by commas (e.g. `AA:BB:CC:DD:EE:FF, 192.168.178.23`). An IP address only works if the Fritz!Box always gives the device the same address ("Always assign this IPv4 address" in the Fritz!Box); a smartphone with a private Wi-Fi address is better watched by IP than by its changing MAC. A person is present as soon as one of its devices is active. Everything is written below `tr-064.0.presence`:
82
+
83
+ | State | Content |
84
+ |----------------------------------------------------------------------|----------------------------------------------------------------------------------------------------|
85
+ | `persons.<name>.present` | `true` while the person is at home |
86
+ | `persons.<name>.lastArrival` / `lastDeparture` | when the person came / left the last time (ms, `0` = not known yet) |
87
+ | `persons.<name>.presentSince` / `absentSince` | minutes since then, `0` in the other state |
88
+ | `persons.<name>.presentToday` / `absentToday` | minutes present / absent since midnight |
89
+ | `persons.<name>.devices` | the active devices of the person |
90
+ | `persons.<name>.history` | the last comings and goings as JSON, the newest first: `[{"ts": 1791799596991, "present": false}]` |
91
+ | `present`, `allPresent` | anybody / everybody is at home |
92
+ | `presentCount`, `absentCount`, `presentNames`, `absentNames`, `json` | who is at home and who is not |
93
+ | `groups.<group>.*` | the same as above for the persons of one group |
94
+ | `guests.present`, `count`, `names`, `json` | active devices of the guest network (option "Detect guests") |
95
+ | `unknown.present`, `count`, `names`, `json` | active devices which are neither in "Devices" nor in "Persons" (option "Detect unknown devices") |
96
+
97
+ A smartphone switches its Wi-Fi off in standby. With "Absent after (min)" a person counts as absent only when all its devices are inactive for these minutes; `lastDeparture` is then the moment the last device went offline. The first reading after the setup is no event: `lastArrival` and `lastDeparture` stay `0` until the person comes or leaves for the first time. Times, sums and the history survive a restart of the adapter.
98
+
99
+ For a longer history, switch on a history instance (history, sql or influxdb) for `persons.<name>.present`, the widgets read the events from there. The objects of a person who is removed from the table are deleted on the next start.
100
+
79
101
  ### Answering machine (in German: `Anrufbeantworter`)
80
102
 
81
103
  You can switch the answering machine on and off. With the state `cbIndex` you select the number of the answering machine.
@@ -136,9 +158,10 @@ vis-2 (widget set "FRITZ!Box"):
136
158
 
137
159
  - **FRITZ!Box** (`Tr064FritzBox`): a tile like in ioBroker.devices with the online state, model, kind of the connection, current download and upload, external IP, WLAN and guest WLAN, new messages and missed calls. It chooses its layout by its size, from a small square to a large card with the use of the line. Optionally the chips of the WLAN and the guest WLAN switch them (`switchWlan`).
138
160
  - **Mesh topology** (`Tr064Mesh`): the mesh topology as a graphic or table which fills the widget, refreshed while it is visible.
139
- - **Presence** (`Tr064Presence`): the configured devices with present/away, access point and band.
161
+ - **Presence** (`Tr064Presence`): the configured devices with present/away, access point and band - or, with "Mode" = persons, the persons of the tab "Persons" (optionally of one group) with since when they are at home or away, and the number of guests.
162
+ - **Person** (`Tr064Person`): one person, selected by its name. Icon, picture and text for present and for absent are free to choose, as well as the colors. It shows since when the person is at home or away, when it came and left the last time, the sums of today and - if the widget is high enough - the last comings and goings. They come from a history instance (history, sql, influxdb) if one logs `present`, otherwise from the state `history` of the adapter.
140
163
 
141
- ioBroker.devices: the widget **FRITZ!Box** can be added to a category in all four sizes (1x1, 2x0.5, 2x1, 2x2); in the settings of the widget the instance of the adapter is selected.
164
+ ioBroker.devices: the widget **FRITZ!Box** can be added to a category in all four sizes (1x1, 2x0.5, 2x1, 2x2); in the settings of the widget the instance of the adapter is selected. The widget **Person** shows one person (selected by its name) with photo or icon, the texts and colors of the settings, since when and the last arrival and departure; a click opens the comings and goings of the last days.
142
165
 
143
166
  The widgets need the states of the adapter version with these widgets (`states.boxModel`, `states.wan*`, ...) and the running instance for the mesh topology.
144
167
 
@@ -198,6 +221,13 @@ If you switch from the adapter tr-064-community, you can copy the complete devic
198
221
  Placeholder for the next version (at the beginning of the line):
199
222
  ### **WORK IN PROGRESS**
200
223
  -->
224
+ ### 5.2.0 (2026-10-12)
225
+ - (@GermanBluefox) New tab "Persons" with the presence of persons, groups, guests and unknown devices below `presence`, like the adapter fb-checkpresence: present, last arrival and departure, present/absent since, the sums of the day and the last comings and goings. A person is watched by MAC or IP addresses
226
+ - (@GermanBluefox) New widget "Person" for vis-2 and `ioBroker.devices`, the person is selected by name; the vis-2 widget "Presence" can list persons
227
+
228
+ ### 5.1.6 (2026-10-07)
229
+ - (@GermanBluefox) The dialogs "Rename device" of the mesh topology and "Reset missed calls" of the widget and the device card show the button "Cancel" on the right side, grey and with a close icon, like everywhere in ioBroker
230
+
201
231
  ### 5.1.5 (2026-10-07)
202
232
  - (@GermanBluefox) Updated packages
203
233
 
@@ -214,43 +244,6 @@ If you switch from the adapter tr-064-community, you can copy the complete devic
214
244
  - (@GermanBluefox) The data rates of the mesh topology were shown as download and upload the wrong way round for every link whose first node is the access point - the FRITZ!Box reports `rx`/`tx` from the view of its own node 1, which is not always the upstream side
215
245
  - (@GermanBluefox) A click on the missed calls of the tiles ("FRITZ!Box" widget of vis-2 and of `ioBroker.devices`) asks whether the counter is reset and sets `calllists.missed.count` to 0. The counter belongs to the adapter, not to the FRITZ!Box - it counts every missed call since the installation, including the complete call list which is read on the first start. The adapter now confirms a written counter right away instead of at the next poll
216
246
 
217
- ### 5.1.1 (2026-09-29)
218
- - (@GermanBluefox) The mesh topology shows the manufacturer of a device below its name. It is resolved from the MAC address with the registries of the IEEE, which the adapter brings with it - no request leaves the network. A device with a randomized (locally administered) address, as many phones use it, is marked as such. The manufacturer can be switched off in the toolbar and in the attributes of the vis-2 widget
219
- - (@GermanBluefox) A device can be renamed in the mesh topology: a click on its name asks for the new name and writes it into the FRITZ!Box (`X_AVM-DE_SetHostNameByMACAddress`), which uses it everywhere. A firmware without that action says so. Note: the objects below `devices` follow the name of the box, as long as the option "Use the configured names" is switched off
220
- - (@GermanBluefox) New message `setHostName` (`sendTo('tr-064.0', 'setHostName', { mac, name })`) which renames a device in the FRITZ!Box
221
-
222
- ### 5.1.0 (2026-09-19)
223
- - (@GermanBluefox) New widgets for vis-2 ("FRITZ!Box", "Mesh topology", "Presence") and for `ioBroker.devices` ("FRITZ!Box"): the state of the box as a tile, a click shows the mesh topology
224
- - (@GermanBluefox) New states `boxModel` and `boxFirmware`
225
- - (@GermanBluefox) The table in the tab "Devices" uses the whole width again: in 5.0.2 it was so narrow that name, IP and MAC could not be read
226
- - (@GermanBluefox) "Search for devices" works with many devices: the adapter reads the list of all devices in one request (`X_AVM-DE_GetHostListPath`) instead of one request per device, which took longer than the 20 seconds of the button. The search is always answered, also when a request fails, the box has no devices or the adapter is not connected
227
- - (@GermanBluefox) Fixed the crash `systemData.save is not a function` on start when a call list is generated: installations which ran an adapter version from 2017 to 2020 still had an invalid attribute `save` in the object `tr-064.<instance>`, which is removed now
228
- - (@GermanBluefox) `wlanGuest` switches the guest WLAN again on boxes with three bands (e.g. FRITZ!Box 5690 Pro, 4060) instead of the third band: the guest WLAN is always the last WLAN configuration of the box
229
- - (@GermanBluefox) New states `wlan60` and `wlan60Password` for the 6 GHz WLAN, and `wlan52` and `wlan52Password` for the second 5 GHz WLAN (e.g. FRITZ!Box 4060). The adapter asks the box which band its third WLAN uses
230
- - (@GermanBluefox) The call lists do not stop updating after some hours anymore: the call monitor detects a connection which the box dropped unnoticed (e.g. by a restart) with TCP keepalive and reconnects, and the call lists are also read once a minute - that way they are updated without call monitor, too
231
- - (@GermanBluefox) A call list download which the box does not answer is given up after 10 seconds with a warning
232
- - (@GermanBluefox) `states.wlan` switches all WLANs like the WLAN button of the FRITZ!Box (`X_AVM-DE_SetWLANGlobalEnable`) and shows its state: switching on does not switch on the guest WLAN and bands which were off any more
233
- - (@GermanBluefox) New states for the internet connection: `wanAccessType` (e.g. `LTE` during a fallback to a mobile connection), `wanLinkStatus`, `wanProvider`, `wanDownstreamMax`, `wanUpstreamMax`, and the traffic `wanBytesSent`, `wanBytesReceived` (64 bit counters), `wanSendRate`, `wanReceiveRate`
234
- - (@GermanBluefox) New states `devices.xxx.accessPoint` and `devices.xxx.connection`: the FRITZ!Box or repeater a device is connected to and the band, read from the mesh topology. The new tab "Mesh" in the settings shows the mesh topology as a graphic. Admin 8 is required now
235
- - (@GermanBluefox) New option "Read the event log of the FRITZ!Box": the complete event log including the logins to the user interface in `deviceLog.json`, new events in `deviceLog.newEvents`
236
- - (@GermanBluefox) New state `callmonitor.connected` shows whether the call monitor is connected, and `callmonitor.*.device` the name of the telephone of a call
237
- - (@GermanBluefox) New table "Phone book per own number": a number which is in several phone books gets its name from the phone book of the own number of the call
238
- - (@GermanBluefox) New option "Write unchanged values too": every polled value is written with a new time stamp
239
- - (@GermanBluefox) A single call forwarding of the FRITZ!Box is shown in `callForwarding` now - before, the states were only created from the second call forwarding on. With only one phone number the name of the number is added to the name of the state again, and a box without call forwardings does not delay the poll cycle by 3 seconds any more
240
- - (@GermanBluefox) The call monitor does not lose events any more when the FRITZ!Box sends two of them in one network packet (e.g. `RING` and `DISCONNECT` of a very short call) or one event in two packets: the received data is split into lines now
241
- - (@GermanBluefox) The call lists do not freeze for good any more when the FRITZ!Box numbers its calls from the beginning again, e.g. after exchanging the box, a factory reset or a restart: the adapter asked only for the calls after the last known call ID and got an empty list forever. It now checks an empty answer against the newest call of the box and builds the lists again from the call list of the box; only calls after the newest known call increase the counters. The meta object `tr-064.<instance>` is only written when the lists changed, not with every refresh
242
- - (@GermanBluefox) New state `states.abNewMessages`: number of new (not yet listened) messages on the answering machines
243
- - (@GermanBluefox) The MAC addresses of the configured devices are sent to the box in its own format `AA:BB:CC:DD:EE:FF`, so addresses entered in lower case, with dashes or without separators are found
244
- - (@GermanBluefox) A configured device which the box does not know (or which is offline since the start) is logged once with a hint to check its MAC address and listed as inactive in `jsonDeviceList`, instead of silently being left out
245
- - (@GermanBluefox) New option "Name the objects after this table" in the tab "Devices": the objects below `devices` get the names of the table instead of the names in the Fritz!Box, so two devices with the same name in the box are not mixed up any more. When the option is switched on, the objects which were created with the name of the box are deleted. mDNS writes into the same objects as the poll now - before it created additional objects with the name of the table
246
- - (@GermanBluefox) A device can have several MAC addresses, separated by commas (e.g. a smartphone with a private Wi-Fi address in the home and the guest Wi-Fi): it is present if one of them is active. Changing the spelling of a MAC address does not delete the objects of the device any more, and "Search for devices" does not add a device of the table a second time
247
- - (@GermanBluefox) A device request which the box does not answer does not stop the presence detection and the polling any more
248
- - (@GermanBluefox) An info message tells when "Create JSON device list" is switched on, but no devices are configured
249
- - (@GermanBluefox) The adapter connects to a FRITZ!Box whose WLAN is switched off: the check of the login used the WLAN, which the box answers with an error then, so the adapter restarted (4.x) or retried forever without creating its objects (5.0). A refused login is reported with a hint to check user, password and rights of the user instead of the advice to restart the box
250
- - (@GermanBluefox) The adapter does not hang silently any more when the FRITZ!Box does not deliver the description of a service (e.g. `x_speedtestSCPD.xml` with FRITZ!OS 8.24 Labor): after 10 seconds the service is skipped with a warning, and the connection is limited to 60 seconds and retried
251
- - (@GermanBluefox) The debug log does not contain sensitive data any more, so it can be shared to analyze problems: phone numbers, names, phone book and call data, host names, MAC and IP addresses, values of states and results of `states.command` are only logged with level `silly`, and the session ID in URLs of the box is never logged. The result of `states.command` is no longer logged with level info - it is still written into `states.commandResult`
252
- - (@GermanBluefox) The call monitor does not stop any more when the FRITZ!Box refuses the connection, e.g. while it restarts after a firmware update: it retries every 60 seconds and reconnects on its own. The hint to open port 1012 with `#96*5*` is only logged if the call monitor was never connected
253
-
254
247
  [Older changelogs can be found there](CHANGELOG_OLD.md)
255
248
 
256
249
  ## License
@@ -1,75 +1,75 @@
1
1
  {
2
- "_MeshTopology-BAbAoHI2.js": {
3
- "file": "assets/MeshTopology-BAbAoHI2.js",
2
+ "_MeshTopology-DdxCvD6W.js": {
3
+ "file": "assets/MeshTopology-DdxCvD6W.js",
4
4
  "name": "MeshTopology",
5
5
  "imports": [
6
- "__virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__259378411809170__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-DdhKfc_O.js",
7
- "__virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__259378411809170__loadShare__shared-C-z_ew1q.js"
6
+ "__virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__80542807241481__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-DwHxH2Tb.js",
7
+ "__virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__80542807241481__loadShare__shared-C3F6xhja.js"
8
8
  ]
9
9
  },
10
- "__virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__259378411809170__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-DdhKfc_O.js": {
11
- "file": "assets/_virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__259378411809170__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-DdhKfc_O.js",
12
- "name": "_virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__259378411809170__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js",
10
+ "__virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__80542807241481__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-DwHxH2Tb.js": {
11
+ "file": "assets/_virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__80542807241481__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-DwHxH2Tb.js",
12
+ "name": "_virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__80542807241481__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js",
13
13
  "imports": [
14
14
  "_rolldown-runtime-Dd_uD5pT.js",
15
- "_vite-preload-helper-DjNwdemH.js"
15
+ "_vite-preload-helper-BbbETgeG.js"
16
16
  ],
17
17
  "dynamicImports": [
18
- "virtual:mf:__mfe_internal__ConfigCustomTr064Set__mf_owner__259378411809170__prebuild__react_mf_1_jsx_mf_2_runtime__prebuild__.js",
18
+ "virtual:mf:__mfe_internal__ConfigCustomTr064Set__mf_owner__80542807241481__prebuild__react_mf_1_jsx_mf_2_runtime__prebuild__.js",
19
19
  "node_modules/@iobroker/gui-components/build/Components/IconLibrary/iconLibraryData.js"
20
20
  ]
21
21
  },
22
- "__virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__259378411809170__loadShare__shared-C-z_ew1q.js": {
23
- "file": "assets/_virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__259378411809170__loadShare__shared-C-z_ew1q.js",
24
- "name": "_virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__259378411809170__loadShare__shared",
22
+ "__virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__80542807241481__loadShare__shared-C3F6xhja.js": {
23
+ "file": "assets/_virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__80542807241481__loadShare__shared-C3F6xhja.js",
24
+ "name": "_virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__80542807241481__loadShare__shared",
25
25
  "imports": [
26
26
  "_rolldown-runtime-Dd_uD5pT.js",
27
- "__virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__259378411809170__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-DdhKfc_O.js",
28
- "_vite-preload-helper-DjNwdemH.js"
27
+ "__virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__80542807241481__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-DwHxH2Tb.js",
28
+ "_vite-preload-helper-BbbETgeG.js"
29
29
  ],
30
30
  "dynamicImports": [
31
- "virtual:mf:__mfe_internal__ConfigCustomTr064Set__mf_owner__259378411809170__prebuild__react_mf_2_dom_mf_1_client__prebuild__.js",
32
- "virtual:mf:__mfe_internal__ConfigCustomTr064Set__mf_owner__259378411809170__prebuild___mf_0_iobroker_mf_1_json_mf_2_config__prebuild__.js"
31
+ "virtual:mf:__mfe_internal__ConfigCustomTr064Set__mf_owner__80542807241481__prebuild__react_mf_2_dom_mf_1_client__prebuild__.js",
32
+ "virtual:mf:__mfe_internal__ConfigCustomTr064Set__mf_owner__80542807241481__prebuild___mf_0_iobroker_mf_1_json_mf_2_config__prebuild__.js"
33
33
  ]
34
34
  },
35
- "_dist-DaURp8MG.js": {
36
- "file": "assets/dist-DaURp8MG.js",
35
+ "_dist-DiU1y0R9.js": {
36
+ "file": "assets/dist-DiU1y0R9.js",
37
37
  "name": "dist",
38
38
  "imports": [
39
- "_utils-sDCNnUxL.js"
39
+ "_utils-towTPKqG.js"
40
40
  ]
41
41
  },
42
- "_helpers-B6m49UKI.js": {
43
- "file": "assets/helpers-B6m49UKI.js",
42
+ "_helpers-Dot7vgQQ.js": {
43
+ "file": "assets/helpers-Dot7vgQQ.js",
44
44
  "name": "helpers",
45
45
  "imports": [
46
- "_utils-sDCNnUxL.js"
46
+ "_utils-towTPKqG.js"
47
47
  ]
48
48
  },
49
49
  "_rolldown-runtime-Dd_uD5pT.js": {
50
50
  "file": "assets/rolldown-runtime-Dd_uD5pT.js",
51
51
  "name": "rolldown-runtime"
52
52
  },
53
- "_utils-sDCNnUxL.js": {
54
- "file": "assets/utils-sDCNnUxL.js",
53
+ "_utils-towTPKqG.js": {
54
+ "file": "assets/utils-towTPKqG.js",
55
55
  "name": "utils",
56
56
  "imports": [
57
- "_vite-preload-helper-DjNwdemH.js"
57
+ "_vite-preload-helper-BbbETgeG.js"
58
58
  ]
59
59
  },
60
- "_vite-preload-helper-DjNwdemH.js": {
61
- "file": "assets/vite-preload-helper-DjNwdemH.js",
60
+ "_vite-preload-helper-BbbETgeG.js": {
61
+ "file": "assets/vite-preload-helper-BbbETgeG.js",
62
62
  "name": "vite-preload-helper"
63
63
  },
64
64
  "index.html": {
65
- "file": "assets/index-CWQ2FLQK.js",
65
+ "file": "assets/index-BCltTN89.js",
66
66
  "name": "index",
67
67
  "src": "index.html",
68
68
  "isEntry": true,
69
69
  "imports": [
70
- "__virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__259378411809170__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-DdhKfc_O.js",
71
- "__virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__259378411809170__loadShare__shared-C-z_ew1q.js",
72
- "_MeshTopology-BAbAoHI2.js"
70
+ "__virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__80542807241481__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-DwHxH2Tb.js",
71
+ "__virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__80542807241481__loadShare__shared-C3F6xhja.js",
72
+ "_MeshTopology-DdxCvD6W.js"
73
73
  ]
74
74
  },
75
75
  "node_modules/@iobroker/gui-components/build/Components/IconLibrary/iconLibraryData.js": {
@@ -79,22 +79,22 @@
79
79
  "isDynamicEntry": true
80
80
  },
81
81
  "node_modules/react-qr-code/lib/index.mjs": {
82
- "file": "assets/lib-Bz6IScan.js",
82
+ "file": "assets/lib-C0xNRO2P.js",
83
83
  "name": "lib",
84
84
  "src": "node_modules/react-qr-code/lib/index.mjs",
85
85
  "isDynamicEntry": true,
86
86
  "imports": [
87
87
  "_rolldown-runtime-Dd_uD5pT.js",
88
- "__virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__259378411809170__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-DdhKfc_O.js"
88
+ "__virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__80542807241481__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-DwHxH2Tb.js"
89
89
  ]
90
90
  },
91
91
  "src/Components.tsx": {
92
- "file": "assets/Components-BZCHs6EJ.js",
92
+ "file": "assets/Components-DnyXLngv.js",
93
93
  "name": "Components",
94
94
  "src": "src/Components.tsx",
95
95
  "isEntry": true,
96
96
  "imports": [
97
- "_MeshTopology-BAbAoHI2.js"
97
+ "_MeshTopology-DdxCvD6W.js"
98
98
  ]
99
99
  },
100
100
  "virtual:mf-REMOTE_ENTRY_ID:__mfe_internal__ConfigCustomTr064Set__customComponents_js": {
@@ -102,9 +102,9 @@
102
102
  "name": "remoteEntry",
103
103
  "src": "virtual:mf-REMOTE_ENTRY_ID:__mfe_internal__ConfigCustomTr064Set__customComponents_js",
104
104
  "imports": [
105
- "_vite-preload-helper-DjNwdemH.js",
106
- "_dist-DaURp8MG.js",
107
- "_helpers-B6m49UKI.js"
105
+ "_vite-preload-helper-BbbETgeG.js",
106
+ "_dist-DiU1y0R9.js",
107
+ "_helpers-Dot7vgQQ.js"
108
108
  ],
109
109
  "dynamicImports": [
110
110
  "src/Components.tsx",
@@ -112,28 +112,28 @@
112
112
  ]
113
113
  },
114
114
  "virtual:mf-localSharedImportMap:__mfe_internal__ConfigCustomTr064Set__mf_owner__1": {
115
- "file": "assets/_virtual_mf-localSharedImportMap___mfe_internal__ConfigCustomTr064Set__mf_owner__1-Cenjta-f.js",
115
+ "file": "assets/_virtual_mf-localSharedImportMap___mfe_internal__ConfigCustomTr064Set__mf_owner__1-C-7VEH2M.js",
116
116
  "name": "_virtual_mf-localSharedImportMap___mfe_internal__ConfigCustomTr064Set__mf_owner__1",
117
117
  "src": "virtual:mf-localSharedImportMap:__mfe_internal__ConfigCustomTr064Set__mf_owner__1",
118
118
  "isDynamicEntry": true,
119
119
  "imports": [
120
- "_vite-preload-helper-DjNwdemH.js",
121
- "_dist-DaURp8MG.js"
120
+ "_vite-preload-helper-BbbETgeG.js",
121
+ "_dist-DiU1y0R9.js"
122
122
  ],
123
123
  "dynamicImports": [
124
- "__virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__259378411809170__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-DdhKfc_O.js",
125
- "virtual:mf:__mfe_internal__ConfigCustomTr064Set__mf_owner__259378411809170__prebuild__react_mf_1_jsx_mf_2_runtime__prebuild__.js",
126
- "virtual:mf:__mfe_internal__ConfigCustomTr064Set__mf_owner__259378411809170__prebuild__react_mf_2_dom_mf_1_client__prebuild__.js",
127
- "virtual:mf:__mfe_internal__ConfigCustomTr064Set__mf_owner__259378411809170__prebuild___mf_0_iobroker_mf_1_json_mf_2_config__prebuild__.js"
124
+ "__virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__80542807241481__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-DwHxH2Tb.js",
125
+ "virtual:mf:__mfe_internal__ConfigCustomTr064Set__mf_owner__80542807241481__prebuild__react_mf_1_jsx_mf_2_runtime__prebuild__.js",
126
+ "virtual:mf:__mfe_internal__ConfigCustomTr064Set__mf_owner__80542807241481__prebuild__react_mf_2_dom_mf_1_client__prebuild__.js",
127
+ "virtual:mf:__mfe_internal__ConfigCustomTr064Set__mf_owner__80542807241481__prebuild___mf_0_iobroker_mf_1_json_mf_2_config__prebuild__.js"
128
128
  ]
129
129
  },
130
130
  "virtual:mf:__mfe_internal__ConfigCustomTr064Set__mf_owner__1__H_A_I__hostAutoInit__H_A_I__.js": {
131
- "file": "assets/hostInit-C4-y6noJ.js",
131
+ "file": "assets/hostInit-C9ukT_fL.js",
132
132
  "name": "hostInit",
133
133
  "src": "virtual:mf:__mfe_internal__ConfigCustomTr064Set__mf_owner__1__H_A_I__hostAutoInit__H_A_I__.js",
134
134
  "imports": [
135
- "_vite-preload-helper-DjNwdemH.js",
136
- "_helpers-B6m49UKI.js"
135
+ "_vite-preload-helper-BbbETgeG.js",
136
+ "_helpers-Dot7vgQQ.js"
137
137
  ],
138
138
  "dynamicImports": [
139
139
  "virtual:mf-REMOTE_ENTRY_ID:__mfe_internal__ConfigCustomTr064Set__customComponents_js",
@@ -141,50 +141,50 @@
141
141
  ]
142
142
  },
143
143
  "virtual:mf:__mfe_internal__ConfigCustomTr064Set__mf_owner__1__P_S__pendingShares__P_S__.js": {
144
- "file": "assets/pendingShares-_Lyy3-xQ.js",
144
+ "file": "assets/pendingShares-CJcHAY7c.js",
145
145
  "name": "pendingShares",
146
146
  "src": "virtual:mf:__mfe_internal__ConfigCustomTr064Set__mf_owner__1__P_S__pendingShares__P_S__.js",
147
147
  "imports": [
148
- "_vite-preload-helper-DjNwdemH.js"
148
+ "_vite-preload-helper-BbbETgeG.js"
149
149
  ],
150
150
  "dynamicImports": [
151
- "__virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__259378411809170__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-DdhKfc_O.js",
152
- "__virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__259378411809170__loadShare__shared-C-z_ew1q.js",
151
+ "__virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__80542807241481__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-DwHxH2Tb.js",
152
+ "__virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__80542807241481__loadShare__shared-C3F6xhja.js",
153
153
  "virtual:mf-localSharedImportMap:__mfe_internal__ConfigCustomTr064Set__mf_owner__1"
154
154
  ]
155
155
  },
156
- "virtual:mf:__mfe_internal__ConfigCustomTr064Set__mf_owner__259378411809170__prebuild___mf_0_iobroker_mf_1_json_mf_2_config__prebuild__.js": {
157
- "file": "assets/_virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__259378411809170__prebuild___mf_0_iobroker_mf_1_json_mf_2_config__prebuild__-DEVnYCRU.js",
158
- "name": "_virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__259378411809170__prebuild___mf_0_iobroker_mf_1_json_mf_2_config__prebuild__",
159
- "src": "virtual:mf:__mfe_internal__ConfigCustomTr064Set__mf_owner__259378411809170__prebuild___mf_0_iobroker_mf_1_json_mf_2_config__prebuild__.js",
156
+ "virtual:mf:__mfe_internal__ConfigCustomTr064Set__mf_owner__80542807241481__prebuild___mf_0_iobroker_mf_1_json_mf_2_config__prebuild__.js": {
157
+ "file": "assets/_virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__80542807241481__prebuild___mf_0_iobroker_mf_1_json_mf_2_config__prebuild__-B5JQBr75.js",
158
+ "name": "_virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__80542807241481__prebuild___mf_0_iobroker_mf_1_json_mf_2_config__prebuild__",
159
+ "src": "virtual:mf:__mfe_internal__ConfigCustomTr064Set__mf_owner__80542807241481__prebuild___mf_0_iobroker_mf_1_json_mf_2_config__prebuild__.js",
160
160
  "isDynamicEntry": true,
161
161
  "imports": [
162
162
  "_rolldown-runtime-Dd_uD5pT.js",
163
- "__virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__259378411809170__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-DdhKfc_O.js",
164
- "_vite-preload-helper-DjNwdemH.js",
165
- "_dist-DaURp8MG.js"
163
+ "__virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__80542807241481__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-DwHxH2Tb.js",
164
+ "_vite-preload-helper-BbbETgeG.js",
165
+ "_dist-DiU1y0R9.js"
166
166
  ],
167
167
  "dynamicImports": [
168
168
  "node_modules/react-qr-code/lib/index.mjs"
169
169
  ]
170
170
  },
171
- "virtual:mf:__mfe_internal__ConfigCustomTr064Set__mf_owner__259378411809170__prebuild__react_mf_1_jsx_mf_2_runtime__prebuild__.js": {
172
- "file": "assets/_virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__259378411809170__prebuild__react_mf_1_jsx_mf_2_runtime__prebuild__-B_v57Qfr.js",
173
- "name": "_virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__259378411809170__prebuild__react_mf_1_jsx_mf_2_runtime__prebuild__",
174
- "src": "virtual:mf:__mfe_internal__ConfigCustomTr064Set__mf_owner__259378411809170__prebuild__react_mf_1_jsx_mf_2_runtime__prebuild__.js",
171
+ "virtual:mf:__mfe_internal__ConfigCustomTr064Set__mf_owner__80542807241481__prebuild__react_mf_1_jsx_mf_2_runtime__prebuild__.js": {
172
+ "file": "assets/_virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__80542807241481__prebuild__react_mf_1_jsx_mf_2_runtime__prebuild__-B_v57Qfr.js",
173
+ "name": "_virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__80542807241481__prebuild__react_mf_1_jsx_mf_2_runtime__prebuild__",
174
+ "src": "virtual:mf:__mfe_internal__ConfigCustomTr064Set__mf_owner__80542807241481__prebuild__react_mf_1_jsx_mf_2_runtime__prebuild__.js",
175
175
  "isDynamicEntry": true,
176
176
  "imports": [
177
177
  "_rolldown-runtime-Dd_uD5pT.js"
178
178
  ]
179
179
  },
180
- "virtual:mf:__mfe_internal__ConfigCustomTr064Set__mf_owner__259378411809170__prebuild__react_mf_2_dom_mf_1_client__prebuild__.js": {
181
- "file": "assets/_virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__259378411809170__prebuild__react_mf_2_dom_mf_1_client__prebuild__-BInMjdwk.js",
182
- "name": "_virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__259378411809170__prebuild__react_mf_2_dom_mf_1_client__prebuild__",
183
- "src": "virtual:mf:__mfe_internal__ConfigCustomTr064Set__mf_owner__259378411809170__prebuild__react_mf_2_dom_mf_1_client__prebuild__.js",
180
+ "virtual:mf:__mfe_internal__ConfigCustomTr064Set__mf_owner__80542807241481__prebuild__react_mf_2_dom_mf_1_client__prebuild__.js": {
181
+ "file": "assets/_virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__80542807241481__prebuild__react_mf_2_dom_mf_1_client__prebuild__-D8dfJFpB.js",
182
+ "name": "_virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__80542807241481__prebuild__react_mf_2_dom_mf_1_client__prebuild__",
183
+ "src": "virtual:mf:__mfe_internal__ConfigCustomTr064Set__mf_owner__80542807241481__prebuild__react_mf_2_dom_mf_1_client__prebuild__.js",
184
184
  "isDynamicEntry": true,
185
185
  "imports": [
186
186
  "_rolldown-runtime-Dd_uD5pT.js",
187
- "__virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__259378411809170__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-DdhKfc_O.js"
187
+ "__virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__80542807241481__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-DwHxH2Tb.js"
188
188
  ]
189
189
  }
190
190
  }
@@ -0,0 +1 @@
1
+ import{t as e}from"./MeshTopology-DdxCvD6W.js";var t={MeshTopology:e};export{t as default};
@@ -0,0 +1,4 @@
1
+ import{$t as e,An as t,Bi as n,Bn as r,C as i,Cn as a,Dn as o,Dt as s,E as c,En as l,F as u,G as d,H as f,Hi as p,Hn as m,Ht as h,It as g,Jt as _,Mn as ee,Mt as v,O as y,On as b,Ot as x,Pn as S,Qn as C,Qt as w,R as te,Ri as ne,Rn as T,Rt as E,Tn as D,U as O,Ui as k,V as re,Xt as A,Yt as ie,Zn as j,_n as M,bi as N,bn as ae,bt as P,ct as F,d as I,dn as L,dt as oe,en as se,fn as ce,gt as R,jt as le,kn as ue,kt as de,ln as fe,lt as pe,mn as me,nn as he,pn as ge,qn as _e,qr as z,qt as ve,rn as ye,tn as be,un as xe,vi as Se,yi as B,yn as Ce,zn as we}from"./_virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__80542807241481__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-DwHxH2Tb.js";import{t as Te}from"./_virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__80542807241481__loadShare__shared-C3F6xhja.js";function V(e){if(!e)return`other`;if(e.band)return e.band;let t=(e.interface||``).toUpperCase();return/(^|:)2(G|,4|\.4)/.test(t)?`2.4`:/(^|:)5G/.test(t)?`5`:/(^|:)6G/.test(t)?`6`:(e.type||``).toUpperCase()===`LAN`||t.startsWith(`LAN`)||t.startsWith(`ETH`)?`LAN`:`other`}function H(e){return!!e&&(e.state||``).toUpperCase()===`CONNECTED`}function U(e,t){return e?!H(e)&&H(t)?t:e:t}function W(e){return e.configured||e.name||e.mac||e.uid}function Ee(e,t){return!!e.node.configured==!!t.node.configured?e.connected===t.connected?W(e.node).localeCompare(W(t.node)):e.connected?-1:1:e.node.configured?-1:1}function De(e){return{...e,from:e.to,to:e.from,curDown:e.curUp,curUp:e.curDown,maxDown:e.maxUp,maxUp:e.maxDown,rcpiFrom:e.rcpiTo,rcpiTo:e.rcpiFrom,rsniFrom:e.rsniTo,rsniTo:e.rsniFrom}}function G(e){return(e==null?void 0:e.rcpiTo)??(e==null?void 0:e.rcpiFrom)}function Oe(e){return e>=-60?4:e>=-70?3:e>=-80?2:1}function ke(e,t){let n=(e==null?void 0:e.nodes)||[],r=(e==null?void 0:e.links)||[],i=new Map;n.forEach(e=>i.set(e.uid,e));let a=e=>{var t;let n=(t=i.get(e))==null?void 0:t.role;return!!n&&n!==`client`},o=new Map,s=new Map;for(let e of r)i.has(e.from)&&i.has(e.to)&&e.from!==e.to&&(a(e.from)&&a(e.to)?o.set(e.to,U(o.get(e.to),e)):a(e.from)?s.set(e.to,U(s.get(e.to),e)):a(e.to)&&s.set(e.from,U(s.get(e.from),De(e))));let c=n.filter(e=>e.role!==`client`);c.forEach(e=>e.role===`master`&&o.delete(e.uid));let l=new Map;c.forEach(e=>l.set(e.uid,{node:e,uplink:o.get(e.uid),clients:[],children:[]}));let u=0,d=[],f=[];for(let e of n){var p;if(e.role!==`client`)continue;u++;let n=s.get(e.uid),r=H(n);if(t.onlyConfigured&&!e.configured||!r&&!t.showDisconnected&&!e.configured)continue;let i={node:e,link:n,connected:r},a=n?l.get(n.from):void 0;a?a.clients.push(i):d.push(i);let o=n?V(n):``;f.push({uid:e.uid,name:W(e),hostName:e.name,vendor:e.vendor,randomMac:e.randomMac,configured:!!e.configured,accessPoint:(a==null||(p=a.node)==null?void 0:p.name)||``,kind:o,type:(n==null?void 0:n.type)||``,connected:r,curDown:n==null?void 0:n.curDown,curUp:n==null?void 0:n.curUp,rcpi:G(n),position:e.position,deviceClass:e.deviceClass,lastConnected:r||n==null?void 0:n.lastConnected,mac:e.mac,ip:e.ip})}l.forEach(e=>e.clients.sort(Ee)),d.sort(Ee),f.sort((e,t)=>e.configured===t.configured?e.connected===t.connected?e.name.localeCompare(t.name):e.connected?-1:1:e.configured?-1:1);let m=[...c].sort((e,t)=>{let n=e=>e.role===`master`?0:e.role===`slave`?1:2;return n(e)-n(t)||e.name.localeCompare(t.name)}),h=new Set,g=[],_=e=>{h.add(e.node.uid);for(let n of m){var t;let r=l.get(n.uid);!h.has(n.uid)&&((t=r.uplink)==null?void 0:t.from)===e.node.uid&&(e.children.push(r),_(r))}};for(let e of m){let t=l.get(e.uid),n=t.uplink&&l.get(t.uplink.from);!h.has(e.uid)&&(!n||e.role===`master`)&&(g.push(t),_(t))}for(let e of m)if(!h.has(e.uid)){let t=l.get(e.uid);g.push(t),_(t)}return{roots:g,unassigned:d,rows:f,total:u}}function K(e,t){return t&&Ae(e)?56:40}function Ae(e){return e.clients.some(e=>e.connected&&G(e.link)!==void 0)}function je(e){return e<=8?1:e<=20?2:e<=48?3:4}function Me(e,t,n){let r=Math.ceil(e/t);return 60+(e?r*(n+6)-6+10:0)}function Ne(e,t=!1){let n=[],r=[],i=new Map,a=e=>{let n=e.clients.length,r=je(n);return{w:Math.max(240,r*340+(r-1)*6+20),h:Me(n,r,K(e,t)),columns:r}},o=e=>{let t=a(e).w,n=e.children.reduce((e,t)=>e+o(t),0),r=Math.max(t,n+32*Math.max(0,e.children.length-1));return i.set(e,r),r},s=0,c=(e,o,l)=>{let u=a(e),d=i.get(e),f={view:e,x:o+(d-u.w)/2,y:l,w:u.w,h:u.h,columns:u.columns,chipW:340,chipH:K(e,t)};n.push(f),s=Math.max(s,l+u.h);let p=o+(d-(e.children.reduce((e,t)=>e+i.get(t),0)+32*Math.max(0,e.children.length-1)))/2;for(let t of e.children){let e=c(t,p,l+u.h+76);if(t.uplink){let n=f.x+f.w/2,i=f.y+f.h,a=e.x+e.w/2,o=e.y,s=i+(o-i)/2;r.push({link:t.uplink,d:`M ${n} ${i} V ${s} H ${a} V ${o}`,labelX:a+6,labelY:o-10})}p+=i.get(t)+32}return f},l=16;for(let t of e)o(t),c(t,l,16),l+=i.get(t)+64;return{kind:`tree`,cards:n,edges:r,width:Math.max(l-64+16,0),height:s+16}}function Pe(e,t,n=!1){let r=[],i=[],a=8,o=(e,s)=>{let c=8+s*22,l=Math.max(232,t-8-c),u=l-20,d=e.clients.length,f=Math.max(1,Math.min(d||1,Math.floor((u+6)/218))),p=Math.min(420,(u-(f-1)*6)/f),m=K(e,n),h={view:e,x:c,y:a,w:l,h:Me(d,f,m),columns:f,chipW:p,chipH:m};r.push(h),a+=h.h+30;let g=h.x+11,_=h.y+h.h;for(let t of e.children){let e=o(t,s+1);if(t.uplink){let n=e.y+24;i.push({link:t.uplink,d:`M ${g} ${_} V ${n} H ${e.x}`,labelX:e.x+4,labelY:e.y-8}),_=n}}return h};for(let t of e)o(t,0);return{kind:`stack`,cards:r,edges:i,width:t,height:Math.max(a-30+8,0)}}function Fe(e,t,n=!1){let r=Ne(e,n);return r.width<=t?r:Pe(e,t,n)}function q(e,t,n=!1){return Math.max(3,Math.floor(e/(t*(n?.62:.56))))}function J(e,t){return e.length>t?`${e.substring(0,Math.max(1,t-1))}…`:e}function Y(e){if(!e)return`–`;let t=e/1e3;return t>=10?Math.round(t).toString():t.toFixed(1)}var Ie={COMPUTER:te,STORAGE:w,SMARTPHONE:_,TABLET:se,GAMING_DEVICE:A,SET_TOP_BOX:ye,PRINTER:v,NETWORK_SWITCH:pe,SPEAKER:ie,ROBOT:ve,PHONE:s,IP_PHONE:x,CIRCUIT_BOARD:re,CAMERA:i,DOOR_LOCK:R,DOOR_BELL:O,SHUTTER:c,AIR_CONDITIONER:F,LAMP:oe,THERMOSTAT:be,BUTTON:he,SOCKET:le,SENSOR:h,MONITOR:P,SMART_WATCH:y,ROUTER:E};function Le(e){return e&&Ie[e]||f}function Re(e){let t=Le(e.deviceClass);return B(t,{x:e.x,y:e.y,width:e.size,height:e.size,sx:{width:e.size,height:e.size,color:e.color}})}var ze=`not alive`,Be=`not connected`,Ve=`not supported`,X=`timeout`;async function He(e,t,n=2e4){try{let r=await e.getState(`system.adapter.${t}.alive`);if(!(r!=null&&r.val))return{error:ze,nodes:[],links:[]};let i,a=new Promise(e=>{i=setTimeout(()=>e(X),n)}),o=e.sendTo(t,`mesh`,{}),s=await Promise.race([o,a]);return clearTimeout(i),s===`timeout`||!s||typeof s!=`object`?{error:X,nodes:[],links:[]}:{error:s.error,ts:s.ts,nodes:Array.isArray(s.nodes)?s.nodes:[],links:Array.isArray(s.links)?s.links:[],canRename:!!s.canRename}}catch(e){return{error:(e==null?void 0:e.message)||String(e),nodes:[],links:[]}}}async function Ue(e,t,n,r,i=2e4){try{let a=await e.getState(`system.adapter.${t}.alive`);if(!(a!=null&&a.val))return ze;let o,s=new Promise(e=>{o=setTimeout(()=>e(X),i)}),c=e.sendTo(t,`setHostName`,{mac:n,name:r}),l=await Promise.race([c,s]);return clearTimeout(o),l===`timeout`||!l||typeof l!=`object`?X:l.error||void 0}catch(e){return(e==null?void 0:e.message)||String(e)}}var We=class{constructor(e){z(this,`options`,void 0),z(this,`timer`,null),z(this,`running`,!1),z(this,`stopped`,!0),z(this,`current`,{data:null,loading:!1,error:null}),this.options=e}get state(){return this.current}start(){this.stop(),this.stopped=!1,this.refresh();let e=this.options.interval??30;e>0&&(this.timer=setInterval(()=>void this.refresh(),e*1e3))}stop(){this.stopped=!0,this.timer&&=(clearInterval(this.timer),null)}async refresh(){if(this.running||this.stopped)return;this.running=!0,this.update({loading:!0});let e=await He(this.options.socket,this.options.instanceId,this.options.timeout);this.running=!1,!this.stopped&&(e.error?e.error===`not alive`?this.update({data:null,loading:!1,error:e.error}):this.update({loading:!1,error:e.error}):this.update({data:e,loading:!1,error:null}))}async rename(e,t){let n=await Ue(this.options.socket,this.options.instanceId,e,t,this.options.timeout);return!n&&!this.stopped&&await this.refresh(),n}update(e){this.current={...this.current,...e},this.stopped||this.options.onChange(this.current)}},Z={2.4:`#f59e0b`,5:`#3b82f6`,6:`#8b5cf6`,LAN:`#10b981`,other:`#9ca3af`},Ge=13,Ke=26,qe=16,Je=63,Ye=600,Xe=63,Ze=760,Qe=480;function $e(e){let t={onlyConfigured:!1,showDisconnected:!1,showVendor:!0,viewMode:`graph`};try{let n=JSON.parse(window.localStorage.getItem(e)||`{}`);t.onlyConfigured=!!n.onlyConfigured,t.showDisconnected=!!n.showDisconnected,t.showVendor=n.showVendor!==!1,t.viewMode=n.viewMode===`table`?`table`:`graph`}catch{}return t}function et(e,t){try{window.localStorage.setItem(e,JSON.stringify(t))}catch{}}function Q(e,t){return e.vendor||(e.randomMac?t(`tr064_randomMac`):``)}function $(e){switch(e){case`2.4`:case`5`:case`6`:return`${e} GHz`;case`LAN`:return`LAN`;default:return``}}function tt(e,t){switch(e){case ze:return{severity:`info`,text:t(`tr064_startInstance`)};case Be:return{severity:`warning`,text:t(`tr064_notConnected`)};case Ve:return{severity:`warning`,text:t(`tr064_notSupported`)};case X:return{severity:`warning`,text:t(`tr064_timeout`)};default:return{severity:`warning`,text:t(`tr064_error`,e)}}}function nt(e){return e.connected&&(e.curDown||e.curUp)?`↓ ${Y(e.curDown)} / ↑ ${Y(e.curUp)}`:``}var rt=`#ef4444`;function it(e,t,n){return Oe(t)===1||n===`too_far`?rt:Z[e||`other`]}function at(e){let t=Oe(e.rcpi);return B(`g`,{transform:`translate(${e.x}, ${e.y})`,children:[0,1,2,3].map(n=>{let r=3+n*2.5;return B(`rect`,{x:n*3.3,y:-r,width:2.4,height:r,rx:.8,fill:e.color,opacity:n<t?1:.22},n)})})}function ot(e){return e===void 0?``:`${e} dBm`}function st(e,t){return e?t(`tr064_lastSeen`,new Date(e).toLocaleString()):``}function ct(e,t,n){let r=[];return((e==null?void 0:e.rcpiTo)!==void 0||(e==null?void 0:e.rcpiFrom)!==void 0)&&r.push(n(`tr064_signalTooltip`,e.rcpiTo===void 0?`–`:String(e.rcpiTo),e.rcpiFrom===void 0?`–`:String(e.rcpiFrom))),((e==null?void 0:e.rsniTo)!==void 0||(e==null?void 0:e.rsniFrom)!==void 0)&&r.push(n(`tr064_noiseTooltip`,e.rsniTo===void 0?`–`:String(e.rsniTo),e.rsniFrom===void 0?`–`:String(e.rsniFrom))),(t===`too_far`||t===`too_close`)&&r.push(n(`tr064_position_${t}`)),r}function lt(e){return B(D,{component:`span`,sx:{display:`inline-block`,flexShrink:0,width:10,height:10,borderRadius:`2px`,backgroundColor:Z[e.kind]}})}function ut(){return B(D,{sx:{display:`flex`,gap:1.5,alignItems:`center`,flexWrap:`wrap`},children:[`2.4`,`5`,`6`,`LAN`].map(e=>N(D,{sx:{display:`flex`,alignItems:`center`,gap:.5},children:[B(lt,{kind:e}),B(a,{variant:`caption`,children:$(e)})]},e))})}function dt(e,t,n,r){var i;let a=V(e.link),o=((i=e.link.state)==null?void 0:i.toUpperCase())===`CONNECTED`,s=[$(a)||e.link.type,o&&e.link.curDown?`${Y(e.link.curDown)} Mbit/s`:``].filter(Boolean).join(` · `),c=[`${e.link.interface||e.link.type} - ${r(o?`tr064_connected`:`tr064_disconnected`)}`,e.link.curDown||e.link.curUp?r(`tr064_rateTooltip`,Y(e.link.curDown),Y(e.link.curUp)):``,...ct(e.link,void 0,r),o?``:st(e.link.lastConnected,r)].filter(Boolean);return N(`g`,{children:[B(`title`,{children:c.join(`
2
+ `)}),B(`path`,{d:e.d,fill:`none`,stroke:Z[a],strokeWidth:2.5,strokeDasharray:o?void 0:`6 4`}),B(`text`,{x:e.labelX,y:e.labelY,fontSize:11,fill:n.palette.text.secondary,children:s})]},`edge-${t}`)}function ft(e,t,n,r){let i=t.palette,a=e.view.node,o=a?a.name||a.mac:n(`tr064_notAssigned`),s=a?n(`tr064_role_${a.role}`):``,c=a!=null&&a.model&&a.model!==a.name?a.model:``,u=a&&r.showVendor?Q(a,n):``,d=[c||u,(a==null?void 0:a.ip)||``,s].filter(Boolean).join(` · `),f=a&&a.role!==`master`&&a.mac&&r.onRename?a.uid:``,p=e.view.clients.length,m=p===1?n(`tr064_oneDevice`):p?n(`tr064_devices`,p):``,h=q(e.w-20-(m?m.length*6.2+8:0),14,!0),g=q(e.w-20,11);return N(`g`,{transform:`translate(${e.x}, ${e.y})`,children:[B(`title`,{children:[o,a==null?void 0:a.model,a?Q(a,n):``,a==null?void 0:a.mac,a==null?void 0:a.ip,f?n(`tr064_clickToRename`):``].filter(Boolean).join(`
3
+ `)}),B(`rect`,{width:e.w,height:e.h,rx:8,fill:i.background.paper,stroke:(a==null?void 0:a.role)===`master`?i.primary.main:i.divider,strokeWidth:(a==null?void 0:a.role)===`master`?2:1,strokeDasharray:a?void 0:`5 4`}),B(`text`,{x:10,y:24,fontSize:14,fontWeight:600,fill:i.text.primary,style:f?{cursor:`pointer`}:void 0,onClick:f?()=>r.onRename(f):void 0,children:J(o,h)}),B(`text`,{x:10,y:42,fontSize:11,fill:i.text.secondary,children:J(d,g)}),B(`text`,{x:e.w-10,y:24,fontSize:11,textAnchor:`end`,fill:i.text.secondary,children:m}),e.view.clients.map((t,a)=>{var o;let s=a%e.columns,c=Math.floor(a/e.columns),u=10+s*(e.chipW+6),d=60+c*(e.chipH+6),f=V(t.link),p=!!t.node.configured,m=t.node.configured||t.node.name||t.node.mac,h=r.showVendor?Q(t.node,n):``,g=e.chipH>=56&&!!h,_=t.connected?G(t.link):void 0,ee=Math.max($(f)?34:0,_===void 0?0:Je),v=e.chipW-47-ee-6,y=_===void 0?e.chipW-47-8:v,b=t.node.ip?`IP: ${t.node.ip}`:``,x=!g&&b&&h?b.length*5.7+10:0,S=_===void 0?``:it(f,_,t.node.position),C=[p?n(`tr064_configuredAs`,t.node.configured):``,t.node.name,Q(t.node,n),t.node.mac,t.node.ip,t.link?t.link.interface||t.link.type:``,t.connected?n(`tr064_connected`):n(`tr064_disconnected`),t.link&&(t.link.curDown||t.link.curUp)?n(`tr064_rateTooltip`,Y(t.link.curDown),Y(t.link.curUp)):``,...t.connected?ct(t.link,t.node.position,n):[],t.connected?``:st((o=t.link)==null?void 0:o.lastConnected,n),r.onRename?n(`tr064_clickToRename`):``].filter(Boolean);return N(`g`,{transform:`translate(${u}, ${d})`,opacity:t.connected?1:p?.85:.6,style:r.onRename?{cursor:`pointer`}:void 0,onClick:r.onRename?()=>r.onRename(t.node.uid):void 0,children:[B(`title`,{children:C.join(`
4
+ `)}),B(`rect`,{width:e.chipW,height:e.chipH,rx:7,fill:i.action.hover,stroke:p?i.primary.main:i.divider,strokeWidth:p?2:1,strokeDasharray:t.connected?void 0:`4 3`}),B(`path`,{d:`M 7 0.5 H 7 A 6.5 6.5 0 0 0 0.5 7 V ${e.chipH-7} A 6.5 6.5 0 0 0 7 ${e.chipH-.5} V 0.5 Z`,fill:Z[f]}),B(`rect`,{x:Ge,y:(e.chipH-Ke)/2,width:Ke,height:Ke,rx:6,fill:l(Z[f],.14)}),B(Re,{deviceClass:t.node.deviceClass,x:18,y:(e.chipH-qe)/2,size:qe,color:Z[f]}),B(`text`,{x:47,y:g?19:17,fontSize:12.5,fontWeight:p?700:600,fill:p?i.primary.main:i.text.primary,children:J(m,q(v,12.5,!0))}),h?B(`text`,{x:47,y:g?34:31,fontSize:10,fontStyle:`italic`,opacity:.75,fill:i.text.secondary,children:J(h,q(y-x,10))}):null,b?B(`text`,{x:x?47+y:47,y:g?48:31,fontSize:10,textAnchor:x?`end`:`start`,fill:i.text.secondary,children:J(b,q(y,10))}):null,B(`text`,{x:e.chipW-8,y:g?19:16,fontSize:10,textAnchor:`end`,fill:i.text.secondary,children:$(f)}),_===void 0?null:N(Se,{children:[B(at,{rcpi:_,x:e.chipW-8-Je,y:g?41:34,color:S}),B(`text`,{x:e.chipW-8,y:g?41:34,fontSize:10.5,textAnchor:`end`,fill:S,children:ot(_)})]})]},t.node.uid)})]},`card-${(a==null?void 0:a.uid)||`unassigned`}`)}function pt(e){let{tree:t,width:n,t:r,theme:i,showVendor:o,onRename:s}=e,c=n>=Ze,l=n>=Qe,u=l?void 0:{px:1};return N(fe,{size:`small`,stickyHeader:!0,children:[B(ge,{children:N(me,{children:[B(L,{sx:u,children:r(`tr064_device`)}),l?B(L,{children:r(`tr064_accessPoint`)}):null,B(L,{sx:u,children:r(`tr064_connection`)}),l?B(L,{children:r(`tr064_state`)}):null,l?B(L,{children:r(`tr064_signal`)}):null,l?B(L,{children:r(`tr064_rate`)}):null,c?B(L,{children:r(`tr064_mac`)}):null,c?B(L,{children:r(`tr064_ip`)}):null,s?B(L,{sx:{width:40}}):null]})}),B(xe,{children:t.rows.map(e=>N(me,{sx:{opacity:e.connected?1:.6},children:[N(L,{sx:{...u,fontWeight:e.configured?700:400,color:e.configured?i.palette.primary.main:void 0,overflowWrap:`anywhere`},title:e.configured&&e.hostName!==e.name?e.hostName:void 0,children:[N(D,{sx:{display:`flex`,alignItems:`center`,gap:.75},children:[B(D,{component:Le(e.deviceClass),sx:{fontSize:17,flex:`0 0 auto`,color:e.kind?Z[e.kind]:`text.secondary`}}),B(`span`,{children:e.name})]}),o&&Q(e,r)?B(a,{variant:`caption`,component:`div`,color:`text.secondary`,sx:{fontStyle:`italic`,opacity:.7,fontWeight:400},children:Q(e,r)}):null,l?null:B(a,{variant:`caption`,component:`div`,color:`text.secondary`,sx:{fontWeight:400},children:[e.accessPoint||r(`tr064_notAssigned`),e.connected?``:r(`tr064_disconnected`)].filter(Boolean).join(` · `)})]}),l?B(L,{children:e.accessPoint||r(`tr064_notAssigned`)}):null,B(L,{sx:{...u,whiteSpace:`nowrap`},children:e.kind?N(D,{sx:{display:`flex`,alignItems:`center`,gap:.75},children:[B(lt,{kind:e.kind}),$(e.kind)||e.type]}):null}),l?N(L,{children:[e.connected?r(`tr064_connected`):r(`tr064_disconnected`),!e.connected&&e.lastConnected?B(a,{variant:`caption`,component:`div`,color:`text.secondary`,children:st(e.lastConnected,r)}):null]}):null,l?N(L,{sx:{whiteSpace:`nowrap`},children:[e.connected&&e.rcpi!==void 0?N(D,{sx:{display:`flex`,alignItems:`center`,gap:.75},children:[B(D,{component:`svg`,viewBox:`0 0 13 11`,sx:{width:13,height:11,flex:`0 0 auto`},children:B(at,{rcpi:e.rcpi,x:0,y:11,color:it(e.kind,e.rcpi,e.position)})}),ot(e.rcpi)]}):null,e.connected&&(e.position===`too_far`||e.position===`too_close`)?B(a,{variant:`caption`,component:`div`,color:e.position===`too_far`?`warning.main`:`text.secondary`,children:r(`tr064_position_${e.position}`)}):null]}):null,l?B(L,{sx:{whiteSpace:`nowrap`},children:nt(e)}):null,c?B(L,{sx:{fontFamily:`monospace`},children:e.mac}):null,c?B(L,{children:e.ip||``}):null,s?B(L,{sx:{...u,width:40},children:B(C,{size:`small`,title:r(`tr064_rename`),onClick:()=>s(e.uid),children:B(d,{fontSize:`small`})})}):null]},e.uid))})]})}function mt(e){let{node:t,t:n,onClose:i,onRename:o}=e,[s,c]=k(t.name||``),[l,f]=k(!1),[p,h]=k(null),g=s.trim()&&s.trim()!==t.name,_=()=>{g&&!l&&(f(!0),h(null),o(t.mac,s.trim()).then(e=>{f(!1),e?h(e):i()}))};return N(T,{open:!0,fullWidth:!0,maxWidth:`sm`,onClose:l?void 0:i,children:[B(m,{children:n(`tr064_renameTitle`)}),N(r,{children:[B(a,{variant:`body2`,color:`text.secondary`,sx:{mb:2},children:[t.mac,Q(t,n),t.ip].filter(Boolean).join(` · `)}),B(M,{fullWidth:!0,autoFocus:!0,variant:`standard`,label:n(`tr064_newName`),value:s,disabled:l,error:!!p,slotProps:{htmlInput:{maxLength:Xe}},onChange:e=>c(e.target.value),onKeyUp:e=>{e.key===`Enter`&&_()}}),B(j,{severity:`info`,sx:{mt:2},children:n(`tr064_renameHint`)}),p?B(j,{severity:`error`,sx:{mt:1},children:n(`tr064_renameFailed`,p)}):null]}),N(we,{children:[B(ue,{variant:`contained`,disabled:l||!g,startIcon:l?B(S,{size:16}):B(d,{}),onClick:_,children:n(`tr064_rename`)}),B(ue,{variant:`contained`,color:`inherit`,disabled:l,startIcon:B(u,{}),onClick:i,children:n(`tr064_cancel`)})]})]})}function ht(r){let{data:i,loading:s,error:c,onRefresh:l,onRename:u,t:d,compact:f,height:m}=r,h=r.storageKey||`tr064.meshTopology`,_=b(),v=n(()=>r.themeType&&r.themeType!==_.palette.mode?o({palette:{mode:r.themeType}}):_,[_,r.themeType]),[y,x]=k(()=>$e(h)),w=e=>{let t={...y,...e};x(t),et(h,t)},[te,T]=k(null),E=te?((i==null?void 0:i.nodes)||[]).find(e=>e.uid===te):void 0,O=u&&i!=null&&i.canRename?e=>T(e):void 0,re=p(null),[A,ie]=k(0);ne(()=>{let e=re.current;if(!e||(ie(Math.floor(e.getBoundingClientRect().width)),typeof ResizeObserver>`u`))return;let t=new ResizeObserver(e=>{var t;let n=Math.floor(((t=e[0])==null?void 0:t.contentRect.width)||0);ie(e=>e===n?e:n)});return t.observe(e),()=>t.disconnect()},[]);let M=n(()=>i?ke(i,{onlyConfigured:y.onlyConfigured,showDisconnected:y.showDisconnected}):null,[i,y.onlyConfigured,y.showDisconnected]),P=Math.max(0,A-2),F=n(()=>{if(!M||!P)return null;let e=[...M.roots];return M.unassigned.length&&e.push({clients:M.unassigned,children:[]}),Fe(e,P,y.showVendor)},[M,P,y.showVendor]),I=!!f||A>0&&A<Ye,L=m!=null&&m!==``,oe={overflow:`auto`,minHeight:0,border:`1px solid ${v.palette.divider}`,borderRadius:1,...L?{flex:`1 1 auto`}:{maxHeight:`75vh`}},se=N(D,{sx:{display:`flex`,alignItems:`center`,flexWrap:`wrap`,columnGap:I?.5:1,rowGap:.5,mb:1,flex:`0 0 auto`},children:[I?B(C,{size:`small`,title:d(`tr064_refresh`),disabled:s,onClick:()=>l(),children:s?B(S,{size:18}):B(g,{fontSize:`small`})}):B(ue,{variant:`outlined`,size:`small`,startIcon:s?B(S,{size:16}):B(g,{}),disabled:s,onClick:()=>l(),children:d(`tr064_refresh`)}),[{key:`onlyConfigured`,label:d(`tr064_onlyConfigured`)},{key:`showDisconnected`,label:d(`tr064_showDisconnected`)},{key:`showVendor`,label:d(`tr064_showVendor`)}].map(e=>B(_e,{sx:I?{mr:.5,ml:0}:void 0,control:B(ee,{size:`small`,sx:I?{p:.5}:void 0,checked:y[e.key],onChange:t=>w({[e.key]:t.target.checked})}),label:B(a,{variant:I?`body2`:`body1`,children:e.label})},e.key)),N(ae,{size:`small`,exclusive:!0,value:y.viewMode,onChange:(e,t)=>t&&w({viewMode:t}),children:[B(Ce,{value:`graph`,title:d(`tr064_graph`),sx:I?{p:.5}:void 0,children:B(de,{fontSize:`small`})}),B(Ce,{value:`table`,title:d(`tr064_table`),sx:I?{p:.5}:void 0,children:B(e,{fontSize:`small`})})]}),B(D,{sx:{flexGrow:1}}),N(D,{sx:{display:`flex`,alignItems:`center`,flexWrap:`wrap`,columnGap:1.5,rowGap:.5},children:[B(ut,{}),i!=null&&i.ts?B(a,{variant:`caption`,color:`text.secondary`,children:d(`tr064_updated`,new Date(i.ts).toLocaleTimeString())}):null]})]}),R;if(c&&(c===`not alive`||!i)){let e=tt(c,d);R=B(j,{severity:e.severity,children:e.text})}else if(!i||!M)R=N(D,{sx:{display:`flex`,alignItems:`center`,gap:1,p:2},children:[B(S,{size:20}),B(a,{children:d(`tr064_loading`)})]});else{let e=c?tt(c,d):null;R=N(Se,{children:[e?B(j,{severity:e.severity,sx:{mb:1,flex:`0 0 auto`},children:e.text}):null,!M.roots.length&&!M.unassigned.length?B(j,{severity:`info`,children:d(`tr064_noData`)}):y.viewMode===`table`?B(ce,{sx:oe,children:B(pt,{tree:M,width:P,t:d,theme:v,showVendor:y.showVendor,onRename:O})}):B(D,{sx:{...oe,backgroundColor:v.palette.background.default},children:F?N(`svg`,{width:F.width,height:F.height,style:{display:`block`,fontFamily:v.typography.fontFamily},children:[F.edges.map((e,t)=>dt(e,t,v,d)),F.cards.map(e=>ft(e,v,d,{showVendor:y.showVendor,onRename:O}))]}):null})]})}let le=N(D,{ref:re,sx:{width:`100%`,minWidth:0,display:`flex`,flexDirection:`column`,...L?{height:m}:{}},children:[se,R,E&&u?B(mt,{node:E,t:d,onClose:()=>T(null),onRename:u}):null]});return v===_?le:B(t,{theme:v,children:le})}var gt=class e extends Te{constructor(e){super(e),z(this,`loader`,null),this.state={...this.state,data:null,loading:!1,error:null}}async componentDidMount(){await super.componentDidMount(),this.loader=new We({socket:this.props.oContext.socket,instanceId:`${this.props.oContext.adapterName}.${this.props.oContext.instance}`,onChange:e=>this.setState(e)}),this.loader.start()}componentWillUnmount(){var e;(e=this.loader)==null||e.stop(),this.loader=null,super.componentWillUnmount()}renderItem(t,n,r){return B(ht,{data:this.state.data,loading:this.state.loading,error:this.state.error,onRefresh:()=>{var e;(e=this.loader)==null||e.refresh()},onRename:async(e,t)=>this.loader?this.loader.rename(e,t):`not alive`,t:e.t,themeType:this.props.oContext.themeType===`dark`?`dark`:`light`,storageKey:`tr064.meshTopology`})}};z(gt,`t`,(e,...t)=>I.t(e,...t));export{gt as t};
@@ -0,0 +1 @@
1
+ import{t as e}from"./vite-preload-helper-BbbETgeG.js";import"./dist-DiU1y0R9.js";var t=e=>{let t=e;for(let e=0;e<5;e++){let e=t==null?void 0:t.default;if(!e||typeof e!=`object`||Object.keys(e).length===0)break;let n=Object.getPrototypeOf(e);if(n!==null&&n!==Object.prototype)break;let r=Object.keys(t).filter(e=>e!=="default").map(e=>t[e]);if(r.length>0&&r.some(e=>e!==void 0))break;t=e}return t},n=(e,t,n,r)=>{var i,a;let o=(i=globalThis.__mf_module_cache__)==null?void 0:i.share,s=t.map(e=>o==null?void 0:o[e]).find(e=>e!==void 0),c=e=>{let t=String(e||``).split(/[^0-9]+/).map(Number),r=String(n||``).split(/[^0-9]+/).map(Number);for(let e=0;e<Math.max(t.length,r.length);e++){if((t[e]||0)<(r[e]||0))return!0;if((t[e]||0)>(r[e]||0))return!1}return!1};if(!c((s==null?void 0:s.version)??(s==null||(a=s.default)==null?void 0:a.version)))for(let t of e){var l,u;let e=o==null?void 0:o[t];if(e===void 0)continue;let n=(e==null?void 0:e.version)??(e==null||(l=e.default)==null?void 0:l.version);if(!(n!==void 0&&c(n))&&(!r||typeof(e==null?void 0:e[r])==`function`||typeof(e==null||(u=e.default)==null?void 0:u[r])==`function`))return e}},r={react:async()=>await e(()=>import(`./_virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__80542807241481__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-DwHxH2Tb.js`).then(e=>e.Gi),[],import.meta.url),"react/jsx-runtime":async()=>await e(()=>import(`./_virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__80542807241481__prebuild__react_mf_1_jsx_mf_2_runtime__prebuild__-B_v57Qfr.js`),[],import.meta.url),"react-dom":async()=>await e(()=>import(`./_virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__80542807241481__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-DwHxH2Tb.js`).then(e=>e.Br),[],import.meta.url),"react-dom/client":async()=>await e(()=>import(`./_virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__80542807241481__prebuild__react_mf_2_dom_mf_1_client__prebuild__-D8dfJFpB.js`),[],import.meta.url),"@mui/material":async()=>await e(()=>import(`./_virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__80542807241481__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-DwHxH2Tb.js`).then(e=>e.gr),[],import.meta.url),"@mui/icons-material":async()=>await e(()=>import(`./_virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__80542807241481__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-DwHxH2Tb.js`).then(e=>e.an),[],import.meta.url),"@iobroker/gui-components":async()=>await e(()=>import(`./_virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__80542807241481__loadShare___mf_0_iobroker_mf_1_gui_mf_2_components__loadShare__.js-DwHxH2Tb.js`).then(e=>e.b),[],import.meta.url),"@iobroker/json-config":async()=>await e(()=>import(`./_virtual_mf___mfe_internal__ConfigCustomTr064Set__mf_owner__80542807241481__prebuild___mf_0_iobroker_mf_1_json_mf_2_config__prebuild__-B5JQBr75.js`),[],import.meta.url)},i={react:{name:`react`,version:`19.3.0`,scope:[`default`],loaded:!1,materialize:!0,eager:!1,from:`ConfigCustomTr064Set`,canLiveRebind:!0,get(){let e=i.react;return e.lib?e.lib:(e.loading||=(async()=>{try{let{react:n}=r,i=t({...await n()});return i.__esModule!==!0&&Object.defineProperty(i,"__esModule",{value:!0,enumerable:!1}),e.lib=function(){return i},e.loaded=!0,e.lib}finally{e.loading=void 0}})(),e.loading)},shareConfig:{singleton:!0,requiredVersion:`*`,strictVersion:!1,eager:!1}},"react/jsx-runtime":{name:`react/jsx-runtime`,version:`19.3.0`,scope:[`default`],loaded:!1,materialize:!0,eager:!1,from:`ConfigCustomTr064Set`,canLiveRebind:!0,get(){let e=i[`react/jsx-runtime`];if(e.lib)return e.lib;if(e.loading)return e.loading;let a=n([`default:react/jsx-runtime`,`react/jsx-runtime`],[`default:react`,`react`],`19.3.0`,void 0);return a===void 0?(e.loading=(async()=>{try{let{"react/jsx-runtime":n}=r,i=t({...await n()});return i.__esModule!==!0&&Object.defineProperty(i,"__esModule",{value:!0,enumerable:!1}),e.lib=function(){return i},e.loaded=!0,e.lib}finally{e.loading=void 0}})(),e.loading):(e.lib=function(){return a},e.loaded=!0,e.lib)},shareConfig:{singleton:!0,requiredVersion:`*`,strictVersion:!1,eager:!1}},"react-dom":{name:`react-dom`,version:`19.3.0`,scope:[`default`],loaded:!1,materialize:!0,eager:!1,from:`ConfigCustomTr064Set`,canLiveRebind:!0,get(){let e=i[`react-dom`];return e.lib?e.lib:(e.loading||=(async()=>{try{let{"react-dom":n}=r,i=t({...await n()});return i.__esModule!==!0&&Object.defineProperty(i,"__esModule",{value:!0,enumerable:!1}),e.lib=function(){return i},e.loaded=!0,e.lib}finally{e.loading=void 0}})(),e.loading)},shareConfig:{singleton:!0,requiredVersion:`*`,strictVersion:!1,eager:!1}},"react-dom/client":{name:`react-dom/client`,version:`19.3.0`,scope:[`default`],loaded:!1,materialize:!0,eager:!1,from:`ConfigCustomTr064Set`,canLiveRebind:!0,get(){let e=i[`react-dom/client`];if(e.lib)return e.lib;if(e.loading)return e.loading;let a=n([`default:react-dom/client`,`react-dom/client`,`default:react-dom`,`react-dom`],[`default:react`,`react`],`19.3.0`,`createRoot`);return a===void 0?(e.loading=(async()=>{try{let{"react-dom/client":n}=r,i=t({...await n()});return i.__esModule!==!0&&Object.defineProperty(i,"__esModule",{value:!0,enumerable:!1}),e.lib=function(){return i},e.loaded=!0,e.lib}finally{e.loading=void 0}})(),e.loading):(e.lib=function(){return a},e.loaded=!0,e.lib)},shareConfig:{singleton:!0,requiredVersion:`*`,strictVersion:!1,eager:!1}},"@mui/material":{name:`@mui/material`,version:`9.5.0`,scope:[`default`],loaded:!1,materialize:!0,eager:!1,from:`ConfigCustomTr064Set`,canLiveRebind:!0,get(){let e=i[`@mui/material`];return e.lib?e.lib:(e.loading||=(async()=>{try{let{"@mui/material":n}=r,i=t({...await n()});return i.__esModule!==!0&&Object.defineProperty(i,"__esModule",{value:!0,enumerable:!1}),e.lib=function(){return i},e.loaded=!0,e.lib}finally{e.loading=void 0}})(),e.loading)},shareConfig:{singleton:!0,requiredVersion:`*`,strictVersion:!1,eager:!1}},"@mui/icons-material":{name:`@mui/icons-material`,version:`9.5.0`,scope:[`default`],loaded:!1,materialize:!0,eager:!1,from:`ConfigCustomTr064Set`,canLiveRebind:!0,get(){let e=i[`@mui/icons-material`];return e.lib?e.lib:(e.loading||=(async()=>{try{let{"@mui/icons-material":n}=r,i=t({...await n()});return i.__esModule!==!0&&Object.defineProperty(i,"__esModule",{value:!0,enumerable:!1}),e.lib=function(){return i},e.loaded=!0,e.lib}finally{e.loading=void 0}})(),e.loading)},shareConfig:{singleton:!0,requiredVersion:`*`,strictVersion:!1,eager:!1}},"@iobroker/gui-components":{name:`@iobroker/gui-components`,version:`10.3.9`,scope:[`default`],loaded:!1,materialize:!0,eager:!1,from:`ConfigCustomTr064Set`,canLiveRebind:!0,get(){let e=i[`@iobroker/gui-components`];return e.lib?e.lib:(e.loading||=(async()=>{try{let{"@iobroker/gui-components":n}=r,i=t({...await n()});return i.__esModule!==!0&&Object.defineProperty(i,"__esModule",{value:!0,enumerable:!1}),e.lib=function(){return i},e.loaded=!0,e.lib}finally{e.loading=void 0}})(),e.loading)},shareConfig:{singleton:!0,requiredVersion:`*`,strictVersion:!1,eager:!1}},"@iobroker/json-config":{name:`@iobroker/json-config`,version:`10.1.2`,scope:[`default`],loaded:!1,materialize:!0,eager:!1,from:`ConfigCustomTr064Set`,canLiveRebind:!0,get(){let e=i[`@iobroker/json-config`];return e.lib?e.lib:(e.loading||=(async()=>{try{let{"@iobroker/json-config":n}=r,i=t({...await n()});return i.__esModule!==!0&&Object.defineProperty(i,"__esModule",{value:!0,enumerable:!1}),e.lib=function(){return i},e.loaded=!0,e.lib}finally{e.loading=void 0}})(),e.loading)},shareConfig:{singleton:!0,requiredVersion:`*`,strictVersion:!1,eager:!1}}},a=[];export{a as usedRemotes,i as usedShared};