Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Tester
  4. Beta Test js-controller Kiera (v6.0)

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.6k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.1k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    2.9k

Beta Test js-controller Kiera (v6.0)

Geplant Angeheftet Gesperrt Verschoben Tester
betajs-controllerkieratest
331 Beiträge 39 Kommentatoren 84.6k Aufrufe 42 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • foxriver76F foxriver76

    @esp8266 denke nicht dass das was mit controller zu tun hat. Entweder PRoblem bei echarts oder admin evtl. Welche Admin Version läuft denn

    ESP8266E Offline
    ESP8266E Offline
    ESP8266
    schrieb am zuletzt editiert von
    #165

    @foxriver76 , 6.17.14

    Benutzt das Voting im Beitrag, wenn er euch geholfen hat.

    1 Antwort Letzte Antwort
    0
    • ESP8266E ESP8266

      @foxriver76 , moin, es gab vor einigen Tagen ein echarts Adapter update. Das hat aber das Problem der Einstellungen nicht gelöst.

      fb877ef6-f728-4c8b-bbfc-742b3a6aeafa-grafik.png

      Läuft aber im Hintergrund.

      sigi234S Online
      sigi234S Online
      sigi234
      Forum Testing Most Active
      schrieb am zuletzt editiert von
      #166

      @esp8266 sagte in Beta Test js-controller Kiera (v6.0):

      @foxriver76 , moin, es gab vor einigen Tagen ein echarts Adapter update. Das hat aber das Problem der Einstellungen nicht gelöst.

      fb877ef6-f728-4c8b-bbfc-742b3a6aeafa-grafik.png

      Läuft aber im Hintergrund.

      https://github.com/ioBroker/ioBroker.echarts/issues/630

      Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
      Immer Daten sichern!

      foxriver76F 1 Antwort Letzte Antwort
      1
      • Thomas BraunT Thomas Braun

        @jb_sullivan

        Warum sollte es ausgeblendet werden? Gerade Beta-Versionen sollen ja dazu dienen möglichst viele Fehler und Hinweise zu finden und für das Stable-Release in Angriff zu nehmen.

        JB_SullivanJ Offline
        JB_SullivanJ Offline
        JB_Sullivan
        schrieb am zuletzt editiert von
        #167

        @thomas-braun
        Darum ja eine Checkbox, ob man die Meldungen ggf. abschalten möchte.

        Entwickler und Beta Tester, müssen die Checkbox ja nicht anhaken. Aber der Otto Normal User bekommt bei allem was Rot oder Orange und noch mit der Beschriftung "Warn" gekennzeichnet ist, schnell feuchte Hände.

        Darum die Frage, ob man solche Meldungen, wenn Sie keine Systemrelevanz für den Ordnungsgemäßen Betrieb haben und vermutlich eh durch die Entwickler selber gefunden und gefixt werden, für den Otto Normal User ausblendbar gestaltet werden können - nur so als Idee.

        Nun aber wieder Back to Topic.

        ioBroker auf Intel Core i3-5005U NUC und Windwos10 Pro

        Thomas BraunT 1 Antwort Letzte Antwort
        0
        • JB_SullivanJ JB_Sullivan

          @thomas-braun
          Darum ja eine Checkbox, ob man die Meldungen ggf. abschalten möchte.

          Entwickler und Beta Tester, müssen die Checkbox ja nicht anhaken. Aber der Otto Normal User bekommt bei allem was Rot oder Orange und noch mit der Beschriftung "Warn" gekennzeichnet ist, schnell feuchte Hände.

          Darum die Frage, ob man solche Meldungen, wenn Sie keine Systemrelevanz für den Ordnungsgemäßen Betrieb haben und vermutlich eh durch die Entwickler selber gefunden und gefixt werden, für den Otto Normal User ausblendbar gestaltet werden können - nur so als Idee.

          Nun aber wieder Back to Topic.

          Thomas BraunT Online
          Thomas BraunT Online
          Thomas Braun
          Most Active
          schrieb am zuletzt editiert von
          #168

          @jb_sullivan sagte in Beta Test js-controller Kiera (v6.0):

          Aber der Otto Normal User bekommt bei allem was Rot oder Orange und noch mit der Beschriftung "Warn" gekennzeichnet ist, schnell feuchte Hände.

          Der sollte aber auch keine Beta-Versionen verwenden...

          Linux-Werkzeugkasten:
          https://forum.iobroker.net/topic/42952/der-kleine-iobroker-linux-werkzeugkasten
          NodeJS Fixer Skript:
          https://forum.iobroker.net/topic/68035/iob-node-fix-skript
          iob_diag: curl -sLf -o diag.sh https://iobroker.net/diag.sh && bash diag.sh

          1 Antwort Letzte Antwort
          0
          • sigi234S sigi234

            @esp8266 sagte in Beta Test js-controller Kiera (v6.0):

            @foxriver76 , moin, es gab vor einigen Tagen ein echarts Adapter update. Das hat aber das Problem der Einstellungen nicht gelöst.

            fb877ef6-f728-4c8b-bbfc-742b3a6aeafa-grafik.png

            Läuft aber im Hintergrund.

            https://github.com/ioBroker/ioBroker.echarts/issues/630

            foxriver76F Offline
            foxriver76F Offline
            foxriver76
            Developer
            schrieb am zuletzt editiert von foxriver76
            #169

            @sigi234 puh habe jetzt einige Konstellationen probiert und es schaut aus als hätte echarts gar keine Config abseits vom Tab? Und ja Tab scheint kaputt zu sein in 1.8.x

            Jop okay, nochmal ungewöhnliche Quelle aber auch damals gabs nur den Tab https://youtu.be/yBNHckiWNC4?si=lvqGdAjKaVjF1Mj7&t=100 und der Code schaut auch so aus als gabs da nie ne config

            Videotutorials & mehr

            Hier könnt ihr mich unterstützen.

            sigi234S ESP8266E 2 Antworten Letzte Antwort
            0
            • foxriver76F foxriver76

              @sigi234 puh habe jetzt einige Konstellationen probiert und es schaut aus als hätte echarts gar keine Config abseits vom Tab? Und ja Tab scheint kaputt zu sein in 1.8.x

              Jop okay, nochmal ungewöhnliche Quelle aber auch damals gabs nur den Tab https://youtu.be/yBNHckiWNC4?si=lvqGdAjKaVjF1Mj7&t=100 und der Code schaut auch so aus als gabs da nie ne config

              sigi234S Online
              sigi234S Online
              sigi234
              Forum Testing Most Active
              schrieb am zuletzt editiert von
              #170

              @foxriver76 sagte in Beta Test js-controller Kiera (v6.0):

              @sigi234 puh habe jetzt einige Konstellationen probiert und es schaut aus als hätte echarts gar keine Config abseits vom Tab? Und ja Tab scheint kaputt zu sein in 1.8.x

              Jop okay, nochmal ungewöhnliche Quelle aber auch damals gabs nur den Tab https://youtu.be/yBNHckiWNC4?si=lvqGdAjKaVjF1Mj7&t=100 und der Code schaut auch so aus als gabs da nie ne config

              Jupp, der hatte nie eine config, kann mich zumindest nicht daran erinnern.
              Bei mir läuft die Version 1.7.2 einwandfrei.

              Da weis @bluefox sicher mehr dazu.

              Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
              Immer Daten sichern!

              1 Antwort Letzte Antwort
              0
              • foxriver76F foxriver76

                @sigi234 puh habe jetzt einige Konstellationen probiert und es schaut aus als hätte echarts gar keine Config abseits vom Tab? Und ja Tab scheint kaputt zu sein in 1.8.x

                Jop okay, nochmal ungewöhnliche Quelle aber auch damals gabs nur den Tab https://youtu.be/yBNHckiWNC4?si=lvqGdAjKaVjF1Mj7&t=100 und der Code schaut auch so aus als gabs da nie ne config

                ESP8266E Offline
                ESP8266E Offline
                ESP8266
                schrieb am zuletzt editiert von ESP8266
                #171

                @foxriver76 , jupp jetzt wo ihr es schreibt, gab es tatsächlich kein config Tab und wurde über die Seite echarts configuriert. Aber darüber kommt nichts mehr. Man fummelt ja auch nicht ständig in den Adaptern rum. Einmal eingestellt und gut ist. Ist mir Absolut entfallen....
                1.7.2 läuft.

                Benutzt das Voting im Beitrag, wenn er euch geholfen hat.

                1 Antwort Letzte Antwort
                0
                • U Offline
                  U Offline
                  UV-on-fire
                  schrieb am zuletzt editiert von
                  #172

                  Hallo zusammen,

                  da ich morgen ein paar Wochen abwesend sein werde habe ich gestern noch die aktuellen Updates gefahren.

                  Seitdem bekomme ich folgende Fehlermeldungen aus verschiedenen Scripten:


                  2024-06-17 13:22:00.002 - error: javascript.0 (125916) script.js.Materialdesign.Netzwerk: [netzwerkStatus] error: moment is not a function, stack: TypeError: moment is not a function
                  at Object.netzwerkStatus (script.js.Materialdesign.Netzwerk:2518:52)
                  at Job.job (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1769:34)
                  at Job.invoke (/opt/iobroker/node_modules/node-schedule/lib/Job.js:171:15)
                  at /opt/iobroker/node_modules/node-schedule/lib/Invocation.js:268:28
                  at Timeout._onTimeout (/opt/iobroker/node_modules/node-schedule/lib/Invocation.js:228:7)
                  at listOnTimeout (node:internal/timers:569:17)
                  at processTimers (node:internal/timers:512:7)
                  2024-06-17 13:22:10.001 - error: javascript.0 (125916) script.js.Materialdesign.Netzwerk: [netzwerkStatus] error: moment is not a function, stack: TypeError: moment is not a function
                  at Object.netzwerkStatus (script.js.Materialdesign.Netzwerk:2518:52)
                  at Job.job (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1769:34)
                  at Job.invoke (/opt/iobroker/node_modules/node-schedule/lib/Job.js:171:15)
                  at /opt/iobroker/node_modules/node-schedule/lib/Invocation.js:268:28
                  at Timeout._onTimeout (/opt/iobroker/node_modules/node-schedule/lib/Invocation.js:228:7)
                  at listOnTimeout (node:internal/timers:569:17)
                  at processTimers (node:internal/timers:512:7)
                  2024-06-17 13:22:12.336 - info: linux-control.0 (3642478) State value to set for "linux-control.0.proxmox.Temp_Kern_1" has to be type "string" but received type "number"

                  oder auch


                  2024-06-17 13:18:08.573 - error: javascript.0 (125916) script.js.Materialdesign.Proxmox: TypeError: moment.locale is not a function
                  2024-06-17 13:18:08.573 - error: javascript.0 (125916) at script.js.Materialdesign.Proxmox:362:8
                  2024-06-17 13:18:08.573 - error: javascript.0 (125916) at script.js.Materialdesign.Proxmox:789:3
                  2024-06-17 13:18:08.573 - error: javascript.0 (125916) at Script.runInContext (node:vm:133:12)
                  2024-06-17 13:18:08.579 - info: javascript.0 (125916) Start JavaScript script.js.Materialdesign.Skriptstatus (Javascript/js)
                  2024-06-17 13:18:08.593 - error: javascript.0 (125916) script.js.Materialdesign.Skriptstatus: TypeError: moment.locale is not a function
                  2024-06-17 13:18:08.593 - error: javascript.0 (125916) at script.js.Materialdesign.Skriptstatus:62:8
                  2024-06-17 13:18:08.593 - error: javascript.0 (125916) at script.js.Materialdesign.Skriptstatus:600:3
                  2024-06-17 13:18:08.593 - error: javascript.0 (125916) at Script.runInContext (node:vm:133:12)
                  2024-06-17 13:18:08.594 - info: javascript.0 (125916) Start JavaScript script.js.Materialdesign.StatusAdapter (Javascript/js)
                  2024-06-17 13:18:08.608 - error: javascript.0 (125916) script.js.Materialdesign.StatusAdapter: TypeError: moment.locale is not a function
                  2024-06-17 13:18:08.608 - error: javascript.0 (125916) at script.js.Materialdesign.StatusAdapter:80:8
                  2024-06-17 13:18:08.608 - error: javascript.0 (125916) at script.js.Materialdesign.StatusAdapter:678:3
                  2024-06-17 13:18:08.608 - error: javascript.0 (125916) at Script.runInContext (node:vm:133:12)

                  Ich habe auch bereits die npm module mehrfach gelöscht und neu eingetragen sowie den Adapter neu gestartet. Außerdem habe ich auch einen neue Instanz angelegt, die Module wieder eingetragen und eines der Scripte dort ausgeführt mit dem selben Fehlerbild.

                  Es scheint aber die NPM Module sind korrekt eingetragen
                  Screenshot 2024-06-17 151149.png

                  Allerdings scheint da was bei der Syntaxhilfe auch nicht mehr zu funktionieren. Sobald ich die Eintrage zeigt er mir am Textende nur den Cursor und bei Betätigen von enter oder speichern wird es scheinbar nicht übernommen.

                  Screenshot 2024-06-17 152117.png


                  2024-06-17 13:25:04.564 - debug: javascript.0 (241347) Found custom dependency in config: "moment-timezone@latest"
                  2024-06-17 13:25:07.191 - debug: javascript.0 (241347) Installed custom dependency: "moment-timezone@latest"
                  2024-06-17 13:25:07.201 - debug: javascript.0 (241347) Found custom dependency in config: "moment-duration-format@latest"
                  2024-06-17 13:25:09.864 - debug: javascript.0 (241347) Installed custom dependency: "moment-duration-format@latest"
                  2024-06-17 13:25:09.885 - debug: javascript.0 (241347) Found custom dependency in config: "moment@latest"
                  2024-06-17 13:25:12.578 - debug: javascript.0 (241347) Installed custom dependency: "moment@latest"

                  Hir noch die Ausgabe von IOB DIAG

                  Skript v.2024-05-22
                  
                  *** BASE SYSTEM ***
                  Static hostname: iobroker
                        Icon name: computer-container
                          Chassis: container ☐
                   Virtualization: lxc
                  Operating System: Debian GNU/Linux 12 (bookworm)
                           Kernel: Linux 6.5.11-7-pve
                     Architecture: x86-64
                  
                  model name      : Intel(R) Core(TM) i5-8259U CPU @ 2.30GHz
                  Docker          : false
                  Virtualization  : lxc
                  Kernel          : x86_64
                  Userland        : 64 bit
                  
                  Systemuptime and Load:
                  15:11:03 up 15 days,  3:37,  2 users,  load average: 1.70, 1.85, 1.45
                  CPU threads: 2
                  
                  
                  *** Time and Time Zones ***
                                Local time: Mon 2024-06-17 15:11:03 CEST
                            Universal time: Mon 2024-06-17 13:11:03 UTC
                                  RTC time: n/a
                                 Time zone: Europe/Berlin (CEST, +0200)
                  System clock synchronized: yes
                               NTP service: inactive
                           RTC in local TZ: no
                  
                  *** Users and Groups ***
                  User that called 'iob diag':
                  uviob
                  HOME=/home/uviob
                  GROUPS=uviob sudo iobroker
                  
                  User that is running 'js-controller':
                  iobroker
                  HOME=/home/iobroker
                  GROUPS=iobroker tty dialout audio video plugdev
                  
                  *** Display-Server-Setup ***
                  Display-Server: false
                  Desktop: 
                  Terminal: 
                  Boot Target:    graphical.target
                  
                  *** MEMORY ***
                                total        used        free      shared  buff/cache   available
                  Mem:            8.6G        7.3G        296M        2.3M        963M        1.3G
                  Swap:           536M        233M        303M
                  Total:          9.1G        7.6G        600M
                  
                  Active iob-Instances:   0
                  
                          8192 M total memory
                          6828 M used memory
                          6094 M active memory
                          1249 M inactive memory
                           445 M free memory
                             0 M buffer memory
                           918 M swap cache
                           512 M total swap
                           222 M used swap
                           289 M free swap
                  
                  *** top - Table Of Processes  ***
                  top - 15:11:03 up 15 days,  3:37,  2 users,  load average: 1.70, 1.85, 1.45
                  Tasks:  71 total,   2 running,  69 sleeping,   0 stopped,   0 zombie
                  %Cpu(s): 33.3 us,  0.0 sy,  0.0 ni, 33.3 id, 33.3 wa,  0.0 hi,  0.0 si,  0.0 st 
                  MiB Mem :   8192.0 total,    618.0 free,   6655.3 used,    918.7 buff/cache     
                  MiB Swap:    512.0 total,    289.7 free,    222.3 used.   1536.7 avail Mem 
                  
                  *** FAILED SERVICES ***
                  
                   UNIT                                 LOAD   ACTIVE SUB    DESCRIPTION
                  * systemd-networkd-wait-online.service loaded failed failed Wait for Network to be Configured
                  
                  LOAD   = Reflects whether the unit definition was properly loaded.
                  ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
                  SUB    = The low-level unit activation state, values depend on unit type.
                  1 loaded units listed.
                  
                  *** FILESYSTEM ***
                  Filesystem                       Type   Size  Used Avail Use% Mounted on
                  /dev/mapper/pve-vm--210--disk--1 ext4    25G   15G  8.6G  63% /
                  none                             tmpfs  492K  4.0K  488K   1% /dev
                  tmpfs                            tmpfs  7.8G     0  7.8G   0% /dev/shm
                  tmpfs                            tmpfs  3.1G  2.6M  3.1G   1% /run
                  tmpfs                            tmpfs  5.0M     0  5.0M   0% /run/lock
                  tmpfs                            tmpfs  1.6G     0  1.6G   0% /run/user/1000
                  
                  Messages concerning ext4 filesystem in dmesg:
                  [Sun Jun  2 11:32:42 2024] EXT4-fs (dm-1): mounted filesystem 1192067b-46b8-4ac5-a608-5f91cdfb985a ro with ordered data mode. Quota mode: none.
                  [Sun Jun  2 11:32:43 2024] EXT4-fs (dm-1): re-mounted 1192067b-46b8-4ac5-a608-5f91cdfb985a r/w. Quota mode: none.
                  [Sun Jun  2 11:32:44 2024] EXT4-fs (sda): mounted filesystem 52b7d67a-b075-47cb-8f0d-78dafd5f3aa1 r/w with ordered data mode. Quota mode: none.
                  [Sun Jun  2 11:32:57 2024] EXT4-fs warning (device dm-8): ext4_multi_mount_protect:328: MMP interval 42 higher than expected, please wait.
                  [Sun Jun  2 11:33:42 2024] EXT4-fs (dm-8): 15 orphan inodes deleted
                  [Sun Jun  2 11:33:42 2024] EXT4-fs (dm-8): recovery complete
                  [Sun Jun  2 11:33:42 2024] EXT4-fs (dm-8): mounted filesystem 8c9be52e-5c56-4c56-9e37-b7adc973b1e0 r/w with ordered data mode. Quota mode: none.
                  [Mon Jun  3 03:06:03 2024] EXT4-fs (dm-9): mounted filesystem 17044e68-e7a9-4220-9781-345fb7310a16 r/w with ordered data mode. Quota mode: none.
                  [Mon Jun  3 03:06:15 2024] EXT4-fs (dm-9): unmounting filesystem 17044e68-e7a9-4220-9781-345fb7310a16.
                  [Mon Jun  3 03:11:55 2024] EXT4-fs (dm-10): write access unavailable, skipping orphan cleanup
                  [Mon Jun  3 03:11:55 2024] EXT4-fs (dm-10): mounted filesystem 8c9be52e-5c56-4c56-9e37-b7adc973b1e0 ro without journal. Quota mode: none.
                  [Mon Jun  3 03:19:44 2024] EXT4-fs (dm-10): unmounting filesystem 8c9be52e-5c56-4c56-9e37-b7adc973b1e0.
                  [Mon Jun  3 03:19:45 2024] EXT4-fs (dm-7): mounted filesystem 06481f10-cf2d-4303-b869-aafe07fe3d39 r/w with ordered data mode. Quota mode: none.
                  [Mon Jun  3 03:20:00 2024] EXT4-fs (dm-7): unmounting filesystem 06481f10-cf2d-4303-b869-aafe07fe3d39.
                  [Mon Jun 10 03:05:30 2024] EXT4-fs (dm-9): mounted filesystem 17044e68-e7a9-4220-9781-345fb7310a16 r/w with ordered data mode. Quota mode: none.
                  [Mon Jun 10 03:05:43 2024] EXT4-fs (dm-9): unmounting filesystem 17044e68-e7a9-4220-9781-345fb7310a16.
                  [Mon Jun 10 03:11:17 2024] EXT4-fs (dm-10): write access unavailable, skipping orphan cleanup
                  [Mon Jun 10 03:11:17 2024] EXT4-fs (dm-10): mounted filesystem 8c9be52e-5c56-4c56-9e37-b7adc973b1e0 ro without journal. Quota mode: none.
                  [Mon Jun 10 03:19:01 2024] EXT4-fs (dm-10): unmounting filesystem 8c9be52e-5c56-4c56-9e37-b7adc973b1e0.
                  [Mon Jun 10 03:19:01 2024] EXT4-fs (dm-7): mounted filesystem 06481f10-cf2d-4303-b869-aafe07fe3d39 r/w with ordered data mode. Quota mode: none.
                  [Mon Jun 10 03:19:18 2024] EXT4-fs (dm-7): unmounting filesystem 06481f10-cf2d-4303-b869-aafe07fe3d39.
                  [Mon Jun 17 03:05:11 2024] EXT4-fs (dm-9): mounted filesystem 17044e68-e7a9-4220-9781-345fb7310a16 r/w with ordered data mode. Quota mode: none.
                  [Mon Jun 17 03:05:24 2024] EXT4-fs (dm-9): unmounting filesystem 17044e68-e7a9-4220-9781-345fb7310a16.
                  [Mon Jun 17 03:11:02 2024] EXT4-fs (dm-10): write access unavailable, skipping orphan cleanup
                  [Mon Jun 17 03:11:02 2024] EXT4-fs (dm-10): mounted filesystem 8c9be52e-5c56-4c56-9e37-b7adc973b1e0 ro without journal. Quota mode: none.
                  [Mon Jun 17 03:18:51 2024] EXT4-fs (dm-10): unmounting filesystem 8c9be52e-5c56-4c56-9e37-b7adc973b1e0.
                  [Mon Jun 17 03:18:51 2024] EXT4-fs (dm-7): mounted filesystem 06481f10-cf2d-4303-b869-aafe07fe3d39 r/w with ordered data mode. Quota mode: none.
                  [Mon Jun 17 03:19:07 2024] EXT4-fs (dm-7): unmounting filesystem 06481f10-cf2d-4303-b869-aafe07fe3d39.
                  
                  Show mounted filesystems:
                  TARGET                                                  SOURCE                           FSTYPE     OPTIONS
                  /                                                       /dev/mapper/pve-vm--210--disk--1 ext4       rw,relatime,stripe=16
                  |-/run                                                  tmpfs                            tmpfs      rw,nosuid,nodev,size=3245872k,nr_inodes=819200,mode=755,inode64
                  | |-/run/lock                                           tmpfs                            tmpfs      rw,nosuid,nodev,noexec,relatime,size=5120k,inode64
                  | |-/run/rpc_pipefs                                     sunrpc                           rpc_pipefs rw,relatime
                  | |-/run/credentials/systemd-tmpfiles-setup.service     ramfs                            ramfs      ro,nosuid,nodev,noexec,relatime,mode=700
                  | |-/run/credentials/systemd-sysctl.service             ramfs                            ramfs      ro,nosuid,nodev,noexec,relatime,mode=700
                  | |-/run/credentials/systemd-sysusers.service           ramfs                            ramfs      ro,nosuid,nodev,noexec,relatime,mode=700
                  | |-/run/credentials/systemd-tmpfiles-setup-dev.service ramfs                            ramfs      ro,nosuid,nodev,noexec,relatime,mode=700
                  | `-/run/user/1000                                      tmpfs                            tmpfs      rw,nosuid,nodev,relatime,size=1622932k,nr_inodes=405733,mode=700,uid=1000,gid=1000,inode64
                  |-/dev                                                  none                             tmpfs      rw,relatime,size=492k,mode=755,inode64
                  | |-/dev/shm                                            tmpfs                            tmpfs      rw,nosuid,nodev,inode64
                  | |-/dev/hugepages                                      hugetlbfs                        hugetlbfs  rw,relatime,pagesize=2M
                  | |-/dev/mqueue                                         mqueue                           mqueue     rw,nosuid,nodev,noexec,relatime
                  | |-/dev/.lxc/proc                                      proc                             proc       rw,relatime
                  | |-/dev/.lxc/sys                                       sys                              sysfs      rw,relatime
                  | |-/dev/pts                                            devpts                           devpts     rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=666,max=1026
                  | |-/dev/ptmx                                           devpts[/ptmx]                    devpts     rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=666,max=1026
                  | |-/dev/console                                        devpts[/0]                       devpts     rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=666,max=1026
                  | |-/dev/tty1                                           devpts[/1]                       devpts     rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=666,max=1026
                  | `-/dev/tty2                                           devpts[/2]                       devpts     rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=666,max=1026
                  |-/proc                                                 proc                             proc       rw,nosuid,nodev,noexec,relatime
                  | |-/proc/sys                                           proc[/sys]                       proc       ro,relatime
                  | | |-/proc/sys/kernel/random/boot_id                   none[/.lxc-boot-id]              tmpfs      ro,nosuid,nodev,noexec,relatime,size=492k,mode=755,inode64
                  | | `-/proc/sys/net                                     proc[/sys/net]                   proc       rw,nosuid,nodev,noexec,relatime
                  | |-/proc/sysrq-trigger                                 proc[/sysrq-trigger]             proc       ro,relatime
                  | |-/proc/cpuinfo                                       lxcfs[/proc/cpuinfo]             fuse.lxcfs rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other
                  | |-/proc/diskstats                                     lxcfs[/proc/diskstats]           fuse.lxcfs rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other
                  | |-/proc/loadavg                                       lxcfs[/proc/loadavg]             fuse.lxcfs rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other
                  | |-/proc/meminfo                                       lxcfs[/proc/meminfo]             fuse.lxcfs rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other
                  | |-/proc/slabinfo                                      lxcfs[/proc/slabinfo]            fuse.lxcfs rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other
                  | |-/proc/stat                                          lxcfs[/proc/stat]                fuse.lxcfs rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other
                  | |-/proc/swaps                                         lxcfs[/proc/swaps]               fuse.lxcfs rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other
                  | `-/proc/uptime                                        lxcfs[/proc/uptime]              fuse.lxcfs rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other
                  `-/sys                                                  sysfs                            sysfs      ro,nosuid,nodev,noexec,relatime
                   |-/sys/fs/fuse/connections                            fusectl                          fusectl    rw,nosuid,nodev,noexec,relatime
                   |-/sys/devices/virtual/net                            sysfs[/devices/virtual/net]      sysfs      rw,nosuid,nodev,noexec,relatime
                   |-/sys/fs/cgroup                                      none                             cgroup2    rw,nosuid,nodev,noexec,relatime
                   `-/sys/devices/system/cpu                             lxcfs[/sys/devices/system/cpu]   fuse.lxcfs rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other
                  
                  Files in neuralgic directories:
                  
                  /var:
                  3.4G    /var/
                  2.8G    /var/log
                  2.5G    /var/log/journal/c337b259b2a44b9da1e2356e14b395e6
                  2.5G    /var/log/journal
                  461M    /var/cache
                  
                  Hint: You are currently not seeing messages from other users and the system.
                       Users in groups 'adm', 'systemd-journal' can see all messages.
                       Pass -q to turn off this notice.
                  Archived and active journals take up 1.0G in the file system.
                  
                  /opt/iobroker/backups:
                  69M     /opt/iobroker/backups/
                  
                  /opt/iobroker/iobroker-data:
                  1.2G    /opt/iobroker/iobroker-data/
                  986M    /opt/iobroker/iobroker-data/files
                  251M    /opt/iobroker/iobroker-data/files/vis
                  243M    /opt/iobroker/iobroker-data/files/vis/widgets
                  156M    /opt/iobroker/iobroker-data/files/vis-2
                  
                  The five largest files in iobroker-data are:
                  35M     /opt/iobroker/iobroker-data/files/devices.admin/static/js/main.24f2bb56.js.map
                  29M     /opt/iobroker/iobroker-data/files/backitup.admin/static/js/main.ecef4f21.js.map
                  26M     /opt/iobroker/iobroker-data/objects.jsonl
                  24M     /opt/iobroker/iobroker-data/files/web.admin/static/js/main.4ff93037.js.map
                  24M     /opt/iobroker/iobroker-data/files/vis-2/static/js/main.f305bc29.js.map
                  
                  USB-Devices by-id:
                  USB-Sticks -  Avoid direct links to /dev/tty* in your adapter setups, please always prefer the links 'by-id':
                  
                  No Devices found 'by-id'
                  
                  
                  
                  
                  *** NodeJS-Installation ***
                  
                  /usr/bin/nodejs         v18.20.3
                  /usr/bin/node           v18.20.3
                  /usr/bin/npm            10.7.0
                  /usr/bin/npx            10.7.0
                  /usr/bin/corepack       0.28.0
                  
                  
                  nodejs:
                   Installed: 18.20.3-1nodesource1
                   Candidate: 18.20.3-1nodesource1
                   Version table:
                  *** 18.20.3-1nodesource1 1001
                         500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                         100 /var/lib/dpkg/status
                      18.20.2-1nodesource1 1001
                         500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                      18.20.1-1nodesource1 1001
                         500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                      18.20.0-1nodesource1 1001
                         500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                      18.19.1-1nodesource1 1001
                         500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                      18.19.0+dfsg-6~deb12u1 500
                         500 http://security.debian.org bookworm-security/main amd64 Packages
                      18.19.0-1nodesource1 1001
                         500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                      18.18.2-1nodesource1 1001
                         500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                      18.18.1-1nodesource1 1001
                         500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                      18.18.0-1nodesource1 1001
                         500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                      18.17.1-1nodesource1 1001
                         500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                      18.17.0-1nodesource1 1001
                         500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                      18.16.1-1nodesource1 1001
                         500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                      18.16.0-1nodesource1 1001
                         500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                      18.15.0-1nodesource1 1001
                         500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                      18.14.2-1nodesource1 1001
                         500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                      18.14.1-1nodesource1 1001
                         500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                      18.14.0-1nodesource1 1001
                         500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                      18.13.0+dfsg1-1 500
                         500 http://ftp.debian.org/debian bookworm/main amd64 Packages
                      18.13.0-1nodesource1 1001
                         500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                      18.12.0-1nodesource1 1001
                         500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                      18.11.0-1nodesource1 1001
                         500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                      18.10.0-1nodesource1 1001
                         500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                      18.9.1-1nodesource1 1001
                         500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                      18.9.0-1nodesource1 1001
                         500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                      18.8.0-1nodesource1 1001
                         500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                      18.7.0-1nodesource1 1001
                         500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                      18.6.0-1nodesource1 1001
                         500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                      18.5.0-1nodesource1 1001
                         500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                      18.4.0-1nodesource1 1001
                         500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                      18.3.0-1nodesource1 1001
                         500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                      18.2.0-1nodesource1 1001
                         500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                      18.1.0-1nodesource1 1001
                         500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                      18.0.0-1nodesource1 1001
                         500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                  
                  Temp directories causing npm8 problem: 0
                  No problems detected
                  
                  Errors in npm tree:
                  
                  *** ioBroker-Installation ***
                  
                  ioBroker Status
                  No connection to databases possible ...
                  
                  Core adapters versions
                  js-controller:  6.0.4
                  admin:          6.17.14
                  javascript:     8.3.1
                  
                  nodejs modules from github:     0
                  
                  Adapter State
                  No connection to databases possible ...
                  
                  Enabled adapters with bindings
                  
                  ioBroker-Repositories
                  Stable (default): http://download.iobroker.net/sources-dist.json
                  Beta (latest) : http://download.iobroker.net/sources-dist-latest.json
                  
                  Active repo(s): Stable (default)
                  
                  Installed ioBroker-Instances
                  Used repository: Stable (default)
                  Adapter    "admin"        : 6.13.16  , installed 6.17.14
                  Adapter    "alias-manager": 1.2.6    , installed 1.2.6
                  Adapter    "backitup"     : 2.11.0   , installed 3.0.3
                  Adapter    "bmw"          : 2.5.7    , installed 2.8.0
                  Adapter    "cloud"        : 5.0.1    , installed 5.0.1
                  Adapter    "daswetter"    : 3.1.15   , installed 3.1.15
                  Adapter    "device-watcher": 2.12.1  , installed 2.12.1
                  Adapter    "devices"      : 1.1.5    , installed 1.1.5
                  Adapter    "discovery"    : 4.5.0    , installed 4.5.0
                  Adapter    "feiertage"    : 1.2.0    , installed 1.2.0
                  Adapter    "fitbit-fitness": 0.5.0   , installed 0.5.0
                  Adapter    "flot"         : 1.12.0   , installed 1.12.0
                  Adapter    "fritzdect"    : 2.5.9    , installed 2.5.9
                  Adapter    "heizoel"      : 1.0.3    , installed 1.0.3
                  Adapter    "history"      : 3.0.1    , installed 3.0.1
                  Adapter    "hm-rega"      : 4.0.0    , installed 4.0.0
                  Adapter    "hm-rpc"       : 1.17.0   , installed 1.17.0
                  Adapter    "ical"         : 1.15.0   , installed 1.15.0
                  Adapter    "icons-addictive-flavour-png": 0.1.0, installed 0.1.0
                  Adapter    "icons-fatcow-hosting": 0.1.0, installed 0.1.0
                  Adapter    "icons-icons8" : 0.0.1    , installed 0.0.1
                  Adapter    "icons-material-png": 0.1.0, installed 0.1.0
                  Adapter    "icons-material-svg": 0.1.0, installed 0.1.0
                  Adapter    "icons-mfd-png": 1.2.1    , installed 1.2.1
                  Adapter    "icons-mfd-svg": 1.2.0    , installed 1.2.0
                  Adapter    "icons-open-icon-library-png": 0.1.2, installed 0.1.3
                  Adapter    "icons-ultimate-png": 1.0.1, installed 1.0.1
                  Adapter    "javascript"   : 8.3.1    , installed 8.3.1
                  Controller "js-controller": 5.0.19   , installed 6.0.4
                  Adapter    "linux-control": 1.1.5    , installed 1.1.5
                  Adapter    "mqtt"         : 5.2.0    , installed 5.2.0
                  Adapter    "net-tools"    : 1.0.11   , installed 1.0.11
                  Adapter    "netatmo"      : 3.1.0    , installed 3.1.0
                  Adapter    "notification-manager": 1.1.2, installed 1.1.2
                  Adapter    "openweathermap": 1.0.4   , installed 1.0.4
                  Adapter    "ping"         : 1.6.2    , installed 1.6.2
                  Adapter    "proxmox"      : 2.3.0    , installed 2.3.0
                  Adapter    "simple-api"   : 2.8.0    , installed 2.8.0
                  Adapter    "socketio"     : 6.7.0    , installed 6.7.0
                  Adapter    "sprinklecontrol": 0.2.13 , installed 0.2.13
                  Adapter    "tahoma"       : 0.10.4   , installed 0.10.4
                  Adapter    "telegram"     : 3.3.2    , installed 3.5.1
                  Adapter    "text2command" : 3.0.3    , installed 3.0.3
                  Adapter    "tr-064"       : 4.3.0    , installed 4.3.0
                  Adapter    "trashschedule": 3.3.0    , installed 3.3.0
                  Adapter    "vis"          : 1.5.6    , installed 1.5.6
                  Adapter    "vis-2"        : 2.9.32   , installed 2.9.64
                  Adapter    "vis-2-widgets-energy": 0.3.11, installed 0.3.11
                  Adapter    "vis-2-widgets-gauges": 1.0.3, installed 1.0.3
                  Adapter    "vis-2-widgets-material": 1.3.32, installed 1.3.33
                  Adapter    "vis-2-widgets-radar-trap": 2.0.0, installed 2.0.0
                  Adapter    "vis-bars"     : 0.1.4    , installed 0.1.4
                  Adapter    "vis-colorpicker": 2.0.3  , installed 2.0.3
                  Adapter    "vis-fancyswitch": 1.1.0  , installed 1.1.0
                  Adapter    "vis-google-fonts": 1.0.4 , installed 1.0.4
                  Adapter    "vis-hqwidgets": 1.5.1    , installed 1.5.1
                  Adapter    "vis-icontwo"  : 1.5.0    , installed 1.5.0
                  Adapter    "vis-inventwo" : 3.3.4    , installed 3.3.4
                  Adapter    "vis-jqui-mfd" : 1.1.1    , installed 1.1.1
                  Adapter    "vis-justgage" : 2.1.7    , installed 2.1.7
                  Adapter    "vis-lcars"    : 1.1.1    , installed 1.1.1
                  Adapter    "vis-materialdesign": 0.5.9, installed 0.5.9
                  Adapter    "vis-metro"    : 1.2.0    , installed 1.2.0
                  Adapter    "vis-plumb"    : 1.0.2    , installed 1.0.2
                  Adapter    "vis-timeandweather": 1.2.2, installed 1.2.2
                  Adapter    "vis-weather"  : 2.5.9    , installed 2.5.9
                  Adapter    "web"          : 6.2.5    , installed 6.2.6
                  Adapter    "wled"         : 0.7.2    , installed 0.7.3-beta.0
                  Adapter    "ws"           : 2.6.1    , installed 2.6.1
                  
                  Objects and States
                  Please stand by - This may take a while
                  Objects:        1
                  States:         18125
                  
                  *** OS-Repositories and Updates ***
                  Hit:1 http://security.debian.org bookworm-security InRelease
                  Hit:2 http://ftp.debian.org/debian bookworm InRelease
                  Hit:3 http://ftp.debian.org/debian bookworm-updates InRelease
                  Hit:4 https://deb.nodesource.com/node_18.x nodistro InRelease
                  Reading package lists...
                  Pending Updates: 0
                  
                  *** Listening Ports ***
                  Active Internet connections (only servers)
                  Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode      PID/Program name    
                  tcp        0      0 192.168.178.213:8081    0.0.0.0:*               LISTEN      1001       98604566   1857593/io.admin.0  
                  tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      1001       98604508   1857575/iobroker.js 
                  tcp        0      0 127.0.0.1:9001          0.0.0.0:*               LISTEN      1001       98604501   1857575/iobroker.js 
                  tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      0          41595      973/master          
                  tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      0          2994       1/init              
                  tcp6       0      0 ::1:25                  :::*                    LISTEN      0          41596      973/master          
                  tcp6       0      0 :::111                  :::*                    LISTEN      0          2996       1/init              
                  tcp6       0      0 :::22                   :::*                    LISTEN      0          26573      1/init              
                  udp        0      0 0.0.0.0:111             0.0.0.0:*                           0          2995       1/init              
                  udp6       0      0 :::111                  :::*                                0          2997       1/init              
                  
                  *** Log File - Last 25 Lines ***
                  
                  2024-06-17 15:12:39.905  - silly: javascript.0 (1857635) redis psubscribe cfg.o.system.user.*
                  2024-06-17 15:12:39.931  - silly: javascript.0 (1857635) redis psubscribe cfg.o.enum.*
                  2024-06-17 15:12:39.932  - silly: javascript.0 (1857635) objectDB connected
                  2024-06-17 15:12:39.933  - debug: javascript.0 (1857635) Redis States: Use Redis connection: 127.0.0.1:9000
                  2024-06-17 15:12:39.949  - debug: javascript.0 (1857635) States create System PubSub Client
                  2024-06-17 15:12:39.949  - debug: javascript.0 (1857635) States create User PubSub Client
                  2024-06-17 15:12:40.021  - debug: javascript.0 (1857635) States connected to redis: 127.0.0.1:9000
                  2024-06-17 15:12:40.021  - silly: javascript.0 (1857635) statesDB connected
                  2024-06-17 15:12:40.048  - debug: javascript.0 (1857635) Plugin sentry Initialize Plugin (enabled=true)
                  2024-06-17 15:12:40.186  - info: javascript.0 (1857635) starting. Version 8.3.1 in /opt/iobroker/node_modules/iobroker.javascript, node: v18.20.3, js-controller: 6.0.4
                  2024-06-17 15:12:40.196  - debug: javascript.0 (1857635) config.subscribe (Do not subscribe all states on start): false
                  2024-06-17 15:12:40.213  - silly: javascript.0 (1857635) writeFile(filename: "javascript.d.ts", content: length 74273, overwrite: true
                  2024-06-17 15:12:40.213  - silly: javascript.0 (1857635)   creating new file with version 1
                  2024-06-17 15:12:40.213  - silly: javascript.0 (1857635) writeFile(filename: "javascript.d.ts", content: length 74273, overwrite: true
                  2024-06-17 15:12:40.213  - silly: javascript.0 (1857635)   creating new file with version 1
                  2024-06-17 15:12:40.214  - debug: javascript.0 (1857635) Found custom dependency in config: "mathjs@latest"
                  2024-06-17 15:12:40.219  - silly: javascript.0 (1857635) States system redis pmessage system.adapter.javascript.0.logLevel/system.adapter.javascript.0.logLevel:{"val":"silly","ack":true,"ts":1718629960215,"q":0,"from":"system.adapter.javascript.0","lc":1718623500703}
                  2024-06-17 15:12:43.294  - info: host.iobroker instance system.adapter.telegram.0 started with pid 1857686
                  2024-06-17 15:12:43.295  - silly: javascript.0 (1857635) States system redis pmessage io.log.system.adapter.javascript.0/io.log.system.adapter.javascript.0:{"severity":"info","ts":1718629963294,"message":"host.iobroker instance system.adapter.telegram.0 started with pid 1857686","from":"host.iobroker","_id":48789872}
                  2024-06-17 15:12:43.773  - debug: javascript.0 (1857635) Installed custom dependency: "mathjs@latest"
                  2024-06-17 15:12:45.018  - debug: javascript.0 (1857635) Found custom dependency in config: "moment-timezone@latest"
                  2024-06-17 15:12:45.066  - info: telegram.0 (1857686) starting. Version 3.5.1 in /opt/iobroker/node_modules/iobroker.telegram, node: v18.20.3, js-controller: 6.0.4
                  2024-06-17 15:12:45.153  - silly: javascript.0 (1857635) States system redis pmessage io.log.system.adapter.javascript.0/io.log.system.adapter.javascript.0:{"severity":"info","ts":1718629965066,"message":"telegram.0 (1857686) starting. Version 3.5.1 in /opt/iobroker/node_modules/iobroker.telegram, node: v18.20.3, js-controller: 6.0.4","from":"telegram.0","_id":22270636}
                  2024-06-17 15:12:47.322  - silly: javascript.0 (1857635) States system redis pmessage io.log.system.adapter.javascript.0/io.log.system.adapter.javascript.0:{"severity":"info","ts":1718629967319,"message":"host.iobroker instance system.adapter.backitup.0 started with pid 1858269","from":"host.iobroker","_id":48789874}
                  2024-06-17 15:12:47.319  - info: host.iobroker instance system.adapter.backitup.0 started with pid 1858269
                  
                  

                  Und kurz

                  ======================= SUMMARY =======================
                                         v.2024-05-22
                  
                  
                  Static hostname: iobroker
                        Icon name: computer-container
                          Chassis: container ☐
                   Virtualization: lxc
                  Operating System: Debian GNU/Linux 12 (bookworm)
                           Kernel: Linux 6.5.11-7-pve
                     Architecture: x86-64
                  
                  Installation:           lxc
                  Kernel:                 x86_64
                  Userland:               64 bit
                  Timezone:               Europe/Berlin (CEST, +0200)
                  User-ID:                1000
                  Display-Server:         false
                  Boot Target:            graphical.target
                  
                  Pending OS-Updates:     0
                  Pending iob updates:    0
                  
                  Nodejs-Installation:
                  /usr/bin/nodejs         v18.20.3
                  /usr/bin/node           v18.20.3
                  /usr/bin/npm            10.7.0
                  /usr/bin/npx            10.7.0
                  /usr/bin/corepack       0.28.0
                  
                  Recommended versions are nodejs 18.20.3 and npm 10.7.0
                  Your nodejs installation is correct
                  
                  MEMORY: 
                                total        used        free      shared  buff/cache   available
                  Mem:            8.6G        2.8G        4.3G        2.5M        1.4G        5.8G
                  Swap:           536M        7.1M        529M
                  Total:          9.1G        2.8G        4.8G
                  
                  Active iob-Instances:   34
                  Active repo(s): Stable (default)
                  
                  ioBroker Core:          js-controller           6.0.4
                                         admin                   6.17.14
                  
                  ioBroker Status:        iobroker is running on this host.
                  
                  
                  Objects type: jsonl
                  States  type: jsonl
                  
                  Status admin and web instance:
                  + system.adapter.admin.0                  : admin                 : iobroker                                 -  enabled, port: 8081, bind: 192.168.178.213, run as: admin
                  + system.adapter.web.0                    : web                   : iobroker                                 -  enabled, port: 8082, bind: 0.0.0.0, run as: admin
                  
                  Objects:                20914
                  States:                 18458
                  
                  Size of iob-Database:
                  
                  36M     /opt/iobroker/iobroker-data/objects.jsonl
                  18M     /opt/iobroker/iobroker-data/states.jsonl
                  
                  
                  
                  =================== END OF SUMMARY ====================
                  

                  Jemand einen Tip für mich?

                  foxriver76F 1 Antwort Letzte Antwort
                  0
                  • U UV-on-fire

                    Hallo zusammen,

                    da ich morgen ein paar Wochen abwesend sein werde habe ich gestern noch die aktuellen Updates gefahren.

                    Seitdem bekomme ich folgende Fehlermeldungen aus verschiedenen Scripten:


                    2024-06-17 13:22:00.002 - error: javascript.0 (125916) script.js.Materialdesign.Netzwerk: [netzwerkStatus] error: moment is not a function, stack: TypeError: moment is not a function
                    at Object.netzwerkStatus (script.js.Materialdesign.Netzwerk:2518:52)
                    at Job.job (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1769:34)
                    at Job.invoke (/opt/iobroker/node_modules/node-schedule/lib/Job.js:171:15)
                    at /opt/iobroker/node_modules/node-schedule/lib/Invocation.js:268:28
                    at Timeout._onTimeout (/opt/iobroker/node_modules/node-schedule/lib/Invocation.js:228:7)
                    at listOnTimeout (node:internal/timers:569:17)
                    at processTimers (node:internal/timers:512:7)
                    2024-06-17 13:22:10.001 - error: javascript.0 (125916) script.js.Materialdesign.Netzwerk: [netzwerkStatus] error: moment is not a function, stack: TypeError: moment is not a function
                    at Object.netzwerkStatus (script.js.Materialdesign.Netzwerk:2518:52)
                    at Job.job (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1769:34)
                    at Job.invoke (/opt/iobroker/node_modules/node-schedule/lib/Job.js:171:15)
                    at /opt/iobroker/node_modules/node-schedule/lib/Invocation.js:268:28
                    at Timeout._onTimeout (/opt/iobroker/node_modules/node-schedule/lib/Invocation.js:228:7)
                    at listOnTimeout (node:internal/timers:569:17)
                    at processTimers (node:internal/timers:512:7)
                    2024-06-17 13:22:12.336 - info: linux-control.0 (3642478) State value to set for "linux-control.0.proxmox.Temp_Kern_1" has to be type "string" but received type "number"

                    oder auch


                    2024-06-17 13:18:08.573 - error: javascript.0 (125916) script.js.Materialdesign.Proxmox: TypeError: moment.locale is not a function
                    2024-06-17 13:18:08.573 - error: javascript.0 (125916) at script.js.Materialdesign.Proxmox:362:8
                    2024-06-17 13:18:08.573 - error: javascript.0 (125916) at script.js.Materialdesign.Proxmox:789:3
                    2024-06-17 13:18:08.573 - error: javascript.0 (125916) at Script.runInContext (node:vm:133:12)
                    2024-06-17 13:18:08.579 - info: javascript.0 (125916) Start JavaScript script.js.Materialdesign.Skriptstatus (Javascript/js)
                    2024-06-17 13:18:08.593 - error: javascript.0 (125916) script.js.Materialdesign.Skriptstatus: TypeError: moment.locale is not a function
                    2024-06-17 13:18:08.593 - error: javascript.0 (125916) at script.js.Materialdesign.Skriptstatus:62:8
                    2024-06-17 13:18:08.593 - error: javascript.0 (125916) at script.js.Materialdesign.Skriptstatus:600:3
                    2024-06-17 13:18:08.593 - error: javascript.0 (125916) at Script.runInContext (node:vm:133:12)
                    2024-06-17 13:18:08.594 - info: javascript.0 (125916) Start JavaScript script.js.Materialdesign.StatusAdapter (Javascript/js)
                    2024-06-17 13:18:08.608 - error: javascript.0 (125916) script.js.Materialdesign.StatusAdapter: TypeError: moment.locale is not a function
                    2024-06-17 13:18:08.608 - error: javascript.0 (125916) at script.js.Materialdesign.StatusAdapter:80:8
                    2024-06-17 13:18:08.608 - error: javascript.0 (125916) at script.js.Materialdesign.StatusAdapter:678:3
                    2024-06-17 13:18:08.608 - error: javascript.0 (125916) at Script.runInContext (node:vm:133:12)

                    Ich habe auch bereits die npm module mehrfach gelöscht und neu eingetragen sowie den Adapter neu gestartet. Außerdem habe ich auch einen neue Instanz angelegt, die Module wieder eingetragen und eines der Scripte dort ausgeführt mit dem selben Fehlerbild.

                    Es scheint aber die NPM Module sind korrekt eingetragen
                    Screenshot 2024-06-17 151149.png

                    Allerdings scheint da was bei der Syntaxhilfe auch nicht mehr zu funktionieren. Sobald ich die Eintrage zeigt er mir am Textende nur den Cursor und bei Betätigen von enter oder speichern wird es scheinbar nicht übernommen.

                    Screenshot 2024-06-17 152117.png


                    2024-06-17 13:25:04.564 - debug: javascript.0 (241347) Found custom dependency in config: "moment-timezone@latest"
                    2024-06-17 13:25:07.191 - debug: javascript.0 (241347) Installed custom dependency: "moment-timezone@latest"
                    2024-06-17 13:25:07.201 - debug: javascript.0 (241347) Found custom dependency in config: "moment-duration-format@latest"
                    2024-06-17 13:25:09.864 - debug: javascript.0 (241347) Installed custom dependency: "moment-duration-format@latest"
                    2024-06-17 13:25:09.885 - debug: javascript.0 (241347) Found custom dependency in config: "moment@latest"
                    2024-06-17 13:25:12.578 - debug: javascript.0 (241347) Installed custom dependency: "moment@latest"

                    Hir noch die Ausgabe von IOB DIAG

                    Skript v.2024-05-22
                    
                    *** BASE SYSTEM ***
                    Static hostname: iobroker
                          Icon name: computer-container
                            Chassis: container ☐
                     Virtualization: lxc
                    Operating System: Debian GNU/Linux 12 (bookworm)
                             Kernel: Linux 6.5.11-7-pve
                       Architecture: x86-64
                    
                    model name      : Intel(R) Core(TM) i5-8259U CPU @ 2.30GHz
                    Docker          : false
                    Virtualization  : lxc
                    Kernel          : x86_64
                    Userland        : 64 bit
                    
                    Systemuptime and Load:
                    15:11:03 up 15 days,  3:37,  2 users,  load average: 1.70, 1.85, 1.45
                    CPU threads: 2
                    
                    
                    *** Time and Time Zones ***
                                  Local time: Mon 2024-06-17 15:11:03 CEST
                              Universal time: Mon 2024-06-17 13:11:03 UTC
                                    RTC time: n/a
                                   Time zone: Europe/Berlin (CEST, +0200)
                    System clock synchronized: yes
                                 NTP service: inactive
                             RTC in local TZ: no
                    
                    *** Users and Groups ***
                    User that called 'iob diag':
                    uviob
                    HOME=/home/uviob
                    GROUPS=uviob sudo iobroker
                    
                    User that is running 'js-controller':
                    iobroker
                    HOME=/home/iobroker
                    GROUPS=iobroker tty dialout audio video plugdev
                    
                    *** Display-Server-Setup ***
                    Display-Server: false
                    Desktop: 
                    Terminal: 
                    Boot Target:    graphical.target
                    
                    *** MEMORY ***
                                  total        used        free      shared  buff/cache   available
                    Mem:            8.6G        7.3G        296M        2.3M        963M        1.3G
                    Swap:           536M        233M        303M
                    Total:          9.1G        7.6G        600M
                    
                    Active iob-Instances:   0
                    
                            8192 M total memory
                            6828 M used memory
                            6094 M active memory
                            1249 M inactive memory
                             445 M free memory
                               0 M buffer memory
                             918 M swap cache
                             512 M total swap
                             222 M used swap
                             289 M free swap
                    
                    *** top - Table Of Processes  ***
                    top - 15:11:03 up 15 days,  3:37,  2 users,  load average: 1.70, 1.85, 1.45
                    Tasks:  71 total,   2 running,  69 sleeping,   0 stopped,   0 zombie
                    %Cpu(s): 33.3 us,  0.0 sy,  0.0 ni, 33.3 id, 33.3 wa,  0.0 hi,  0.0 si,  0.0 st 
                    MiB Mem :   8192.0 total,    618.0 free,   6655.3 used,    918.7 buff/cache     
                    MiB Swap:    512.0 total,    289.7 free,    222.3 used.   1536.7 avail Mem 
                    
                    *** FAILED SERVICES ***
                    
                     UNIT                                 LOAD   ACTIVE SUB    DESCRIPTION
                    * systemd-networkd-wait-online.service loaded failed failed Wait for Network to be Configured
                    
                    LOAD   = Reflects whether the unit definition was properly loaded.
                    ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
                    SUB    = The low-level unit activation state, values depend on unit type.
                    1 loaded units listed.
                    
                    *** FILESYSTEM ***
                    Filesystem                       Type   Size  Used Avail Use% Mounted on
                    /dev/mapper/pve-vm--210--disk--1 ext4    25G   15G  8.6G  63% /
                    none                             tmpfs  492K  4.0K  488K   1% /dev
                    tmpfs                            tmpfs  7.8G     0  7.8G   0% /dev/shm
                    tmpfs                            tmpfs  3.1G  2.6M  3.1G   1% /run
                    tmpfs                            tmpfs  5.0M     0  5.0M   0% /run/lock
                    tmpfs                            tmpfs  1.6G     0  1.6G   0% /run/user/1000
                    
                    Messages concerning ext4 filesystem in dmesg:
                    [Sun Jun  2 11:32:42 2024] EXT4-fs (dm-1): mounted filesystem 1192067b-46b8-4ac5-a608-5f91cdfb985a ro with ordered data mode. Quota mode: none.
                    [Sun Jun  2 11:32:43 2024] EXT4-fs (dm-1): re-mounted 1192067b-46b8-4ac5-a608-5f91cdfb985a r/w. Quota mode: none.
                    [Sun Jun  2 11:32:44 2024] EXT4-fs (sda): mounted filesystem 52b7d67a-b075-47cb-8f0d-78dafd5f3aa1 r/w with ordered data mode. Quota mode: none.
                    [Sun Jun  2 11:32:57 2024] EXT4-fs warning (device dm-8): ext4_multi_mount_protect:328: MMP interval 42 higher than expected, please wait.
                    [Sun Jun  2 11:33:42 2024] EXT4-fs (dm-8): 15 orphan inodes deleted
                    [Sun Jun  2 11:33:42 2024] EXT4-fs (dm-8): recovery complete
                    [Sun Jun  2 11:33:42 2024] EXT4-fs (dm-8): mounted filesystem 8c9be52e-5c56-4c56-9e37-b7adc973b1e0 r/w with ordered data mode. Quota mode: none.
                    [Mon Jun  3 03:06:03 2024] EXT4-fs (dm-9): mounted filesystem 17044e68-e7a9-4220-9781-345fb7310a16 r/w with ordered data mode. Quota mode: none.
                    [Mon Jun  3 03:06:15 2024] EXT4-fs (dm-9): unmounting filesystem 17044e68-e7a9-4220-9781-345fb7310a16.
                    [Mon Jun  3 03:11:55 2024] EXT4-fs (dm-10): write access unavailable, skipping orphan cleanup
                    [Mon Jun  3 03:11:55 2024] EXT4-fs (dm-10): mounted filesystem 8c9be52e-5c56-4c56-9e37-b7adc973b1e0 ro without journal. Quota mode: none.
                    [Mon Jun  3 03:19:44 2024] EXT4-fs (dm-10): unmounting filesystem 8c9be52e-5c56-4c56-9e37-b7adc973b1e0.
                    [Mon Jun  3 03:19:45 2024] EXT4-fs (dm-7): mounted filesystem 06481f10-cf2d-4303-b869-aafe07fe3d39 r/w with ordered data mode. Quota mode: none.
                    [Mon Jun  3 03:20:00 2024] EXT4-fs (dm-7): unmounting filesystem 06481f10-cf2d-4303-b869-aafe07fe3d39.
                    [Mon Jun 10 03:05:30 2024] EXT4-fs (dm-9): mounted filesystem 17044e68-e7a9-4220-9781-345fb7310a16 r/w with ordered data mode. Quota mode: none.
                    [Mon Jun 10 03:05:43 2024] EXT4-fs (dm-9): unmounting filesystem 17044e68-e7a9-4220-9781-345fb7310a16.
                    [Mon Jun 10 03:11:17 2024] EXT4-fs (dm-10): write access unavailable, skipping orphan cleanup
                    [Mon Jun 10 03:11:17 2024] EXT4-fs (dm-10): mounted filesystem 8c9be52e-5c56-4c56-9e37-b7adc973b1e0 ro without journal. Quota mode: none.
                    [Mon Jun 10 03:19:01 2024] EXT4-fs (dm-10): unmounting filesystem 8c9be52e-5c56-4c56-9e37-b7adc973b1e0.
                    [Mon Jun 10 03:19:01 2024] EXT4-fs (dm-7): mounted filesystem 06481f10-cf2d-4303-b869-aafe07fe3d39 r/w with ordered data mode. Quota mode: none.
                    [Mon Jun 10 03:19:18 2024] EXT4-fs (dm-7): unmounting filesystem 06481f10-cf2d-4303-b869-aafe07fe3d39.
                    [Mon Jun 17 03:05:11 2024] EXT4-fs (dm-9): mounted filesystem 17044e68-e7a9-4220-9781-345fb7310a16 r/w with ordered data mode. Quota mode: none.
                    [Mon Jun 17 03:05:24 2024] EXT4-fs (dm-9): unmounting filesystem 17044e68-e7a9-4220-9781-345fb7310a16.
                    [Mon Jun 17 03:11:02 2024] EXT4-fs (dm-10): write access unavailable, skipping orphan cleanup
                    [Mon Jun 17 03:11:02 2024] EXT4-fs (dm-10): mounted filesystem 8c9be52e-5c56-4c56-9e37-b7adc973b1e0 ro without journal. Quota mode: none.
                    [Mon Jun 17 03:18:51 2024] EXT4-fs (dm-10): unmounting filesystem 8c9be52e-5c56-4c56-9e37-b7adc973b1e0.
                    [Mon Jun 17 03:18:51 2024] EXT4-fs (dm-7): mounted filesystem 06481f10-cf2d-4303-b869-aafe07fe3d39 r/w with ordered data mode. Quota mode: none.
                    [Mon Jun 17 03:19:07 2024] EXT4-fs (dm-7): unmounting filesystem 06481f10-cf2d-4303-b869-aafe07fe3d39.
                    
                    Show mounted filesystems:
                    TARGET                                                  SOURCE                           FSTYPE     OPTIONS
                    /                                                       /dev/mapper/pve-vm--210--disk--1 ext4       rw,relatime,stripe=16
                    |-/run                                                  tmpfs                            tmpfs      rw,nosuid,nodev,size=3245872k,nr_inodes=819200,mode=755,inode64
                    | |-/run/lock                                           tmpfs                            tmpfs      rw,nosuid,nodev,noexec,relatime,size=5120k,inode64
                    | |-/run/rpc_pipefs                                     sunrpc                           rpc_pipefs rw,relatime
                    | |-/run/credentials/systemd-tmpfiles-setup.service     ramfs                            ramfs      ro,nosuid,nodev,noexec,relatime,mode=700
                    | |-/run/credentials/systemd-sysctl.service             ramfs                            ramfs      ro,nosuid,nodev,noexec,relatime,mode=700
                    | |-/run/credentials/systemd-sysusers.service           ramfs                            ramfs      ro,nosuid,nodev,noexec,relatime,mode=700
                    | |-/run/credentials/systemd-tmpfiles-setup-dev.service ramfs                            ramfs      ro,nosuid,nodev,noexec,relatime,mode=700
                    | `-/run/user/1000                                      tmpfs                            tmpfs      rw,nosuid,nodev,relatime,size=1622932k,nr_inodes=405733,mode=700,uid=1000,gid=1000,inode64
                    |-/dev                                                  none                             tmpfs      rw,relatime,size=492k,mode=755,inode64
                    | |-/dev/shm                                            tmpfs                            tmpfs      rw,nosuid,nodev,inode64
                    | |-/dev/hugepages                                      hugetlbfs                        hugetlbfs  rw,relatime,pagesize=2M
                    | |-/dev/mqueue                                         mqueue                           mqueue     rw,nosuid,nodev,noexec,relatime
                    | |-/dev/.lxc/proc                                      proc                             proc       rw,relatime
                    | |-/dev/.lxc/sys                                       sys                              sysfs      rw,relatime
                    | |-/dev/pts                                            devpts                           devpts     rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=666,max=1026
                    | |-/dev/ptmx                                           devpts[/ptmx]                    devpts     rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=666,max=1026
                    | |-/dev/console                                        devpts[/0]                       devpts     rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=666,max=1026
                    | |-/dev/tty1                                           devpts[/1]                       devpts     rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=666,max=1026
                    | `-/dev/tty2                                           devpts[/2]                       devpts     rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=666,max=1026
                    |-/proc                                                 proc                             proc       rw,nosuid,nodev,noexec,relatime
                    | |-/proc/sys                                           proc[/sys]                       proc       ro,relatime
                    | | |-/proc/sys/kernel/random/boot_id                   none[/.lxc-boot-id]              tmpfs      ro,nosuid,nodev,noexec,relatime,size=492k,mode=755,inode64
                    | | `-/proc/sys/net                                     proc[/sys/net]                   proc       rw,nosuid,nodev,noexec,relatime
                    | |-/proc/sysrq-trigger                                 proc[/sysrq-trigger]             proc       ro,relatime
                    | |-/proc/cpuinfo                                       lxcfs[/proc/cpuinfo]             fuse.lxcfs rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other
                    | |-/proc/diskstats                                     lxcfs[/proc/diskstats]           fuse.lxcfs rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other
                    | |-/proc/loadavg                                       lxcfs[/proc/loadavg]             fuse.lxcfs rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other
                    | |-/proc/meminfo                                       lxcfs[/proc/meminfo]             fuse.lxcfs rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other
                    | |-/proc/slabinfo                                      lxcfs[/proc/slabinfo]            fuse.lxcfs rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other
                    | |-/proc/stat                                          lxcfs[/proc/stat]                fuse.lxcfs rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other
                    | |-/proc/swaps                                         lxcfs[/proc/swaps]               fuse.lxcfs rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other
                    | `-/proc/uptime                                        lxcfs[/proc/uptime]              fuse.lxcfs rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other
                    `-/sys                                                  sysfs                            sysfs      ro,nosuid,nodev,noexec,relatime
                     |-/sys/fs/fuse/connections                            fusectl                          fusectl    rw,nosuid,nodev,noexec,relatime
                     |-/sys/devices/virtual/net                            sysfs[/devices/virtual/net]      sysfs      rw,nosuid,nodev,noexec,relatime
                     |-/sys/fs/cgroup                                      none                             cgroup2    rw,nosuid,nodev,noexec,relatime
                     `-/sys/devices/system/cpu                             lxcfs[/sys/devices/system/cpu]   fuse.lxcfs rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other
                    
                    Files in neuralgic directories:
                    
                    /var:
                    3.4G    /var/
                    2.8G    /var/log
                    2.5G    /var/log/journal/c337b259b2a44b9da1e2356e14b395e6
                    2.5G    /var/log/journal
                    461M    /var/cache
                    
                    Hint: You are currently not seeing messages from other users and the system.
                         Users in groups 'adm', 'systemd-journal' can see all messages.
                         Pass -q to turn off this notice.
                    Archived and active journals take up 1.0G in the file system.
                    
                    /opt/iobroker/backups:
                    69M     /opt/iobroker/backups/
                    
                    /opt/iobroker/iobroker-data:
                    1.2G    /opt/iobroker/iobroker-data/
                    986M    /opt/iobroker/iobroker-data/files
                    251M    /opt/iobroker/iobroker-data/files/vis
                    243M    /opt/iobroker/iobroker-data/files/vis/widgets
                    156M    /opt/iobroker/iobroker-data/files/vis-2
                    
                    The five largest files in iobroker-data are:
                    35M     /opt/iobroker/iobroker-data/files/devices.admin/static/js/main.24f2bb56.js.map
                    29M     /opt/iobroker/iobroker-data/files/backitup.admin/static/js/main.ecef4f21.js.map
                    26M     /opt/iobroker/iobroker-data/objects.jsonl
                    24M     /opt/iobroker/iobroker-data/files/web.admin/static/js/main.4ff93037.js.map
                    24M     /opt/iobroker/iobroker-data/files/vis-2/static/js/main.f305bc29.js.map
                    
                    USB-Devices by-id:
                    USB-Sticks -  Avoid direct links to /dev/tty* in your adapter setups, please always prefer the links 'by-id':
                    
                    No Devices found 'by-id'
                    
                    
                    
                    
                    *** NodeJS-Installation ***
                    
                    /usr/bin/nodejs         v18.20.3
                    /usr/bin/node           v18.20.3
                    /usr/bin/npm            10.7.0
                    /usr/bin/npx            10.7.0
                    /usr/bin/corepack       0.28.0
                    
                    
                    nodejs:
                     Installed: 18.20.3-1nodesource1
                     Candidate: 18.20.3-1nodesource1
                     Version table:
                    *** 18.20.3-1nodesource1 1001
                           500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                           100 /var/lib/dpkg/status
                        18.20.2-1nodesource1 1001
                           500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                        18.20.1-1nodesource1 1001
                           500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                        18.20.0-1nodesource1 1001
                           500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                        18.19.1-1nodesource1 1001
                           500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                        18.19.0+dfsg-6~deb12u1 500
                           500 http://security.debian.org bookworm-security/main amd64 Packages
                        18.19.0-1nodesource1 1001
                           500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                        18.18.2-1nodesource1 1001
                           500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                        18.18.1-1nodesource1 1001
                           500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                        18.18.0-1nodesource1 1001
                           500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                        18.17.1-1nodesource1 1001
                           500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                        18.17.0-1nodesource1 1001
                           500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                        18.16.1-1nodesource1 1001
                           500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                        18.16.0-1nodesource1 1001
                           500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                        18.15.0-1nodesource1 1001
                           500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                        18.14.2-1nodesource1 1001
                           500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                        18.14.1-1nodesource1 1001
                           500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                        18.14.0-1nodesource1 1001
                           500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                        18.13.0+dfsg1-1 500
                           500 http://ftp.debian.org/debian bookworm/main amd64 Packages
                        18.13.0-1nodesource1 1001
                           500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                        18.12.0-1nodesource1 1001
                           500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                        18.11.0-1nodesource1 1001
                           500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                        18.10.0-1nodesource1 1001
                           500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                        18.9.1-1nodesource1 1001
                           500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                        18.9.0-1nodesource1 1001
                           500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                        18.8.0-1nodesource1 1001
                           500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                        18.7.0-1nodesource1 1001
                           500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                        18.6.0-1nodesource1 1001
                           500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                        18.5.0-1nodesource1 1001
                           500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                        18.4.0-1nodesource1 1001
                           500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                        18.3.0-1nodesource1 1001
                           500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                        18.2.0-1nodesource1 1001
                           500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                        18.1.0-1nodesource1 1001
                           500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                        18.0.0-1nodesource1 1001
                           500 https://deb.nodesource.com/node_18.x nodistro/main amd64 Packages
                    
                    Temp directories causing npm8 problem: 0
                    No problems detected
                    
                    Errors in npm tree:
                    
                    *** ioBroker-Installation ***
                    
                    ioBroker Status
                    No connection to databases possible ...
                    
                    Core adapters versions
                    js-controller:  6.0.4
                    admin:          6.17.14
                    javascript:     8.3.1
                    
                    nodejs modules from github:     0
                    
                    Adapter State
                    No connection to databases possible ...
                    
                    Enabled adapters with bindings
                    
                    ioBroker-Repositories
                    Stable (default): http://download.iobroker.net/sources-dist.json
                    Beta (latest) : http://download.iobroker.net/sources-dist-latest.json
                    
                    Active repo(s): Stable (default)
                    
                    Installed ioBroker-Instances
                    Used repository: Stable (default)
                    Adapter    "admin"        : 6.13.16  , installed 6.17.14
                    Adapter    "alias-manager": 1.2.6    , installed 1.2.6
                    Adapter    "backitup"     : 2.11.0   , installed 3.0.3
                    Adapter    "bmw"          : 2.5.7    , installed 2.8.0
                    Adapter    "cloud"        : 5.0.1    , installed 5.0.1
                    Adapter    "daswetter"    : 3.1.15   , installed 3.1.15
                    Adapter    "device-watcher": 2.12.1  , installed 2.12.1
                    Adapter    "devices"      : 1.1.5    , installed 1.1.5
                    Adapter    "discovery"    : 4.5.0    , installed 4.5.0
                    Adapter    "feiertage"    : 1.2.0    , installed 1.2.0
                    Adapter    "fitbit-fitness": 0.5.0   , installed 0.5.0
                    Adapter    "flot"         : 1.12.0   , installed 1.12.0
                    Adapter    "fritzdect"    : 2.5.9    , installed 2.5.9
                    Adapter    "heizoel"      : 1.0.3    , installed 1.0.3
                    Adapter    "history"      : 3.0.1    , installed 3.0.1
                    Adapter    "hm-rega"      : 4.0.0    , installed 4.0.0
                    Adapter    "hm-rpc"       : 1.17.0   , installed 1.17.0
                    Adapter    "ical"         : 1.15.0   , installed 1.15.0
                    Adapter    "icons-addictive-flavour-png": 0.1.0, installed 0.1.0
                    Adapter    "icons-fatcow-hosting": 0.1.0, installed 0.1.0
                    Adapter    "icons-icons8" : 0.0.1    , installed 0.0.1
                    Adapter    "icons-material-png": 0.1.0, installed 0.1.0
                    Adapter    "icons-material-svg": 0.1.0, installed 0.1.0
                    Adapter    "icons-mfd-png": 1.2.1    , installed 1.2.1
                    Adapter    "icons-mfd-svg": 1.2.0    , installed 1.2.0
                    Adapter    "icons-open-icon-library-png": 0.1.2, installed 0.1.3
                    Adapter    "icons-ultimate-png": 1.0.1, installed 1.0.1
                    Adapter    "javascript"   : 8.3.1    , installed 8.3.1
                    Controller "js-controller": 5.0.19   , installed 6.0.4
                    Adapter    "linux-control": 1.1.5    , installed 1.1.5
                    Adapter    "mqtt"         : 5.2.0    , installed 5.2.0
                    Adapter    "net-tools"    : 1.0.11   , installed 1.0.11
                    Adapter    "netatmo"      : 3.1.0    , installed 3.1.0
                    Adapter    "notification-manager": 1.1.2, installed 1.1.2
                    Adapter    "openweathermap": 1.0.4   , installed 1.0.4
                    Adapter    "ping"         : 1.6.2    , installed 1.6.2
                    Adapter    "proxmox"      : 2.3.0    , installed 2.3.0
                    Adapter    "simple-api"   : 2.8.0    , installed 2.8.0
                    Adapter    "socketio"     : 6.7.0    , installed 6.7.0
                    Adapter    "sprinklecontrol": 0.2.13 , installed 0.2.13
                    Adapter    "tahoma"       : 0.10.4   , installed 0.10.4
                    Adapter    "telegram"     : 3.3.2    , installed 3.5.1
                    Adapter    "text2command" : 3.0.3    , installed 3.0.3
                    Adapter    "tr-064"       : 4.3.0    , installed 4.3.0
                    Adapter    "trashschedule": 3.3.0    , installed 3.3.0
                    Adapter    "vis"          : 1.5.6    , installed 1.5.6
                    Adapter    "vis-2"        : 2.9.32   , installed 2.9.64
                    Adapter    "vis-2-widgets-energy": 0.3.11, installed 0.3.11
                    Adapter    "vis-2-widgets-gauges": 1.0.3, installed 1.0.3
                    Adapter    "vis-2-widgets-material": 1.3.32, installed 1.3.33
                    Adapter    "vis-2-widgets-radar-trap": 2.0.0, installed 2.0.0
                    Adapter    "vis-bars"     : 0.1.4    , installed 0.1.4
                    Adapter    "vis-colorpicker": 2.0.3  , installed 2.0.3
                    Adapter    "vis-fancyswitch": 1.1.0  , installed 1.1.0
                    Adapter    "vis-google-fonts": 1.0.4 , installed 1.0.4
                    Adapter    "vis-hqwidgets": 1.5.1    , installed 1.5.1
                    Adapter    "vis-icontwo"  : 1.5.0    , installed 1.5.0
                    Adapter    "vis-inventwo" : 3.3.4    , installed 3.3.4
                    Adapter    "vis-jqui-mfd" : 1.1.1    , installed 1.1.1
                    Adapter    "vis-justgage" : 2.1.7    , installed 2.1.7
                    Adapter    "vis-lcars"    : 1.1.1    , installed 1.1.1
                    Adapter    "vis-materialdesign": 0.5.9, installed 0.5.9
                    Adapter    "vis-metro"    : 1.2.0    , installed 1.2.0
                    Adapter    "vis-plumb"    : 1.0.2    , installed 1.0.2
                    Adapter    "vis-timeandweather": 1.2.2, installed 1.2.2
                    Adapter    "vis-weather"  : 2.5.9    , installed 2.5.9
                    Adapter    "web"          : 6.2.5    , installed 6.2.6
                    Adapter    "wled"         : 0.7.2    , installed 0.7.3-beta.0
                    Adapter    "ws"           : 2.6.1    , installed 2.6.1
                    
                    Objects and States
                    Please stand by - This may take a while
                    Objects:        1
                    States:         18125
                    
                    *** OS-Repositories and Updates ***
                    Hit:1 http://security.debian.org bookworm-security InRelease
                    Hit:2 http://ftp.debian.org/debian bookworm InRelease
                    Hit:3 http://ftp.debian.org/debian bookworm-updates InRelease
                    Hit:4 https://deb.nodesource.com/node_18.x nodistro InRelease
                    Reading package lists...
                    Pending Updates: 0
                    
                    *** Listening Ports ***
                    Active Internet connections (only servers)
                    Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode      PID/Program name    
                    tcp        0      0 192.168.178.213:8081    0.0.0.0:*               LISTEN      1001       98604566   1857593/io.admin.0  
                    tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      1001       98604508   1857575/iobroker.js 
                    tcp        0      0 127.0.0.1:9001          0.0.0.0:*               LISTEN      1001       98604501   1857575/iobroker.js 
                    tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      0          41595      973/master          
                    tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      0          2994       1/init              
                    tcp6       0      0 ::1:25                  :::*                    LISTEN      0          41596      973/master          
                    tcp6       0      0 :::111                  :::*                    LISTEN      0          2996       1/init              
                    tcp6       0      0 :::22                   :::*                    LISTEN      0          26573      1/init              
                    udp        0      0 0.0.0.0:111             0.0.0.0:*                           0          2995       1/init              
                    udp6       0      0 :::111                  :::*                                0          2997       1/init              
                    
                    *** Log File - Last 25 Lines ***
                    
                    2024-06-17 15:12:39.905  - silly: javascript.0 (1857635) redis psubscribe cfg.o.system.user.*
                    2024-06-17 15:12:39.931  - silly: javascript.0 (1857635) redis psubscribe cfg.o.enum.*
                    2024-06-17 15:12:39.932  - silly: javascript.0 (1857635) objectDB connected
                    2024-06-17 15:12:39.933  - debug: javascript.0 (1857635) Redis States: Use Redis connection: 127.0.0.1:9000
                    2024-06-17 15:12:39.949  - debug: javascript.0 (1857635) States create System PubSub Client
                    2024-06-17 15:12:39.949  - debug: javascript.0 (1857635) States create User PubSub Client
                    2024-06-17 15:12:40.021  - debug: javascript.0 (1857635) States connected to redis: 127.0.0.1:9000
                    2024-06-17 15:12:40.021  - silly: javascript.0 (1857635) statesDB connected
                    2024-06-17 15:12:40.048  - debug: javascript.0 (1857635) Plugin sentry Initialize Plugin (enabled=true)
                    2024-06-17 15:12:40.186  - info: javascript.0 (1857635) starting. Version 8.3.1 in /opt/iobroker/node_modules/iobroker.javascript, node: v18.20.3, js-controller: 6.0.4
                    2024-06-17 15:12:40.196  - debug: javascript.0 (1857635) config.subscribe (Do not subscribe all states on start): false
                    2024-06-17 15:12:40.213  - silly: javascript.0 (1857635) writeFile(filename: "javascript.d.ts", content: length 74273, overwrite: true
                    2024-06-17 15:12:40.213  - silly: javascript.0 (1857635)   creating new file with version 1
                    2024-06-17 15:12:40.213  - silly: javascript.0 (1857635) writeFile(filename: "javascript.d.ts", content: length 74273, overwrite: true
                    2024-06-17 15:12:40.213  - silly: javascript.0 (1857635)   creating new file with version 1
                    2024-06-17 15:12:40.214  - debug: javascript.0 (1857635) Found custom dependency in config: "mathjs@latest"
                    2024-06-17 15:12:40.219  - silly: javascript.0 (1857635) States system redis pmessage system.adapter.javascript.0.logLevel/system.adapter.javascript.0.logLevel:{"val":"silly","ack":true,"ts":1718629960215,"q":0,"from":"system.adapter.javascript.0","lc":1718623500703}
                    2024-06-17 15:12:43.294  - info: host.iobroker instance system.adapter.telegram.0 started with pid 1857686
                    2024-06-17 15:12:43.295  - silly: javascript.0 (1857635) States system redis pmessage io.log.system.adapter.javascript.0/io.log.system.adapter.javascript.0:{"severity":"info","ts":1718629963294,"message":"host.iobroker instance system.adapter.telegram.0 started with pid 1857686","from":"host.iobroker","_id":48789872}
                    2024-06-17 15:12:43.773  - debug: javascript.0 (1857635) Installed custom dependency: "mathjs@latest"
                    2024-06-17 15:12:45.018  - debug: javascript.0 (1857635) Found custom dependency in config: "moment-timezone@latest"
                    2024-06-17 15:12:45.066  - info: telegram.0 (1857686) starting. Version 3.5.1 in /opt/iobroker/node_modules/iobroker.telegram, node: v18.20.3, js-controller: 6.0.4
                    2024-06-17 15:12:45.153  - silly: javascript.0 (1857635) States system redis pmessage io.log.system.adapter.javascript.0/io.log.system.adapter.javascript.0:{"severity":"info","ts":1718629965066,"message":"telegram.0 (1857686) starting. Version 3.5.1 in /opt/iobroker/node_modules/iobroker.telegram, node: v18.20.3, js-controller: 6.0.4","from":"telegram.0","_id":22270636}
                    2024-06-17 15:12:47.322  - silly: javascript.0 (1857635) States system redis pmessage io.log.system.adapter.javascript.0/io.log.system.adapter.javascript.0:{"severity":"info","ts":1718629967319,"message":"host.iobroker instance system.adapter.backitup.0 started with pid 1858269","from":"host.iobroker","_id":48789874}
                    2024-06-17 15:12:47.319  - info: host.iobroker instance system.adapter.backitup.0 started with pid 1858269
                    
                    

                    Und kurz

                    ======================= SUMMARY =======================
                                           v.2024-05-22
                    
                    
                    Static hostname: iobroker
                          Icon name: computer-container
                            Chassis: container ☐
                     Virtualization: lxc
                    Operating System: Debian GNU/Linux 12 (bookworm)
                             Kernel: Linux 6.5.11-7-pve
                       Architecture: x86-64
                    
                    Installation:           lxc
                    Kernel:                 x86_64
                    Userland:               64 bit
                    Timezone:               Europe/Berlin (CEST, +0200)
                    User-ID:                1000
                    Display-Server:         false
                    Boot Target:            graphical.target
                    
                    Pending OS-Updates:     0
                    Pending iob updates:    0
                    
                    Nodejs-Installation:
                    /usr/bin/nodejs         v18.20.3
                    /usr/bin/node           v18.20.3
                    /usr/bin/npm            10.7.0
                    /usr/bin/npx            10.7.0
                    /usr/bin/corepack       0.28.0
                    
                    Recommended versions are nodejs 18.20.3 and npm 10.7.0
                    Your nodejs installation is correct
                    
                    MEMORY: 
                                  total        used        free      shared  buff/cache   available
                    Mem:            8.6G        2.8G        4.3G        2.5M        1.4G        5.8G
                    Swap:           536M        7.1M        529M
                    Total:          9.1G        2.8G        4.8G
                    
                    Active iob-Instances:   34
                    Active repo(s): Stable (default)
                    
                    ioBroker Core:          js-controller           6.0.4
                                           admin                   6.17.14
                    
                    ioBroker Status:        iobroker is running on this host.
                    
                    
                    Objects type: jsonl
                    States  type: jsonl
                    
                    Status admin and web instance:
                    + system.adapter.admin.0                  : admin                 : iobroker                                 -  enabled, port: 8081, bind: 192.168.178.213, run as: admin
                    + system.adapter.web.0                    : web                   : iobroker                                 -  enabled, port: 8082, bind: 0.0.0.0, run as: admin
                    
                    Objects:                20914
                    States:                 18458
                    
                    Size of iob-Database:
                    
                    36M     /opt/iobroker/iobroker-data/objects.jsonl
                    18M     /opt/iobroker/iobroker-data/states.jsonl
                    
                    
                    
                    =================== END OF SUMMARY ====================
                    

                    Jemand einen Tip für mich?

                    foxriver76F Offline
                    foxriver76F Offline
                    foxriver76
                    Developer
                    schrieb am zuletzt editiert von
                    #173

                    @uv-on-fire mit controller beta bitte auch javascript beta nutzen (8.6.0 aktuell)

                    Videotutorials & mehr

                    Hier könnt ihr mich unterstützen.

                    U 1 Antwort Letzte Antwort
                    0
                    • foxriver76F foxriver76

                      @uv-on-fire mit controller beta bitte auch javascript beta nutzen (8.6.0 aktuell)

                      U Offline
                      U Offline
                      UV-on-fire
                      schrieb am zuletzt editiert von
                      #174

                      @foxriver76
                      Hast natürlich recht. Habe soviel rumptobiert und auch mal eine ältere Version wieder installiert. Dachte ich hätte auch den controller wieder zurückgesetzt aber das ahbe ich wohl vergessen.

                      Macht aber keinen Unterschied. Hier das aktuelle log nach wieder update auf 8.6.0


                      2024-06-17 16:30:07.577 - error: javascript.0 (3014300) script.js.Materialdesign.StatusAdapter: [adapterStatus] error: moment.duration(...).format is not a function, stack: TypeError: moment.duration(...).format is not a function
                      at Object.adapterStatus (script.js.Materialdesign.StatusAdapter:2370:115)
                      at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1427:38)
                      at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:644:29)
                      at Immediate._onImmediate (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/src/lib/adapter/adapter.ts:11043:62)
                      at processImmediate (node:internal/timers:476:21)

                      foxriver76F 1 Antwort Letzte Antwort
                      0
                      • U UV-on-fire

                        @foxriver76
                        Hast natürlich recht. Habe soviel rumptobiert und auch mal eine ältere Version wieder installiert. Dachte ich hätte auch den controller wieder zurückgesetzt aber das ahbe ich wohl vergessen.

                        Macht aber keinen Unterschied. Hier das aktuelle log nach wieder update auf 8.6.0


                        2024-06-17 16:30:07.577 - error: javascript.0 (3014300) script.js.Materialdesign.StatusAdapter: [adapterStatus] error: moment.duration(...).format is not a function, stack: TypeError: moment.duration(...).format is not a function
                        at Object.adapterStatus (script.js.Materialdesign.StatusAdapter:2370:115)
                        at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1427:38)
                        at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:644:29)
                        at Immediate._onImmediate (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/src/lib/adapter/adapter.ts:11043:62)
                        at processImmediate (node:internal/timers:476:21)

                        foxriver76F Offline
                        foxriver76F Offline
                        foxriver76
                        Developer
                        schrieb am zuletzt editiert von
                        #175

                        @uv-on-fire Hilft dir das https://github.com/ioBroker/ioBroker.javascript/issues/1613

                        Poste da gerne auch mal dein Skript rein.

                        Videotutorials & mehr

                        Hier könnt ihr mich unterstützen.

                        U 1 Antwort Letzte Antwort
                        0
                        • B Offline
                          B Offline
                          bommel_030
                          schrieb am zuletzt editiert von
                          #176

                          @foxriver76 @haus-automatisierung
                          Danke für den Fix mit den NPM Modulen und den hint mit dem

                          momentDurationFormatSetup(moment);
                          

                          Jetzt läuft mit cotroller 6.0.5 und java 8.6.0 wieder alles einwandfrei.

                          1 Antwort Letzte Antwort
                          0
                          • foxriver76F foxriver76

                            @uv-on-fire Hilft dir das https://github.com/ioBroker/ioBroker.javascript/issues/1613

                            Poste da gerne auch mal dein Skript rein.

                            U Offline
                            U Offline
                            UV-on-fire
                            schrieb am zuletzt editiert von
                            #177

                            @foxriver76
                            Sorry für die verspätete Antwort aber wie gesagt bin morgen für längere Zeit weg und muss noch einiges regeln bis dahin.

                            Also der Fix hat funktioniert.

                            Interessanterweise hat es genügt das in einem der Skripte ein zu tragen und jetzt laufen alle.

                            Jetzt motz noch ein anderes skript mathjs an


                            vascript.0
                            2024-06-17 21:31:59.693 error script.js.Materialdesign.Proxmox: [calculateCpuAverage] '0_userdata.0.Vis.MaterialDesignWidgets.Proxmox.vm.qemu_RaspiMatic.cpuLastValues' - error: Cannot read properties of undefined (reading 'round'), stack: TypeError: Cannot read properties of undefined (reading 'round') at calculateCpuAverage (script.js.Materialdesign.Proxmox:2891:140) at generateProgressBarCpuRow (script.js.Materialdesign.Proxmox:2791:9) at updateVm (script.js.Materialdesign.Proxmox:2598:9) at updateData (script.js.Materialdesign.Proxmox:2530:9) at script.js.Materialdesign.Proxmox:2939:1 at script.js.Materialdesign.Proxmox:2945:3 at Script.runInContext (node:vm:133:12) at Script.runInNewContext (node:vm:138:17) at execute (/opt/iobroker/node_modules/iobroker.javascript/main.js:1968:23) at prepareScript (/opt/iobroker/node_modules/iobroker.javascript/main.js:2215:13)
                            javascript.0
                            2024-06-17 21:31:59.692 error script.js.Materialdesign.Proxmox: [calculateCpuAverage] '0_userdata.0.Vis.MaterialDesignWidgets.Proxmox.vm.lxc_ioBroker.cpuLastValues' - error: Cannot read properties of undefined (reading 'round'), stack: TypeError: Cannot read properties of undefined (reading 'round') at calculateCpuAverage (script.js.Materialdesign.Proxmox:2891:140) at generateProgressBarCpuRow (script.js.Materialdesign.Proxmox:2791:9) at updateVm (script.js.Materialdesign.Proxmox:2598:9) at updateData (script.js.Materialdesign.Proxmox:2530:9) at script.js.Materialdesign.Proxmox:2939:1 at script.js.Materialdesign.Proxmox:2945:3 at Script.runInContext (node:vm:133:12) at Script.runInNewContext (node:vm:138:17) at execute (/opt/iobroker/node_modules/iobroker.javascript/main.js:1968:23) at prepareScript (/opt/iobroker/node_modules/iobroker.javascript/main.js:2215:13)
                            javascript.0
                            2024-06-17 21:31:59.689 error script.js.Materialdesign.Proxmox: [calculateCpuAverage] '0_userdata.0.Vis.MaterialDesignWidgets.Proxmox.node.promox.cpuLastValues' - error: Cannot read properties of undefined (reading 'round'), stack: TypeError: Cannot read properties of undefined (reading 'round') at calculateCpuAverage (script.js.Materialdesign.Proxmox:2891:140) at generateProgressBarCpuRow (script.js.Materialdesign.Proxmox:2791:9) at updateVm (script.js.Materialdesign.Proxmox:2598:9) at updateData (script.js.Materialdesign.Proxmox:2526:9) at script.js.Materialdesign.Proxmox:2939:1 at script.js.Materialdesign.Proxmox:2945:3 at Script.runInContext (node:vm:133:12) at Script.runInNewContext (node:vm:138:17) at execute (/opt/iobroker/node_modules/iobroker.javascript/main.js:1968:23) at prepareScript (/opt/iobroker/node_modules/iobroker.javascript/main.js:2215:13)
                            javascript.0
                            2024-06-17 21:31:59.686 error at Script.runInContext (node:vm:133:12)
                            javascript.0
                            2024-06-17 21:31:59.686 error at script.js.Materialdesign.Proxmox:789:3
                            javascript.0
                            2024-06-17 21:31:59.686 error at script.js.Materialdesign.Proxmox:359:16
                            javascript.0
                            2024-06-17 21:31:59.686 error at require (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:548:32)
                            javascript.0
                            2024-06-17 21:31:59.686 error at require (node:internal/modules/helpers:177:18)
                            javascript.0
                            2024-06-17 21:31:59.686 error at Module.require (node:internal/modules/cjs/loader:1231:19)
                            javascript.0
                            2024-06-17 21:31:59.686 error script.js.Materialdesign.Proxmox: Error: Cannot find module 'mathjs'

                            Das skript dazu:


                            /************************************************************************************************************************************************************************
                            Version: 1.0.2
                            created by Scrounger

                            Dieses Skript erzeugt json strings um Proxmox Informationen im VIS mit den Material Design Widgets darzustellen

                            !!! Voraussetzungen !!!

                            • Material Design Widgets >= 0.3.19
                            • Proxmox >= 1.0.2
                            • Javascript Adapter >= 4.6.1
                            • Javascript Adapter NPM Module: moment, moment-timezone, moment-duration-format, mathjs
                              =========================================================================================================================================================================

                            --- Links ---

                            • Support: https://forum.iobroker.net/topic/35296/material-design-widgets-proxmox
                            • Github: https://github.com/Scrounger/ioBroker.vis-materialdesign/tree/master/examples/Proxmox

                            =========================================================================================================================================================================

                            --- Changelog ---

                            • 1.0.0: Initial release
                            • 1.0.1: Number decimal format changed
                            • 1.0.2: Bug Fix wenn nur ein Datenpunkt für die Temperatur verwendet wird
                            • 1.0.3: Einstellung 'iconColor' für icon Farbe hinzugefügt

                            ************************************************************************************************************************************************************************/

                            // Skript Einstellungen *************************************************************************************************************************************************
                            let idDatenpunktPrefix = '0_userdata.0' // '0_userdata.0' or 'javascript.x'
                            let idDatenPunktStrukturPrefix = 'Vis.MaterialDesignWidgets.Proxmox' // Struktur unter Prefix

                            let triggerDatenpunkt = "proxmox.0.node_pve.uptime"; // Datenpunkt um Skript Ausführung zu triggern (z.B. uptime einer Node)

                            let cpuAverageLastValues = 60; // Wieviele Werte zur Berechnung der durchschnittlichen CPU Last verwendet werden sollen

                            let nodesList = [ // Node Liste
                            {
                            idChannel: 'proxmox.0.node_pve', // id des Channels der Node
                            targetChannel: 'promox', // id unter der der json string für das Table Widget gespeichert werden soll
                            name: 'System', // name der als Titel angezeigt werden soll
                            image: '/vis.0/Bilder/GeraeteBatterien/NUC.png', // Bild das im Titel angezeigt werden soll
                            url: 'https://192.168.178.210:8006/', // Url die aufgerufen wird beim Klick auf den Titel
                            showControlButtons: true, // Buttons für start, restart, stop anzeigen
                            // temperatures: ['linkeddevices.0.System.Temperatur.Core_0', 'linkeddevices.0.System.Temperatur.Core_1'], // Datenpunkte für Temperatur (1 oder 2 Datenpunkte, entfernen wenn nicht benötigt)
                            storages: [ // Storage Datenpunkt des Proxmox Adapter anzeigen
                            {
                            idChannel: 'proxmox.0.storage.pve_local', // id des Storage Datenpunkts
                            text: 'Local', // Text der für den Storage angezeigt werden soll
                            icon: 'harddisk' // Icon das für den Storage angezeigt werden soll
                            },
                            {
                            idChannel: 'proxmox.0.storage.pve_local-lvm',
                            text: 'LVM',
                            icon: 'harddisk'
                            },
                            {
                            idChannel: 'proxmox.0.storage.pve_local2_60gb',
                            text: 'Backup',
                            icon: 'harddisk'
                            },
                            {
                            idChannel: 'proxmox.0.storage.pve_Backups',
                            text: 'Mirror',
                            icon: 'harddisk'
                            }
                            ],
                            custom: [ // andere Datenpunkte (nicht vom Proxmox Adapter) die mit aufgelistet werden sollen. Falls nicht benötigt, Array löschen
                            {
                            id: 'linux-control.0.proxmox.needrestart.needrestart', // id des Datenpunktes
                            text: 'Neustart notwendig', // text der angezeigt werden soll
                            icon: 'restart', // icon das angezeigt werden soll
                            type: 'boolean', // welche Funktion verwendet werden soll
                            attention: true // ob Attention Farbe angezeigt werden soll
                            },
                            {
                            id: 'linux-control.0.proxmox.updates.newPackages', // id des Datenpunktes
                            text: 'Updates', // text der angezeigt werden soll
                            icon: 'package-down', // icon das angezeigt werden soll
                            type: 'number', // welche Funktion verwendet werden soll
                            attention: true // ob Attention Farbe angezeigt werden soll
                            },
                            {
                            id: 'linux-control.0.proxmox.updates.lastUpdate', // id des Datenpunktes
                            text: 'letztes Update', // text der angezeigt werden soll
                            icon: 'package-up', // icon das angezeigt werden soll
                            type: 'timestamp', // welche Funktion verwendet werden soll
                            }
                            ]
                            }
                            ]

                            let vmList = [ // LXC / VM Liste
                            {
                            idChannel: 'proxmox.0.lxc.iobroker', // id des Channels der Node
                            targetChannel: 'lxc_ioBroker', // id unter der der json string für das Table Widget gespeichert werden soll
                            name: 'LXC - ioBroker', // name der als Titel angezeigt werden soll
                            image: '/vis.0/Bilder/Index/admin.png', // Bild das im Titel angezeigt werden soll
                            url: 'http://192.168.178.213:8081', // Url die aufgerufen wird beim Klick auf den Titel
                            custom: [ // andere Datenpunkte (nicht vom Proxmox Adapter) die mit aufgelistet werden sollen. Falls nicht benötigt, Array löschen
                            {
                            id: 'linux-control.0.iobroker.needrestart.needrestart', // id des Datenpunktes
                            text: 'Neustart notwendig', // text der angezeigt werden soll
                            icon: 'restart', // icon das angezeigt werden soll
                            type: 'boolean', // welche Funktion verwendet werden soll
                            attention: true // ob Attention Farbe angezeigt werden soll
                            },
                            {
                            id: 'linux-control.0.iobroker.updates.newPackages', // id des Datenpunktes
                            text: 'Updates', // text der angezeigt werden soll
                            icon: 'package-down', // icon das angezeigt werden soll
                            type: 'number', // welche Funktion verwendet werden soll
                            attention: true // ob Attention Farbe angezeigt werden soll
                            },
                            {
                            id: 'linux-control.0.iobroker.updates.lastUpdate', // id des Datenpunktes
                            text: 'letztes Update', // text der angezeigt werden soll
                            icon: 'package-up', // icon das angezeigt werden soll
                            type: 'timestamp', // welche Funktion verwendet werden soll
                            },
                            // {
                            // id: 'proxmox.0.lxc_ioBroker.folders.backup.container.lastChange', // id des Datenpunktes
                            // secondIds: [ // ids für subtext
                            // 'proxmox.0.lxc_ioBroker.folders.backup.container.files',
                            // 'proxmox.0.lxc_ioBroker.folders.backup.container.size'
                            // ],
                            // text: 'LXC Backup', // text der angezeigt werden soll
                            // icon: 'backup-restore', // icon das angezeigt werden soll
                            // type: 'timestamp'
                            // },
                            // {
                            // id: 'proxmox.0.lxc_ioBroker.folders.backup.data.lastChange', // id des Datenpunktes
                            // secondIds: [ // ids für subtext
                            // 'proxmox.0.lxc_ioBroker.folders.backup.data.files',
                            // 'proxmox.0.lxc_ioBroker.folders.backup.data.size'
                            // ],
                            // text: 'Daten Backup', // text der angezeigt werden soll
                            // icon: 'file-upload', // icon das angezeigt werden soll
                            // type: 'timestamp'
                            // },
                            // {
                            // id: 'proxmox.0.lxc_ioBroker.folders.ioBroker.size', // id des Datenpunktes
                            // text: 'Ordnergröße', // text der angezeigt werden soll
                            // icon: 'folder-information', // icon das angezeigt werden soll
                            // },
                            // {
                            // id: 'proxmox.0.lxc_ioBroker.folders.npm_cache.size', // id des Datenpunktes
                            // text: 'NPM Cache', // text der angezeigt werden soll
                            // icon: 'folder-clock', // icon das angezeigt werden soll
                            // }
                            ]
                            },
                            /{
                            idChannel: 'proxmox.0.lxc.Proxy', // id des Channels der Node
                            targetChannel: 'lxc_Proxy', // id unter der der json string für das Table Widget gespeichert werden soll
                            name: 'LXC - proxy', // name der als Titel angezeigt werden soll
                            // image: '/vis.0/myImages/nextcloud-icon.png', // Bild das im Titel angezeigt werden soll
                            url: 'https://192.168.178.215', // Url die aufgerufen wird beim Klick auf den Titel
                            // custom: [ // andere Datenpunkte (nicht vom Proxmox Adapter) die mit aufgelistet werden sollen. Falls nicht benötigt, Array löschen
                            // {
                            // id: 'linux-control.0.lxc_NextCloud.needrestart.needrestart', // id des Datenpunktes
                            // text: 'Neustart notwendig', // text der angezeigt werden soll
                            // icon: 'restart', // icon das angezeigt werden soll
                            // type: 'boolean', // welche Funktion verwendet werden soll
                            // attention: true // ob Attention Farbe angezeigt werden soll
                            // },
                            // {
                            // id: 'linux-control.0.lxc_NextCloud.updates.newPackages', // id des Datenpunktes
                            // text: 'Updates', // text der angezeigt werden soll
                            // icon: 'package-down', // icon das angezeigt werden soll
                            // type: 'number', // welche Funktion verwendet werden soll
                            // attention: true // ob Attention Farbe angezeigt werden soll
                            // },
                            // {
                            // id: 'linux-control.0.lxc_NextCloud.updates.lastUpdate', // id des Datenpunktes
                            // text: 'letztes Update', // text der angezeigt werden soll
                            // icon: 'package-up', // icon das angezeigt werden soll
                            // type: 'timestamp', // welche Funktion verwendet werden soll
                            // },
                            // {
                            // id: 'linux-control.0.lxc_NextCloud.folders.backup.container.lastChange', // id des Datenpunktes
                            // secondIds: [ // ids für subtext
                            // 'linux-control.0.lxc_NextCloud.folders.backup.container.files',
                            // 'linux-control.0.lxc_NextCloud.folders.backup.container.size'
                            // ],
                            // text: 'LXC Backup', // text der angezeigt werden soll
                            // icon: 'backup-restore', // icon das angezeigt werden soll
                            // type: 'timestamp'
                            // },
                            // {
                            // id: 'linux-control.0.lxc_NextCloud.folders.userData.size', // id des Datenpunktes
                            // text: 'Benutzerdaten', // text der angezeigt werden soll
                            // icon: 'folder-account', // icon das angezeigt werden soll
                            // }
                            // ]
                            },
                            /
                            {
                            idChannel: 'proxmox.0.qemu.RaspberryMatic', // id des Channels der Node
                            targetChannel: 'qemu_RaspiMatic', // id unter der der json string für das Table Widget gespeichert werden soll
                            name: 'VM - RaspiMatic', // name der als Titel angezeigt werden soll
                            image: '/vis.0/Bilder/GeraeteBatterien/raspberrymatic.png', // Bild das im Titel angezeigt werden soll
                            url: 'http://192.168.178.212/login.htm', // Url die aufgerufen wird beim Klick auf den Titel
                            },
                            ]

                            let fontSizePrimary = 20;
                            let fontSizeSecondary = 16;
                            let fontSizeTertiary = 14;
                            let fontSizeQuinary = 11;

                            let fontFamilyPrimary = 'Roboto,sans-serif';
                            let fontFamilySecondary = 'RobotoCondensed-Regular';
                            let fontFamilyTertiary = 'RobotoCondensed-Light';
                            let fontFamilyQuaternary = 'RobotoCondensed-LightItalic';

                            let colorPrimary = '#44739e';
                            let colorSecondary = 'gray';
                            let colorTertiary = '#44739e';

                            let colorOnline = 'green';
                            let colorOffline = 'FireBrick';

                            let colorGood = 'green';
                            let colorMedium = 'gold';
                            let colorBad = 'FireBrick';

                            let iconColor = '#44739e'
                            let iconAttentionColor = '#f27935';

                            let colCount = 24; // Anzahl der Spalten die im Widget eingestellt sind (+1 weil 0 im VIS Editor mitzählt)
                            let colSpanIcon = 3; // Anzahl der Spalten die für das icon verwendet werden soll
                            let colSpanText = 8; // Anzahl der Spalten die für den Text verwendet werden soll
                            let colSpanValueText = colCount - colSpanIcon - colSpanText;

                            let rowHeight = 32;

                            let styleValue = font-size: ${fontSizeTertiary}px; text-align: right; margin-right: 8px; font-family: ${fontFamilyTertiary}; color: ${colorTertiary};
                            let styleText = font-size: ${fontSizeSecondary}px; text-align: left; font-family: ${fontFamilySecondary}; color: ${colorPrimary}; height: ${rowHeight}px; line-height: ${rowHeight}px; white-space: nowrap; text-overflow: ellipsis; overflow: hidden;
                            let styleButtonText = font-size: ${fontSizeSecondary}px; text-align: left; font-family: ${fontFamilyTertiary}; color: ${colorPrimary}; margin-left: 2px; margin-right: 2px;

                            let iconLayout = {
                            type: "materialdesignicon",
                            mdwIconSize: 26,
                            colspan: colSpanIcon,
                            cellStyleAttrs: 'text-overflow: unset'
                            }

                            let textLayout = {
                            type: "html",
                            width: "100%",
                            cellStyleAttrs: 'padding-left: 2px;',
                            colspan: colSpanText
                            }

                            let valueTextLayout = {
                            type: "html",
                            width: "100%",
                            colspan: colSpanValueText,
                            }

                            let progressBarLayout = {
                            type: "progress",
                            width: "100%",
                            height: ${rowHeight}px,
                            showValueLabel: true,
                            textAlign: "end",
                            colorProgress: colorGood,
                            colorOneCondition: 69,
                            colorOne: colorMedium,
                            colorTwoCondition: 89,
                            colorTwo: colorBad,
                            progressRounded: false,
                            verticalAlign: 'top',
                            textFontSize: fontSizeTertiary,
                            textFontFamily: fontFamilyTertiary,
                            colspan: colSpanValueText
                            }

                            let progressBarCpuLayout = {
                            type: "progress",
                            width: "100%",
                            height: ${rowHeight / 2}px,
                            showValueLabel: true,
                            textAlign: "end",
                            colorProgress: colorGood,
                            colorOneCondition: 69,
                            colorOne: colorMedium,
                            colorTwoCondition: 89,
                            colorTwo: colorBad,
                            progressRounded: false,
                            textFontSize: fontSizeTertiary,
                            textFontFamily: fontFamilyTertiary,
                            colspan: colSpanValueText
                            }

                            let temperatureMaxValue = 90;
                            let progressBarTemperaturLayout = {
                            type: "progress",
                            width: "100%",
                            min: 0,
                            max: temperatureMaxValue,
                            showValueLabel: true,
                            textAlign: "end",
                            colorProgress: colorGood,
                            colorOneCondition: 59 / temperatureMaxValue * 100,
                            colorOne: colorMedium,
                            colorTwoCondition: 69 / temperatureMaxValue * 100,
                            colorTwo: colorBad,
                            progressRounded: false,
                            textFontSize: fontSizeTertiary,
                            textFontFamily: fontFamilyTertiary,
                            colspan: colSpanValueText,
                            valueLabelStyle: 'progressCustom'
                            }

                            let buttonControlLayout = {
                            type: "buttonState",
                            width: "100%",
                            height: "40px",
                            buttonStyle: "text",
                            vibrateOnMobilDevices: 50,
                            iconPosition: "left",
                            iconHeight: "20",
                            labelWidth: "",
                            autoLockAfter: 5,
                            lockEnabled: true,
                            lockIconColor: "FireBrick",
                            }

                            let statusSeperator = {
                            type: "html",
                            width: "100%",
                            colspan: colCount
                            }

                            let iconButtonControlLayout = {
                            type: "buttonState_icon",
                            width: ${rowHeight}px,
                            height: ${rowHeight}px,
                            imageColor: colorPrimary,
                            vibrateOnMobilDevices: "50",
                            autoLockAfter: "5",
                            lockIconTop: "32",
                            lockIconLeft: "30",
                            lockIconSize: "12",
                            lockIconColor: "red",
                            lockFilterGrayscale: "30",
                            image: "update",
                            iconHeight: "26",
                            lockEnabled: true,
                            lockIconBackground: "white",
                            lockBackgroundSizeFactor: "1.1"
                            }
                            // **********************************************************************************************************************************************************************

                            //import
                            const mathjs = require("mathjs");
                            const moment = require("moment");
                            const momentDurationFormatSetup = require("moment-duration-format");
                            moment.locale("de");

                            // Trigger
                            on({ id: triggerDatenpunkt, change: 'any' }, updateData);

                            function updateData() {

                            for (const node of nodesList) {
                                updateVm(node, true);
                            }
                            
                            for (const vm of vmList) {
                                updateVm(vm);
                            }
                            

                            }

                            function updateVm(vm, isNode = false) {
                            try {
                            let table = [];

                                if (existsObject(`${vm.idChannel}`)) {
                                    let channel = getObject(`${vm.idChannel}`)
                            
                                    if (channel && channel.common && channel.common.name) {
                                        let row = {};
                            
                                        if (vm.url) {
                                            row.button = {
                                                type: "buttonLink",
                                                href: vm.url,
                                                openNewWindow: true,
                                                width: "100%",
                                                height: "46px",
                                                buttonStyle: "text",
                                                vibrateOnMobilDevices: "50",
                                                iconPosition: "right",
                                                image: vm.image,
                                                iconHeight: "40",
                                                labelWidth: "100",
                                                buttontext: `<div style="font-family: ${fontFamilyPrimary}; font-size: ${fontSizePrimary}px; font-weight: 500; letter-spacing: .0125em; text-decoration: inherit; text-align: left;">${vm.name}</div>`,
                                                colspan: colCount,
                                            }
                                        } else {
                                            row.title = {
                                                type: "html",
                                                width: "100%",
                                                height: "46px",
                                                html: `<div style="display: flex; padding: 0 8px 0 8px; align-items: center;">
                                                            <div style="flex: 1; font-family: ${fontFamilyPrimary}; font-size: ${fontSizePrimary}px; color: ${colorPrimary}; font-weight: 500; letter-spacing: .0125em; text-decoration: inherit; text-align: left;">${vm.name}</div>
                                                            <img class="materialdesign-icon-image" src="${vm.image}" style="width: auto; height: 40px; ;">
                                                        </div>`,
                                                colspan: colCount,
                                                cellStyleAttrs: 'height: 49px;'
                                            }
                                        }
                            
                                        table.push(row)
                                    }
                            
                                    table.push({
                                        seperator: {
                                            type: "html",
                                            width: "100%",
                                            cellStyleAttrs: 'top: -3px; position: relative;',
                                            html: `<hr style="color: ${colorPrimary}; background-color: ${colorPrimary}; border-width: 0; height: 2px; margin-top: 0; margin-bottom: 0;">`,
                                            colspan: colCount
                                        }
                                    })
                                } else {
                                    logDpNotExist(vm.targetChannel, `${vm.idChannel}`);
                                }
                            
                                generateUptimeRow(`${vm.idChannel}.uptime`, table, vm)
                            
                                if (vm.custom && vm.custom.length > 0) {
                                    for (const dp of vm.custom) {
                                        generateCustomRow(dp, table, vm);
                                    }
                                }
                            
                                generateProgressBarCpuRow(`${vm.idChannel}.cpu`, table, vm, isNode);
                            
                                generateProgressBarTemperatures(vm.temperatures, table, vm);
                            
                                if (!isNode) {
                                    generateProgressBarRow(`${vm.idChannel}.mem_lev`, table, vm, "memory", 'Arbeitsspeicher', getUsedOfText(`${vm.idChannel}.mem`, `${vm.idChannel}.maxmem`, vm.targetChannel));
                                    generateProgressBarRow(`${vm.idChannel}.disk_lev`, table, vm, "harddisk", 'Local', getUsedOfText(`${vm.idChannel}.disk`, `${vm.idChannel}.maxdisk`, vm.targetChannel));
                                } else {
                                    generateProgressBarRow(`${vm.idChannel}.memory.used_lev`, table, vm, "memory", 'Arbeitsspeicher', getUsedOfText(`${vm.idChannel}.memory.used`, `${vm.idChannel}.memory.total`, vm.targetChannel));
                                    generateProgressBarRow(`${vm.idChannel}.swap.used_lev`, table, vm, "folder-swap", 'SWAP', getUsedOfText(`${vm.idChannel}.swap.used`, `${vm.idChannel}.swap.total`, vm.targetChannel));
                            
                                    if (vm.storages) {
                                        for (const storage of vm.storages) {
                                            generateProgressBarRow(`${storage.idChannel}.used_lev`, table, vm, storage.icon, storage.text, getUsedOfText(`${storage.idChannel}.used`, `${storage.idChannel}.total`, vm.targetChannel));
                                        }
                                    }
                                }
                            
                                // generateStatusBar(`${vm.idChannel}.status`, table, vm, 'top: 3px; position: relative;');
                            
                                table.push({
                                    seperator: Object.assign({
                                        html: `<hr style="background: transparent; border-width: 0; height: 1px;margin-top: 0; margin-bottom: 0;">`,
                                    }, statusSeperator)
                                })
                            
                            
                            
                                if (vm.showControlButtons || vm.showControlButtons === undefined) {
                                    let btnIds = [];
                                    let btnRow = {};
                            
                                    if (existsObject(`${vm.idChannel}.start`)) {
                                        btnIds.push({ id: `${vm.idChannel}.start`, text: 'start' });
                                    }
                            
                                    if (existsObject(`${vm.idChannel}.reboot`)) {
                                        btnIds.push({ id: `${vm.idChannel}.reboot`, text: 'neustart' });
                                    }
                            
                                    if (existsObject(`${vm.idChannel}.shutdown`)) {
                                        btnIds.push({ id: `${vm.idChannel}.shutdown`, text: 'stop' });
                                    }
                            
                                    for (var i = 0; i <= btnIds.length - 1; i++) {
                                        let id = btnIds[i].id;
                            
                                        btnRow[`btn${i}`] = Object.assign(
                                            {
                                                oid: id,
                                                value: true,
                                                buttontext: `<div style="${styleButtonText}">${btnIds[i].text}</div>`,
                                                image: "play-circle-outline",
                                                colspan: colCount / btnIds.length
                                            }, buttonControlLayout);
                                    }
                                    table.push(btnRow);
                                }
                            
                                // generateStatusBar(`${vm.idChannel}.status`, table, vm, 'top: -3px; position: relative;');
                            
                                mySetState(`${idDatenpunktPrefix}.${idDatenPunktStrukturPrefix}.${isNode ? 'node' : 'vm'}.${vm.targetChannel}.jsonTable`, JSON.stringify(table), 'string', 'JSON string für Tabellen Widget');
                            
                            } catch (ex) {
                                console.error(`[updateVm - ${vm.targetChannel}] error: ${ex.message}, stack: ${ex.stack}`);
                            }
                            

                            }

                            function generateUptimeRow(id, table, vm) {
                            let row = {};

                            row.icon = Object.assign({ mdwIcon: "clock-check-outline", mdwIconColor: iconColor }, iconLayout)
                            row.text = Object.assign({ html: `<div style="${styleText}">Betriebszeit</div>` }, textLayout);
                            
                            if (existsState(id)) {
                                let duration = moment.duration(getState(id).val * 1000);
                                let durationText = duration.format('D [Tage] h [Std. und] m [Min.]');
                                if (duration.asDays() <= 2) {
                                    durationText = duration.format('D [Tag] h [Std. und] m [Min.]');
                                }
                            
                                row.value = Object.assign({ html: `<div style="${styleValue}">${durationText}</div>` }, valueTextLayout);
                            } else {
                                logDpNotExist(vm.targetChannel, id);
                                row.value = Object.assign({ html: `<div style="${styleValue}; color: red;">N/A</div>` }, valueTextLayout);
                            }
                            
                            table.push(row);
                            

                            }

                            function generateCustomRow(dp, table, vm) {
                            let row = {};
                            row.icon = Object.assign({ mdwIcon: dp.icon, mdwIconColor: iconColor }, iconLayout);

                            if (!dp.secondIds) {
                                row.text = Object.assign({ html: `<div style="${styleText}">${dp.text}</div>` }, textLayout);
                            } else {
                                let secondText = [];
                                for (const id of dp.secondIds) {
                                    if (existsState(id)) {
                                        let obj = getObject(id);
                            
                                        let unit = '';
                                        if (obj && obj.common && obj.common.unit) {
                                            unit = ' ' + obj.common.unit;
                                        }
                            
                                        secondText.push(getState(id).val + unit);
                                    } else {
                                        logDpNotExist(vm.targetChannel, id);
                                        secondText.push('N/A');
                                    }
                                }
                            
                                row.text = Object.assign({ html: getHtmlTwoLines(dp.text, secondText.join(', ')) }, textLayout);
                            }
                            
                            if (existsState(dp.id)) {
                                let val = getState(dp.id).val;
                                let obj = getObject(dp.id);
                            
                                let unit = '';
                                if (obj && obj.common && obj.common.unit) {
                                    unit = obj.common.unit
                                }
                            
                                if (!dp.type) {
                                    if (obj.common && obj.common.type === 'number') {
                                        row.value = Object.assign({ html: `<div style="${styleValue}">${formatValue(val, undefined, '.,')} ${unit}</div>` }, valueTextLayout);
                                    } else {
                                        row.value = Object.assign({ html: `<div style="${styleValue}">${val} ${unit}</div>` }, valueTextLayout);
                                    }
                                } else if (dp.type === 'timestamp') {
                                    row.value = Object.assign({ html: `<div style="${styleValue}">${getFormattedTimeStamp(val)}</div>` }, valueTextLayout);
                                } else if (dp.type === 'timestampInSeconds') {
                                    row.value = Object.assign({ html: `<div style="${styleValue}">${getFormattedTimeStamp(val * 1000)}</div>` }, valueTextLayout);
                                } else if (dp.type === 'boolean') {
                                    row.value = Object.assign({ html: `<div style="${styleValue}">${val ? 'ja' : 'nein'}</div>` }, valueTextLayout);
                            
                                    if (dp.attention && val) {
                                        row.icon = Object.assign({ mdwIcon: dp.icon, mdwIconColor: iconAttentionColor }, iconLayout);
                                    }
                                } else if (dp.type === 'number') {
                                    row.value = Object.assign({ html: `<div style="${styleValue}">${val > 0 ? `${val} ${unit}` : 'nein'}</div>` }, valueTextLayout);
                            
                                    if (dp.attention && val > 0) {
                                        row.icon = Object.assign({ mdwIcon: dp.icon, mdwIconColor: iconAttentionColor }, iconLayout);
                                    }
                                }
                            
                            } else {
                                logDpNotExist(vm.targetChannel, dp.id);
                                row.value = Object.assign({ html: `<div style="${styleValue}; color: red;">N/A</div>` }, valueTextLayout);
                            }
                            
                            table.push(row);
                            

                            }

                            function generateProgressBarTemperatures(idList, table, vm) {
                            if (idList && idList.length > 0) {
                            let row = {};

                                row.icon = Object.assign({ mdwIcon: "thermometer", rowspan: idList.length, mdwIconColor: iconColor }, iconLayout);
                                row.text = Object.assign({ html: `<div style="${styleText}">Temperatur</div>`, rowspan: idList.length }, textLayout);
                            
                                if (idList[0] && existsState(idList[0])) {
                                    row.progressBar = Object.assign({ oid: idList[0], valueLabelCustom: '[#value] °C', textColor: colorTertiary, verticalAlign: 'bottom', height: `${rowHeight / idList.length}px`, cellStyleAttrs: `line-height: ${rowHeight / idList.length}px; padding-bottom: 0;` }, progressBarTemperaturLayout);
                                } else {
                                    logDpNotExist(vm.targetChannel, idList[0]);
                                    row.progressBar = Object.assign({ valueLabelCustom: 'N/A', textColor: colorTertiary, verticalAlign: 'bottom', height: `${rowHeight / idList.length}px`, cellStyleAttrs: `line-height: ${rowHeight / idList.length}px; padding-bottom: 0;` }, progressBarTemperaturLayout);
                                }
                            
                                table.push(row);
                            
                                if (idList.length === 2) {
                                    if (idList[1] && existsState(idList[1])) {
                                        table.push({ temp: Object.assign({ oid: idList[1], valueLabelCustom: '[#value] °C', textColor: colorTertiary, verticalAlign: 'bottom', height: `${rowHeight / idList.length}px`, cellStyleAttrs: `line-height: ${rowHeight / idList.length}px; padding-bottom: 0;` }, progressBarTemperaturLayout) });
                                    } else {
                                        logDpNotExist(vm.targetChannel, idList[1]);
                                        table.push({ temp: Object.assign({ valueLabelCustom: 'N/A', textColor: colorTertiary, verticalAlign: 'bottom', height: `${rowHeight / idList.length}px`, cellStyleAttrs: `line-height: ${rowHeight / idList.length}px; padding-bottom: 0;` }, progressBarTemperaturLayout) });
                                    }
                                }
                            }
                            

                            }

                            function generateProgressBarCpuRow(id, table, vm, isNode = false) {
                            let row = {};
                            row.icon = Object.assign({ mdwIcon: "cpu-64-bit", rowspan: 2, mdwIconColor: iconColor }, iconLayout);
                            row.text = Object.assign({ html: <div style="${styleText}">CPU</div>, rowspan: 2 }, textLayout);

                            if (existsState(id)) {
                                calculateCpuAverage(vm.targetChannel, getState(id).val, isNode);
                                let cpuAverageId = `${idDatenpunktPrefix}.${idDatenPunktStrukturPrefix}.${isNode ? 'node' : 'vm'}.${vm.targetChannel}.cpuAverage`
                            
                                row.progressBar = Object.assign({ oid: id, textColor: colorTertiary, verticalAlign: 'bottom', cellStyleAttrs: `line-height: ${rowHeight / 2}px; padding-bottom: 0;` }, progressBarCpuLayout);
                            
                                table.push(row);
                            
                                if (existsState(cpuAverageId)) {
                                    table.push({ cpu: Object.assign({ oid: cpuAverageId, valueLabelStyle: 'progressCustom', valueLabelCustom: 'Ø [#value] %', textColor: colorTertiary, verticalAlign: 'top', cellStyleAttrs: `line-height: ${rowHeight / 2}px; padding-top: 0;` }, progressBarCpuLayout) });
                                } else {
                                    logDpNotExist(vm.targetChannel, cpuAverageId);
                                    table.push({ cpu: Object.assign({ valueLabelStyle: 'progressCustom', valueLabelCustom: 'N/A', textColor: 'red', verticalAlign: 'top', cellStyleAttrs: `line-height: ${rowHeight / 2}px; padding-top: 0;` }, progressBarCpuLayout) });
                                }
                            
                            } else {
                                logDpNotExist(vm.targetChannel, id);
                            
                                row.progressBar = Object.assign({ valueLabelStyle: 'progressCustom', valueLabelCustom: 'N/A', textColor: 'red', verticalAlign: 'bottom', cellStyleAttrs: `line-height: ${rowHeight / 2}px; padding-bottom: 0;` }, progressBarCpuLayout);
                                table.push(row);
                            
                                table.push({ cpu: Object.assign({ valueLabelStyle: 'progressCustom', valueLabelCustom: 'N/A', textColor: 'red', verticalAlign: 'top', cellStyleAttrs: `line-height: ${rowHeight / 2}px; padding-top: 0;` }, progressBarCpuLayout) });
                            }
                            

                            }

                            function generateProgressBarRow(id, table, vm, icon, textOne, textTwo) {
                            let row = {};
                            row.icon = Object.assign({ mdwIcon: icon, mdwIconColor: iconColor }, iconLayout);

                            if (existsState(id)) {
                                row.text = Object.assign({ html: getHtmlTwoLines(textOne, textTwo) }, textLayout);
                            
                                row.progressBar = Object.assign({ oid: id, textColor: colorTertiary }, progressBarLayout);
                            } else {
                                logDpNotExist(vm.targetChannel, id);
                                row.text = Object.assign({ html: `<div style="${styleText}">${textOne}</div>` }, textLayout);
                                row.progressBar = Object.assign({ valueLabelStyle: 'progressCustom', valueLabelCustom: 'N/A', textColor: 'red', }, progressBarLayout);
                            }
                            
                            table.push(row);
                            

                            }

                            function generateStatusBar(id, table, vm, cellStyleAttrs) {
                            if (getObject(id)) {
                            let statusColor = getState(id).val === 'running' ? colorOnline : colorOffline;
                            table.push({
                            seperator: Object.assign({
                            cellStyleAttrs: cellStyleAttrs,
                            html: <hr style="background: linear-gradient(90deg, transparent 0%, ${statusColor} 30%, ${statusColor} 50%, ${statusColor} 70%, transparent 100%); border-width: 0; height: 1px;margin-top: 0; margin-bottom: 0;">,
                            }, statusSeperator)
                            })
                            } else {
                            logDpNotExist(vm.targetChannel, id);
                            }

                            }

                            function getFormattedTimeStamp(val) {
                            let now = moment();
                            let daysDiff = now.startOf('day').diff(moment(val).startOf('day'), 'days');

                            let timeFormated = moment(val).format('ddd DD.MM. - HH:mm');
                            if (daysDiff === 0) {
                                timeFormated = `Heute - ${moment(val).format('HH:mm')}`;
                            } else if (daysDiff === 1) {
                                timeFormated = `Gestern - ${moment(val).format('HH:mm')}`;
                            } else if (daysDiff > 1 && daysDiff <= 6) {
                                timeFormated = `vor ${daysDiff} Tagen - ${moment(val).format('HH:mm')}`;
                            } else if (daysDiff === 7) {
                                timeFormated = `vor einer Woche - ${moment(val).format('HH:mm')}`;
                            }
                            
                            return timeFormated;
                            

                            }

                            function calculateCpuAverage(targetChannel, val, isNode = false) {
                            let id = ${idDatenpunktPrefix}.${idDatenPunktStrukturPrefix}.${isNode ? 'node' : 'vm'}.${targetChannel}.cpuLastValues;

                            try {
                                if (existsState(id)) {
                                    let letzteWerte = getState(id).val;
                            
                                    letzteWerte = letzteWerte.toString().split(',');
                            
                                    if (val > 0) {
                                        letzteWerte.unshift(val);
                                    } else {
                                        letzteWerte.unshift(0);
                                    }
                            
                                    if (letzteWerte.length > cpuAverageLastValues) {
                                        letzteWerte.splice(cpuAverageLastValues);
                                    }
                            
                                    setState(id, letzteWerte.join(','), true);
                            
                                    let sum = 0;
                                    for (const value of letzteWerte) {
                                        sum = sum + parseFloat(value);
                                    }
                            
                                    mySetState(`${idDatenpunktPrefix}.${idDatenPunktStrukturPrefix}.${isNode ? 'node' : 'vm'}.${targetChannel}.cpuAverage`, mathjs.round(sum / letzteWerte.length, 0), 'number', 'Durchschnittle CPU Last');
                                } else {
                                    mySetState(id, val.toString(), 'string', 'Durchschnittle CPU Last letzte 60 Werte');
                                }
                            
                            } catch (err) {
                                console.error(`[calculateCpuAverage] '${id}' - error: ${err.message}, stack: ${err.stack}`);
                            }
                            

                            }

                            function mySetState(id, val, type, name, write = false) {
                            if (existsState(id)) {
                            setState(id, val, true);
                            } else {
                            createState(id, {
                            'name': name,
                            'type': type,
                            'read': true,
                            'write': write
                            }, function () {
                            setState(id, val, true);
                            });
                            }
                            }

                            function getUsedOfText(usedId, totalId, targetChannel) {
                            let text = 'N/A'

                            let used = existsState(usedId) ? getState(usedId).val : logDpNotExist(targetChannel, usedId);
                            let total = existsState(totalId) ? getState(totalId).val : logDpNotExist(targetChannel, totalId);
                            
                            if (used && total) {
                                text = `${formatValue(used / 1024, 2, '.,')} GB / ${formatValue(total / 1024, 0, '.,')} GB`
                            }
                            
                            return text;
                            

                            }

                            function getHtmlTwoLines(text1, text2) {
                            return <div style="font-size: ${fontSizeSecondary}px; text-align: left; font-family: ${fontFamilySecondary}; color: ${colorPrimary}; line-height: 1.2; white-space: nowrap; text-overflow: ellipsis; overflow: hidden;">${text1}</div> <div style="font-size: ${fontSizeQuinary}px; text-align: left; font-family: ${fontFamilyQuaternary}; color: ${colorSecondary}; line-height: 1.2">${text2}</div>
                            }

                            function logDpNotExist(target, id) {
                            console.warn([updateVm - ${target}] datapoint '${id}' not exist!);
                            }

                            // Bei JS Start ausführen
                            updateData();

                            Aber das Skript ist jetzt nicht essentiell wichtig. Notfalls schalt ich das ab bis ich wieder da bin.

                            foxriver76F 1 Antwort Letzte Antwort
                            0
                            • U UV-on-fire

                              @foxriver76
                              Sorry für die verspätete Antwort aber wie gesagt bin morgen für längere Zeit weg und muss noch einiges regeln bis dahin.

                              Also der Fix hat funktioniert.

                              Interessanterweise hat es genügt das in einem der Skripte ein zu tragen und jetzt laufen alle.

                              Jetzt motz noch ein anderes skript mathjs an


                              vascript.0
                              2024-06-17 21:31:59.693 error script.js.Materialdesign.Proxmox: [calculateCpuAverage] '0_userdata.0.Vis.MaterialDesignWidgets.Proxmox.vm.qemu_RaspiMatic.cpuLastValues' - error: Cannot read properties of undefined (reading 'round'), stack: TypeError: Cannot read properties of undefined (reading 'round') at calculateCpuAverage (script.js.Materialdesign.Proxmox:2891:140) at generateProgressBarCpuRow (script.js.Materialdesign.Proxmox:2791:9) at updateVm (script.js.Materialdesign.Proxmox:2598:9) at updateData (script.js.Materialdesign.Proxmox:2530:9) at script.js.Materialdesign.Proxmox:2939:1 at script.js.Materialdesign.Proxmox:2945:3 at Script.runInContext (node:vm:133:12) at Script.runInNewContext (node:vm:138:17) at execute (/opt/iobroker/node_modules/iobroker.javascript/main.js:1968:23) at prepareScript (/opt/iobroker/node_modules/iobroker.javascript/main.js:2215:13)
                              javascript.0
                              2024-06-17 21:31:59.692 error script.js.Materialdesign.Proxmox: [calculateCpuAverage] '0_userdata.0.Vis.MaterialDesignWidgets.Proxmox.vm.lxc_ioBroker.cpuLastValues' - error: Cannot read properties of undefined (reading 'round'), stack: TypeError: Cannot read properties of undefined (reading 'round') at calculateCpuAverage (script.js.Materialdesign.Proxmox:2891:140) at generateProgressBarCpuRow (script.js.Materialdesign.Proxmox:2791:9) at updateVm (script.js.Materialdesign.Proxmox:2598:9) at updateData (script.js.Materialdesign.Proxmox:2530:9) at script.js.Materialdesign.Proxmox:2939:1 at script.js.Materialdesign.Proxmox:2945:3 at Script.runInContext (node:vm:133:12) at Script.runInNewContext (node:vm:138:17) at execute (/opt/iobroker/node_modules/iobroker.javascript/main.js:1968:23) at prepareScript (/opt/iobroker/node_modules/iobroker.javascript/main.js:2215:13)
                              javascript.0
                              2024-06-17 21:31:59.689 error script.js.Materialdesign.Proxmox: [calculateCpuAverage] '0_userdata.0.Vis.MaterialDesignWidgets.Proxmox.node.promox.cpuLastValues' - error: Cannot read properties of undefined (reading 'round'), stack: TypeError: Cannot read properties of undefined (reading 'round') at calculateCpuAverage (script.js.Materialdesign.Proxmox:2891:140) at generateProgressBarCpuRow (script.js.Materialdesign.Proxmox:2791:9) at updateVm (script.js.Materialdesign.Proxmox:2598:9) at updateData (script.js.Materialdesign.Proxmox:2526:9) at script.js.Materialdesign.Proxmox:2939:1 at script.js.Materialdesign.Proxmox:2945:3 at Script.runInContext (node:vm:133:12) at Script.runInNewContext (node:vm:138:17) at execute (/opt/iobroker/node_modules/iobroker.javascript/main.js:1968:23) at prepareScript (/opt/iobroker/node_modules/iobroker.javascript/main.js:2215:13)
                              javascript.0
                              2024-06-17 21:31:59.686 error at Script.runInContext (node:vm:133:12)
                              javascript.0
                              2024-06-17 21:31:59.686 error at script.js.Materialdesign.Proxmox:789:3
                              javascript.0
                              2024-06-17 21:31:59.686 error at script.js.Materialdesign.Proxmox:359:16
                              javascript.0
                              2024-06-17 21:31:59.686 error at require (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:548:32)
                              javascript.0
                              2024-06-17 21:31:59.686 error at require (node:internal/modules/helpers:177:18)
                              javascript.0
                              2024-06-17 21:31:59.686 error at Module.require (node:internal/modules/cjs/loader:1231:19)
                              javascript.0
                              2024-06-17 21:31:59.686 error script.js.Materialdesign.Proxmox: Error: Cannot find module 'mathjs'

                              Das skript dazu:


                              /************************************************************************************************************************************************************************
                              Version: 1.0.2
                              created by Scrounger

                              Dieses Skript erzeugt json strings um Proxmox Informationen im VIS mit den Material Design Widgets darzustellen

                              !!! Voraussetzungen !!!

                              • Material Design Widgets >= 0.3.19
                              • Proxmox >= 1.0.2
                              • Javascript Adapter >= 4.6.1
                              • Javascript Adapter NPM Module: moment, moment-timezone, moment-duration-format, mathjs
                                =========================================================================================================================================================================

                              --- Links ---

                              • Support: https://forum.iobroker.net/topic/35296/material-design-widgets-proxmox
                              • Github: https://github.com/Scrounger/ioBroker.vis-materialdesign/tree/master/examples/Proxmox

                              =========================================================================================================================================================================

                              --- Changelog ---

                              • 1.0.0: Initial release
                              • 1.0.1: Number decimal format changed
                              • 1.0.2: Bug Fix wenn nur ein Datenpunkt für die Temperatur verwendet wird
                              • 1.0.3: Einstellung 'iconColor' für icon Farbe hinzugefügt

                              ************************************************************************************************************************************************************************/

                              // Skript Einstellungen *************************************************************************************************************************************************
                              let idDatenpunktPrefix = '0_userdata.0' // '0_userdata.0' or 'javascript.x'
                              let idDatenPunktStrukturPrefix = 'Vis.MaterialDesignWidgets.Proxmox' // Struktur unter Prefix

                              let triggerDatenpunkt = "proxmox.0.node_pve.uptime"; // Datenpunkt um Skript Ausführung zu triggern (z.B. uptime einer Node)

                              let cpuAverageLastValues = 60; // Wieviele Werte zur Berechnung der durchschnittlichen CPU Last verwendet werden sollen

                              let nodesList = [ // Node Liste
                              {
                              idChannel: 'proxmox.0.node_pve', // id des Channels der Node
                              targetChannel: 'promox', // id unter der der json string für das Table Widget gespeichert werden soll
                              name: 'System', // name der als Titel angezeigt werden soll
                              image: '/vis.0/Bilder/GeraeteBatterien/NUC.png', // Bild das im Titel angezeigt werden soll
                              url: 'https://192.168.178.210:8006/', // Url die aufgerufen wird beim Klick auf den Titel
                              showControlButtons: true, // Buttons für start, restart, stop anzeigen
                              // temperatures: ['linkeddevices.0.System.Temperatur.Core_0', 'linkeddevices.0.System.Temperatur.Core_1'], // Datenpunkte für Temperatur (1 oder 2 Datenpunkte, entfernen wenn nicht benötigt)
                              storages: [ // Storage Datenpunkt des Proxmox Adapter anzeigen
                              {
                              idChannel: 'proxmox.0.storage.pve_local', // id des Storage Datenpunkts
                              text: 'Local', // Text der für den Storage angezeigt werden soll
                              icon: 'harddisk' // Icon das für den Storage angezeigt werden soll
                              },
                              {
                              idChannel: 'proxmox.0.storage.pve_local-lvm',
                              text: 'LVM',
                              icon: 'harddisk'
                              },
                              {
                              idChannel: 'proxmox.0.storage.pve_local2_60gb',
                              text: 'Backup',
                              icon: 'harddisk'
                              },
                              {
                              idChannel: 'proxmox.0.storage.pve_Backups',
                              text: 'Mirror',
                              icon: 'harddisk'
                              }
                              ],
                              custom: [ // andere Datenpunkte (nicht vom Proxmox Adapter) die mit aufgelistet werden sollen. Falls nicht benötigt, Array löschen
                              {
                              id: 'linux-control.0.proxmox.needrestart.needrestart', // id des Datenpunktes
                              text: 'Neustart notwendig', // text der angezeigt werden soll
                              icon: 'restart', // icon das angezeigt werden soll
                              type: 'boolean', // welche Funktion verwendet werden soll
                              attention: true // ob Attention Farbe angezeigt werden soll
                              },
                              {
                              id: 'linux-control.0.proxmox.updates.newPackages', // id des Datenpunktes
                              text: 'Updates', // text der angezeigt werden soll
                              icon: 'package-down', // icon das angezeigt werden soll
                              type: 'number', // welche Funktion verwendet werden soll
                              attention: true // ob Attention Farbe angezeigt werden soll
                              },
                              {
                              id: 'linux-control.0.proxmox.updates.lastUpdate', // id des Datenpunktes
                              text: 'letztes Update', // text der angezeigt werden soll
                              icon: 'package-up', // icon das angezeigt werden soll
                              type: 'timestamp', // welche Funktion verwendet werden soll
                              }
                              ]
                              }
                              ]

                              let vmList = [ // LXC / VM Liste
                              {
                              idChannel: 'proxmox.0.lxc.iobroker', // id des Channels der Node
                              targetChannel: 'lxc_ioBroker', // id unter der der json string für das Table Widget gespeichert werden soll
                              name: 'LXC - ioBroker', // name der als Titel angezeigt werden soll
                              image: '/vis.0/Bilder/Index/admin.png', // Bild das im Titel angezeigt werden soll
                              url: 'http://192.168.178.213:8081', // Url die aufgerufen wird beim Klick auf den Titel
                              custom: [ // andere Datenpunkte (nicht vom Proxmox Adapter) die mit aufgelistet werden sollen. Falls nicht benötigt, Array löschen
                              {
                              id: 'linux-control.0.iobroker.needrestart.needrestart', // id des Datenpunktes
                              text: 'Neustart notwendig', // text der angezeigt werden soll
                              icon: 'restart', // icon das angezeigt werden soll
                              type: 'boolean', // welche Funktion verwendet werden soll
                              attention: true // ob Attention Farbe angezeigt werden soll
                              },
                              {
                              id: 'linux-control.0.iobroker.updates.newPackages', // id des Datenpunktes
                              text: 'Updates', // text der angezeigt werden soll
                              icon: 'package-down', // icon das angezeigt werden soll
                              type: 'number', // welche Funktion verwendet werden soll
                              attention: true // ob Attention Farbe angezeigt werden soll
                              },
                              {
                              id: 'linux-control.0.iobroker.updates.lastUpdate', // id des Datenpunktes
                              text: 'letztes Update', // text der angezeigt werden soll
                              icon: 'package-up', // icon das angezeigt werden soll
                              type: 'timestamp', // welche Funktion verwendet werden soll
                              },
                              // {
                              // id: 'proxmox.0.lxc_ioBroker.folders.backup.container.lastChange', // id des Datenpunktes
                              // secondIds: [ // ids für subtext
                              // 'proxmox.0.lxc_ioBroker.folders.backup.container.files',
                              // 'proxmox.0.lxc_ioBroker.folders.backup.container.size'
                              // ],
                              // text: 'LXC Backup', // text der angezeigt werden soll
                              // icon: 'backup-restore', // icon das angezeigt werden soll
                              // type: 'timestamp'
                              // },
                              // {
                              // id: 'proxmox.0.lxc_ioBroker.folders.backup.data.lastChange', // id des Datenpunktes
                              // secondIds: [ // ids für subtext
                              // 'proxmox.0.lxc_ioBroker.folders.backup.data.files',
                              // 'proxmox.0.lxc_ioBroker.folders.backup.data.size'
                              // ],
                              // text: 'Daten Backup', // text der angezeigt werden soll
                              // icon: 'file-upload', // icon das angezeigt werden soll
                              // type: 'timestamp'
                              // },
                              // {
                              // id: 'proxmox.0.lxc_ioBroker.folders.ioBroker.size', // id des Datenpunktes
                              // text: 'Ordnergröße', // text der angezeigt werden soll
                              // icon: 'folder-information', // icon das angezeigt werden soll
                              // },
                              // {
                              // id: 'proxmox.0.lxc_ioBroker.folders.npm_cache.size', // id des Datenpunktes
                              // text: 'NPM Cache', // text der angezeigt werden soll
                              // icon: 'folder-clock', // icon das angezeigt werden soll
                              // }
                              ]
                              },
                              /{
                              idChannel: 'proxmox.0.lxc.Proxy', // id des Channels der Node
                              targetChannel: 'lxc_Proxy', // id unter der der json string für das Table Widget gespeichert werden soll
                              name: 'LXC - proxy', // name der als Titel angezeigt werden soll
                              // image: '/vis.0/myImages/nextcloud-icon.png', // Bild das im Titel angezeigt werden soll
                              url: 'https://192.168.178.215', // Url die aufgerufen wird beim Klick auf den Titel
                              // custom: [ // andere Datenpunkte (nicht vom Proxmox Adapter) die mit aufgelistet werden sollen. Falls nicht benötigt, Array löschen
                              // {
                              // id: 'linux-control.0.lxc_NextCloud.needrestart.needrestart', // id des Datenpunktes
                              // text: 'Neustart notwendig', // text der angezeigt werden soll
                              // icon: 'restart', // icon das angezeigt werden soll
                              // type: 'boolean', // welche Funktion verwendet werden soll
                              // attention: true // ob Attention Farbe angezeigt werden soll
                              // },
                              // {
                              // id: 'linux-control.0.lxc_NextCloud.updates.newPackages', // id des Datenpunktes
                              // text: 'Updates', // text der angezeigt werden soll
                              // icon: 'package-down', // icon das angezeigt werden soll
                              // type: 'number', // welche Funktion verwendet werden soll
                              // attention: true // ob Attention Farbe angezeigt werden soll
                              // },
                              // {
                              // id: 'linux-control.0.lxc_NextCloud.updates.lastUpdate', // id des Datenpunktes
                              // text: 'letztes Update', // text der angezeigt werden soll
                              // icon: 'package-up', // icon das angezeigt werden soll
                              // type: 'timestamp', // welche Funktion verwendet werden soll
                              // },
                              // {
                              // id: 'linux-control.0.lxc_NextCloud.folders.backup.container.lastChange', // id des Datenpunktes
                              // secondIds: [ // ids für subtext
                              // 'linux-control.0.lxc_NextCloud.folders.backup.container.files',
                              // 'linux-control.0.lxc_NextCloud.folders.backup.container.size'
                              // ],
                              // text: 'LXC Backup', // text der angezeigt werden soll
                              // icon: 'backup-restore', // icon das angezeigt werden soll
                              // type: 'timestamp'
                              // },
                              // {
                              // id: 'linux-control.0.lxc_NextCloud.folders.userData.size', // id des Datenpunktes
                              // text: 'Benutzerdaten', // text der angezeigt werden soll
                              // icon: 'folder-account', // icon das angezeigt werden soll
                              // }
                              // ]
                              },
                              /
                              {
                              idChannel: 'proxmox.0.qemu.RaspberryMatic', // id des Channels der Node
                              targetChannel: 'qemu_RaspiMatic', // id unter der der json string für das Table Widget gespeichert werden soll
                              name: 'VM - RaspiMatic', // name der als Titel angezeigt werden soll
                              image: '/vis.0/Bilder/GeraeteBatterien/raspberrymatic.png', // Bild das im Titel angezeigt werden soll
                              url: 'http://192.168.178.212/login.htm', // Url die aufgerufen wird beim Klick auf den Titel
                              },
                              ]

                              let fontSizePrimary = 20;
                              let fontSizeSecondary = 16;
                              let fontSizeTertiary = 14;
                              let fontSizeQuinary = 11;

                              let fontFamilyPrimary = 'Roboto,sans-serif';
                              let fontFamilySecondary = 'RobotoCondensed-Regular';
                              let fontFamilyTertiary = 'RobotoCondensed-Light';
                              let fontFamilyQuaternary = 'RobotoCondensed-LightItalic';

                              let colorPrimary = '#44739e';
                              let colorSecondary = 'gray';
                              let colorTertiary = '#44739e';

                              let colorOnline = 'green';
                              let colorOffline = 'FireBrick';

                              let colorGood = 'green';
                              let colorMedium = 'gold';
                              let colorBad = 'FireBrick';

                              let iconColor = '#44739e'
                              let iconAttentionColor = '#f27935';

                              let colCount = 24; // Anzahl der Spalten die im Widget eingestellt sind (+1 weil 0 im VIS Editor mitzählt)
                              let colSpanIcon = 3; // Anzahl der Spalten die für das icon verwendet werden soll
                              let colSpanText = 8; // Anzahl der Spalten die für den Text verwendet werden soll
                              let colSpanValueText = colCount - colSpanIcon - colSpanText;

                              let rowHeight = 32;

                              let styleValue = font-size: ${fontSizeTertiary}px; text-align: right; margin-right: 8px; font-family: ${fontFamilyTertiary}; color: ${colorTertiary};
                              let styleText = font-size: ${fontSizeSecondary}px; text-align: left; font-family: ${fontFamilySecondary}; color: ${colorPrimary}; height: ${rowHeight}px; line-height: ${rowHeight}px; white-space: nowrap; text-overflow: ellipsis; overflow: hidden;
                              let styleButtonText = font-size: ${fontSizeSecondary}px; text-align: left; font-family: ${fontFamilyTertiary}; color: ${colorPrimary}; margin-left: 2px; margin-right: 2px;

                              let iconLayout = {
                              type: "materialdesignicon",
                              mdwIconSize: 26,
                              colspan: colSpanIcon,
                              cellStyleAttrs: 'text-overflow: unset'
                              }

                              let textLayout = {
                              type: "html",
                              width: "100%",
                              cellStyleAttrs: 'padding-left: 2px;',
                              colspan: colSpanText
                              }

                              let valueTextLayout = {
                              type: "html",
                              width: "100%",
                              colspan: colSpanValueText,
                              }

                              let progressBarLayout = {
                              type: "progress",
                              width: "100%",
                              height: ${rowHeight}px,
                              showValueLabel: true,
                              textAlign: "end",
                              colorProgress: colorGood,
                              colorOneCondition: 69,
                              colorOne: colorMedium,
                              colorTwoCondition: 89,
                              colorTwo: colorBad,
                              progressRounded: false,
                              verticalAlign: 'top',
                              textFontSize: fontSizeTertiary,
                              textFontFamily: fontFamilyTertiary,
                              colspan: colSpanValueText
                              }

                              let progressBarCpuLayout = {
                              type: "progress",
                              width: "100%",
                              height: ${rowHeight / 2}px,
                              showValueLabel: true,
                              textAlign: "end",
                              colorProgress: colorGood,
                              colorOneCondition: 69,
                              colorOne: colorMedium,
                              colorTwoCondition: 89,
                              colorTwo: colorBad,
                              progressRounded: false,
                              textFontSize: fontSizeTertiary,
                              textFontFamily: fontFamilyTertiary,
                              colspan: colSpanValueText
                              }

                              let temperatureMaxValue = 90;
                              let progressBarTemperaturLayout = {
                              type: "progress",
                              width: "100%",
                              min: 0,
                              max: temperatureMaxValue,
                              showValueLabel: true,
                              textAlign: "end",
                              colorProgress: colorGood,
                              colorOneCondition: 59 / temperatureMaxValue * 100,
                              colorOne: colorMedium,
                              colorTwoCondition: 69 / temperatureMaxValue * 100,
                              colorTwo: colorBad,
                              progressRounded: false,
                              textFontSize: fontSizeTertiary,
                              textFontFamily: fontFamilyTertiary,
                              colspan: colSpanValueText,
                              valueLabelStyle: 'progressCustom'
                              }

                              let buttonControlLayout = {
                              type: "buttonState",
                              width: "100%",
                              height: "40px",
                              buttonStyle: "text",
                              vibrateOnMobilDevices: 50,
                              iconPosition: "left",
                              iconHeight: "20",
                              labelWidth: "",
                              autoLockAfter: 5,
                              lockEnabled: true,
                              lockIconColor: "FireBrick",
                              }

                              let statusSeperator = {
                              type: "html",
                              width: "100%",
                              colspan: colCount
                              }

                              let iconButtonControlLayout = {
                              type: "buttonState_icon",
                              width: ${rowHeight}px,
                              height: ${rowHeight}px,
                              imageColor: colorPrimary,
                              vibrateOnMobilDevices: "50",
                              autoLockAfter: "5",
                              lockIconTop: "32",
                              lockIconLeft: "30",
                              lockIconSize: "12",
                              lockIconColor: "red",
                              lockFilterGrayscale: "30",
                              image: "update",
                              iconHeight: "26",
                              lockEnabled: true,
                              lockIconBackground: "white",
                              lockBackgroundSizeFactor: "1.1"
                              }
                              // **********************************************************************************************************************************************************************

                              //import
                              const mathjs = require("mathjs");
                              const moment = require("moment");
                              const momentDurationFormatSetup = require("moment-duration-format");
                              moment.locale("de");

                              // Trigger
                              on({ id: triggerDatenpunkt, change: 'any' }, updateData);

                              function updateData() {

                              for (const node of nodesList) {
                                  updateVm(node, true);
                              }
                              
                              for (const vm of vmList) {
                                  updateVm(vm);
                              }
                              

                              }

                              function updateVm(vm, isNode = false) {
                              try {
                              let table = [];

                                  if (existsObject(`${vm.idChannel}`)) {
                                      let channel = getObject(`${vm.idChannel}`)
                              
                                      if (channel && channel.common && channel.common.name) {
                                          let row = {};
                              
                                          if (vm.url) {
                                              row.button = {
                                                  type: "buttonLink",
                                                  href: vm.url,
                                                  openNewWindow: true,
                                                  width: "100%",
                                                  height: "46px",
                                                  buttonStyle: "text",
                                                  vibrateOnMobilDevices: "50",
                                                  iconPosition: "right",
                                                  image: vm.image,
                                                  iconHeight: "40",
                                                  labelWidth: "100",
                                                  buttontext: `<div style="font-family: ${fontFamilyPrimary}; font-size: ${fontSizePrimary}px; font-weight: 500; letter-spacing: .0125em; text-decoration: inherit; text-align: left;">${vm.name}</div>`,
                                                  colspan: colCount,
                                              }
                                          } else {
                                              row.title = {
                                                  type: "html",
                                                  width: "100%",
                                                  height: "46px",
                                                  html: `<div style="display: flex; padding: 0 8px 0 8px; align-items: center;">
                                                              <div style="flex: 1; font-family: ${fontFamilyPrimary}; font-size: ${fontSizePrimary}px; color: ${colorPrimary}; font-weight: 500; letter-spacing: .0125em; text-decoration: inherit; text-align: left;">${vm.name}</div>
                                                              <img class="materialdesign-icon-image" src="${vm.image}" style="width: auto; height: 40px; ;">
                                                          </div>`,
                                                  colspan: colCount,
                                                  cellStyleAttrs: 'height: 49px;'
                                              }
                                          }
                              
                                          table.push(row)
                                      }
                              
                                      table.push({
                                          seperator: {
                                              type: "html",
                                              width: "100%",
                                              cellStyleAttrs: 'top: -3px; position: relative;',
                                              html: `<hr style="color: ${colorPrimary}; background-color: ${colorPrimary}; border-width: 0; height: 2px; margin-top: 0; margin-bottom: 0;">`,
                                              colspan: colCount
                                          }
                                      })
                                  } else {
                                      logDpNotExist(vm.targetChannel, `${vm.idChannel}`);
                                  }
                              
                                  generateUptimeRow(`${vm.idChannel}.uptime`, table, vm)
                              
                                  if (vm.custom && vm.custom.length > 0) {
                                      for (const dp of vm.custom) {
                                          generateCustomRow(dp, table, vm);
                                      }
                                  }
                              
                                  generateProgressBarCpuRow(`${vm.idChannel}.cpu`, table, vm, isNode);
                              
                                  generateProgressBarTemperatures(vm.temperatures, table, vm);
                              
                                  if (!isNode) {
                                      generateProgressBarRow(`${vm.idChannel}.mem_lev`, table, vm, "memory", 'Arbeitsspeicher', getUsedOfText(`${vm.idChannel}.mem`, `${vm.idChannel}.maxmem`, vm.targetChannel));
                                      generateProgressBarRow(`${vm.idChannel}.disk_lev`, table, vm, "harddisk", 'Local', getUsedOfText(`${vm.idChannel}.disk`, `${vm.idChannel}.maxdisk`, vm.targetChannel));
                                  } else {
                                      generateProgressBarRow(`${vm.idChannel}.memory.used_lev`, table, vm, "memory", 'Arbeitsspeicher', getUsedOfText(`${vm.idChannel}.memory.used`, `${vm.idChannel}.memory.total`, vm.targetChannel));
                                      generateProgressBarRow(`${vm.idChannel}.swap.used_lev`, table, vm, "folder-swap", 'SWAP', getUsedOfText(`${vm.idChannel}.swap.used`, `${vm.idChannel}.swap.total`, vm.targetChannel));
                              
                                      if (vm.storages) {
                                          for (const storage of vm.storages) {
                                              generateProgressBarRow(`${storage.idChannel}.used_lev`, table, vm, storage.icon, storage.text, getUsedOfText(`${storage.idChannel}.used`, `${storage.idChannel}.total`, vm.targetChannel));
                                          }
                                      }
                                  }
                              
                                  // generateStatusBar(`${vm.idChannel}.status`, table, vm, 'top: 3px; position: relative;');
                              
                                  table.push({
                                      seperator: Object.assign({
                                          html: `<hr style="background: transparent; border-width: 0; height: 1px;margin-top: 0; margin-bottom: 0;">`,
                                      }, statusSeperator)
                                  })
                              
                              
                              
                                  if (vm.showControlButtons || vm.showControlButtons === undefined) {
                                      let btnIds = [];
                                      let btnRow = {};
                              
                                      if (existsObject(`${vm.idChannel}.start`)) {
                                          btnIds.push({ id: `${vm.idChannel}.start`, text: 'start' });
                                      }
                              
                                      if (existsObject(`${vm.idChannel}.reboot`)) {
                                          btnIds.push({ id: `${vm.idChannel}.reboot`, text: 'neustart' });
                                      }
                              
                                      if (existsObject(`${vm.idChannel}.shutdown`)) {
                                          btnIds.push({ id: `${vm.idChannel}.shutdown`, text: 'stop' });
                                      }
                              
                                      for (var i = 0; i <= btnIds.length - 1; i++) {
                                          let id = btnIds[i].id;
                              
                                          btnRow[`btn${i}`] = Object.assign(
                                              {
                                                  oid: id,
                                                  value: true,
                                                  buttontext: `<div style="${styleButtonText}">${btnIds[i].text}</div>`,
                                                  image: "play-circle-outline",
                                                  colspan: colCount / btnIds.length
                                              }, buttonControlLayout);
                                      }
                                      table.push(btnRow);
                                  }
                              
                                  // generateStatusBar(`${vm.idChannel}.status`, table, vm, 'top: -3px; position: relative;');
                              
                                  mySetState(`${idDatenpunktPrefix}.${idDatenPunktStrukturPrefix}.${isNode ? 'node' : 'vm'}.${vm.targetChannel}.jsonTable`, JSON.stringify(table), 'string', 'JSON string für Tabellen Widget');
                              
                              } catch (ex) {
                                  console.error(`[updateVm - ${vm.targetChannel}] error: ${ex.message}, stack: ${ex.stack}`);
                              }
                              

                              }

                              function generateUptimeRow(id, table, vm) {
                              let row = {};

                              row.icon = Object.assign({ mdwIcon: "clock-check-outline", mdwIconColor: iconColor }, iconLayout)
                              row.text = Object.assign({ html: `<div style="${styleText}">Betriebszeit</div>` }, textLayout);
                              
                              if (existsState(id)) {
                                  let duration = moment.duration(getState(id).val * 1000);
                                  let durationText = duration.format('D [Tage] h [Std. und] m [Min.]');
                                  if (duration.asDays() <= 2) {
                                      durationText = duration.format('D [Tag] h [Std. und] m [Min.]');
                                  }
                              
                                  row.value = Object.assign({ html: `<div style="${styleValue}">${durationText}</div>` }, valueTextLayout);
                              } else {
                                  logDpNotExist(vm.targetChannel, id);
                                  row.value = Object.assign({ html: `<div style="${styleValue}; color: red;">N/A</div>` }, valueTextLayout);
                              }
                              
                              table.push(row);
                              

                              }

                              function generateCustomRow(dp, table, vm) {
                              let row = {};
                              row.icon = Object.assign({ mdwIcon: dp.icon, mdwIconColor: iconColor }, iconLayout);

                              if (!dp.secondIds) {
                                  row.text = Object.assign({ html: `<div style="${styleText}">${dp.text}</div>` }, textLayout);
                              } else {
                                  let secondText = [];
                                  for (const id of dp.secondIds) {
                                      if (existsState(id)) {
                                          let obj = getObject(id);
                              
                                          let unit = '';
                                          if (obj && obj.common && obj.common.unit) {
                                              unit = ' ' + obj.common.unit;
                                          }
                              
                                          secondText.push(getState(id).val + unit);
                                      } else {
                                          logDpNotExist(vm.targetChannel, id);
                                          secondText.push('N/A');
                                      }
                                  }
                              
                                  row.text = Object.assign({ html: getHtmlTwoLines(dp.text, secondText.join(', ')) }, textLayout);
                              }
                              
                              if (existsState(dp.id)) {
                                  let val = getState(dp.id).val;
                                  let obj = getObject(dp.id);
                              
                                  let unit = '';
                                  if (obj && obj.common && obj.common.unit) {
                                      unit = obj.common.unit
                                  }
                              
                                  if (!dp.type) {
                                      if (obj.common && obj.common.type === 'number') {
                                          row.value = Object.assign({ html: `<div style="${styleValue}">${formatValue(val, undefined, '.,')} ${unit}</div>` }, valueTextLayout);
                                      } else {
                                          row.value = Object.assign({ html: `<div style="${styleValue}">${val} ${unit}</div>` }, valueTextLayout);
                                      }
                                  } else if (dp.type === 'timestamp') {
                                      row.value = Object.assign({ html: `<div style="${styleValue}">${getFormattedTimeStamp(val)}</div>` }, valueTextLayout);
                                  } else if (dp.type === 'timestampInSeconds') {
                                      row.value = Object.assign({ html: `<div style="${styleValue}">${getFormattedTimeStamp(val * 1000)}</div>` }, valueTextLayout);
                                  } else if (dp.type === 'boolean') {
                                      row.value = Object.assign({ html: `<div style="${styleValue}">${val ? 'ja' : 'nein'}</div>` }, valueTextLayout);
                              
                                      if (dp.attention && val) {
                                          row.icon = Object.assign({ mdwIcon: dp.icon, mdwIconColor: iconAttentionColor }, iconLayout);
                                      }
                                  } else if (dp.type === 'number') {
                                      row.value = Object.assign({ html: `<div style="${styleValue}">${val > 0 ? `${val} ${unit}` : 'nein'}</div>` }, valueTextLayout);
                              
                                      if (dp.attention && val > 0) {
                                          row.icon = Object.assign({ mdwIcon: dp.icon, mdwIconColor: iconAttentionColor }, iconLayout);
                                      }
                                  }
                              
                              } else {
                                  logDpNotExist(vm.targetChannel, dp.id);
                                  row.value = Object.assign({ html: `<div style="${styleValue}; color: red;">N/A</div>` }, valueTextLayout);
                              }
                              
                              table.push(row);
                              

                              }

                              function generateProgressBarTemperatures(idList, table, vm) {
                              if (idList && idList.length > 0) {
                              let row = {};

                                  row.icon = Object.assign({ mdwIcon: "thermometer", rowspan: idList.length, mdwIconColor: iconColor }, iconLayout);
                                  row.text = Object.assign({ html: `<div style="${styleText}">Temperatur</div>`, rowspan: idList.length }, textLayout);
                              
                                  if (idList[0] && existsState(idList[0])) {
                                      row.progressBar = Object.assign({ oid: idList[0], valueLabelCustom: '[#value] °C', textColor: colorTertiary, verticalAlign: 'bottom', height: `${rowHeight / idList.length}px`, cellStyleAttrs: `line-height: ${rowHeight / idList.length}px; padding-bottom: 0;` }, progressBarTemperaturLayout);
                                  } else {
                                      logDpNotExist(vm.targetChannel, idList[0]);
                                      row.progressBar = Object.assign({ valueLabelCustom: 'N/A', textColor: colorTertiary, verticalAlign: 'bottom', height: `${rowHeight / idList.length}px`, cellStyleAttrs: `line-height: ${rowHeight / idList.length}px; padding-bottom: 0;` }, progressBarTemperaturLayout);
                                  }
                              
                                  table.push(row);
                              
                                  if (idList.length === 2) {
                                      if (idList[1] && existsState(idList[1])) {
                                          table.push({ temp: Object.assign({ oid: idList[1], valueLabelCustom: '[#value] °C', textColor: colorTertiary, verticalAlign: 'bottom', height: `${rowHeight / idList.length}px`, cellStyleAttrs: `line-height: ${rowHeight / idList.length}px; padding-bottom: 0;` }, progressBarTemperaturLayout) });
                                      } else {
                                          logDpNotExist(vm.targetChannel, idList[1]);
                                          table.push({ temp: Object.assign({ valueLabelCustom: 'N/A', textColor: colorTertiary, verticalAlign: 'bottom', height: `${rowHeight / idList.length}px`, cellStyleAttrs: `line-height: ${rowHeight / idList.length}px; padding-bottom: 0;` }, progressBarTemperaturLayout) });
                                      }
                                  }
                              }
                              

                              }

                              function generateProgressBarCpuRow(id, table, vm, isNode = false) {
                              let row = {};
                              row.icon = Object.assign({ mdwIcon: "cpu-64-bit", rowspan: 2, mdwIconColor: iconColor }, iconLayout);
                              row.text = Object.assign({ html: <div style="${styleText}">CPU</div>, rowspan: 2 }, textLayout);

                              if (existsState(id)) {
                                  calculateCpuAverage(vm.targetChannel, getState(id).val, isNode);
                                  let cpuAverageId = `${idDatenpunktPrefix}.${idDatenPunktStrukturPrefix}.${isNode ? 'node' : 'vm'}.${vm.targetChannel}.cpuAverage`
                              
                                  row.progressBar = Object.assign({ oid: id, textColor: colorTertiary, verticalAlign: 'bottom', cellStyleAttrs: `line-height: ${rowHeight / 2}px; padding-bottom: 0;` }, progressBarCpuLayout);
                              
                                  table.push(row);
                              
                                  if (existsState(cpuAverageId)) {
                                      table.push({ cpu: Object.assign({ oid: cpuAverageId, valueLabelStyle: 'progressCustom', valueLabelCustom: 'Ø [#value] %', textColor: colorTertiary, verticalAlign: 'top', cellStyleAttrs: `line-height: ${rowHeight / 2}px; padding-top: 0;` }, progressBarCpuLayout) });
                                  } else {
                                      logDpNotExist(vm.targetChannel, cpuAverageId);
                                      table.push({ cpu: Object.assign({ valueLabelStyle: 'progressCustom', valueLabelCustom: 'N/A', textColor: 'red', verticalAlign: 'top', cellStyleAttrs: `line-height: ${rowHeight / 2}px; padding-top: 0;` }, progressBarCpuLayout) });
                                  }
                              
                              } else {
                                  logDpNotExist(vm.targetChannel, id);
                              
                                  row.progressBar = Object.assign({ valueLabelStyle: 'progressCustom', valueLabelCustom: 'N/A', textColor: 'red', verticalAlign: 'bottom', cellStyleAttrs: `line-height: ${rowHeight / 2}px; padding-bottom: 0;` }, progressBarCpuLayout);
                                  table.push(row);
                              
                                  table.push({ cpu: Object.assign({ valueLabelStyle: 'progressCustom', valueLabelCustom: 'N/A', textColor: 'red', verticalAlign: 'top', cellStyleAttrs: `line-height: ${rowHeight / 2}px; padding-top: 0;` }, progressBarCpuLayout) });
                              }
                              

                              }

                              function generateProgressBarRow(id, table, vm, icon, textOne, textTwo) {
                              let row = {};
                              row.icon = Object.assign({ mdwIcon: icon, mdwIconColor: iconColor }, iconLayout);

                              if (existsState(id)) {
                                  row.text = Object.assign({ html: getHtmlTwoLines(textOne, textTwo) }, textLayout);
                              
                                  row.progressBar = Object.assign({ oid: id, textColor: colorTertiary }, progressBarLayout);
                              } else {
                                  logDpNotExist(vm.targetChannel, id);
                                  row.text = Object.assign({ html: `<div style="${styleText}">${textOne}</div>` }, textLayout);
                                  row.progressBar = Object.assign({ valueLabelStyle: 'progressCustom', valueLabelCustom: 'N/A', textColor: 'red', }, progressBarLayout);
                              }
                              
                              table.push(row);
                              

                              }

                              function generateStatusBar(id, table, vm, cellStyleAttrs) {
                              if (getObject(id)) {
                              let statusColor = getState(id).val === 'running' ? colorOnline : colorOffline;
                              table.push({
                              seperator: Object.assign({
                              cellStyleAttrs: cellStyleAttrs,
                              html: <hr style="background: linear-gradient(90deg, transparent 0%, ${statusColor} 30%, ${statusColor} 50%, ${statusColor} 70%, transparent 100%); border-width: 0; height: 1px;margin-top: 0; margin-bottom: 0;">,
                              }, statusSeperator)
                              })
                              } else {
                              logDpNotExist(vm.targetChannel, id);
                              }

                              }

                              function getFormattedTimeStamp(val) {
                              let now = moment();
                              let daysDiff = now.startOf('day').diff(moment(val).startOf('day'), 'days');

                              let timeFormated = moment(val).format('ddd DD.MM. - HH:mm');
                              if (daysDiff === 0) {
                                  timeFormated = `Heute - ${moment(val).format('HH:mm')}`;
                              } else if (daysDiff === 1) {
                                  timeFormated = `Gestern - ${moment(val).format('HH:mm')}`;
                              } else if (daysDiff > 1 && daysDiff <= 6) {
                                  timeFormated = `vor ${daysDiff} Tagen - ${moment(val).format('HH:mm')}`;
                              } else if (daysDiff === 7) {
                                  timeFormated = `vor einer Woche - ${moment(val).format('HH:mm')}`;
                              }
                              
                              return timeFormated;
                              

                              }

                              function calculateCpuAverage(targetChannel, val, isNode = false) {
                              let id = ${idDatenpunktPrefix}.${idDatenPunktStrukturPrefix}.${isNode ? 'node' : 'vm'}.${targetChannel}.cpuLastValues;

                              try {
                                  if (existsState(id)) {
                                      let letzteWerte = getState(id).val;
                              
                                      letzteWerte = letzteWerte.toString().split(',');
                              
                                      if (val > 0) {
                                          letzteWerte.unshift(val);
                                      } else {
                                          letzteWerte.unshift(0);
                                      }
                              
                                      if (letzteWerte.length > cpuAverageLastValues) {
                                          letzteWerte.splice(cpuAverageLastValues);
                                      }
                              
                                      setState(id, letzteWerte.join(','), true);
                              
                                      let sum = 0;
                                      for (const value of letzteWerte) {
                                          sum = sum + parseFloat(value);
                                      }
                              
                                      mySetState(`${idDatenpunktPrefix}.${idDatenPunktStrukturPrefix}.${isNode ? 'node' : 'vm'}.${targetChannel}.cpuAverage`, mathjs.round(sum / letzteWerte.length, 0), 'number', 'Durchschnittle CPU Last');
                                  } else {
                                      mySetState(id, val.toString(), 'string', 'Durchschnittle CPU Last letzte 60 Werte');
                                  }
                              
                              } catch (err) {
                                  console.error(`[calculateCpuAverage] '${id}' - error: ${err.message}, stack: ${err.stack}`);
                              }
                              

                              }

                              function mySetState(id, val, type, name, write = false) {
                              if (existsState(id)) {
                              setState(id, val, true);
                              } else {
                              createState(id, {
                              'name': name,
                              'type': type,
                              'read': true,
                              'write': write
                              }, function () {
                              setState(id, val, true);
                              });
                              }
                              }

                              function getUsedOfText(usedId, totalId, targetChannel) {
                              let text = 'N/A'

                              let used = existsState(usedId) ? getState(usedId).val : logDpNotExist(targetChannel, usedId);
                              let total = existsState(totalId) ? getState(totalId).val : logDpNotExist(targetChannel, totalId);
                              
                              if (used && total) {
                                  text = `${formatValue(used / 1024, 2, '.,')} GB / ${formatValue(total / 1024, 0, '.,')} GB`
                              }
                              
                              return text;
                              

                              }

                              function getHtmlTwoLines(text1, text2) {
                              return <div style="font-size: ${fontSizeSecondary}px; text-align: left; font-family: ${fontFamilySecondary}; color: ${colorPrimary}; line-height: 1.2; white-space: nowrap; text-overflow: ellipsis; overflow: hidden;">${text1}</div> <div style="font-size: ${fontSizeQuinary}px; text-align: left; font-family: ${fontFamilyQuaternary}; color: ${colorSecondary}; line-height: 1.2">${text2}</div>
                              }

                              function logDpNotExist(target, id) {
                              console.warn([updateVm - ${target}] datapoint '${id}' not exist!);
                              }

                              // Bei JS Start ausführen
                              updateData();

                              Aber das Skript ist jetzt nicht essentiell wichtig. Notfalls schalt ich das ab bis ich wieder da bin.

                              foxriver76F Offline
                              foxriver76F Offline
                              foxriver76
                              Developer
                              schrieb am zuletzt editiert von
                              #178

                              @uv-on-fire Das mit mathjs wird in der nächsten javascript Adapter Version behoben sein (>8.6.0 sobald verfügbar)

                              Videotutorials & mehr

                              Hier könnt ihr mich unterstützen.

                              1 Antwort Letzte Antwort
                              0
                              • D Diamand2k22

                                Der Adapter BlueConnect funktioniert leider auch nicht mehr mit dem neuen JS-Controller

                                https://github.com/kopierschnitte/ioBroker.blueconnect

                                M Offline
                                M Offline
                                mameier1234
                                schrieb am zuletzt editiert von
                                #179

                                @diamand2k22 sagte in Beta Test js-controller Kiera (v6.0):

                                Der Adapter BlueConnect funktioniert leider auch nicht mehr mit dem neuen JS-Controller

                                https://github.com/kopierschnitte/ioBroker.blueconnect

                                Teste mal neu.. (von Github) Kopierschnitte hat soviel ich weiss angepasst..

                                Da ich selbst keinen Blueconnect mehr benutze liegt das Projekt ein bisschen.

                                Grüße,

                                Martin

                                foxriver76F 1 Antwort Letzte Antwort
                                0
                                • M mameier1234

                                  @diamand2k22 sagte in Beta Test js-controller Kiera (v6.0):

                                  Der Adapter BlueConnect funktioniert leider auch nicht mehr mit dem neuen JS-Controller

                                  https://github.com/kopierschnitte/ioBroker.blueconnect

                                  Teste mal neu.. (von Github) Kopierschnitte hat soviel ich weiss angepasst..

                                  Da ich selbst keinen Blueconnect mehr benutze liegt das Projekt ein bisschen.

                                  foxriver76F Offline
                                  foxriver76F Offline
                                  foxriver76
                                  Developer
                                  schrieb am zuletzt editiert von foxriver76
                                  #180

                                  @mameier1234 Die Frage ist funktioniert er mit controller 6.0.5 wieder wie er ist @Diamand2k22

                                  Zumindest startet er bei mir wieder sauber, zur Funktionalität kann ich nix sagen.

                                  Videotutorials & mehr

                                  Hier könnt ihr mich unterstützen.

                                  O LatziL 2 Antworten Letzte Antwort
                                  0
                                  • foxriver76F foxriver76

                                    @mameier1234 Die Frage ist funktioniert er mit controller 6.0.5 wieder wie er ist @Diamand2k22

                                    Zumindest startet er bei mir wieder sauber, zur Funktionalität kann ich nix sagen.

                                    O Offline
                                    O Offline
                                    oxident
                                    schrieb am zuletzt editiert von
                                    #181

                                    @foxriver76 Mangels Testsystem für JS6 kann ich es dort nicht testen, aber die Funktionalität ist, zumindest unter JS5 gegebenen.

                                    Der Blueconnect-Adapter sollte daher funktionieren. Vielleicht kann @Diamand2k22 berichten...

                                    D 1 Antwort Letzte Antwort
                                    0
                                    • foxriver76F foxriver76

                                      @mameier1234 Die Frage ist funktioniert er mit controller 6.0.5 wieder wie er ist @Diamand2k22

                                      Zumindest startet er bei mir wieder sauber, zur Funktionalität kann ich nix sagen.

                                      LatziL Online
                                      LatziL Online
                                      Latzi
                                      schrieb am zuletzt editiert von
                                      #182

                                      @foxriver76
                                      ich hab gesehen, dass du beim echarts-Adapter Änderungen vorgenommen hast

                                      1.8.3 (2024-06-17)
                                      (foxriver76) upgraded dependencies
                                      

                                      wann wird die Version verfügbar sein?

                                      foxriver76F 1 Antwort Letzte Antwort
                                      0
                                      • LatziL Latzi

                                        @foxriver76
                                        ich hab gesehen, dass du beim echarts-Adapter Änderungen vorgenommen hast

                                        1.8.3 (2024-06-17)
                                        (foxriver76) upgraded dependencies
                                        

                                        wann wird die Version verfügbar sein?

                                        foxriver76F Offline
                                        foxriver76F Offline
                                        foxriver76
                                        Developer
                                        schrieb am zuletzt editiert von
                                        #183

                                        @latzi echarts 1.8.3 fixt das Problem wohl leider auch nicht, Bluefox arbeitet aktuell an dem Problem, ist was größeres leider. Nach Möglichkeit die stable version nutzen die sollte tun.

                                        Videotutorials & mehr

                                        Hier könnt ihr mich unterstützen.

                                        LatziL 1 Antwort Letzte Antwort
                                        0
                                        • foxriver76F foxriver76

                                          @latzi echarts 1.8.3 fixt das Problem wohl leider auch nicht, Bluefox arbeitet aktuell an dem Problem, ist was größeres leider. Nach Möglichkeit die stable version nutzen die sollte tun.

                                          LatziL Online
                                          LatziL Online
                                          Latzi
                                          schrieb am zuletzt editiert von
                                          #184

                                          @foxriver76
                                          vielen Dank für die Info, bin aktuell ohnehin auf 1.7.2, die läuft ja problemlos mit js-controller 5

                                          foxriver76F 1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          721

                                          Online

                                          32.4k

                                          Benutzer

                                          81.5k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe