Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Tester
    4. Beta Test js-controller Kiera (v6.0)

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Beta Test js-controller Kiera (v6.0)

    This topic has been deleted. Only users with topic management privileges can see it.
    • Thomas Braun
      Thomas Braun Most Active @JB_Sullivan last edited by

      @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...

      1 Reply Last reply Reply Quote 0
      • foxriver76
        foxriver76 Developer @sigi234 last edited by 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

        sigi234 ESP8266 2 Replies Last reply Reply Quote 0
        • sigi234
          sigi234 Forum Testing Most Active @foxriver76 last edited by

          @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.

          1 Reply Last reply Reply Quote 0
          • ESP8266
            ESP8266 @foxriver76 last edited by ESP8266

            @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.

            1 Reply Last reply Reply Quote 0
            • U
              UV-on-fire last edited by

              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?

              foxriver76 1 Reply Last reply Reply Quote 0
              • foxriver76
                foxriver76 Developer @UV-on-fire last edited by

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

                U 1 Reply Last reply Reply Quote 0
                • U
                  UV-on-fire @foxriver76 last edited by

                  @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)

                  foxriver76 1 Reply Last reply Reply Quote 0
                  • foxriver76
                    foxriver76 Developer @UV-on-fire last edited by

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

                    Poste da gerne auch mal dein Skript rein.

                    MK-66 created this issue in ioBroker/ioBroker.javascript

                    open [Bug]: moment-duration-format generates script error with js-controller 6.x #1613

                    U 1 Reply Last reply Reply Quote 0
                    • B
                      bommel_030 last edited by

                      @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 Reply Last reply Reply Quote 0
                      • U
                        UV-on-fire @foxriver76 last edited by

                        @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.

                        foxriver76 1 Reply Last reply Reply Quote 0
                        • foxriver76
                          foxriver76 Developer @UV-on-fire last edited by

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

                          1 Reply Last reply Reply Quote 0
                          • M
                            mameier1234 @Diamand2k22 last edited by

                            @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.

                            foxriver76 1 Reply Last reply Reply Quote 0
                            • foxriver76
                              foxriver76 Developer @mameier1234 last edited by 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 Latzi 2 Replies Last reply Reply Quote 0
                              • O
                                oxident @foxriver76 last edited by

                                @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 Reply Last reply Reply Quote 0
                                • Latzi
                                  Latzi @foxriver76 last edited by

                                  @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?

                                  foxriver76 1 Reply Last reply Reply Quote 0
                                  • foxriver76
                                    foxriver76 Developer @Latzi last edited by

                                    @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.

                                    Latzi 1 Reply Last reply Reply Quote 0
                                    • Latzi
                                      Latzi @foxriver76 last edited by

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

                                      foxriver76 1 Reply Last reply Reply Quote 0
                                      • foxriver76
                                        foxriver76 Developer @Latzi last edited by foxriver76

                                        @latzi mit 6.0.5 sollte sie auch laufen

                                        1 Reply Last reply Reply Quote 1
                                        • Gaspode
                                          Gaspode last edited by

                                          Ich weiß nicht, ob das Problem nur unter Windows auftritt. Ich habe gerade nochmal von 5.0.19 direkt auf 6.0.5 upgegraded.
                                          Anschließend fährt der ioBroker leider nicht mehr hoch. Im Service Error Log steht:

                                          node:internal/modules/esm/resolve:304
                                            return new ERR_PACKAGE_PATH_NOT_EXPORTED(
                                                   ^
                                          
                                          Error [ERR_PACKAGE_PATH_NOT_EXPORTED]: Package subpath './tools' is not defined by "exports" in C:\ioBroker\SmartHome10\node_modules\@iobroker\js-controller-common\package.json
                                              at exportsNotFound (node:internal/modules/esm/resolve:304:10)
                                              at packageExportsResolve (node:internal/modules/esm/resolve:651:9)
                                              at resolveExports (node:internal/modules/cjs/loader:592:36)
                                              at Module._findPath (node:internal/modules/cjs/loader:669:31)
                                              at Module._resolveFilename (node:internal/modules/cjs/loader:1131:27)
                                              at Module._load (node:internal/modules/cjs/loader:986:27)
                                              at Module.require (node:internal/modules/cjs/loader:1233:19)
                                              at require (node:internal/modules/helpers:179:18)
                                              at Object.<anonymous> (C:\ioBroker\SmartHome10\node_modules\iobroker.js-controller\build\lib\restart.js:8:17)
                                              at Module._compile (node:internal/modules/cjs/loader:1358:14) {
                                            code: 'ERR_PACKAGE_PATH_NOT_EXPORTED'
                                          }
                                          

                                          iob fix behebt das Problem, wobei ich im Moment noch nicht weiß, warum es nach iob fix wieder funktioniert.

                                          @foxriver76
                                          Hast du schon eine Idee oder brauchst du noch weitere Infos?

                                          foxriver76 1 Reply Last reply Reply Quote 0
                                          • foxriver76
                                            foxriver76 Developer @Gaspode last edited by

                                            @gaspode hm das ist komisch, die restart.js muss von einem alten controller gewesen sein ... im aktuellen gibt es den import nicht..

                                            Gaspode 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            1.1k
                                            Online

                                            31.6k
                                            Users

                                            79.6k
                                            Topics

                                            1.3m
                                            Posts

                                            beta js-controller kiera test
                                            39
                                            331
                                            40604
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo