Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. UV-on-fire

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    U
    • Profile
    • Following 1
    • Followers 0
    • Topics 8
    • Posts 93
    • Best 3
    • Groups 1

    UV-on-fire

    @UV-on-fire

    Starter

    3
    Reputation
    9
    Profile views
    93
    Posts
    0
    Followers
    1
    Following
    Joined Last Online

    UV-on-fire Follow
    Starter

    Best posts made by UV-on-fire

    • RE: Proxmox VE7.3-3 Backup "unable to rename" [GELÖST]

      @crunchip
      Also erstmal hats wieder mit dem Fehler cant rename das Backup abgebrochen.

      Beim Vergleich mit dir ist mir aufgefallen das ich auf der Fritzbox in einen Unterordner gemountet habe, du aber nur auf die Platte. Also Flux angepasst und siehe da es geht.

      Habe dann zum Test den gemounteten Ordner als Ordner eingefügt und siehe da geht auch.

      Im Endeffekt also so wie ich es am Anfang auch hatte. Unterschied war nur das der Ordner im /mnt liegt und der Fritzbox User nur Zugriff auf den Backup Ordner hatte.

      Da mir das keine Ruhe gelassen hat habe ich dann in der Fritte nochmal einen user angelegt der nur Zugriff auf den Unterordner /Backups/PROXMOX hat und entsprechen den Ordner mit anderen -smbcredentials eingebunden. Und siehe da geht auch.

      Danach nen user mit vollen Zugriffsrechten angelegt und den mount auf /PROXMOX gelassen und auch das hat funktioniert.

      Jetzt war ich dch recht verwundert weil das ganze jetzt ja so war wie am Anfang nur eben mit Ordner im /mnt. Dann habe ich mir die alte fstab nochmal angesehen und was soll ich sagen da war als Pfad /Backups/Proxmox und nicht /Backups/PROXMOX eingetragen. Damit konnte da file wohl geschrieben aber eben nicht umbenannt werden. Case sensitiv halt 🤦‍♂️

      Vielen lieben Dank für eure Geduld. Jetzt hat das ganze wenigstens seine Ordnung bekommen mit der Verzeichnissstruktur und so.

      Werde mir das ganze nochmal genau zusammenschreiben falls ich mal wieder in die bredullie komme

      posted in Proxmox
      U
      UV-on-fire
    • RE: TESTER gesucht / Backup auf Fritz.nas - node 18.18.0

      @thomas-braun Wollt ich auch gerade schreiben. Alles schick mit 18.18.1 CCU, javascript,iobroker passt👍

      posted in Tester
      U
      UV-on-fire
    • RE: Blockly mit Datum erstellen

      Ich hab mir da mal was gebastelt um auf der VIS ein Start und Ende eingeben zu können und hab mir davon einen Datenpunkt "Weihnachten" abgeleitet. Der ist dann wiederum in meinem Trigger für meine WLED Ansteuerung und für die Balkonsteckdosen an Weihnachten verwurstet. Wäre vielleicht auch ne Möglichkeit.

      Vis:


      Screenshot 2024-11-05 222345.png

      Die Zahlen sind Eingabefelder. Monat habe ich mit Dezember und Januar als Start und Ende fest definiert liese sich aber auch noch dynamisieren

      Auswertung für den Datenpunkt Weihnachten (wird über einen Zeitplan einfach minütlich ausgeführt. ginge aber sicher auch schöner). Sylvester habe ich einen extra Datenpunkt da ich einen anderen Effekt für WLED an Sylvester nutze.


      Screenshot 2024-11-05 223352.png

      Zusätzlicher Datenpunkt Weihnachten +1 zum ausschalten der Steckdosen am ersten Morgen nach Ende des Zeitplans


      82fb0550-8109-42c8-b54e-235c578c66c3-grafik.png

      Einschalten und Ausschalten der Steckdosen wenn Nacht erkannt wurde und es ist Weihnachten
      (Zusammengeklappt ist nur die Auswertung der STeckdosen 2-4)


      01d870a4-c781-46da-b5f6-5dfdf5b2e289-grafik.png

      Das Blockly für den Trigger Tag/Nacht wird jeweils bei Sonnenaufgang und Sonnenuntergang gestartet


      Screenshot 2024-11-05 225101.png

      Vielleicht nicht die schönste Lösung aber funktioniert tadellos. Verbesserungsvorschläge sind aber immer gerne gesehen. Man will ja auch dazu lernen 😊

      posted in Blockly
      U
      UV-on-fire

    Latest posts made by UV-on-fire

    • RE: Blockly mit Datum erstellen

      Ich hab mir da mal was gebastelt um auf der VIS ein Start und Ende eingeben zu können und hab mir davon einen Datenpunkt "Weihnachten" abgeleitet. Der ist dann wiederum in meinem Trigger für meine WLED Ansteuerung und für die Balkonsteckdosen an Weihnachten verwurstet. Wäre vielleicht auch ne Möglichkeit.

      Vis:


      Screenshot 2024-11-05 222345.png

      Die Zahlen sind Eingabefelder. Monat habe ich mit Dezember und Januar als Start und Ende fest definiert liese sich aber auch noch dynamisieren

      Auswertung für den Datenpunkt Weihnachten (wird über einen Zeitplan einfach minütlich ausgeführt. ginge aber sicher auch schöner). Sylvester habe ich einen extra Datenpunkt da ich einen anderen Effekt für WLED an Sylvester nutze.


      Screenshot 2024-11-05 223352.png

      Zusätzlicher Datenpunkt Weihnachten +1 zum ausschalten der Steckdosen am ersten Morgen nach Ende des Zeitplans


      82fb0550-8109-42c8-b54e-235c578c66c3-grafik.png

      Einschalten und Ausschalten der Steckdosen wenn Nacht erkannt wurde und es ist Weihnachten
      (Zusammengeklappt ist nur die Auswertung der STeckdosen 2-4)


      01d870a4-c781-46da-b5f6-5dfdf5b2e289-grafik.png

      Das Blockly für den Trigger Tag/Nacht wird jeweils bei Sonnenaufgang und Sonnenuntergang gestartet


      Screenshot 2024-11-05 225101.png

      Vielleicht nicht die schönste Lösung aber funktioniert tadellos. Verbesserungsvorschläge sind aber immer gerne gesehen. Man will ja auch dazu lernen 😊

      posted in Blockly
      U
      UV-on-fire
    • RE: Homematic Ausschaltverzögerung

      @saeft_2003
      Du schickst ja nur das er nach 10 sek. Ausschalten soll. Der ein Befehl fehlt.

      posted in Off Topic
      U
      UV-on-fire
    • RE: Beta Test js-controller Kiera (v6.0)

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

      posted in Tester
      U
      UV-on-fire
    • RE: Beta Test js-controller Kiera (v6.0)

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

      posted in Tester
      U
      UV-on-fire
    • RE: Beta Test js-controller Kiera (v6.0)

      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?

      posted in Tester
      U
      UV-on-fire
    • RE: HMIP Hörmann Garagentor Lovelace

      @quallenfischer
      Achso, jetzt verstanden.

      Ich nutze keine alias für as Tor bisher. Müsste ich auch erst ausprobieren.

      Vielleicht am we wenn ich dazu komme.

      posted in Visualisierung
      U
      UV-on-fire
    • RE: HMIP Hörmann Garagentor Lovelace

      @quallenfischer
      Eben mal per VPN geschaut
      Es gibt door state
      0=geschlossen
      1=geöffnet

      Door command zum ansteuern
      1=öffnen
      2=stoppen
      3 = schließen
      4=lüften

      Prozess
      0=steht
      1=bewegt sich

      Sektion
      2= läuft auf
      5=läuft zu

      posted in Visualisierung
      U
      UV-on-fire
    • RE: HMIP Hörmann Garagentor Lovelace

      @quallenfischer
      Guten Morgen erst mal
      Also ich glaube da passt was nicht mit den stati.
      Meine mich zu erinnern das der Parameter sektion dir den Status zurück gibt.
      0= geschlossen
      2= fährt auf
      3= geöffnet
      5= fährt zu

      Zum Steuern wars aber ein anderer mit
      1= öffnen
      2=stoppen
      3= schließen
      4=lüften

      Beobacte mal die Parameter beim ansteuern. Ich kann auch heute abend mal nachschauen, wird aber spät.

      posted in Visualisierung
      U
      UV-on-fire
    • RE: Mehrere Bewegungsmelder in einem Treppenhaus

      @fibricus
      Bin jetzt nicht der Profi aber sobald einer der beiden Melder seinen Zustand auf 1 ändert wird doch der Wert auch 1 und damit der timeout gestartet. Ich denke du müsstest den Zustand beider Melder und verknüpft auf Zustand 1 prüfen damit der timeout erst dann gestartet wird.

      posted in Blockly
      U
      UV-on-fire
    • RE: Upgrade von Debian 11/Bullseye auf 12/Bookworm

      @thomas-braun
      Also hat problemlos geklapp auf meinem NUC. Container problemlos upgedatet und hochgelaufen.

      Vielen Dank für deine Anleitung. Perfekt 👍 👏

      posted in Off Topic
      U
      UV-on-fire
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo