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

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

Community Forum

  1. ioBroker Community Home
  2. Deutsch
  3. Praktische Anwendungen (Showcase)
  4. View Adapter Status

NEWS

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

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

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

View Adapter Status

Geplant Angeheftet Gesperrt Verschoben Praktische Anwendungen (Showcase)
view adapterview
212 Beiträge 31 Kommentatoren 37.0k Aufrufe 52 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • ScroungerS Scrounger

    @ub-privat
    Hast du das skript 1:1 kopiert?
    Die Fehlermeldung bezieht sich auf Zeile 518-520 - das skript hat aber nur 339 Zeilen.

    Und laut deinem Screenshot hast du irgendwas an dem Skript verändert. Weil ab Zeile 8 müssten die settings zu sehen sein.

    Und bitte das vollständige log posten, also aus dem reiter 'log' im admin bereich.

    ub.privatU Offline
    ub.privatU Offline
    ub.privat
    schrieb am zuletzt editiert von
    #163

    @Scrounger

    Bin mir keiner Änderung bewußt!
    Würdest du das AKTUELLESTE Script nochmals bitte verlinken!?
    DANKE.

    sigi234S 1 Antwort Letzte Antwort
    0
    • ScroungerS Scrounger

      Sodele nochmal eine neue Version des Skriptes

      Voraussetzung Material Design Widgets v0.2.62 (demnächst im latest) !!!

      • mehr Farbeinstellung
      • Sortier Funktion
      • Filter Funktion - wäre sicher als nächster Wunsch gekommen, deshalb hab ich es schon mal eingebaut ;-)
        (Benötigt ihr weitere schaut ins skript und passt es auf eure Bedürfnisse an)
      • Adapter Modus wird angezeigt
      • Fehler behoben

      AdapterStatus.gif

      Ist auch im Online Beispiel enthalten

      View:

      {
        "settings": {
          "style": {
            "background_class": ""
          },
          "theme": "redmond",
          "sizex": "",
          "sizey": "",
          "gridSize": "",
          "snapType": null
        },
        "widgets": {
          "e00001": {
            "tpl": "tplVis-materialdesign-Icon-List",
            "data": {
              "g_fixed": false,
              "g_visibility": false,
              "g_css_font_text": false,
              "g_css_background": false,
              "g_css_shadow_padding": false,
              "g_css_border": false,
              "g_gestures": false,
              "g_signals": false,
              "g_last_change": false,
              "visibility-cond": "==",
              "visibility-val": 1,
              "visibility-groups-action": "hide",
              "wrapItems": true,
              "listItemDataMethod": "jsonStringObject",
              "countListItems": "1",
              "vibrateOnMobilDevices": "50",
              "listLayout": "card",
              "itemLayout": "horizontal",
              "listType0": "text",
              "showValueLabel0": "true",
              "listType1": "text",
              "showValueLabel1": "true",
              "signals-cond-0": "==",
              "signals-val-0": true,
              "signals-icon-0": "/vis/signals/lowbattery.png",
              "signals-icon-size-0": 0,
              "signals-blink-0": false,
              "signals-horz-0": 0,
              "signals-vert-0": 0,
              "signals-hide-edit-0": false,
              "signals-cond-1": "==",
              "signals-val-1": true,
              "signals-icon-1": "/vis/signals/lowbattery.png",
              "signals-icon-size-1": 0,
              "signals-blink-1": false,
              "signals-horz-1": 0,
              "signals-vert-1": 0,
              "signals-hide-edit-1": false,
              "signals-cond-2": "==",
              "signals-val-2": true,
              "signals-icon-2": "/vis/signals/lowbattery.png",
              "signals-icon-size-2": 0,
              "signals-blink-2": false,
              "signals-horz-2": 0,
              "signals-vert-2": 0,
              "signals-hide-edit-2": false,
              "lc-type": "last-change",
              "lc-is-interval": true,
              "lc-is-moment": false,
              "lc-format": "",
              "lc-position-vert": "top",
              "lc-position-horz": "right",
              "lc-offset-vert": 0,
              "lc-offset-horz": 0,
              "lc-font-size": "12px",
              "lc-font-family": "",
              "lc-font-style": "",
              "lc-bkg-color": "",
              "lc-color": "",
              "lc-border-width": "0",
              "lc-border-style": "",
              "lc-border-color": "",
              "lc-border-radius": 10,
              "lc-zindex": 0,
              "json_string_oid": "0_userdata.0.vis.AdapterStatus.jsonList",
              "maxItemsperRow": "6",
              "iconItemMinWidth": "300",
              "iconHeight": "60",
              "buttonHeight": "100",
              "labelFontSize": "22",
              "subLabelFontSize": "14",
              "subLabelFontColor": "#000000",
              "labelFontFamily": "RobotoCondensed-Regular",
              "subLabelFontFamily": "RobotoCondensed-Light",
              "horizontalIconContainerWidth": "120"
            },
            "style": {
              "left": "0px",
              "top": "50px",
              "width": "100%",
              "height": "calc(100% - 50px)",
              "overflow-x": "",
              "overflow-y": "auto",
              "z-index": "1"
            },
            "widgetSet": "materialdesign"
          },
          "e00002": {
            "tpl": "tplHtml",
            "data": {
              "g_fixed": false,
              "g_visibility": false,
              "g_css_font_text": false,
              "g_css_background": true,
              "g_css_shadow_padding": false,
              "g_css_border": false,
              "g_gestures": false,
              "g_signals": false,
              "g_last_change": false,
              "visibility-cond": "==",
              "visibility-val": 1,
              "visibility-groups-action": "hide",
              "refreshInterval": "0",
              "signals-cond-0": "==",
              "signals-val-0": true,
              "signals-icon-0": "/vis/signals/lowbattery.png",
              "signals-icon-size-0": 0,
              "signals-blink-0": false,
              "signals-horz-0": 0,
              "signals-vert-0": 0,
              "signals-hide-edit-0": false,
              "signals-cond-1": "==",
              "signals-val-1": true,
              "signals-icon-1": "/vis/signals/lowbattery.png",
              "signals-icon-size-1": 0,
              "signals-blink-1": false,
              "signals-horz-1": 0,
              "signals-vert-1": 0,
              "signals-hide-edit-1": false,
              "signals-cond-2": "==",
              "signals-val-2": true,
              "signals-icon-2": "/vis/signals/lowbattery.png",
              "signals-icon-size-2": 0,
              "signals-blink-2": false,
              "signals-horz-2": 0,
              "signals-vert-2": 0,
              "signals-hide-edit-2": false,
              "lc-type": "last-change",
              "lc-is-interval": true,
              "lc-is-moment": false,
              "lc-format": "",
              "lc-position-vert": "top",
              "lc-position-horz": "right",
              "lc-offset-vert": 0,
              "lc-offset-horz": 0,
              "lc-font-size": "12px",
              "lc-font-family": "",
              "lc-font-style": "",
              "lc-bkg-color": "",
              "lc-color": "",
              "lc-border-width": "0",
              "lc-border-style": "",
              "lc-border-color": "",
              "lc-border-radius": 10,
              "lc-zindex": 0
            },
            "style": {
              "left": "0",
              "top": "0",
              "width": "100%",
              "height": "50px",
              "background-color": "#44739e"
            },
            "widgetSet": "basic"
          },
          "e00003": {
            "tpl": "tplVis-materialdesign-Select",
            "data": {
              "oid": "0_userdata.0.vis.AdapterStatus.sortMode",
              "g_fixed": false,
              "g_visibility": false,
              "g_css_font_text": false,
              "g_css_background": false,
              "g_css_shadow_padding": false,
              "g_css_border": false,
              "g_gestures": false,
              "g_signals": false,
              "g_last_change": false,
              "visibility-cond": "==",
              "visibility-val": 1,
              "visibility-groups-action": "hide",
              "inputType": "text",
              "inputLayout": "regular",
              "showInputMessageAlways": "true",
              "showInputCounter": false,
              "clearIconShow": false,
              "listDataMethod": "jsonStringObject",
              "countSelectItems": "1",
              "listPosition": "bottom",
              "showSelectedIcon": "prepend-inner",
              "showValue": false,
              "signals-cond-0": "==",
              "signals-val-0": true,
              "signals-icon-0": "/vis/signals/lowbattery.png",
              "signals-icon-size-0": 0,
              "signals-blink-0": false,
              "signals-horz-0": 0,
              "signals-vert-0": 0,
              "signals-hide-edit-0": false,
              "signals-cond-1": "==",
              "signals-val-1": true,
              "signals-icon-1": "/vis/signals/lowbattery.png",
              "signals-icon-size-1": 0,
              "signals-blink-1": false,
              "signals-horz-1": 0,
              "signals-vert-1": 0,
              "signals-hide-edit-1": false,
              "signals-cond-2": "==",
              "signals-val-2": true,
              "signals-icon-2": "/vis/signals/lowbattery.png",
              "signals-icon-size-2": 0,
              "signals-blink-2": false,
              "signals-horz-2": 0,
              "signals-vert-2": 0,
              "signals-hide-edit-2": false,
              "lc-type": "last-change",
              "lc-is-interval": true,
              "lc-is-moment": false,
              "lc-format": "",
              "lc-position-vert": "top",
              "lc-position-horz": "right",
              "lc-offset-vert": 0,
              "lc-offset-horz": 0,
              "lc-font-size": "12px",
              "lc-font-family": "",
              "lc-font-style": "",
              "lc-bkg-color": "",
              "lc-color": "",
              "lc-border-width": "0",
              "lc-border-style": "",
              "lc-border-color": "",
              "lc-border-radius": 10,
              "lc-zindex": 0,
              "inputLabelText": "Sortieren nach",
              "inputLabelColor": "#ffffff",
              "inputLabelFontFamily": "RobotoCondensed-LightItalic",
              "collapseIconColor": "#ffffff",
              "collapseIconSize": "",
              "jsonStringObject": "[\n\t{\n\t\t\"text\": \"Adaptername\",\n\t\t\"value\": \"name\",\n\t\t\"icon\": \"sort-alphabetical\"\n\t},\n\t{\n\t\t\"text\": \"Status\",\n\t\t\"value\": \"status\",\n\t\t\"icon\": \"information-variant\"\n\t},\t\n\t{\n\t\t\"text\": \"Modus\",\n\t\t\"value\": \"mode\",\n\t\t\"icon\": \"view-dashboard\"\n\t},\n\t{\n\t\t\"text\": \"Updates verfügbar\",\n\t\t\"value\": \"hasUpdates\",\n\t\t\"icon\": \"package-down\"\n\t},\n\t{\n\t\t\"text\": \"CPU\",\n\t\t\"value\": \"cpu\",\n\t\t\"icon\": \"cpu-64-bit\"\n\t},\n\t{\n\t\t\"text\": \"RAM total\",\n\t\t\"value\": \"memHeapTotal\",\n\t\t\"icon\": \"memory\"\n\t},\n\t{\n\t\t\"text\": \"RAM verwendet\",\n\t\t\"value\": \"memHeapUsed\",\n\t\t\"icon\": \"memory\"\n\t},\n\t{\n\t\t\"text\": \"RAM reserviert\",\n\t\t\"value\": \"memRss\",\n\t\t\"icon\": \"memory\"\n\t},\n\t{\n\t\t\"text\": \"Betriebszeit\",\n\t\t\"value\": \"uptime\",\n\t\t\"icon\": \"clock-check-outline\"\n\t}\n]",
              "listPositionOffset": true,
              "inputLayoutBackgroundColor": "transparent",
              "inputLabelColorSelected": "#ffffff",
              "inputTranslateX": "-15",
              "clearIcon": "",
              "inputLayoutBorderColorHover": "#ffffff",
              "inputLayoutBorderColorSelected": "#ffffff",
              "inputLayoutBorderColor": "#a1a1a1",
              "listItemFontColor": "",
              "inputTextColor": "#ffffff",
              "inputTextFontFamily": "RobotoCondensed-LightItalic",
              "prepandIcon": "",
              "prepandIconColor": "",
              "prepandIconSize": "",
              "prepandInnerIcon": "",
              "prepandInnerIconColor": "#ffffff",
              "prepandInnerIconSize": "18",
              "collapseIcon": "",
              "inputTranslateY": "-12",
              "listIconSelectedColor": "#44739e",
              "listIconColor": "",
              "appendOuterIcon": "",
              "appendOuterIconSize": "2",
              "listItemFont": "RobotoCondensed-Regular",
              "listItemRippleEffectColor": "",
              "inputLayoutBackgroundColorSelected": "",
              "inputLayoutBackgroundColorHover": ""
            },
            "style": {
              "left": "10px",
              "top": "0px",
              "z-index": "1",
              "width": "calc(50% - 20px)",
              "height": "40px"
            },
            "widgetSet": "materialdesign"
          },
          "e00004": {
            "tpl": "tplVis-materialdesign-Select",
            "data": {
              "oid": "0_userdata.0.vis.AdapterStatus.filterMode",
              "g_fixed": false,
              "g_visibility": false,
              "g_css_font_text": false,
              "g_css_background": false,
              "g_css_shadow_padding": false,
              "g_css_border": false,
              "g_gestures": false,
              "g_signals": false,
              "g_last_change": false,
              "visibility-cond": "==",
              "visibility-val": 1,
              "visibility-groups-action": "hide",
              "inputType": "text",
              "inputLayout": "regular",
              "showInputMessageAlways": "true",
              "showInputCounter": false,
              "clearIconShow": true,
              "listDataMethod": "jsonStringObject",
              "countSelectItems": "1",
              "listPosition": "bottom",
              "showSelectedIcon": "prepend-inner",
              "showValue": false,
              "signals-cond-0": "==",
              "signals-val-0": true,
              "signals-icon-0": "/vis/signals/lowbattery.png",
              "signals-icon-size-0": 0,
              "signals-blink-0": false,
              "signals-horz-0": 0,
              "signals-vert-0": 0,
              "signals-hide-edit-0": false,
              "signals-cond-1": "==",
              "signals-val-1": true,
              "signals-icon-1": "/vis/signals/lowbattery.png",
              "signals-icon-size-1": 0,
              "signals-blink-1": false,
              "signals-horz-1": 0,
              "signals-vert-1": 0,
              "signals-hide-edit-1": false,
              "signals-cond-2": "==",
              "signals-val-2": true,
              "signals-icon-2": "/vis/signals/lowbattery.png",
              "signals-icon-size-2": 0,
              "signals-blink-2": false,
              "signals-horz-2": 0,
              "signals-vert-2": 0,
              "signals-hide-edit-2": false,
              "lc-type": "last-change",
              "lc-is-interval": true,
              "lc-is-moment": false,
              "lc-format": "",
              "lc-position-vert": "top",
              "lc-position-horz": "right",
              "lc-offset-vert": 0,
              "lc-offset-horz": 0,
              "lc-font-size": "12px",
              "lc-font-family": "",
              "lc-font-style": "",
              "lc-bkg-color": "",
              "lc-color": "",
              "lc-border-width": "0",
              "lc-border-style": "",
              "lc-border-color": "",
              "lc-border-radius": 10,
              "lc-zindex": 0,
              "inputLabelText": "Filtern nach",
              "inputLabelColor": "#ffffff",
              "inputLabelFontFamily": "RobotoCondensed-LightItalic",
              "collapseIconColor": "#ffffff",
              "collapseIconSize": "",
              "jsonStringObject": "[\n\t{\n\t\t\"text\": \"nicht verbunden\",\n\t\t\"value\": \"notConnected\",\n\t\t\"icon\": \"network-off\"\n\t},\n\t{\n\t\t\"text\": \"deaktiviert\",\n\t\t\"value\": \"deactivated\",\n\t\t\"icon\": \"checkbox-blank-outline\"\n\t},\t\n\t{\n\t\t\"text\": \"aktiviert\",\n\t\t\"value\": \"activated\",\n\t\t\"icon\": \"checkbox-intermediate\"\n\t},\n\t{\n\t\t\"text\": \"Updates verfügbar\",\n\t\t\"value\": \"hasUpdates\",\n\t\t\"icon\": \"package-down\"\n\t}\n]",
              "listPositionOffset": true,
              "inputLayoutBackgroundColor": "transparent",
              "inputLabelColorSelected": "#ffffff",
              "inputTranslateX": "-15",
              "clearIcon": "",
              "inputLayoutBorderColorHover": "#ffffff",
              "inputLayoutBorderColorSelected": "#ffffff",
              "inputLayoutBorderColor": "#a1a1a1",
              "listItemFontColor": "",
              "inputTextColor": "#ffffff",
              "inputTextFontFamily": "RobotoCondensed-LightItalic",
              "prepandIcon": "",
              "prepandIconColor": "",
              "prepandIconSize": "",
              "prepandInnerIcon": "",
              "prepandInnerIconColor": "#ffffff",
              "prepandInnerIconSize": "18",
              "collapseIcon": "",
              "inputTranslateY": "-12",
              "listIconSelectedColor": "#44739e",
              "listIconColor": "",
              "appendOuterIcon": "",
              "appendOuterIconSize": "2",
              "listItemFont": "RobotoCondensed-Regular",
              "listItemRippleEffectColor": "",
              "inputLayoutBackgroundColorSelected": "",
              "inputLayoutBackgroundColorHover": "",
              "clearIconColor": "#ffffff"
            },
            "style": {
              "left": "calc(50% + 10px)",
              "top": "0px",
              "z-index": "1",
              "width": "calc(50% - 20px)",
              "height": "40px"
            },
            "widgetSet": "materialdesign"
          }
        },
        "name": "AdapterStatus",
        "filterList": []
      }
      

      Skript

      // Imports -> müssen im Javascript Adapter unter 'Zusätzliche NPM-Module' eingetragen sein
      const moment = require("moment");
      const momentDurationFormatSetup = require("moment-duration-format");
      
      
      // Skript Einstellungen *************************************************************************************************************************************************
      
      let dpList = '0_userdata.0.vis.AdapterStatus.jsonList';                     // Datenpunkt für IconList Widget (Typ: Zeichenkette (String))
      let dpAdapterRestart = '0_userdata.0.vis.AdapterStatus.restartTrigger';     // Datenpunkt für Adapter restart (Typ: Zeichenkette (String))
      
      let dpSortMode = '0_userdata.0.vis.AdapterStatus.sortMode';                 // Datenpunkt für Sortieren (Typ: Zeichenkette (String))
      let dpFilterMode = '0_userdata.0.vis.AdapterStatus.filterMode';             // Datenpunkt für Filter (Typ: Zeichenkette (String))
      
      let adminUpdatesList = 'admin.0.info.updatesList';                          // Datenpunkt Admin Adapter für verfübare Updates der Adapter
      
      const checkInterval = 30;                                                   // Interval wie oft Status der Adapter aktualisiert werden soll (in Sekunden)
      
      let sprache = 'de';                                                         // Sprache für formatierung Dauer 
      let formatierungDauer = "dd[T] hh[h] mm[m]";                                // Formatierung der Dauer -> siehe momentjs library
      
      let neustarten = true;                                                      // true: Adapter wird neugestartet, false: Adapter wird gestoppt oder gestartet
      
      let farbeAdapterAktiv = 'green';                                            // Status Bar Farbe wenn Adapter aktiv ist
      let farbeAdapterNichtAktiv = 'FireBrick';                                   // Status Bar Farbe wenn Adapter nicht aktiv ist oder Fehler vorliegt
      let farbeAdapterDeaktiviert = 'darkgrey';                                   // Status Bar Farbe wenn Adapter deaktiviert ist
      let farbeAdapterNichtVerbunden = 'yellow';                                  // Status Bar Farbe wenn Adapter nicht verbunden ist
      let farbeAdapterZeitgesteuert = 'lightgreen';                               // Status Bar Farbe wenn Adapter zeitgesteuert ist
      let farbeAdapterErweiterung = '#44739e';                                    // Status Bar Farbe wenn Adapter Erweiterung ist
      let farbeAdapterSystem = '#44739e';                                         // Status Bar Farbe wenn Adapter mit System gestartet wird
      
      let sortResetAfter = 120;                                                   // Sortierung nach X Sekunden auf sortReset zurücksetzen (0=deaktiviert)
      let sortReset = 'memHeapUsed'                                               // Sortierung auf die zurückgesetzt werden soll
      
      let filterResetAfter = 120;                                                 // Filter nach X Sekunden zurücksetzen (0=deaktiviert)
      
      // **********************************************************************************************************************************************************************
      
      
      // Fomate für moment Lib
      moment.locale(sprache);
      
      // auf .alive Änderungen hören
      let aliveSelector = `[id=system.adapter.*.alive]`;
      let adapterAliveList = $(aliveSelector);
      if (adapterAliveList.length === 0) {
          // Fehlermeldung ausgeben, wenn selector kein result liefert
          console.error(`no result for selector '${aliveSelector}'`)
      } else {
          // listener nur für Änderung bei alive
          adapterAliveList.on(adapterStatus);
      }
      
      // auf .connection Änderungen hören
      let connectionSelector = `[id=*.info.connection]`;
      let adapterConnectionList = $(connectionSelector);
      if (adapterConnectionList.length === 0) {
          // Fehlermeldung ausgeben, wenn selector kein result liefert
          console.error(`no result for selector '${connectionSelector}'`)
      } else {
          // listener nur für Änderung bei alive
          adapterConnectionList.on(adapterStatus);
      }
      
      // auf .connected Änderungen hören
      let connectedSelector = `[id=system.adapter.*.connected]`;
      let adapterConnectedList = $(connectedSelector);
      if (adapterConnectedList.length === 0) {
          // Fehlermeldung ausgeben, wenn selector kein result liefert
          console.error(`no result for selector '${connectedSelector}'`)
      } else {
          // listener nur für Änderung bei alive
          adapterConnectedList.on(adapterStatus);
      }
      
      // auf Änderungen der Sortieung hören
      on({ id: dpSortMode, change: 'any' }, adapterStatus);
      on({ id: dpSortMode, change: 'any' }, resetSort);
      
      // auf Änderungen der Filter hören
      on({ id: dpFilterMode, change: 'any' }, adapterStatus);
      on({ id: dpFilterMode, change: 'any' }, resetFilter);
      
      // Funktion adapterStatus alle x Sekunden ausführen
      schedule('*/' + checkInterval + ' * * * * *', adapterStatus);
      
      function adapterStatus() {
          // Funktion um Status der Adapter abzurufen und als JSON String für das Material Design Widget IconList aufbereiten
          let adapterList = [];
          let updateList = myHelper().getStateValueIfExist(adminUpdatesList);
      
          try {
              for (var i = 0; i <= adapterAliveList.length - 1; i++) {
                  let id = adapterAliveList[i].replace('.alive', '');
                  let obj = getObject(adapterAliveList[i].replace('.alive', ''));
      
                  let nameArray = id.replace('system.adapter.', '').split(".");
      
                  let name = nameArray[0];
                  name = name.charAt(0).toUpperCase() + name.slice(1);
      
                  let nameWithInstance = name;
                  let adapterInstance = nameArray[1];
                  if (parseInt(adapterInstance) > 0) {
                      nameWithInstance = name + '.' + adapterInstance;
                  }
      
                  let uptime = (existsState(id + '.uptime')) ? moment.duration(getState(id + '.uptime').val, 'seconds').format(formatierungDauer, 0) : '-';
                  let image = (myHelper().checkCommonPropertyExist(obj, 'icon')) ? `/${nameArray[0]}.admin/${obj.common.icon}` : 'image-off-outline';
      
                  let hasUpdates = updateList && updateList.includes(nameArray[0]);
                  let newVersion = (hasUpdates) ? '<span class="mdi mdi-update" style="color: #ec0909;"></span>' : '';
      
                  let text = `<div style="display: flex; flex-direction: row; line-height: 1.5; padding-right: 8px; align-items: center;">
                                  <div style="flex: 1">${newVersion} ${nameWithInstance}</div>
                                  <div style="color: grey; font-size: 12px; font-family: RobotoCondensed-LightItalic;">${myHelper().getCommonPropertyIfExist(obj, 'version', '-', 'v', '')}</div>
                              </div>`
      
                  let subText = `<div style="display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px; align-items: center;">
                                      <div style="flex: 1;">CPU</div>
                                      <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic;">${myHelper().getStateValueIfExist(id + '.cpu', '-', '', ' %')}</div>
                                  </div>
                                  <div style="display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px; align-items: center;">
                                      <div style="flex: 1;">RAM total</div>
                                      <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic;">${myHelper().getStateValueIfExist(id + '.memHeapTotal', '-', '', ' MB')}</div>
                                  </div>
                                  <div style="display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px; align-items: center;">
                                      <div style="flex: 1;">RAM verwendet</div>
                                      <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic;">${myHelper().getStateValueIfExist(id + '.memHeapUsed', '-', '', ' MB')}</div>
                                  </div>
                                  <div style="display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px; align-items: center;">
                                      <div style="flex: 1;">RAM reserviert</div>
                                      <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic;">${myHelper().getStateValueIfExist(id + '.memRss', '-', '', ' MB')}</div>
                                  </div>
                                  <div style="display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px; align-items: center;">
                                      <div style="flex: 1;">Betriebszeit</div>
                                      <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic;">${uptime}</div>
                                  </div>
                                  <div style="display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px; align-items: center;">
                                      <div style="flex: 1;">Modus</div>
                                      <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic;">${myHelper().getCommonPropertyIfExist(obj, 'mode', '-')}</div>
                                  </div>`
      
                  let statusBarColor = farbeAdapterNichtAktiv;
                  let status = 3;
      
                  if (myHelper().getStateValueIfExist(adapterAliveList[i]) === 'true') {
                      statusBarColor = farbeAdapterAktiv;
                      status = 0;
      
                      if (existsState(id.replace('system.adapter.', '') + '.info.connection')) {
                          if (!getState(id.replace('system.adapter.', '') + '.info.connection').val) {
                              statusBarColor = farbeAdapterNichtVerbunden;
                              status = 4;
                          }
                      } else {
                          if (myHelper().getStateValueIfExist(adapterAliveList[i].replace('.alive', '.connected')) === 'false') {
                              statusBarColor = farbeAdapterNichtVerbunden;
                              status = 4;
                          }
                      }
                  }
      
                  if (myHelper().getCommonPropertyIfExist(obj, 'mode') === 'schedule') {
                      // Adapter ist zeitgesteuert
                      statusBarColor = farbeAdapterZeitgesteuert;
                      status = 1;
                  }
      
                  if (myHelper().getCommonPropertyIfExist(obj, 'mode') === 'extension') {
                      // Adapter ist Extension
                      statusBarColor = farbeAdapterErweiterung;
                      status = 1;
                  }
      
                  if (myHelper().getCommonPropertyIfExist(obj, 'mode') === 'once') {
                      // Adapter wird mit System gestartet
                      statusBarColor = farbeAdapterSystem;
                      status = 1;
                  }
      
                  if (myHelper().getCommonPropertyIfExist(obj, 'enabled', false).toString() === 'false') {
                      // Adapter ist deaktiviert
                      statusBarColor = farbeAdapterDeaktiviert;
                      status = 2;
                  }
      
                  adapterList.push({
                      text: text,
                      subText: subText,
                      image: image,
                      listType: "buttonState",
                      objectId: dpAdapterRestart,
                      buttonStateValue: id,
                      statusBarColor: statusBarColor,
                      showValueLabel: false,
                      name: name,
                      mode: myHelper().getCommonPropertyIfExist(obj, 'mode'),
                      hasUpdates: hasUpdates,
                      cpu: parseFloat(myHelper().getStateValueIfExist(id + '.cpu', '0')),
                      memHeapTotal: parseFloat(myHelper().getStateValueIfExist(id + '.memHeapTotal', '0')),
                      memHeapUsed: parseFloat(myHelper().getStateValueIfExist(id + '.memHeapUsed', '0')),
                      memRss: parseFloat(myHelper().getStateValueIfExist(id + '.memRss', '0')),
                      uptime: parseFloat(myHelper().getStateValueIfExist(id + '.uptime', 0)),
                      status: status
                  })
              }
      
          } catch (err) {
              console.error(`[adapterStatus] error: ${err.message}, stack: ${err.stack}`);
          }
      
          let sortMode = myHelper().getStateValueIfExist(dpSortMode, 'name');
      
          if (sortMode === 'name' || sortMode === 'mode') {
              adapterList.sort(function (a, b) {
                  return a[sortMode] == b[sortMode] ? 0 : +(a[sortMode] > b[sortMode]) || -1;
              });
          } else if (sortMode === 'hasUpdates' || sortMode === 'cpu' || sortMode === 'memHeapTotal' || sortMode === 'memHeapUsed' || sortMode === 'memRss' || sortMode === 'uptime' || sortMode === 'status') {
              adapterList.sort(function (a, b) {
                  return a[sortMode] == b[sortMode] ? 0 : +(a[sortMode] < b[sortMode]) || -1;
              });
          } else {
              // default: nach name sortieren
              sortMode = 'name'
              adapterList.sort(function (a, b) {
                  return a[sortMode] == b[sortMode] ? 0 : +(a[sortMode] > b[sortMode]) || -1;
              });
          }
      
          // Filter: not connected, updates, deaktiviert, aktiviert
      
          let filterMode = myHelper().getStateValueIfExist(dpFilterMode, null);
      
          if (filterMode && filterMode !== null && filterMode !== '') {
              if (filterMode === 'hasUpdates') {
                  adapterList = adapterList.filter(function (item) {
                      return item.hasUpdates === true;
                  });
              } else if (filterMode === 'notConnected') {
                  adapterList = adapterList.filter(function (item) {
                      return item.status === 4;
                  });
              } else if (filterMode === 'deactivated') {
                  adapterList = adapterList.filter(function (item) {
                      return item.status === 2;
                  });
              } else if (filterMode === 'activated') {
                  adapterList = adapterList.filter(function (item) {
                      return item.status <= 1;
                  });
              }
          }
      
          // adapterList = adapterList.filter(function(item){
          //     return item.status === 4;
          // })
      
          let result = JSON.stringify(adapterList);
          if (getState(dpList) !== result) {
              setState(dpList, result, true);
          }
      
      
      }
      
      // Beim Staren des Skriptes Adapter Status abrufen
      adapterStatus();
      
      // Funktion um Adapter zu starten / neu starten
      on({ id: dpAdapterRestart }, function (obj) {
          var adapter = getObject(obj.state.val.toString());
      
          if (neustarten) {
              if (adapter.common && adapter.common.enabled === false) {
                  // Adapter deaktiviert -> starten
                  adapter.common.enabled = true;
              }
          } else {
              if (adapter.common && adapter.common.enabled) {
                  adapter.common.enabled = !adapter.common.enabled;
              } else {
                  adapter.common.enabled = true;
              }
          }
      
          setObject(obj.state.val, adapter);
          console.log(`${obj.state.val.replace('system.adapter.', '')} neugestartet`);
      });
      
      
      function resetSort() {
          let sortMode = myHelper().getStateValueIfExist(dpSortMode, null);
      
          if (sortResetAfter > 0) {
              setTimeout(function () {
                  if (sortMode !== null && sortMode === myHelper().getStateValueIfExist(dpSortMode, null)) {
                      setState(dpSortMode, sortReset);
                  }
              }, sortResetAfter * 1000);
          }
      }
      
      function resetFilter() {
          let filterMode = myHelper().getStateValueIfExist(dpFilterMode, null);
      
          if (filterResetAfter > 0) {
              setTimeout(function () {
                  if (filterMode !== null && filterMode === myHelper().getStateValueIfExist(dpFilterMode, null)) {
                      setState(dpFilterMode, '');
                  }
              }, filterResetAfter * 1000);
          }
      }
      
      function myHelper() {
          return {
              getStateValueIfExist: function (id, nullValue = undefined, prepand = '', append = '') {
                  if (existsState(id)) {
                      return prepand + getState(id).val + append;
                  } else {
                      return nullValue;
                  }
              },
              getCommonPropertyIfExist: function (object, prop, nullValue = undefined, prepand = '', append = '') {
                  if (myHelper().checkCommonPropertyExist(object, prop)) {
                      return prepand + object.common[prop] + append;
                  } else {
                      return nullValue;
                  }
              },
              checkCommonPropertyExist: function (object, prop) {
                  if (object && object.common && object.common[prop]) {
                      return true;
                  } else {
                      return false;
                  }
              }
          }
      }
      
      ub.privatU Offline
      ub.privatU Offline
      ub.privat
      schrieb am zuletzt editiert von
      #164

      @Scrounger

      Habe dieses Script verwendet und das hat nach dem kopieren 679 Zeilen

      061b470e-7109-4136-9a9f-65a404a4b0f9-grafik.png

      Leerzeilen sind natürlich mitgezählt...

      1 Antwort Letzte Antwort
      0
      • ub.privatU ub.privat

        @Scrounger

        Bin mir keiner Änderung bewußt!
        Würdest du das AKTUELLESTE Script nochmals bitte verlinken!?
        DANKE.

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

        @ub-privat sagte in View Adapter Status:

        @Scrounger

        Bin mir keiner Änderung bewußt!
        Würdest du das AKTUELLESTE Script nochmals bitte verlinken!?
        DANKE.

        Edit: Falsches Skript gewesen.

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

        1 Antwort Letzte Antwort
        0
        • ScroungerS Scrounger

          @ub-privat
          Hast du das skript 1:1 kopiert?
          Die Fehlermeldung bezieht sich auf Zeile 518-520 - das skript hat aber nur 339 Zeilen.

          Und laut deinem Screenshot hast du irgendwas an dem Skript verändert. Weil ab Zeile 8 müssten die settings zu sehen sein.

          Und bitte das vollständige log posten, also aus dem reiter 'log' im admin bereich.

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

          @Scrounger sagte in View Adapter Status:

          das skript hat aber nur 339 Zeilen.

          Ich habe 310?

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

          ScroungerS 1 Antwort Letzte Antwort
          0
          • sigi234S sigi234

            @Scrounger sagte in View Adapter Status:

            das skript hat aber nur 339 Zeilen.

            Ich habe 310?

            ScroungerS Offline
            ScroungerS Offline
            Scrounger
            Developer
            schrieb am zuletzt editiert von
            #167

            @sigi234
            https://forum.iobroker.net/topic/26533/view-adapter-status/142

            Hatte ich geschrieben das ich es nochmal dort aktualisiert habe ;)

            <a href="https://github.com/Scrounger/ioBroker.linkeddevices">LinkedDevices Adapter</a>

            <a href="https://github.com/Scrounger/ioBroker.vis-materialdesign">Material Design Widgets</a>

            ub.privatU 1 Antwort Letzte Antwort
            0
            • ScroungerS Scrounger

              @sigi234
              https://forum.iobroker.net/topic/26533/view-adapter-status/142

              Hatte ich geschrieben das ich es nochmal dort aktualisiert habe ;)

              ub.privatU Offline
              ub.privatU Offline
              ub.privat
              schrieb am zuletzt editiert von ub.privat
              #168

              @Scrounger
              @sigi234

              Habe es nochmals kopiert und neu angelegt.
              Hat nunmehr die "339" Zeilen und ab Zeile 8 beginnen die settings.
              8cf1a33b-c14a-4c94-be2f-c5a8dbeb44e7-grafik.png
              1b9067a5-733f-49de-910a-fdd1efdb13be-grafik.png

              Folgende Warnung wird immer in Zeile 259 - 260 ausgewiesen:

              27.2.2020, 20:44:17.792	[info ]: javascript.0 (31416) Stop script script.js.Adapter_MaterialDesignWidget
              27.2.2020, 20:44:22.557	[info ]: javascript.0 (31416) Start javascript script.js.Adapter_MaterialDesignWidget
              27.2.2020, 20:44:23.017	[warn ]: javascript.0 (31416)     at adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
              27.2.2020, 20:44:23.017	[warn ]: javascript.0 (31416)     at script.js.Adapter_MaterialDesignWidget:267:1
              27.2.2020, 20:44:23.018	[warn ]: javascript.0 (31416)     at adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
              27.2.2020, 20:44:23.019	[warn ]: javascript.0 (31416)     at script.js.Adapter_MaterialDesignWidget:267:1
              27.2.2020, 20:44:23.019	[info ]: javascript.0 (31416) script.js.Adapter_MaterialDesignWidget: registered 105 subscriptions and 1 schedule
              27.2.2020, 20:44:30.196	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
              27.2.2020, 20:44:30.199	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
              27.2.2020, 20:44:32.200	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
              27.2.2020, 20:44:32.204	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
              27.2.2020, 20:44:33.250	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
              27.2.2020, 20:44:33.252	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
              27.2.2020, 20:45:00.287	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
              27.2.2020, 20:45:00.291	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
              27.2.2020, 20:45:02.541	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
              27.2.2020, 20:45:02.545	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
              27.2.2020, 20:45:02.857	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
              27.2.2020, 20:45:02.859	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
              27.2.2020, 20:45:03.452	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
              27.2.2020, 20:45:03.456	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
              27.2.2020, 20:45:09.499	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
              27.2.2020, 20:45:09.503	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
              27.2.2020, 20:45:11.106	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
              27.2.2020, 20:45:11.109	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
              27.2.2020, 20:45:17.548	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
              27.2.2020, 20:45:17.552	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
              27.2.2020, 20:45:29.638	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
              27.2.2020, 20:45:29.641	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
              27.2.2020, 20:45:30.233	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
              27.2.2020, 20:45:30.242	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
              27.2.2020, 20:45:32.297	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
              27.2.2020, 20:45:32.300	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
              27.2.2020, 20:45:33.280	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
              27.2.2020, 20:45:33.281	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
              27.2.2020, 20:46:00.359	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
              27.2.2020, 20:46:00.364	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
              27.2.2020, 20:46:04.589	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
              27.2.2020, 20:46:04.591	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
              27.2.2020, 20:46:04.772	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
              27.2.2020, 20:46:04.775	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
              27.2.2020, 20:46:05.625	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
              27.2.2020, 20:46:05.628	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
              27.2.2020, 20:46:30.164	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
              27.2.2020, 20:46:30.167	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
              27.2.2020, 20:46:31.916	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
              27.2.2020, 20:46:31.919	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
              27.2.2020, 20:46:32.858	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
              27.2.2020, 20:46:32.860	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
              27.2.2020, 20:47:00.326	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
              27.2.2020, 20:47:00.331	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
              27.2.2020, 20:47:02.429	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
              27.2.2020, 20:47:02.431	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
              27.2.2020, 20:47:02.669	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
              27.2.2020, 20:47:02.672	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
              27.2.2020, 20:47:03.396	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
              27.2.2020, 20:47:03.399	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
              27.2.2020, 20:48:30.164	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
              27.2.2020, 20:48:30.167	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
              27.2.2020, 20:48:31.763	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
              27.2.2020, 20:48:31.770	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
              27.2.2020, 20:48:32.770	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
              27.2.2020, 20:48:32.771	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
              27.2.2020, 20:49:00.258	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
              27.2.2020, 20:49:00.261	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
              27.2.2020, 20:49:02.564	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
              27.2.2020, 20:49:02.568	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
              27.2.2020, 20:49:02.817	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
              27.2.2020, 20:49:02.819	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
              27.2.2020, 20:49:03.517	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
              27.2.2020, 20:49:03.521	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
              27.2.2020, 20:49:32.178	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
              27.2.2020, 20:49:32.180	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
              27.2.2020, 20:49:33.143	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
              27.2.2020, 20:49:33.146	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
              27.2.2020, 20:50:00.338	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
              27.2.2020, 20:50:00.342	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
              27.2.2020, 20:50:02.898	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
              27.2.2020, 20:50:02.901	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
              27.2.2020, 20:50:03.205	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
              27.2.2020, 20:50:03.207	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
              27.2.2020, 20:50:03.885	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
              27.2.2020, 20:50:03.892	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
              27.2.2020, 20:50:09.069	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
              27.2.2020, 20:50:09.073	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
              
              Das steht im Script:
              
              ![20bd8d6a-e81d-48de-a58b-2ab78550537b-grafik.png](/assets/uploads/files/1582833432058-20bd8d6a-e81d-48de-a58b-2ab78550537b-grafik.png) 
              
              ScroungerS 1 Antwort Letzte Antwort
              0
              • ub.privatU ub.privat

                @Scrounger
                @sigi234

                Habe es nochmals kopiert und neu angelegt.
                Hat nunmehr die "339" Zeilen und ab Zeile 8 beginnen die settings.
                8cf1a33b-c14a-4c94-be2f-c5a8dbeb44e7-grafik.png
                1b9067a5-733f-49de-910a-fdd1efdb13be-grafik.png

                Folgende Warnung wird immer in Zeile 259 - 260 ausgewiesen:

                27.2.2020, 20:44:17.792	[info ]: javascript.0 (31416) Stop script script.js.Adapter_MaterialDesignWidget
                27.2.2020, 20:44:22.557	[info ]: javascript.0 (31416) Start javascript script.js.Adapter_MaterialDesignWidget
                27.2.2020, 20:44:23.017	[warn ]: javascript.0 (31416)     at adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
                27.2.2020, 20:44:23.017	[warn ]: javascript.0 (31416)     at script.js.Adapter_MaterialDesignWidget:267:1
                27.2.2020, 20:44:23.018	[warn ]: javascript.0 (31416)     at adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
                27.2.2020, 20:44:23.019	[warn ]: javascript.0 (31416)     at script.js.Adapter_MaterialDesignWidget:267:1
                27.2.2020, 20:44:23.019	[info ]: javascript.0 (31416) script.js.Adapter_MaterialDesignWidget: registered 105 subscriptions and 1 schedule
                27.2.2020, 20:44:30.196	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
                27.2.2020, 20:44:30.199	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
                27.2.2020, 20:44:32.200	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
                27.2.2020, 20:44:32.204	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
                27.2.2020, 20:44:33.250	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
                27.2.2020, 20:44:33.252	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
                27.2.2020, 20:45:00.287	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
                27.2.2020, 20:45:00.291	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
                27.2.2020, 20:45:02.541	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
                27.2.2020, 20:45:02.545	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
                27.2.2020, 20:45:02.857	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
                27.2.2020, 20:45:02.859	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
                27.2.2020, 20:45:03.452	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
                27.2.2020, 20:45:03.456	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
                27.2.2020, 20:45:09.499	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
                27.2.2020, 20:45:09.503	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
                27.2.2020, 20:45:11.106	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
                27.2.2020, 20:45:11.109	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
                27.2.2020, 20:45:17.548	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
                27.2.2020, 20:45:17.552	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
                27.2.2020, 20:45:29.638	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
                27.2.2020, 20:45:29.641	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
                27.2.2020, 20:45:30.233	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
                27.2.2020, 20:45:30.242	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
                27.2.2020, 20:45:32.297	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
                27.2.2020, 20:45:32.300	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
                27.2.2020, 20:45:33.280	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
                27.2.2020, 20:45:33.281	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
                27.2.2020, 20:46:00.359	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
                27.2.2020, 20:46:00.364	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
                27.2.2020, 20:46:04.589	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
                27.2.2020, 20:46:04.591	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
                27.2.2020, 20:46:04.772	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
                27.2.2020, 20:46:04.775	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
                27.2.2020, 20:46:05.625	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
                27.2.2020, 20:46:05.628	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
                27.2.2020, 20:46:30.164	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
                27.2.2020, 20:46:30.167	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
                27.2.2020, 20:46:31.916	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
                27.2.2020, 20:46:31.919	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
                27.2.2020, 20:46:32.858	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
                27.2.2020, 20:46:32.860	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
                27.2.2020, 20:47:00.326	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
                27.2.2020, 20:47:00.331	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
                27.2.2020, 20:47:02.429	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
                27.2.2020, 20:47:02.431	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
                27.2.2020, 20:47:02.669	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
                27.2.2020, 20:47:02.672	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
                27.2.2020, 20:47:03.396	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
                27.2.2020, 20:47:03.399	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
                27.2.2020, 20:48:30.164	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
                27.2.2020, 20:48:30.167	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
                27.2.2020, 20:48:31.763	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
                27.2.2020, 20:48:31.770	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
                27.2.2020, 20:48:32.770	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
                27.2.2020, 20:48:32.771	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
                27.2.2020, 20:49:00.258	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
                27.2.2020, 20:49:00.261	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
                27.2.2020, 20:49:02.564	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
                27.2.2020, 20:49:02.568	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
                27.2.2020, 20:49:02.817	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
                27.2.2020, 20:49:02.819	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
                27.2.2020, 20:49:03.517	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
                27.2.2020, 20:49:03.521	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
                27.2.2020, 20:49:32.178	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
                27.2.2020, 20:49:32.180	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
                27.2.2020, 20:49:33.143	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
                27.2.2020, 20:49:33.146	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
                27.2.2020, 20:50:00.338	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
                27.2.2020, 20:50:00.342	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
                27.2.2020, 20:50:02.898	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
                27.2.2020, 20:50:02.901	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
                27.2.2020, 20:50:03.205	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
                27.2.2020, 20:50:03.207	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
                27.2.2020, 20:50:03.885	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
                27.2.2020, 20:50:03.892	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
                27.2.2020, 20:50:09.069	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:259:9)
                27.2.2020, 20:50:09.073	[warn ]: javascript.0 (31416)     at Object.adapterStatus (script.js.Adapter_MaterialDesignWidget:260:9)
                
                Das steht im Script:
                
                ![20bd8d6a-e81d-48de-a58b-2ab78550537b-grafik.png](/assets/uploads/files/1582833432058-20bd8d6a-e81d-48de-a58b-2ab78550537b-grafik.png) 
                
                ScroungerS Offline
                ScroungerS Offline
                Scrounger
                Developer
                schrieb am zuletzt editiert von
                #169

                @ub-privat

                Datenpunkt bei dir 0_userdata.0.AdapterStatus.sortMode

                Datenpunkt im skript 0_userdata.0.vis.AdapterStatus.sortMode

                D.h. Datenpunkte findet er nicht.

                <a href="https://github.com/Scrounger/ioBroker.linkeddevices">LinkedDevices Adapter</a>

                <a href="https://github.com/Scrounger/ioBroker.vis-materialdesign">Material Design Widgets</a>

                1 Antwort Letzte Antwort
                0
                • ub.privatU ub.privat

                  @Scrounger

                  Guten entspannten Guten Abend!

                  Mit meinem langsam wachsendem Verständnis in der Anwendung deiner MEISTERWERKE versuche ich mich wieder mal.
                  Der Adapter-View ist ganz großes Kino. Leider verende ich beim "Trailer".
                  Was habe ich bisher gemacht:

                  1. notwendige Einstellungen im JS Adapter vorgenommen:
                    636f2623-a41a-4cb3-9d92-74154a05890a-grafik.png

                  2. Script eingestellt:
                    8dc9c5a6-9444-406b-9893-ff3085e48816-grafik.png
                    Leider mit Warnungen...

                  3. Datenpunkte angelegt:
                    e43630b0-51fd-45da-bb06-73d650def20c-grafik.png
                    f1a758b3-22cb-45af-a95f-02f71bbb4c93-grafik.png
                    Leider werden keine Werte erzeugt.

                  4. View importiert:
                    70e9844b-fb88-4b82-b2d1-0696d71594e4-grafik.png
                    Mit entsprechender Warnung.

                  5. NUN IST GUTER RAT TEUER - wo mache ich wie weiter????
                    Lesse den Tread hoch und runter, aber die Erleeuchtung will sich nicht einstellen...

                  GlasfaserG Online
                  GlasfaserG Online
                  Glasfaser
                  schrieb am zuletzt editiert von Glasfaser
                  #170

                  @ub-privat sagte in View Adapter Status:

                  f1a758b3-22cb-45af-a95f-02f71bbb4c93-grafik.png
                  Leider werden keine Werte erzeugt.

                  Die Datenpunkte sind im Skript :

                  0_userdata.0.vis.AdapterStatus.jsonList
                  

                  deine sind :

                  0_userdata.0.AdapterStatus.jsonList
                  

                  EDIT : @Scrounger war schneller :)

                  Synology 918+ 16GB - ioBroker in Docker v9 , VISO auf Trekstor Primebook C13 13,3" , Hikvision Domkameras mit Surveillance Station .. CCU RaspberryMatic in Synology VM .. Zigbee CC2538+CC2592 .. Sonoff .. KNX .. Modbus ..

                  ub.privatU 1 Antwort Letzte Antwort
                  0
                  • GlasfaserG Glasfaser

                    @ub-privat sagte in View Adapter Status:

                    f1a758b3-22cb-45af-a95f-02f71bbb4c93-grafik.png
                    Leider werden keine Werte erzeugt.

                    Die Datenpunkte sind im Skript :

                    0_userdata.0.vis.AdapterStatus.jsonList
                    

                    deine sind :

                    0_userdata.0.AdapterStatus.jsonList
                    

                    EDIT : @Scrounger war schneller :)

                    ub.privatU Offline
                    ub.privatU Offline
                    ub.privat
                    schrieb am zuletzt editiert von
                    #171

                    @Glasfaser
                    @Scrounger

                    Vielen Dank! dieses kleine "vis" :angry: hat so eine riesige Wirkung.
                    Tata... es funzt!
                    a2c28e35-904e-4e01-8d29-4ebe391dbe1b-grafik.png
                    Vielen Dank!

                    Nun noch schick und schön alá @sigi234 und die Visu ist wieder um einen View reicher!

                    DANKE :+1: :+1:

                    1 Antwort Letzte Antwort
                    0
                    • smartboartS Offline
                      smartboartS Offline
                      smartboart
                      schrieb am zuletzt editiert von
                      #172

                      Tolle Sache!!! Danke für view und script...Wie wäre es das Script noch um einen Filter und Sortierung nach Instanz zu erweitern?

                      ScroungerS 1 Antwort Letzte Antwort
                      0
                      • ScroungerS Scrounger

                        Sodele nochmal eine neue Version des Skriptes

                        Voraussetzung Material Design Widgets v0.2.62 (demnächst im latest) !!!

                        • mehr Farbeinstellung
                        • Sortier Funktion
                        • Filter Funktion - wäre sicher als nächster Wunsch gekommen, deshalb hab ich es schon mal eingebaut ;-)
                          (Benötigt ihr weitere schaut ins skript und passt es auf eure Bedürfnisse an)
                        • Adapter Modus wird angezeigt
                        • Fehler behoben

                        AdapterStatus.gif

                        Ist auch im Online Beispiel enthalten

                        View:

                        {
                          "settings": {
                            "style": {
                              "background_class": ""
                            },
                            "theme": "redmond",
                            "sizex": "",
                            "sizey": "",
                            "gridSize": "",
                            "snapType": null
                          },
                          "widgets": {
                            "e00001": {
                              "tpl": "tplVis-materialdesign-Icon-List",
                              "data": {
                                "g_fixed": false,
                                "g_visibility": false,
                                "g_css_font_text": false,
                                "g_css_background": false,
                                "g_css_shadow_padding": false,
                                "g_css_border": false,
                                "g_gestures": false,
                                "g_signals": false,
                                "g_last_change": false,
                                "visibility-cond": "==",
                                "visibility-val": 1,
                                "visibility-groups-action": "hide",
                                "wrapItems": true,
                                "listItemDataMethod": "jsonStringObject",
                                "countListItems": "1",
                                "vibrateOnMobilDevices": "50",
                                "listLayout": "card",
                                "itemLayout": "horizontal",
                                "listType0": "text",
                                "showValueLabel0": "true",
                                "listType1": "text",
                                "showValueLabel1": "true",
                                "signals-cond-0": "==",
                                "signals-val-0": true,
                                "signals-icon-0": "/vis/signals/lowbattery.png",
                                "signals-icon-size-0": 0,
                                "signals-blink-0": false,
                                "signals-horz-0": 0,
                                "signals-vert-0": 0,
                                "signals-hide-edit-0": false,
                                "signals-cond-1": "==",
                                "signals-val-1": true,
                                "signals-icon-1": "/vis/signals/lowbattery.png",
                                "signals-icon-size-1": 0,
                                "signals-blink-1": false,
                                "signals-horz-1": 0,
                                "signals-vert-1": 0,
                                "signals-hide-edit-1": false,
                                "signals-cond-2": "==",
                                "signals-val-2": true,
                                "signals-icon-2": "/vis/signals/lowbattery.png",
                                "signals-icon-size-2": 0,
                                "signals-blink-2": false,
                                "signals-horz-2": 0,
                                "signals-vert-2": 0,
                                "signals-hide-edit-2": false,
                                "lc-type": "last-change",
                                "lc-is-interval": true,
                                "lc-is-moment": false,
                                "lc-format": "",
                                "lc-position-vert": "top",
                                "lc-position-horz": "right",
                                "lc-offset-vert": 0,
                                "lc-offset-horz": 0,
                                "lc-font-size": "12px",
                                "lc-font-family": "",
                                "lc-font-style": "",
                                "lc-bkg-color": "",
                                "lc-color": "",
                                "lc-border-width": "0",
                                "lc-border-style": "",
                                "lc-border-color": "",
                                "lc-border-radius": 10,
                                "lc-zindex": 0,
                                "json_string_oid": "0_userdata.0.vis.AdapterStatus.jsonList",
                                "maxItemsperRow": "6",
                                "iconItemMinWidth": "300",
                                "iconHeight": "60",
                                "buttonHeight": "100",
                                "labelFontSize": "22",
                                "subLabelFontSize": "14",
                                "subLabelFontColor": "#000000",
                                "labelFontFamily": "RobotoCondensed-Regular",
                                "subLabelFontFamily": "RobotoCondensed-Light",
                                "horizontalIconContainerWidth": "120"
                              },
                              "style": {
                                "left": "0px",
                                "top": "50px",
                                "width": "100%",
                                "height": "calc(100% - 50px)",
                                "overflow-x": "",
                                "overflow-y": "auto",
                                "z-index": "1"
                              },
                              "widgetSet": "materialdesign"
                            },
                            "e00002": {
                              "tpl": "tplHtml",
                              "data": {
                                "g_fixed": false,
                                "g_visibility": false,
                                "g_css_font_text": false,
                                "g_css_background": true,
                                "g_css_shadow_padding": false,
                                "g_css_border": false,
                                "g_gestures": false,
                                "g_signals": false,
                                "g_last_change": false,
                                "visibility-cond": "==",
                                "visibility-val": 1,
                                "visibility-groups-action": "hide",
                                "refreshInterval": "0",
                                "signals-cond-0": "==",
                                "signals-val-0": true,
                                "signals-icon-0": "/vis/signals/lowbattery.png",
                                "signals-icon-size-0": 0,
                                "signals-blink-0": false,
                                "signals-horz-0": 0,
                                "signals-vert-0": 0,
                                "signals-hide-edit-0": false,
                                "signals-cond-1": "==",
                                "signals-val-1": true,
                                "signals-icon-1": "/vis/signals/lowbattery.png",
                                "signals-icon-size-1": 0,
                                "signals-blink-1": false,
                                "signals-horz-1": 0,
                                "signals-vert-1": 0,
                                "signals-hide-edit-1": false,
                                "signals-cond-2": "==",
                                "signals-val-2": true,
                                "signals-icon-2": "/vis/signals/lowbattery.png",
                                "signals-icon-size-2": 0,
                                "signals-blink-2": false,
                                "signals-horz-2": 0,
                                "signals-vert-2": 0,
                                "signals-hide-edit-2": false,
                                "lc-type": "last-change",
                                "lc-is-interval": true,
                                "lc-is-moment": false,
                                "lc-format": "",
                                "lc-position-vert": "top",
                                "lc-position-horz": "right",
                                "lc-offset-vert": 0,
                                "lc-offset-horz": 0,
                                "lc-font-size": "12px",
                                "lc-font-family": "",
                                "lc-font-style": "",
                                "lc-bkg-color": "",
                                "lc-color": "",
                                "lc-border-width": "0",
                                "lc-border-style": "",
                                "lc-border-color": "",
                                "lc-border-radius": 10,
                                "lc-zindex": 0
                              },
                              "style": {
                                "left": "0",
                                "top": "0",
                                "width": "100%",
                                "height": "50px",
                                "background-color": "#44739e"
                              },
                              "widgetSet": "basic"
                            },
                            "e00003": {
                              "tpl": "tplVis-materialdesign-Select",
                              "data": {
                                "oid": "0_userdata.0.vis.AdapterStatus.sortMode",
                                "g_fixed": false,
                                "g_visibility": false,
                                "g_css_font_text": false,
                                "g_css_background": false,
                                "g_css_shadow_padding": false,
                                "g_css_border": false,
                                "g_gestures": false,
                                "g_signals": false,
                                "g_last_change": false,
                                "visibility-cond": "==",
                                "visibility-val": 1,
                                "visibility-groups-action": "hide",
                                "inputType": "text",
                                "inputLayout": "regular",
                                "showInputMessageAlways": "true",
                                "showInputCounter": false,
                                "clearIconShow": false,
                                "listDataMethod": "jsonStringObject",
                                "countSelectItems": "1",
                                "listPosition": "bottom",
                                "showSelectedIcon": "prepend-inner",
                                "showValue": false,
                                "signals-cond-0": "==",
                                "signals-val-0": true,
                                "signals-icon-0": "/vis/signals/lowbattery.png",
                                "signals-icon-size-0": 0,
                                "signals-blink-0": false,
                                "signals-horz-0": 0,
                                "signals-vert-0": 0,
                                "signals-hide-edit-0": false,
                                "signals-cond-1": "==",
                                "signals-val-1": true,
                                "signals-icon-1": "/vis/signals/lowbattery.png",
                                "signals-icon-size-1": 0,
                                "signals-blink-1": false,
                                "signals-horz-1": 0,
                                "signals-vert-1": 0,
                                "signals-hide-edit-1": false,
                                "signals-cond-2": "==",
                                "signals-val-2": true,
                                "signals-icon-2": "/vis/signals/lowbattery.png",
                                "signals-icon-size-2": 0,
                                "signals-blink-2": false,
                                "signals-horz-2": 0,
                                "signals-vert-2": 0,
                                "signals-hide-edit-2": false,
                                "lc-type": "last-change",
                                "lc-is-interval": true,
                                "lc-is-moment": false,
                                "lc-format": "",
                                "lc-position-vert": "top",
                                "lc-position-horz": "right",
                                "lc-offset-vert": 0,
                                "lc-offset-horz": 0,
                                "lc-font-size": "12px",
                                "lc-font-family": "",
                                "lc-font-style": "",
                                "lc-bkg-color": "",
                                "lc-color": "",
                                "lc-border-width": "0",
                                "lc-border-style": "",
                                "lc-border-color": "",
                                "lc-border-radius": 10,
                                "lc-zindex": 0,
                                "inputLabelText": "Sortieren nach",
                                "inputLabelColor": "#ffffff",
                                "inputLabelFontFamily": "RobotoCondensed-LightItalic",
                                "collapseIconColor": "#ffffff",
                                "collapseIconSize": "",
                                "jsonStringObject": "[\n\t{\n\t\t\"text\": \"Adaptername\",\n\t\t\"value\": \"name\",\n\t\t\"icon\": \"sort-alphabetical\"\n\t},\n\t{\n\t\t\"text\": \"Status\",\n\t\t\"value\": \"status\",\n\t\t\"icon\": \"information-variant\"\n\t},\t\n\t{\n\t\t\"text\": \"Modus\",\n\t\t\"value\": \"mode\",\n\t\t\"icon\": \"view-dashboard\"\n\t},\n\t{\n\t\t\"text\": \"Updates verfügbar\",\n\t\t\"value\": \"hasUpdates\",\n\t\t\"icon\": \"package-down\"\n\t},\n\t{\n\t\t\"text\": \"CPU\",\n\t\t\"value\": \"cpu\",\n\t\t\"icon\": \"cpu-64-bit\"\n\t},\n\t{\n\t\t\"text\": \"RAM total\",\n\t\t\"value\": \"memHeapTotal\",\n\t\t\"icon\": \"memory\"\n\t},\n\t{\n\t\t\"text\": \"RAM verwendet\",\n\t\t\"value\": \"memHeapUsed\",\n\t\t\"icon\": \"memory\"\n\t},\n\t{\n\t\t\"text\": \"RAM reserviert\",\n\t\t\"value\": \"memRss\",\n\t\t\"icon\": \"memory\"\n\t},\n\t{\n\t\t\"text\": \"Betriebszeit\",\n\t\t\"value\": \"uptime\",\n\t\t\"icon\": \"clock-check-outline\"\n\t}\n]",
                                "listPositionOffset": true,
                                "inputLayoutBackgroundColor": "transparent",
                                "inputLabelColorSelected": "#ffffff",
                                "inputTranslateX": "-15",
                                "clearIcon": "",
                                "inputLayoutBorderColorHover": "#ffffff",
                                "inputLayoutBorderColorSelected": "#ffffff",
                                "inputLayoutBorderColor": "#a1a1a1",
                                "listItemFontColor": "",
                                "inputTextColor": "#ffffff",
                                "inputTextFontFamily": "RobotoCondensed-LightItalic",
                                "prepandIcon": "",
                                "prepandIconColor": "",
                                "prepandIconSize": "",
                                "prepandInnerIcon": "",
                                "prepandInnerIconColor": "#ffffff",
                                "prepandInnerIconSize": "18",
                                "collapseIcon": "",
                                "inputTranslateY": "-12",
                                "listIconSelectedColor": "#44739e",
                                "listIconColor": "",
                                "appendOuterIcon": "",
                                "appendOuterIconSize": "2",
                                "listItemFont": "RobotoCondensed-Regular",
                                "listItemRippleEffectColor": "",
                                "inputLayoutBackgroundColorSelected": "",
                                "inputLayoutBackgroundColorHover": ""
                              },
                              "style": {
                                "left": "10px",
                                "top": "0px",
                                "z-index": "1",
                                "width": "calc(50% - 20px)",
                                "height": "40px"
                              },
                              "widgetSet": "materialdesign"
                            },
                            "e00004": {
                              "tpl": "tplVis-materialdesign-Select",
                              "data": {
                                "oid": "0_userdata.0.vis.AdapterStatus.filterMode",
                                "g_fixed": false,
                                "g_visibility": false,
                                "g_css_font_text": false,
                                "g_css_background": false,
                                "g_css_shadow_padding": false,
                                "g_css_border": false,
                                "g_gestures": false,
                                "g_signals": false,
                                "g_last_change": false,
                                "visibility-cond": "==",
                                "visibility-val": 1,
                                "visibility-groups-action": "hide",
                                "inputType": "text",
                                "inputLayout": "regular",
                                "showInputMessageAlways": "true",
                                "showInputCounter": false,
                                "clearIconShow": true,
                                "listDataMethod": "jsonStringObject",
                                "countSelectItems": "1",
                                "listPosition": "bottom",
                                "showSelectedIcon": "prepend-inner",
                                "showValue": false,
                                "signals-cond-0": "==",
                                "signals-val-0": true,
                                "signals-icon-0": "/vis/signals/lowbattery.png",
                                "signals-icon-size-0": 0,
                                "signals-blink-0": false,
                                "signals-horz-0": 0,
                                "signals-vert-0": 0,
                                "signals-hide-edit-0": false,
                                "signals-cond-1": "==",
                                "signals-val-1": true,
                                "signals-icon-1": "/vis/signals/lowbattery.png",
                                "signals-icon-size-1": 0,
                                "signals-blink-1": false,
                                "signals-horz-1": 0,
                                "signals-vert-1": 0,
                                "signals-hide-edit-1": false,
                                "signals-cond-2": "==",
                                "signals-val-2": true,
                                "signals-icon-2": "/vis/signals/lowbattery.png",
                                "signals-icon-size-2": 0,
                                "signals-blink-2": false,
                                "signals-horz-2": 0,
                                "signals-vert-2": 0,
                                "signals-hide-edit-2": false,
                                "lc-type": "last-change",
                                "lc-is-interval": true,
                                "lc-is-moment": false,
                                "lc-format": "",
                                "lc-position-vert": "top",
                                "lc-position-horz": "right",
                                "lc-offset-vert": 0,
                                "lc-offset-horz": 0,
                                "lc-font-size": "12px",
                                "lc-font-family": "",
                                "lc-font-style": "",
                                "lc-bkg-color": "",
                                "lc-color": "",
                                "lc-border-width": "0",
                                "lc-border-style": "",
                                "lc-border-color": "",
                                "lc-border-radius": 10,
                                "lc-zindex": 0,
                                "inputLabelText": "Filtern nach",
                                "inputLabelColor": "#ffffff",
                                "inputLabelFontFamily": "RobotoCondensed-LightItalic",
                                "collapseIconColor": "#ffffff",
                                "collapseIconSize": "",
                                "jsonStringObject": "[\n\t{\n\t\t\"text\": \"nicht verbunden\",\n\t\t\"value\": \"notConnected\",\n\t\t\"icon\": \"network-off\"\n\t},\n\t{\n\t\t\"text\": \"deaktiviert\",\n\t\t\"value\": \"deactivated\",\n\t\t\"icon\": \"checkbox-blank-outline\"\n\t},\t\n\t{\n\t\t\"text\": \"aktiviert\",\n\t\t\"value\": \"activated\",\n\t\t\"icon\": \"checkbox-intermediate\"\n\t},\n\t{\n\t\t\"text\": \"Updates verfügbar\",\n\t\t\"value\": \"hasUpdates\",\n\t\t\"icon\": \"package-down\"\n\t}\n]",
                                "listPositionOffset": true,
                                "inputLayoutBackgroundColor": "transparent",
                                "inputLabelColorSelected": "#ffffff",
                                "inputTranslateX": "-15",
                                "clearIcon": "",
                                "inputLayoutBorderColorHover": "#ffffff",
                                "inputLayoutBorderColorSelected": "#ffffff",
                                "inputLayoutBorderColor": "#a1a1a1",
                                "listItemFontColor": "",
                                "inputTextColor": "#ffffff",
                                "inputTextFontFamily": "RobotoCondensed-LightItalic",
                                "prepandIcon": "",
                                "prepandIconColor": "",
                                "prepandIconSize": "",
                                "prepandInnerIcon": "",
                                "prepandInnerIconColor": "#ffffff",
                                "prepandInnerIconSize": "18",
                                "collapseIcon": "",
                                "inputTranslateY": "-12",
                                "listIconSelectedColor": "#44739e",
                                "listIconColor": "",
                                "appendOuterIcon": "",
                                "appendOuterIconSize": "2",
                                "listItemFont": "RobotoCondensed-Regular",
                                "listItemRippleEffectColor": "",
                                "inputLayoutBackgroundColorSelected": "",
                                "inputLayoutBackgroundColorHover": "",
                                "clearIconColor": "#ffffff"
                              },
                              "style": {
                                "left": "calc(50% + 10px)",
                                "top": "0px",
                                "z-index": "1",
                                "width": "calc(50% - 20px)",
                                "height": "40px"
                              },
                              "widgetSet": "materialdesign"
                            }
                          },
                          "name": "AdapterStatus",
                          "filterList": []
                        }
                        

                        Skript

                        // Imports -> müssen im Javascript Adapter unter 'Zusätzliche NPM-Module' eingetragen sein
                        const moment = require("moment");
                        const momentDurationFormatSetup = require("moment-duration-format");
                        
                        
                        // Skript Einstellungen *************************************************************************************************************************************************
                        
                        let dpList = '0_userdata.0.vis.AdapterStatus.jsonList';                     // Datenpunkt für IconList Widget (Typ: Zeichenkette (String))
                        let dpAdapterRestart = '0_userdata.0.vis.AdapterStatus.restartTrigger';     // Datenpunkt für Adapter restart (Typ: Zeichenkette (String))
                        
                        let dpSortMode = '0_userdata.0.vis.AdapterStatus.sortMode';                 // Datenpunkt für Sortieren (Typ: Zeichenkette (String))
                        let dpFilterMode = '0_userdata.0.vis.AdapterStatus.filterMode';             // Datenpunkt für Filter (Typ: Zeichenkette (String))
                        
                        let adminUpdatesList = 'admin.0.info.updatesList';                          // Datenpunkt Admin Adapter für verfübare Updates der Adapter
                        
                        const checkInterval = 30;                                                   // Interval wie oft Status der Adapter aktualisiert werden soll (in Sekunden)
                        
                        let sprache = 'de';                                                         // Sprache für formatierung Dauer 
                        let formatierungDauer = "dd[T] hh[h] mm[m]";                                // Formatierung der Dauer -> siehe momentjs library
                        
                        let neustarten = true;                                                      // true: Adapter wird neugestartet, false: Adapter wird gestoppt oder gestartet
                        
                        let farbeAdapterAktiv = 'green';                                            // Status Bar Farbe wenn Adapter aktiv ist
                        let farbeAdapterNichtAktiv = 'FireBrick';                                   // Status Bar Farbe wenn Adapter nicht aktiv ist oder Fehler vorliegt
                        let farbeAdapterDeaktiviert = 'darkgrey';                                   // Status Bar Farbe wenn Adapter deaktiviert ist
                        let farbeAdapterNichtVerbunden = 'yellow';                                  // Status Bar Farbe wenn Adapter nicht verbunden ist
                        let farbeAdapterZeitgesteuert = 'lightgreen';                               // Status Bar Farbe wenn Adapter zeitgesteuert ist
                        let farbeAdapterErweiterung = '#44739e';                                    // Status Bar Farbe wenn Adapter Erweiterung ist
                        let farbeAdapterSystem = '#44739e';                                         // Status Bar Farbe wenn Adapter mit System gestartet wird
                        
                        let sortResetAfter = 120;                                                   // Sortierung nach X Sekunden auf sortReset zurücksetzen (0=deaktiviert)
                        let sortReset = 'memHeapUsed'                                               // Sortierung auf die zurückgesetzt werden soll
                        
                        let filterResetAfter = 120;                                                 // Filter nach X Sekunden zurücksetzen (0=deaktiviert)
                        
                        // **********************************************************************************************************************************************************************
                        
                        
                        // Fomate für moment Lib
                        moment.locale(sprache);
                        
                        // auf .alive Änderungen hören
                        let aliveSelector = `[id=system.adapter.*.alive]`;
                        let adapterAliveList = $(aliveSelector);
                        if (adapterAliveList.length === 0) {
                            // Fehlermeldung ausgeben, wenn selector kein result liefert
                            console.error(`no result for selector '${aliveSelector}'`)
                        } else {
                            // listener nur für Änderung bei alive
                            adapterAliveList.on(adapterStatus);
                        }
                        
                        // auf .connection Änderungen hören
                        let connectionSelector = `[id=*.info.connection]`;
                        let adapterConnectionList = $(connectionSelector);
                        if (adapterConnectionList.length === 0) {
                            // Fehlermeldung ausgeben, wenn selector kein result liefert
                            console.error(`no result for selector '${connectionSelector}'`)
                        } else {
                            // listener nur für Änderung bei alive
                            adapterConnectionList.on(adapterStatus);
                        }
                        
                        // auf .connected Änderungen hören
                        let connectedSelector = `[id=system.adapter.*.connected]`;
                        let adapterConnectedList = $(connectedSelector);
                        if (adapterConnectedList.length === 0) {
                            // Fehlermeldung ausgeben, wenn selector kein result liefert
                            console.error(`no result for selector '${connectedSelector}'`)
                        } else {
                            // listener nur für Änderung bei alive
                            adapterConnectedList.on(adapterStatus);
                        }
                        
                        // auf Änderungen der Sortieung hören
                        on({ id: dpSortMode, change: 'any' }, adapterStatus);
                        on({ id: dpSortMode, change: 'any' }, resetSort);
                        
                        // auf Änderungen der Filter hören
                        on({ id: dpFilterMode, change: 'any' }, adapterStatus);
                        on({ id: dpFilterMode, change: 'any' }, resetFilter);
                        
                        // Funktion adapterStatus alle x Sekunden ausführen
                        schedule('*/' + checkInterval + ' * * * * *', adapterStatus);
                        
                        function adapterStatus() {
                            // Funktion um Status der Adapter abzurufen und als JSON String für das Material Design Widget IconList aufbereiten
                            let adapterList = [];
                            let updateList = myHelper().getStateValueIfExist(adminUpdatesList);
                        
                            try {
                                for (var i = 0; i <= adapterAliveList.length - 1; i++) {
                                    let id = adapterAliveList[i].replace('.alive', '');
                                    let obj = getObject(adapterAliveList[i].replace('.alive', ''));
                        
                                    let nameArray = id.replace('system.adapter.', '').split(".");
                        
                                    let name = nameArray[0];
                                    name = name.charAt(0).toUpperCase() + name.slice(1);
                        
                                    let nameWithInstance = name;
                                    let adapterInstance = nameArray[1];
                                    if (parseInt(adapterInstance) > 0) {
                                        nameWithInstance = name + '.' + adapterInstance;
                                    }
                        
                                    let uptime = (existsState(id + '.uptime')) ? moment.duration(getState(id + '.uptime').val, 'seconds').format(formatierungDauer, 0) : '-';
                                    let image = (myHelper().checkCommonPropertyExist(obj, 'icon')) ? `/${nameArray[0]}.admin/${obj.common.icon}` : 'image-off-outline';
                        
                                    let hasUpdates = updateList && updateList.includes(nameArray[0]);
                                    let newVersion = (hasUpdates) ? '<span class="mdi mdi-update" style="color: #ec0909;"></span>' : '';
                        
                                    let text = `<div style="display: flex; flex-direction: row; line-height: 1.5; padding-right: 8px; align-items: center;">
                                                    <div style="flex: 1">${newVersion} ${nameWithInstance}</div>
                                                    <div style="color: grey; font-size: 12px; font-family: RobotoCondensed-LightItalic;">${myHelper().getCommonPropertyIfExist(obj, 'version', '-', 'v', '')}</div>
                                                </div>`
                        
                                    let subText = `<div style="display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px; align-items: center;">
                                                        <div style="flex: 1;">CPU</div>
                                                        <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic;">${myHelper().getStateValueIfExist(id + '.cpu', '-', '', ' %')}</div>
                                                    </div>
                                                    <div style="display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px; align-items: center;">
                                                        <div style="flex: 1;">RAM total</div>
                                                        <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic;">${myHelper().getStateValueIfExist(id + '.memHeapTotal', '-', '', ' MB')}</div>
                                                    </div>
                                                    <div style="display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px; align-items: center;">
                                                        <div style="flex: 1;">RAM verwendet</div>
                                                        <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic;">${myHelper().getStateValueIfExist(id + '.memHeapUsed', '-', '', ' MB')}</div>
                                                    </div>
                                                    <div style="display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px; align-items: center;">
                                                        <div style="flex: 1;">RAM reserviert</div>
                                                        <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic;">${myHelper().getStateValueIfExist(id + '.memRss', '-', '', ' MB')}</div>
                                                    </div>
                                                    <div style="display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px; align-items: center;">
                                                        <div style="flex: 1;">Betriebszeit</div>
                                                        <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic;">${uptime}</div>
                                                    </div>
                                                    <div style="display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px; align-items: center;">
                                                        <div style="flex: 1;">Modus</div>
                                                        <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic;">${myHelper().getCommonPropertyIfExist(obj, 'mode', '-')}</div>
                                                    </div>`
                        
                                    let statusBarColor = farbeAdapterNichtAktiv;
                                    let status = 3;
                        
                                    if (myHelper().getStateValueIfExist(adapterAliveList[i]) === 'true') {
                                        statusBarColor = farbeAdapterAktiv;
                                        status = 0;
                        
                                        if (existsState(id.replace('system.adapter.', '') + '.info.connection')) {
                                            if (!getState(id.replace('system.adapter.', '') + '.info.connection').val) {
                                                statusBarColor = farbeAdapterNichtVerbunden;
                                                status = 4;
                                            }
                                        } else {
                                            if (myHelper().getStateValueIfExist(adapterAliveList[i].replace('.alive', '.connected')) === 'false') {
                                                statusBarColor = farbeAdapterNichtVerbunden;
                                                status = 4;
                                            }
                                        }
                                    }
                        
                                    if (myHelper().getCommonPropertyIfExist(obj, 'mode') === 'schedule') {
                                        // Adapter ist zeitgesteuert
                                        statusBarColor = farbeAdapterZeitgesteuert;
                                        status = 1;
                                    }
                        
                                    if (myHelper().getCommonPropertyIfExist(obj, 'mode') === 'extension') {
                                        // Adapter ist Extension
                                        statusBarColor = farbeAdapterErweiterung;
                                        status = 1;
                                    }
                        
                                    if (myHelper().getCommonPropertyIfExist(obj, 'mode') === 'once') {
                                        // Adapter wird mit System gestartet
                                        statusBarColor = farbeAdapterSystem;
                                        status = 1;
                                    }
                        
                                    if (myHelper().getCommonPropertyIfExist(obj, 'enabled', false).toString() === 'false') {
                                        // Adapter ist deaktiviert
                                        statusBarColor = farbeAdapterDeaktiviert;
                                        status = 2;
                                    }
                        
                                    adapterList.push({
                                        text: text,
                                        subText: subText,
                                        image: image,
                                        listType: "buttonState",
                                        objectId: dpAdapterRestart,
                                        buttonStateValue: id,
                                        statusBarColor: statusBarColor,
                                        showValueLabel: false,
                                        name: name,
                                        mode: myHelper().getCommonPropertyIfExist(obj, 'mode'),
                                        hasUpdates: hasUpdates,
                                        cpu: parseFloat(myHelper().getStateValueIfExist(id + '.cpu', '0')),
                                        memHeapTotal: parseFloat(myHelper().getStateValueIfExist(id + '.memHeapTotal', '0')),
                                        memHeapUsed: parseFloat(myHelper().getStateValueIfExist(id + '.memHeapUsed', '0')),
                                        memRss: parseFloat(myHelper().getStateValueIfExist(id + '.memRss', '0')),
                                        uptime: parseFloat(myHelper().getStateValueIfExist(id + '.uptime', 0)),
                                        status: status
                                    })
                                }
                        
                            } catch (err) {
                                console.error(`[adapterStatus] error: ${err.message}, stack: ${err.stack}`);
                            }
                        
                            let sortMode = myHelper().getStateValueIfExist(dpSortMode, 'name');
                        
                            if (sortMode === 'name' || sortMode === 'mode') {
                                adapterList.sort(function (a, b) {
                                    return a[sortMode] == b[sortMode] ? 0 : +(a[sortMode] > b[sortMode]) || -1;
                                });
                            } else if (sortMode === 'hasUpdates' || sortMode === 'cpu' || sortMode === 'memHeapTotal' || sortMode === 'memHeapUsed' || sortMode === 'memRss' || sortMode === 'uptime' || sortMode === 'status') {
                                adapterList.sort(function (a, b) {
                                    return a[sortMode] == b[sortMode] ? 0 : +(a[sortMode] < b[sortMode]) || -1;
                                });
                            } else {
                                // default: nach name sortieren
                                sortMode = 'name'
                                adapterList.sort(function (a, b) {
                                    return a[sortMode] == b[sortMode] ? 0 : +(a[sortMode] > b[sortMode]) || -1;
                                });
                            }
                        
                            // Filter: not connected, updates, deaktiviert, aktiviert
                        
                            let filterMode = myHelper().getStateValueIfExist(dpFilterMode, null);
                        
                            if (filterMode && filterMode !== null && filterMode !== '') {
                                if (filterMode === 'hasUpdates') {
                                    adapterList = adapterList.filter(function (item) {
                                        return item.hasUpdates === true;
                                    });
                                } else if (filterMode === 'notConnected') {
                                    adapterList = adapterList.filter(function (item) {
                                        return item.status === 4;
                                    });
                                } else if (filterMode === 'deactivated') {
                                    adapterList = adapterList.filter(function (item) {
                                        return item.status === 2;
                                    });
                                } else if (filterMode === 'activated') {
                                    adapterList = adapterList.filter(function (item) {
                                        return item.status <= 1;
                                    });
                                }
                            }
                        
                            // adapterList = adapterList.filter(function(item){
                            //     return item.status === 4;
                            // })
                        
                            let result = JSON.stringify(adapterList);
                            if (getState(dpList) !== result) {
                                setState(dpList, result, true);
                            }
                        
                        
                        }
                        
                        // Beim Staren des Skriptes Adapter Status abrufen
                        adapterStatus();
                        
                        // Funktion um Adapter zu starten / neu starten
                        on({ id: dpAdapterRestart }, function (obj) {
                            var adapter = getObject(obj.state.val.toString());
                        
                            if (neustarten) {
                                if (adapter.common && adapter.common.enabled === false) {
                                    // Adapter deaktiviert -> starten
                                    adapter.common.enabled = true;
                                }
                            } else {
                                if (adapter.common && adapter.common.enabled) {
                                    adapter.common.enabled = !adapter.common.enabled;
                                } else {
                                    adapter.common.enabled = true;
                                }
                            }
                        
                            setObject(obj.state.val, adapter);
                            console.log(`${obj.state.val.replace('system.adapter.', '')} neugestartet`);
                        });
                        
                        
                        function resetSort() {
                            let sortMode = myHelper().getStateValueIfExist(dpSortMode, null);
                        
                            if (sortResetAfter > 0) {
                                setTimeout(function () {
                                    if (sortMode !== null && sortMode === myHelper().getStateValueIfExist(dpSortMode, null)) {
                                        setState(dpSortMode, sortReset);
                                    }
                                }, sortResetAfter * 1000);
                            }
                        }
                        
                        function resetFilter() {
                            let filterMode = myHelper().getStateValueIfExist(dpFilterMode, null);
                        
                            if (filterResetAfter > 0) {
                                setTimeout(function () {
                                    if (filterMode !== null && filterMode === myHelper().getStateValueIfExist(dpFilterMode, null)) {
                                        setState(dpFilterMode, '');
                                    }
                                }, filterResetAfter * 1000);
                            }
                        }
                        
                        function myHelper() {
                            return {
                                getStateValueIfExist: function (id, nullValue = undefined, prepand = '', append = '') {
                                    if (existsState(id)) {
                                        return prepand + getState(id).val + append;
                                    } else {
                                        return nullValue;
                                    }
                                },
                                getCommonPropertyIfExist: function (object, prop, nullValue = undefined, prepand = '', append = '') {
                                    if (myHelper().checkCommonPropertyExist(object, prop)) {
                                        return prepand + object.common[prop] + append;
                                    } else {
                                        return nullValue;
                                    }
                                },
                                checkCommonPropertyExist: function (object, prop) {
                                    if (object && object.common && object.common[prop]) {
                                        return true;
                                    } else {
                                        return false;
                                    }
                                }
                            }
                        }
                        
                        S Offline
                        S Offline
                        skokarl
                        schrieb am zuletzt editiert von
                        #173

                        @Scrounger

                        Jetzt hast Du aber wieder einen rausgehauen mit der View und dem Script ... :grinning:

                        Super klasse !!!

                        IOBroker mit Proxmox auf Celeron Nuc mit 16 GB und Debian11, Sonos API, Echo Show 15 als Wandtablet, Homematic IP, HUE, Sonos, Echos, DS718+ als Backup

                        H 1 Antwort Letzte Antwort
                        0
                        • smartboartS smartboart

                          Tolle Sache!!! Danke für view und script...Wie wäre es das Script noch um einen Filter und Sortierung nach Instanz zu erweitern?

                          ScroungerS Offline
                          ScroungerS Offline
                          Scrounger
                          Developer
                          schrieb am zuletzt editiert von
                          #174

                          @smartboart sagte in View Adapter Status:

                          Tolle Sache!!! Danke für view und script...Wie wäre es das Script noch um einen Filter und Sortierung nach Instanz zu erweitern?

                          Filter gibt es doch schon?
                          Und was meinst du mit Sortierung nach Instanz, also was sollte nach Auswahl angezeigt werden?

                          <a href="https://github.com/Scrounger/ioBroker.linkeddevices">LinkedDevices Adapter</a>

                          <a href="https://github.com/Scrounger/ioBroker.vis-materialdesign">Material Design Widgets</a>

                          O smartboartS 2 Antworten Letzte Antwort
                          0
                          • ScroungerS Scrounger

                            @smartboart sagte in View Adapter Status:

                            Tolle Sache!!! Danke für view und script...Wie wäre es das Script noch um einen Filter und Sortierung nach Instanz zu erweitern?

                            Filter gibt es doch schon?
                            Und was meinst du mit Sortierung nach Instanz, also was sollte nach Auswahl angezeigt werden?

                            O Online
                            O Online
                            Oli
                            schrieb am zuletzt editiert von
                            #175

                            @Scrounger

                            Ist es möglich am Ende des Widget eine Fußzeile einzufügen?

                            Inhalt könnte die letzte Ausführung und Farblegende sein.

                            Gruß
                            Oliver

                            ScroungerS 1 Antwort Letzte Antwort
                            0
                            • O Oli

                              @Scrounger

                              Ist es möglich am Ende des Widget eine Fußzeile einzufügen?

                              Inhalt könnte die letzte Ausführung und Farblegende sein.

                              ScroungerS Offline
                              ScroungerS Offline
                              Scrounger
                              Developer
                              schrieb am zuletzt editiert von
                              #176

                              @Oli
                              Natürlich ist das möglich. Kann man mit den basic widgets sehr einfach realisieren, z.B. html widget für legenden farben und last change widget für letzte Änderung / Ausführung.

                              <a href="https://github.com/Scrounger/ioBroker.linkeddevices">LinkedDevices Adapter</a>

                              <a href="https://github.com/Scrounger/ioBroker.vis-materialdesign">Material Design Widgets</a>

                              1 Antwort Letzte Antwort
                              0
                              • ScroungerS Scrounger

                                @smartboart sagte in View Adapter Status:

                                Tolle Sache!!! Danke für view und script...Wie wäre es das Script noch um einen Filter und Sortierung nach Instanz zu erweitern?

                                Filter gibt es doch schon?
                                Und was meinst du mit Sortierung nach Instanz, also was sollte nach Auswahl angezeigt werden?

                                smartboartS Offline
                                smartboartS Offline
                                smartboart
                                schrieb am zuletzt editiert von
                                #177

                                @Scrounger sagte in View Adapter Status:

                                @smartboart sagte in View Adapter Status:

                                Tolle Sache!!! Danke für view und script...Wie wäre es das Script noch um einen Filter und Sortierung nach Instanz zu erweitern?

                                Filter gibt es doch schon?
                                Und was meinst du mit Sortierung nach Instanz, also was sollte nach Auswahl angezeigt werden?

                                z.B instanz .0 oder .1
                                habe diverse Adapter mit mehreren Instanzen laufen.

                                ScroungerS 1 Antwort Letzte Antwort
                                0
                                • smartboartS smartboart

                                  @Scrounger sagte in View Adapter Status:

                                  @smartboart sagte in View Adapter Status:

                                  Tolle Sache!!! Danke für view und script...Wie wäre es das Script noch um einen Filter und Sortierung nach Instanz zu erweitern?

                                  Filter gibt es doch schon?
                                  Und was meinst du mit Sortierung nach Instanz, also was sollte nach Auswahl angezeigt werden?

                                  z.B instanz .0 oder .1
                                  habe diverse Adapter mit mehreren Instanzen laufen.

                                  ScroungerS Offline
                                  ScroungerS Offline
                                  Scrounger
                                  Developer
                                  schrieb am zuletzt editiert von
                                  #178

                                  @smartboart sagte in View Adapter Status:

                                  z.B instanz .0 oder .1
                                  habe diverse Adapter mit mehreren Instanzen laufen.

                                  Wird doch nach instanz sortiert - siehe ical:
                                  f8ccebef-dfbc-4a95-b09e-5ecc0d43c750-grafik.png

                                  <a href="https://github.com/Scrounger/ioBroker.linkeddevices">LinkedDevices Adapter</a>

                                  <a href="https://github.com/Scrounger/ioBroker.vis-materialdesign">Material Design Widgets</a>

                                  smartboartS 1 Antwort Letzte Antwort
                                  0
                                  • ScroungerS Scrounger

                                    @smartboart sagte in View Adapter Status:

                                    z.B instanz .0 oder .1
                                    habe diverse Adapter mit mehreren Instanzen laufen.

                                    Wird doch nach instanz sortiert - siehe ical:
                                    f8ccebef-dfbc-4a95-b09e-5ecc0d43c750-grafik.png

                                    smartboartS Offline
                                    smartboartS Offline
                                    smartboart
                                    schrieb am zuletzt editiert von smartboart
                                    #179

                                    @Scrounger ja aber nicht gefiltert...
                                    Ist ja kein Muss...finde es super wie es ist...Aber wenn ich nach instanz 1 filter, sollte dann nur instanz 1 angezeigt werden. Hab mich vlt. ungenau ausgedrückt... Also einen zusätzlichen Filter für instanzen...

                                    1 Antwort Letzte Antwort
                                    0
                                    • W Offline
                                      W Offline
                                      wasi
                                      schrieb am zuletzt editiert von wasi
                                      #180

                                      Hallo, ich krieg das ding nicht zum laufen.
                                      0. js einstellung
                                      95b78675-5af1-48ec-91e8-57b5af256d87-image.png

                                      1.Objekte als zeichenkette mit der rolle string unter 0_userdata.0 angelegt
                                      8fe64d0f-89e3-4f60-91ac-01a42112b0d1-image.png
                                      2. script

                                      
                                      // Imports -> müssen im Javascript Adapter unter 'Zusätzliche NPM-Module' eingetragen sein
                                      const moment = require("moment");
                                      const momentDurationFormatSetup = require("moment-duration-format");
                                       
                                       
                                      // Skript Einstellungen *************************************************************************************************************************************************
                                       
                                      let dpList = '0_userdata.0.vis.AdapterStatus.jsonList';                     // Datenpunkt für IconList Widget (Typ: Zeichenkette (String))
                                      let dpAdapterRestart = '0_userdata.0.vis.AdapterStatus.restartTrigger';     // Datenpunkt für Adapter restart (Typ: Zeichenkette (String))
                                       
                                      let adminUpdatesList = 'admin.0.info.updatesList'                           // Datenpunkt Admin Adapter für verfübare Updates der Adapter
                                       
                                      const checkInterval = 30;                                                   // Interval wie oft Status der Adapter aktualisiert werden soll (in Sekunden)
                                       
                                      let sprache = 'de';                                                         // Sprache für formatierung Dauer 
                                      let formatierungDauer = "dd[T] hh[h] mm[m]"                                 // Formatierung der Dauer -> siehe momentjs library
                                       
                                      let neustarten = true;                                                      // true: Adapter wird neugestartet, false: Adapter wird gestoppt oder gestartet
                                       
                                      let farbeAdapterAktiv = 'green';                                            // Status Bar Farbe wenn Adapter aktiv ist
                                      let farbeAdapterNichtAktiv = 'FireBrick';                                   // Status Bar Farbe wenn Adapter nicht aktiv ist oder Fehler vorliegt
                                      let farbeAdapterDeaktiviert = 'darkgrey';                                   // Status Bar Farbe wenn Adapter deaktiviert ist
                                      let farbeAdapterNichtVerbunden = 'yellow';                                  // Status Bar Farbe wenn Adapter nicht verbunden ist
                                      let farbeAdapterZeitgesteuert = 'darkgreen';                                // Status Bar Farbe wenn Adapter zeitgesteuert ist
                                       
                                      // **********************************************************************************************************************************************************************
                                       
                                       
                                       
                                      // Fomate für moment Lib
                                      moment.locale(sprache);
                                       
                                      // auf .alive Änderungen hören
                                      let aliveSelector = `[id=system.adapter.*.alive]`;
                                      let adapterAliveList = $(aliveSelector);
                                      if (adapterAliveList.length === 0) {
                                          // Fehlermeldung ausgeben, wenn selector kein result liefert
                                          console.error(`no result for selector '${aliveSelector}'`)
                                      } else {
                                          // listener nur für Änderung bei alive
                                          adapterAliveList.on(adapterStatus);
                                      }
                                       
                                      // auf .connected Änderungen hören
                                      let connectedSelector = `[id=*.info.connection]`;
                                      let adapterConnectedList = $(connectedSelector);
                                      if (adapterConnectedList.length === 0) {
                                          // Fehlermeldung ausgeben, wenn selector kein result liefert
                                          console.error(`no result for selector '${connectedSelector}'`)
                                      } else {
                                          // listener nur für Änderung bei alive
                                          adapterConnectedList.on(adapterStatus);
                                      }
                                       
                                      // Funktion adapterStatus alle x Sekunden ausführen
                                      schedule('*/' + checkInterval + ' * * * * *', adapterStatus);
                                       
                                      function adapterStatus() {
                                          // Funktion um Status der Adapter abzurufen und als JSON String für das Material Design Widget IconList aufbereiten
                                          let adapterList = [];
                                          let updateList = myHelper().getStateValueIfExist(adminUpdatesList);
                                       
                                          try {
                                              for (var i = 0; i <= adapterAliveList.length - 1; i++) {
                                                  let id = adapterAliveList[i].replace('.alive', '');
                                                  let obj = getObject(adapterAliveList[i].replace('.alive', ''));
                                       
                                                  let nameArray = id.replace('system.adapter.', '').split(".");
                                       
                                                  let name = nameArray[0];
                                                  name = name.charAt(0).toUpperCase() + name.slice(1);
                                       
                                                  let nameWithInstance = name;
                                                  let adapterInstance = nameArray[1];
                                                  if (parseInt(adapterInstance) > 0) {
                                                      nameWithInstance = name + '.' + adapterInstance;
                                                  }
                                       
                                                  let uptime = (existsState(id + '.uptime')) ? moment.duration(getState(id + '.uptime').val, 'seconds').format(formatierungDauer, 0) : '-';
                                                  let image = (myHelper().checkCommonPropertyExist(obj, 'icon')) ? `/${nameArray[0]}.admin/${obj.common.icon}` : 'image-off-outline';
                                                  let newVersion = (updateList && updateList.includes(nameArray[0])) ? '<span class="mdi mdi-update" style="color: #ec0909;"></span>' : '';
                                       
                                                  let text = `<div style="display: flex; flex-direction: row; line-height: 1.5; padding-right: 8px; align-items: center;">
                                                                  <div style="flex: 1">${newVersion} ${nameWithInstance}</div>
                                                                  <div style="color: grey; font-size: 12px; font-family: RobotoCondensed-LightItalic;">${myHelper().getCommonPropertyIfExist(obj, 'version', '-', 'v', '')}</div>
                                                              </div>`
                                       
                                                  let subText = `<div style="display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px; align-items: center;">
                                                                      <div style="flex: 1">CPU</div>
                                                                      <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic;">${myHelper().getStateValueIfExist(id + '.cpu', '-', '', ' %')}</div>
                                                                  </div>
                                                                  <div style="display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px; align-items: center;">
                                                                      <div style="flex: 1">RAM total</div>
                                                                      <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic;">${myHelper().getStateValueIfExist(id + '.memHeapTotal', '-', '', ' MB')}</div>
                                                                  </div>
                                                                  <div style="display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px; align-items: center;">
                                                                      <div style="flex: 1">RAM verwendet</div>
                                                                      <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic;">${myHelper().getStateValueIfExist(id + '.memHeapUsed', '-', '', ' MB')}</div>
                                                                  </div>
                                                                  <div style="display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px; align-items: center;">
                                                                      <div style="flex: 1">RAM reserviert</div>
                                                                      <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic;">${myHelper().getStateValueIfExist(id + '.memRss', '-', '', ' MB')}</div>
                                                                  </div>
                                                                  <div style="display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px; align-items: center;">
                                                                      <div style="flex: 1">Betriebszeit</div>
                                                                      <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic;">${uptime}</div>
                                                                  </div>`
                                       
                                                  adapterList.push({
                                                      text: text,
                                                      subText: subText,
                                                      image: image,
                                                      listType: "buttonState",
                                                      objectId: dpAdapterRestart,
                                                      buttonStateValue: id,
                                                      statusBarColor: getStatusColor(),
                                                      showValueLabel: false,
                                                      name: name
                                                  })
                                       
                                                  function getStatusColor() {
                                                      let statusBarColor = farbeAdapterNichtAktiv;
                                       
                                                      if (myHelper().getStateValueIfExist(adapterAliveList[i]) === 'true') {
                                                          statusBarColor = farbeAdapterAktiv;
                                       
                                                          if (existsState(id.replace('system.adapter.', '') + '.info.connection')) {
                                                              if (!getState(id.replace('system.adapter.', '') + '.info.connection').val) {
                                                                  statusBarColor = farbeAdapterNichtVerbunden;
                                                              }
                                                          } else {
                                                              if (myHelper().getStateValueIfExist(adapterAliveList[i].replace('.alive', '.connected')) === 'false') {
                                                                  statusBarColor = farbeAdapterNichtVerbunden;
                                                              }
                                                          }
                                                      }
                                              
                                                      if (myHelper().getCommonPropertyIfExist(obj, 'enabled', false).toString() === 'false') {
                                                          // Adapter ist deaktiviert
                                                          statusBarColor = farbeAdapterDeaktiviert;
                                                      }
                                       
                                                      if (myHelper().getCommonPropertyIfExist(obj, 'mode') === 'schedule') {
                                                          // Adapter ist zeitgesteuert
                                                          statusBarColor = farbeAdapterZeitgesteuert;
                                                      }
                                       
                                                      return statusBarColor;
                                                  }
                                              }
                                       
                                          } catch (err) {
                                              console.error(`[adapterStatus] error: ${err.message}, stack: ${err.stack}`);
                                          }
                                       
                                          adapterList.sort(function (a, b) {
                                              return a.name == b.name ? 0 : +(a.name > b.name) || -1;
                                          });
                                       
                                          let result = JSON.stringify(adapterList);
                                          if (getState(dpList) !== result) {
                                              setState(dpList, result, true);
                                          }
                                      }
                                       
                                      // Beim Staren des Skriptes Adapter Status abrufen
                                      adapterStatus();
                                       
                                      // Funktion um Adapter zu starten / neu starten
                                      on({ id: dpAdapterRestart }, function (obj) {
                                          var adapter = getObject(obj.state.val.toString());
                                       
                                          if (neustarten) {
                                              if (adapter.common && adapter.common.enabled === false) {
                                                  // Adapter deaktiviert -> starten
                                                  adapter.common.enabled = true;
                                              }
                                          } else {
                                              if (adapter.common && adapter.common.enabled) {
                                                  adapter.common.enabled = !adapter.common.enabled;
                                              } else {
                                                  adapter.common.enabled = true;
                                              }
                                          }
                                       
                                          setObject(obj.state.val, adapter);
                                          console.log(`${obj.state.val.replace('system.adapter.', '')} neugestartet`);
                                      });
                                       
                                       
                                      function myHelper() {
                                          return {
                                              getStateValueIfExist: function (id, nullValue = undefined, prepand = '', append = '') {
                                                  if (existsState(id)) {
                                                      return prepand + getState(id).val + append;
                                                  } else {
                                                      return nullValue;
                                                  }
                                              },
                                              getCommonPropertyIfExist: function (object, prop, nullValue = undefined, prepand = '', append = '') {
                                                  if (myHelper().checkCommonPropertyExist(object, prop)) {
                                                      return prepand + object.common[prop] + append;
                                                  } else {
                                                      return nullValue;
                                                  }
                                              },
                                              checkCommonPropertyExist: function (object, prop) {
                                                  if (object && object.common && object.common[prop]) {
                                                      return true;
                                                  } else {
                                                      return false;
                                                  }
                                              }
                                          }
                                      }
                                      
                                      

                                      js-protokoll
                                      660a47d3-39e1-42ca-b142-b16b2bc35d2f-image.png
                                      3. widget

                                      [{"tpl":"tplVis-materialdesign-Icon-List","data":{"g_fixed":true,"g_visibility":true,"g_css_font_text":false,"g_css_background":true,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","wrapItems":"true","listItemDataMethod":"jsonStringObject","countListItems":"1","vibrateOnMobilDevices":"50","listLayout":"card","itemLayout":"horizontal","listType0":"text","showValueLabel0":"true","listType1":"text","showValueLabel1":"true","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis.0/main/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis.0/main/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis.0/main/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"jsonStringObject":"{0_userdata.0.vis.AdapterStatus.jsonList}","maxItemsperRow":"6","iconHeight":"60","verticalIconContainerWidth":"100","labelFontSize":"20","labelFontFamily":"RobotoCondensed-Regular","iconItemMinWidth":"290","labelFontColor":"#ffffff","valueFontFamily":"","subLabelFontFamily":"RobotoCondensed-Regular","subLabelFontSize":"14","subLabelFontColor":"#ffffff","oid":"0_userdata.0.AdapterStatus.jsonList","label0":"","valueFontSize":"-10","valueFontColor":"#ffffff","itemBackgroundColor":"#202020"},"style":{"left":"28px","top":"79px","width":"812px","height":"655px","overflow-y":"auto","background":"","opacity":"","z-index":"99"},"widgetSet":"materialdesign"}]
                                      
                                      1. ergebnis
                                        6c3a4e56-6e08-4115-a00c-b62fc44923b3-image.png

                                      mir ist aber aufgefallen, wenn ich im vis-editor den objekt-id-dialog öffne, dann fehlen die unter 0_userdata.0, obwohl ich sie ja offensichtlich angelegt habe.

                                      GlasfaserG 1 Antwort Letzte Antwort
                                      0
                                      • W wasi

                                        Hallo, ich krieg das ding nicht zum laufen.
                                        0. js einstellung
                                        95b78675-5af1-48ec-91e8-57b5af256d87-image.png

                                        1.Objekte als zeichenkette mit der rolle string unter 0_userdata.0 angelegt
                                        8fe64d0f-89e3-4f60-91ac-01a42112b0d1-image.png
                                        2. script

                                        
                                        // Imports -> müssen im Javascript Adapter unter 'Zusätzliche NPM-Module' eingetragen sein
                                        const moment = require("moment");
                                        const momentDurationFormatSetup = require("moment-duration-format");
                                         
                                         
                                        // Skript Einstellungen *************************************************************************************************************************************************
                                         
                                        let dpList = '0_userdata.0.vis.AdapterStatus.jsonList';                     // Datenpunkt für IconList Widget (Typ: Zeichenkette (String))
                                        let dpAdapterRestart = '0_userdata.0.vis.AdapterStatus.restartTrigger';     // Datenpunkt für Adapter restart (Typ: Zeichenkette (String))
                                         
                                        let adminUpdatesList = 'admin.0.info.updatesList'                           // Datenpunkt Admin Adapter für verfübare Updates der Adapter
                                         
                                        const checkInterval = 30;                                                   // Interval wie oft Status der Adapter aktualisiert werden soll (in Sekunden)
                                         
                                        let sprache = 'de';                                                         // Sprache für formatierung Dauer 
                                        let formatierungDauer = "dd[T] hh[h] mm[m]"                                 // Formatierung der Dauer -> siehe momentjs library
                                         
                                        let neustarten = true;                                                      // true: Adapter wird neugestartet, false: Adapter wird gestoppt oder gestartet
                                         
                                        let farbeAdapterAktiv = 'green';                                            // Status Bar Farbe wenn Adapter aktiv ist
                                        let farbeAdapterNichtAktiv = 'FireBrick';                                   // Status Bar Farbe wenn Adapter nicht aktiv ist oder Fehler vorliegt
                                        let farbeAdapterDeaktiviert = 'darkgrey';                                   // Status Bar Farbe wenn Adapter deaktiviert ist
                                        let farbeAdapterNichtVerbunden = 'yellow';                                  // Status Bar Farbe wenn Adapter nicht verbunden ist
                                        let farbeAdapterZeitgesteuert = 'darkgreen';                                // Status Bar Farbe wenn Adapter zeitgesteuert ist
                                         
                                        // **********************************************************************************************************************************************************************
                                         
                                         
                                         
                                        // Fomate für moment Lib
                                        moment.locale(sprache);
                                         
                                        // auf .alive Änderungen hören
                                        let aliveSelector = `[id=system.adapter.*.alive]`;
                                        let adapterAliveList = $(aliveSelector);
                                        if (adapterAliveList.length === 0) {
                                            // Fehlermeldung ausgeben, wenn selector kein result liefert
                                            console.error(`no result for selector '${aliveSelector}'`)
                                        } else {
                                            // listener nur für Änderung bei alive
                                            adapterAliveList.on(adapterStatus);
                                        }
                                         
                                        // auf .connected Änderungen hören
                                        let connectedSelector = `[id=*.info.connection]`;
                                        let adapterConnectedList = $(connectedSelector);
                                        if (adapterConnectedList.length === 0) {
                                            // Fehlermeldung ausgeben, wenn selector kein result liefert
                                            console.error(`no result for selector '${connectedSelector}'`)
                                        } else {
                                            // listener nur für Änderung bei alive
                                            adapterConnectedList.on(adapterStatus);
                                        }
                                         
                                        // Funktion adapterStatus alle x Sekunden ausführen
                                        schedule('*/' + checkInterval + ' * * * * *', adapterStatus);
                                         
                                        function adapterStatus() {
                                            // Funktion um Status der Adapter abzurufen und als JSON String für das Material Design Widget IconList aufbereiten
                                            let adapterList = [];
                                            let updateList = myHelper().getStateValueIfExist(adminUpdatesList);
                                         
                                            try {
                                                for (var i = 0; i <= adapterAliveList.length - 1; i++) {
                                                    let id = adapterAliveList[i].replace('.alive', '');
                                                    let obj = getObject(adapterAliveList[i].replace('.alive', ''));
                                         
                                                    let nameArray = id.replace('system.adapter.', '').split(".");
                                         
                                                    let name = nameArray[0];
                                                    name = name.charAt(0).toUpperCase() + name.slice(1);
                                         
                                                    let nameWithInstance = name;
                                                    let adapterInstance = nameArray[1];
                                                    if (parseInt(adapterInstance) > 0) {
                                                        nameWithInstance = name + '.' + adapterInstance;
                                                    }
                                         
                                                    let uptime = (existsState(id + '.uptime')) ? moment.duration(getState(id + '.uptime').val, 'seconds').format(formatierungDauer, 0) : '-';
                                                    let image = (myHelper().checkCommonPropertyExist(obj, 'icon')) ? `/${nameArray[0]}.admin/${obj.common.icon}` : 'image-off-outline';
                                                    let newVersion = (updateList && updateList.includes(nameArray[0])) ? '<span class="mdi mdi-update" style="color: #ec0909;"></span>' : '';
                                         
                                                    let text = `<div style="display: flex; flex-direction: row; line-height: 1.5; padding-right: 8px; align-items: center;">
                                                                    <div style="flex: 1">${newVersion} ${nameWithInstance}</div>
                                                                    <div style="color: grey; font-size: 12px; font-family: RobotoCondensed-LightItalic;">${myHelper().getCommonPropertyIfExist(obj, 'version', '-', 'v', '')}</div>
                                                                </div>`
                                         
                                                    let subText = `<div style="display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px; align-items: center;">
                                                                        <div style="flex: 1">CPU</div>
                                                                        <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic;">${myHelper().getStateValueIfExist(id + '.cpu', '-', '', ' %')}</div>
                                                                    </div>
                                                                    <div style="display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px; align-items: center;">
                                                                        <div style="flex: 1">RAM total</div>
                                                                        <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic;">${myHelper().getStateValueIfExist(id + '.memHeapTotal', '-', '', ' MB')}</div>
                                                                    </div>
                                                                    <div style="display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px; align-items: center;">
                                                                        <div style="flex: 1">RAM verwendet</div>
                                                                        <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic;">${myHelper().getStateValueIfExist(id + '.memHeapUsed', '-', '', ' MB')}</div>
                                                                    </div>
                                                                    <div style="display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px; align-items: center;">
                                                                        <div style="flex: 1">RAM reserviert</div>
                                                                        <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic;">${myHelper().getStateValueIfExist(id + '.memRss', '-', '', ' MB')}</div>
                                                                    </div>
                                                                    <div style="display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px; align-items: center;">
                                                                        <div style="flex: 1">Betriebszeit</div>
                                                                        <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic;">${uptime}</div>
                                                                    </div>`
                                         
                                                    adapterList.push({
                                                        text: text,
                                                        subText: subText,
                                                        image: image,
                                                        listType: "buttonState",
                                                        objectId: dpAdapterRestart,
                                                        buttonStateValue: id,
                                                        statusBarColor: getStatusColor(),
                                                        showValueLabel: false,
                                                        name: name
                                                    })
                                         
                                                    function getStatusColor() {
                                                        let statusBarColor = farbeAdapterNichtAktiv;
                                         
                                                        if (myHelper().getStateValueIfExist(adapterAliveList[i]) === 'true') {
                                                            statusBarColor = farbeAdapterAktiv;
                                         
                                                            if (existsState(id.replace('system.adapter.', '') + '.info.connection')) {
                                                                if (!getState(id.replace('system.adapter.', '') + '.info.connection').val) {
                                                                    statusBarColor = farbeAdapterNichtVerbunden;
                                                                }
                                                            } else {
                                                                if (myHelper().getStateValueIfExist(adapterAliveList[i].replace('.alive', '.connected')) === 'false') {
                                                                    statusBarColor = farbeAdapterNichtVerbunden;
                                                                }
                                                            }
                                                        }
                                                
                                                        if (myHelper().getCommonPropertyIfExist(obj, 'enabled', false).toString() === 'false') {
                                                            // Adapter ist deaktiviert
                                                            statusBarColor = farbeAdapterDeaktiviert;
                                                        }
                                         
                                                        if (myHelper().getCommonPropertyIfExist(obj, 'mode') === 'schedule') {
                                                            // Adapter ist zeitgesteuert
                                                            statusBarColor = farbeAdapterZeitgesteuert;
                                                        }
                                         
                                                        return statusBarColor;
                                                    }
                                                }
                                         
                                            } catch (err) {
                                                console.error(`[adapterStatus] error: ${err.message}, stack: ${err.stack}`);
                                            }
                                         
                                            adapterList.sort(function (a, b) {
                                                return a.name == b.name ? 0 : +(a.name > b.name) || -1;
                                            });
                                         
                                            let result = JSON.stringify(adapterList);
                                            if (getState(dpList) !== result) {
                                                setState(dpList, result, true);
                                            }
                                        }
                                         
                                        // Beim Staren des Skriptes Adapter Status abrufen
                                        adapterStatus();
                                         
                                        // Funktion um Adapter zu starten / neu starten
                                        on({ id: dpAdapterRestart }, function (obj) {
                                            var adapter = getObject(obj.state.val.toString());
                                         
                                            if (neustarten) {
                                                if (adapter.common && adapter.common.enabled === false) {
                                                    // Adapter deaktiviert -> starten
                                                    adapter.common.enabled = true;
                                                }
                                            } else {
                                                if (adapter.common && adapter.common.enabled) {
                                                    adapter.common.enabled = !adapter.common.enabled;
                                                } else {
                                                    adapter.common.enabled = true;
                                                }
                                            }
                                         
                                            setObject(obj.state.val, adapter);
                                            console.log(`${obj.state.val.replace('system.adapter.', '')} neugestartet`);
                                        });
                                         
                                         
                                        function myHelper() {
                                            return {
                                                getStateValueIfExist: function (id, nullValue = undefined, prepand = '', append = '') {
                                                    if (existsState(id)) {
                                                        return prepand + getState(id).val + append;
                                                    } else {
                                                        return nullValue;
                                                    }
                                                },
                                                getCommonPropertyIfExist: function (object, prop, nullValue = undefined, prepand = '', append = '') {
                                                    if (myHelper().checkCommonPropertyExist(object, prop)) {
                                                        return prepand + object.common[prop] + append;
                                                    } else {
                                                        return nullValue;
                                                    }
                                                },
                                                checkCommonPropertyExist: function (object, prop) {
                                                    if (object && object.common && object.common[prop]) {
                                                        return true;
                                                    } else {
                                                        return false;
                                                    }
                                                }
                                            }
                                        }
                                        
                                        

                                        js-protokoll
                                        660a47d3-39e1-42ca-b142-b16b2bc35d2f-image.png
                                        3. widget

                                        [{"tpl":"tplVis-materialdesign-Icon-List","data":{"g_fixed":true,"g_visibility":true,"g_css_font_text":false,"g_css_background":true,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","wrapItems":"true","listItemDataMethod":"jsonStringObject","countListItems":"1","vibrateOnMobilDevices":"50","listLayout":"card","itemLayout":"horizontal","listType0":"text","showValueLabel0":"true","listType1":"text","showValueLabel1":"true","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis.0/main/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis.0/main/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis.0/main/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"jsonStringObject":"{0_userdata.0.vis.AdapterStatus.jsonList}","maxItemsperRow":"6","iconHeight":"60","verticalIconContainerWidth":"100","labelFontSize":"20","labelFontFamily":"RobotoCondensed-Regular","iconItemMinWidth":"290","labelFontColor":"#ffffff","valueFontFamily":"","subLabelFontFamily":"RobotoCondensed-Regular","subLabelFontSize":"14","subLabelFontColor":"#ffffff","oid":"0_userdata.0.AdapterStatus.jsonList","label0":"","valueFontSize":"-10","valueFontColor":"#ffffff","itemBackgroundColor":"#202020"},"style":{"left":"28px","top":"79px","width":"812px","height":"655px","overflow-y":"auto","background":"","opacity":"","z-index":"99"},"widgetSet":"materialdesign"}]
                                        
                                        1. ergebnis
                                          6c3a4e56-6e08-4115-a00c-b62fc44923b3-image.png

                                        mir ist aber aufgefallen, wenn ich im vis-editor den objekt-id-dialog öffne, dann fehlen die unter 0_userdata.0, obwohl ich sie ja offensichtlich angelegt habe.

                                        GlasfaserG Online
                                        GlasfaserG Online
                                        Glasfaser
                                        schrieb am zuletzt editiert von
                                        #181

                                        @wasi

                                        Das ist aber nur ein von 4 Widget !!!
                                        Hast du nicht den View von Scrounger importiert !?

                                        hier fehlt schonmal der Datenpunkt , deshalb hast du die Fehlermeldung !

                                        1.JPG

                                        Synology 918+ 16GB - ioBroker in Docker v9 , VISO auf Trekstor Primebook C13 13,3" , Hikvision Domkameras mit Surveillance Station .. CCU RaspberryMatic in Synology VM .. Zigbee CC2538+CC2592 .. Sonoff .. KNX .. Modbus ..

                                        W 1 Antwort Letzte Antwort
                                        0
                                        • Basti97B Offline
                                          Basti97B Offline
                                          Basti97
                                          Most Active
                                          schrieb am zuletzt editiert von Basti97
                                          #182

                                          Muss man das als View einfügen?
                                          Da bei mir nur ein weißes Bild kommt.

                                          Iobroker läuft als VM auf Proxmoxserver x folgende Hersteller im Einsatz Sonoff, Gosund, Siemens x Aofo über Tasmota x Zigbee x das Smarthome wächst und wächst

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


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          348

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          Themen

                                          1.3m

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

                                          • Du hast noch kein Konto? Registrieren

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