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

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

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Praktische Anwendungen (Showcase)
  4. Material Design Widgets: Skript Status

NEWS

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

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

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

Material Design Widgets: Skript Status

Geplant Angeheftet Gesperrt Verschoben Praktische Anwendungen (Showcase)
material design widgetsvisiconlistviewview adapteradapterstatusanzeige
56 Beiträge 13 Kommentatoren 12.9k Aufrufe 29 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 Offline
    ScroungerS Offline
    Scrounger
    Developer
    schrieb am zuletzt editiert von Scrounger
    #1

    Skript zur Anzeige des Status aller Skripte mit dem Material Design IconList Widget

    Mit diesem Skript wird ein json string erzeugt mit dem Status aller Skripte. Diese Daten (Datenpunkt) kann dann im Material Design IconList Widget verwendet werden, um den Status der Skripte im VIS anzuzeigen.

    letzte Aktualierung: 04.03.2020

    Skript_Status.gif

    Voraussetzung:

    • Material Design Widgets v0.2.62

    Funktionen:

    • Anzeige des Status aller Skripte (Aktiviert, Deakitivert, Fehler)
    • Anzeige von Werten der Skripte(Sprache, letzte Änderung, Ordner)
    • Neustarten / Starten / Stoppen von Skripten
    • Sortier und Filter Funktion
    • Einstellungen, siehe im Skript Sektion Einstellungen, Funktion der Einstellungen ist dort als Kommentar beschrieben.

    Ist auch im Online Beispiel enthalten

    View zum importieren:

    {
      "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.SkriptStatus.jsonList",
            "maxItemsperRow": "6",
            "iconItemMinWidth": "280",
            "iconHeight": "35",
            "buttonHeight": "70",
            "labelFontSize": "22",
            "subLabelFontSize": "14",
            "subLabelFontColor": "#000000",
            "labelFontFamily": "RobotoCondensed-Regular",
            "subLabelFontFamily": "RobotoCondensed-Light",
            "horizontalIconContainerWidth": "70"
          },
          "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.SkriptStatus.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\": \"Skriptname\",\n\t\t\"value\": \"name\",\n\t\t\"icon\": \"sort-alphabetical\"\n\t},\n\t{\n\t\t\"text\": \"letzte Änderung\",\n\t\t\"value\": \"lastChange\",\n\t\t\"icon\": \"clock-outline\"\n\t},\n\t{\n\t\t\"text\": \"Status\",\n\t\t\"value\": \"status\",\n\t\t\"icon\": \"information-variant\"\n\t},\n\t{\n\t\t\"text\": \"Ordner\",\n\t\t\"value\": \"folder\",\n\t\t\"icon\": \"folder\"\n\t}\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.SkriptStatus.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\": \"Fehler\",\n\t\t\"value\": \"error\",\n\t\t\"icon\": \"alert-box-outline\"\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]",
            "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": "SkriptStatus",
      "filterList": []
    }
    

    Hier hab ich beschrieben, wie man das layout am besten einstellt:
    https://forum.iobroker.net/topic/30661/material-design-widgets-adapter-status/5

    Skript:

    const moment = require("moment");
    
    // Skript Einstellungen *************************************************************************************************************************************************
    
    let dpList = '0_userdata.0.vis.SkriptStatus.jsonList';                      // Datenpunkt für IconList Widget (Typ: Zeichenkette (String))
    let dpskriptRestart = '0_userdata.0.vis.SkriptStatus.restart';              // Datenpunkt für Skript restart (Typ: Zeichenkette (String))
    
    let dpSortMode = '0_userdata.0.vis.SkriptStatus.sortMode';                  // Datenpunkt für Sortieren (Typ: Zeichenkette (String))
    let dpFilterMode = '0_userdata.0.vis.SkriptStatus.filterMode';              // Datenpunkt für Filter (Typ: Zeichenkette (String))
    
    const checkInterval = 30;                                                   // Interval wie oft Status der Skripte aktualisiert werden soll (in Sekunden)
    
    let sprache = 'de';                                                         // Sprache für formatierung letzte Änderung
    let formatierungLastChange = "ddd DD.MM - HH:mm";                           // Formatierung letzte Änderung -> siehe momentjs library
    
    let neustarten = true;                                                      // true: Skript wird neugestartet, false: Skript wird gestoppt oder gestartet
    
    let farbeSkriptAktiv = 'green';                                             // Status Bar Farbe wenn Skript aktiv ist
    let farbeSkriptDeaktiviert = 'darkgrey';                                    // Status Bar Farbe wenn Skript deaktiviert ist
    let farbeSkriptProblem = 'FireBrick';                                       // Status Bar Farbe wenn Skript Problem hat
    
    let sortResetAfter = 120;                                                   // Sortierung nach X Sekunden auf sortReset zurücksetzen (0=deaktiviert)
    let sortReset = 'name'                                                      // 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 Änderungen aktiver Skripts hören
    let enableSelector = `[id=javascript.*.scriptEnabled.*]`;
    let skriptEnableList = $(enableSelector);
    if (skriptEnableList.length === 0) {
        // Fehlermeldung ausgeben, wenn selector kein result liefert
        console.error(`no result for selector '${enableSelector}'`)
    } else {
        // listener nur für Änderung bei alive
        skriptEnableList.on(skriptStatus);
    }
    
    // auf Änderungen Skripts mit Problemen hören
    let problemSelector = `[id=javascript.*.scriptProblem.*]`;
    let skriptProblemList = $(problemSelector);
    if (skriptProblemList.length === 0) {
        // Fehlermeldung ausgeben, wenn selector kein result liefert
        console.error(`no result for selector '${problemSelector}'`)
    } else {
        // listener nur für Änderung bei alive
        skriptProblemList.on(skriptStatus);
    }
    
    
    // auf Änderungen der Sortieung hören
    on({ id: dpSortMode, change: 'any' }, skriptStatus);
    on({ id: dpSortMode, change: 'any' }, resetSort);
    
    // auf Änderungen der Filter hören
    on({ id: dpFilterMode, change: 'any' }, skriptStatus);
    on({ id: dpFilterMode, change: 'any' }, resetFilter);
    
    
    // Funktion adapterStatus alle x Sekunden ausführen
    schedule('*/' + checkInterval + ' * * * * *', skriptStatus);
    
    function skriptStatus() {
        try {
            skriptList = [];
    
            for (var i = 0; i <= skriptEnableList.length - 1; i++) {
                let id = skriptEnableList[i];
                let obj = getObject(id);
    
                let scriptObj = undefined;
                let scriptName = '';
                let engineType = '';
                let lastChangeText = '';
                let lastChange = 0;
                let image = 'image-off-outline';
                let imageColor = '';
                let statusBarColor = farbeSkriptDeaktiviert;
                let status = 1;
    
    
                if (obj && obj !== null && obj.native && obj.native.script) {
                    scriptObj = getObject(obj.native.script);
    
                    if (scriptObj && scriptObj.common) {
                        if (scriptObj.common.name) {
                            scriptName = scriptObj.common.name;
                        }
    
                        if (scriptObj.common.engineType) {
                            engineType = scriptObj.common.engineType.replace('/js', '').replace('/ts', '');
    
                            if (engineType.toLowerCase() === 'Javascript'.toLowerCase()) {
                                image = 'language-javascript';
                                imageColor = '#ffca28';
                            } else if (engineType.toLowerCase() === 'TypeScript'.toLowerCase()) {
                                image = 'language-typescript';
                                imageColor = '#007acc';
                            } else if (engineType.toLowerCase() === 'Blockly'.toLowerCase()) {
                                image = 'puzzle';
                                imageColor = '#5a80a6';
                            }
                        }
    
                        if (scriptObj.ts) {
                            lastChange = scriptObj.ts;
                            lastChangeText = moment(scriptObj.ts).format(formatierungLastChange);
                        }
    
                        if (scriptObj.common.enabled) {
                            statusBarColor = farbeSkriptAktiv;
                            status = 0;
                        }
    
                        if (myHelper().getStateValueIfExist(id) === 'true') {
                            statusBarColor = farbeSkriptAktiv;
                            status = 0;
                        }
    
                        if (myHelper().getStateValueIfExist(id.replace('.scriptEnabled.', '.scriptProblem.'), false) === 'true') {
                            statusBarColor = farbeSkriptProblem;
                            status = 2;
                        }
    
                        let folder = '-';
                        let folderList = id.replace('javascript.0.scriptEnabled.').split(".");
                        if (folderList.length > 1) {
                            folder = id.replace('javascript.0.scriptEnabled.', '').replace('.' + folderList[folderList.length - 1], '');
                        }
    
                        let text = scriptName;
                        if (status === 2) {
                            text = `<span class="mdi mdi-alert-box-outline" style="color: #ec0909;"></span> ${scriptName}`
                        }
    
                        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;">Sprache</div>
                                            <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic; text-align: right;">${engineType}</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;">letzte Änderung</div>
                                            <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic; text-align: right;">${lastChangeText}</div>
                                        </div>
                                        <div style="display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px;">
                                            <div style="flex: 1;">Ordner</div>
                                            <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic; text-overflow: ellipsis; white-space: normal; text-align: right;">${folder}</div>
                                        </div>`
    
                        skriptList.push({
                            text: text,
                            subText: subText,
                            statusBarColor: statusBarColor,
                            image: image,
                            imageColor: imageColor,
                            listType: "buttonState",
                            objectId: dpskriptRestart,
                            buttonStateValue: (obj && obj !== null && obj.native && obj.native.script) ? obj.native.script : '',
                            showValueLabel: false,
                            name: scriptName,
                            lastChange: lastChange,
                            status: status,
                            folder: folder
                        });
                    }
                }
            }
    
            let sortMode = myHelper().getStateValueIfExist(dpSortMode, 'name');
    
            if (sortMode === 'name') {
                skriptList.sort(function (a, b) {
                    return a[sortMode].toLowerCase() == b[sortMode].toLowerCase() ? 0 : +(a[sortMode].toLowerCase() > b[sortMode].toLowerCase()) || -1;
                });
            } else if (sortMode === 'lastChange' || sortMode === 'status' || sortMode === 'folder') {
                skriptList.sort(function (a, b) {
                    return a[sortMode] == b[sortMode] ? 0 : +(a[sortMode] < b[sortMode]) || -1;
                });
            } else {
                // default: nach name sortieren
                sortMode = 'name'
                skriptList.sort(function (a, b) {
                    return a[sortMode].toLowerCase() == b[sortMode].toLowerCase() ? 0 : +(a[sortMode].toLowerCase() > b[sortMode].toLowerCase()) || -1;
                });
            }
    
    
            let filterMode = myHelper().getStateValueIfExist(dpFilterMode, null);
    
            if (filterMode && filterMode !== null && filterMode !== '') {
                if (filterMode === 'error') {
                    skriptList = skriptList.filter(function (item) {
                        return item.status === 2;
                    });
                } else if (filterMode === 'deactivated') {
                    skriptList = skriptList.filter(function (item) {
                        return item.status === 1;
                    });
                } else if (filterMode === 'activated') {
                    skriptList = skriptList.filter(function (item) {
                        return item.status === 0;
                    });
                }
            }
    
    
            let result = JSON.stringify(skriptList);
            if (existsState(dpList) && getState(dpList).val !== result) {
                setState(dpList, result, true);
            } else {
                setState(dpList, result, true);
            }
    
        } catch (err) {
            console.error(`[skriptStatus] error: ${err.message}, stack: ${err.stack}`);
        }
    }
    
    
    // // Funktion um Skript starten / Stoppen
    on({ id: dpskriptRestart }, function (obj) {
        var scriptObj = getObject(obj.state.val.toString());
    
        if (neustarten) {
            scriptObj.common.enabled = true;
            setObject(obj.state.val.toString(), scriptObj);
        }
        else {
            if (scriptObj && scriptObj.common) {
    
                if (scriptObj.common.enabled) {
                    scriptObj.common.enabled = false;
                } else {
                    scriptObj.common.enabled = true;
                }
    
                setObject(obj.state.val.toString(), scriptObj);
            }
        }
    });
    
    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);
        }
    }
    
    // Beim Staren des Skriptes Adapter Status abrufen
    skriptStatus();
    
    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;
                }
            }
        }
    }
    

    Benötigte libraries & Einstellungen im Javascript Adapter:
    6222b915-4e9e-4025-98ec-0baedcaed5b1-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>

    sigi234S ub.privatU D3ltoroxpD GarganoG 4 Antworten Letzte Antwort
    6
    • NegaleinN Offline
      NegaleinN Offline
      Negalein
      Global Moderator
      schrieb am zuletzt editiert von
      #2

      Danke für das Script.

      läuft so perfekt wie die Adapterliste!

      vis (41).png

      ° Node.js: 20.17.0 NPM: 10.8.2
      ° Proxmox, Ubuntu 22.04.3 LTS
      ° Fixer ---> iob fix

      1 Antwort Letzte Antwort
      0
      • ScroungerS Scrounger

        Skript zur Anzeige des Status aller Skripte mit dem Material Design IconList Widget

        Mit diesem Skript wird ein json string erzeugt mit dem Status aller Skripte. Diese Daten (Datenpunkt) kann dann im Material Design IconList Widget verwendet werden, um den Status der Skripte im VIS anzuzeigen.

        letzte Aktualierung: 04.03.2020

        Skript_Status.gif

        Voraussetzung:

        • Material Design Widgets v0.2.62

        Funktionen:

        • Anzeige des Status aller Skripte (Aktiviert, Deakitivert, Fehler)
        • Anzeige von Werten der Skripte(Sprache, letzte Änderung, Ordner)
        • Neustarten / Starten / Stoppen von Skripten
        • Sortier und Filter Funktion
        • Einstellungen, siehe im Skript Sektion Einstellungen, Funktion der Einstellungen ist dort als Kommentar beschrieben.

        Ist auch im Online Beispiel enthalten

        View zum importieren:

        {
          "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.SkriptStatus.jsonList",
                "maxItemsperRow": "6",
                "iconItemMinWidth": "280",
                "iconHeight": "35",
                "buttonHeight": "70",
                "labelFontSize": "22",
                "subLabelFontSize": "14",
                "subLabelFontColor": "#000000",
                "labelFontFamily": "RobotoCondensed-Regular",
                "subLabelFontFamily": "RobotoCondensed-Light",
                "horizontalIconContainerWidth": "70"
              },
              "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.SkriptStatus.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\": \"Skriptname\",\n\t\t\"value\": \"name\",\n\t\t\"icon\": \"sort-alphabetical\"\n\t},\n\t{\n\t\t\"text\": \"letzte Änderung\",\n\t\t\"value\": \"lastChange\",\n\t\t\"icon\": \"clock-outline\"\n\t},\n\t{\n\t\t\"text\": \"Status\",\n\t\t\"value\": \"status\",\n\t\t\"icon\": \"information-variant\"\n\t},\n\t{\n\t\t\"text\": \"Ordner\",\n\t\t\"value\": \"folder\",\n\t\t\"icon\": \"folder\"\n\t}\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.SkriptStatus.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\": \"Fehler\",\n\t\t\"value\": \"error\",\n\t\t\"icon\": \"alert-box-outline\"\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]",
                "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": "SkriptStatus",
          "filterList": []
        }
        

        Hier hab ich beschrieben, wie man das layout am besten einstellt:
        https://forum.iobroker.net/topic/30661/material-design-widgets-adapter-status/5

        Skript:

        const moment = require("moment");
        
        // Skript Einstellungen *************************************************************************************************************************************************
        
        let dpList = '0_userdata.0.vis.SkriptStatus.jsonList';                      // Datenpunkt für IconList Widget (Typ: Zeichenkette (String))
        let dpskriptRestart = '0_userdata.0.vis.SkriptStatus.restart';              // Datenpunkt für Skript restart (Typ: Zeichenkette (String))
        
        let dpSortMode = '0_userdata.0.vis.SkriptStatus.sortMode';                  // Datenpunkt für Sortieren (Typ: Zeichenkette (String))
        let dpFilterMode = '0_userdata.0.vis.SkriptStatus.filterMode';              // Datenpunkt für Filter (Typ: Zeichenkette (String))
        
        const checkInterval = 30;                                                   // Interval wie oft Status der Skripte aktualisiert werden soll (in Sekunden)
        
        let sprache = 'de';                                                         // Sprache für formatierung letzte Änderung
        let formatierungLastChange = "ddd DD.MM - HH:mm";                           // Formatierung letzte Änderung -> siehe momentjs library
        
        let neustarten = true;                                                      // true: Skript wird neugestartet, false: Skript wird gestoppt oder gestartet
        
        let farbeSkriptAktiv = 'green';                                             // Status Bar Farbe wenn Skript aktiv ist
        let farbeSkriptDeaktiviert = 'darkgrey';                                    // Status Bar Farbe wenn Skript deaktiviert ist
        let farbeSkriptProblem = 'FireBrick';                                       // Status Bar Farbe wenn Skript Problem hat
        
        let sortResetAfter = 120;                                                   // Sortierung nach X Sekunden auf sortReset zurücksetzen (0=deaktiviert)
        let sortReset = 'name'                                                      // 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 Änderungen aktiver Skripts hören
        let enableSelector = `[id=javascript.*.scriptEnabled.*]`;
        let skriptEnableList = $(enableSelector);
        if (skriptEnableList.length === 0) {
            // Fehlermeldung ausgeben, wenn selector kein result liefert
            console.error(`no result for selector '${enableSelector}'`)
        } else {
            // listener nur für Änderung bei alive
            skriptEnableList.on(skriptStatus);
        }
        
        // auf Änderungen Skripts mit Problemen hören
        let problemSelector = `[id=javascript.*.scriptProblem.*]`;
        let skriptProblemList = $(problemSelector);
        if (skriptProblemList.length === 0) {
            // Fehlermeldung ausgeben, wenn selector kein result liefert
            console.error(`no result for selector '${problemSelector}'`)
        } else {
            // listener nur für Änderung bei alive
            skriptProblemList.on(skriptStatus);
        }
        
        
        // auf Änderungen der Sortieung hören
        on({ id: dpSortMode, change: 'any' }, skriptStatus);
        on({ id: dpSortMode, change: 'any' }, resetSort);
        
        // auf Änderungen der Filter hören
        on({ id: dpFilterMode, change: 'any' }, skriptStatus);
        on({ id: dpFilterMode, change: 'any' }, resetFilter);
        
        
        // Funktion adapterStatus alle x Sekunden ausführen
        schedule('*/' + checkInterval + ' * * * * *', skriptStatus);
        
        function skriptStatus() {
            try {
                skriptList = [];
        
                for (var i = 0; i <= skriptEnableList.length - 1; i++) {
                    let id = skriptEnableList[i];
                    let obj = getObject(id);
        
                    let scriptObj = undefined;
                    let scriptName = '';
                    let engineType = '';
                    let lastChangeText = '';
                    let lastChange = 0;
                    let image = 'image-off-outline';
                    let imageColor = '';
                    let statusBarColor = farbeSkriptDeaktiviert;
                    let status = 1;
        
        
                    if (obj && obj !== null && obj.native && obj.native.script) {
                        scriptObj = getObject(obj.native.script);
        
                        if (scriptObj && scriptObj.common) {
                            if (scriptObj.common.name) {
                                scriptName = scriptObj.common.name;
                            }
        
                            if (scriptObj.common.engineType) {
                                engineType = scriptObj.common.engineType.replace('/js', '').replace('/ts', '');
        
                                if (engineType.toLowerCase() === 'Javascript'.toLowerCase()) {
                                    image = 'language-javascript';
                                    imageColor = '#ffca28';
                                } else if (engineType.toLowerCase() === 'TypeScript'.toLowerCase()) {
                                    image = 'language-typescript';
                                    imageColor = '#007acc';
                                } else if (engineType.toLowerCase() === 'Blockly'.toLowerCase()) {
                                    image = 'puzzle';
                                    imageColor = '#5a80a6';
                                }
                            }
        
                            if (scriptObj.ts) {
                                lastChange = scriptObj.ts;
                                lastChangeText = moment(scriptObj.ts).format(formatierungLastChange);
                            }
        
                            if (scriptObj.common.enabled) {
                                statusBarColor = farbeSkriptAktiv;
                                status = 0;
                            }
        
                            if (myHelper().getStateValueIfExist(id) === 'true') {
                                statusBarColor = farbeSkriptAktiv;
                                status = 0;
                            }
        
                            if (myHelper().getStateValueIfExist(id.replace('.scriptEnabled.', '.scriptProblem.'), false) === 'true') {
                                statusBarColor = farbeSkriptProblem;
                                status = 2;
                            }
        
                            let folder = '-';
                            let folderList = id.replace('javascript.0.scriptEnabled.').split(".");
                            if (folderList.length > 1) {
                                folder = id.replace('javascript.0.scriptEnabled.', '').replace('.' + folderList[folderList.length - 1], '');
                            }
        
                            let text = scriptName;
                            if (status === 2) {
                                text = `<span class="mdi mdi-alert-box-outline" style="color: #ec0909;"></span> ${scriptName}`
                            }
        
                            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;">Sprache</div>
                                                <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic; text-align: right;">${engineType}</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;">letzte Änderung</div>
                                                <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic; text-align: right;">${lastChangeText}</div>
                                            </div>
                                            <div style="display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px;">
                                                <div style="flex: 1;">Ordner</div>
                                                <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic; text-overflow: ellipsis; white-space: normal; text-align: right;">${folder}</div>
                                            </div>`
        
                            skriptList.push({
                                text: text,
                                subText: subText,
                                statusBarColor: statusBarColor,
                                image: image,
                                imageColor: imageColor,
                                listType: "buttonState",
                                objectId: dpskriptRestart,
                                buttonStateValue: (obj && obj !== null && obj.native && obj.native.script) ? obj.native.script : '',
                                showValueLabel: false,
                                name: scriptName,
                                lastChange: lastChange,
                                status: status,
                                folder: folder
                            });
                        }
                    }
                }
        
                let sortMode = myHelper().getStateValueIfExist(dpSortMode, 'name');
        
                if (sortMode === 'name') {
                    skriptList.sort(function (a, b) {
                        return a[sortMode].toLowerCase() == b[sortMode].toLowerCase() ? 0 : +(a[sortMode].toLowerCase() > b[sortMode].toLowerCase()) || -1;
                    });
                } else if (sortMode === 'lastChange' || sortMode === 'status' || sortMode === 'folder') {
                    skriptList.sort(function (a, b) {
                        return a[sortMode] == b[sortMode] ? 0 : +(a[sortMode] < b[sortMode]) || -1;
                    });
                } else {
                    // default: nach name sortieren
                    sortMode = 'name'
                    skriptList.sort(function (a, b) {
                        return a[sortMode].toLowerCase() == b[sortMode].toLowerCase() ? 0 : +(a[sortMode].toLowerCase() > b[sortMode].toLowerCase()) || -1;
                    });
                }
        
        
                let filterMode = myHelper().getStateValueIfExist(dpFilterMode, null);
        
                if (filterMode && filterMode !== null && filterMode !== '') {
                    if (filterMode === 'error') {
                        skriptList = skriptList.filter(function (item) {
                            return item.status === 2;
                        });
                    } else if (filterMode === 'deactivated') {
                        skriptList = skriptList.filter(function (item) {
                            return item.status === 1;
                        });
                    } else if (filterMode === 'activated') {
                        skriptList = skriptList.filter(function (item) {
                            return item.status === 0;
                        });
                    }
                }
        
        
                let result = JSON.stringify(skriptList);
                if (existsState(dpList) && getState(dpList).val !== result) {
                    setState(dpList, result, true);
                } else {
                    setState(dpList, result, true);
                }
        
            } catch (err) {
                console.error(`[skriptStatus] error: ${err.message}, stack: ${err.stack}`);
            }
        }
        
        
        // // Funktion um Skript starten / Stoppen
        on({ id: dpskriptRestart }, function (obj) {
            var scriptObj = getObject(obj.state.val.toString());
        
            if (neustarten) {
                scriptObj.common.enabled = true;
                setObject(obj.state.val.toString(), scriptObj);
            }
            else {
                if (scriptObj && scriptObj.common) {
        
                    if (scriptObj.common.enabled) {
                        scriptObj.common.enabled = false;
                    } else {
                        scriptObj.common.enabled = true;
                    }
        
                    setObject(obj.state.val.toString(), scriptObj);
                }
            }
        });
        
        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);
            }
        }
        
        // Beim Staren des Skriptes Adapter Status abrufen
        skriptStatus();
        
        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;
                    }
                }
            }
        }
        

        Benötigte libraries & Einstellungen im Javascript Adapter:
        6222b915-4e9e-4025-98ec-0baedcaed5b1-grafik.png

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

        @Scrounger

        Wie kann ich die Schriftgröße vom Adaptername ändern?

        Erledigt.

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

        1 Antwort Letzte Antwort
        0
        • ScroungerS Scrounger

          Skript zur Anzeige des Status aller Skripte mit dem Material Design IconList Widget

          Mit diesem Skript wird ein json string erzeugt mit dem Status aller Skripte. Diese Daten (Datenpunkt) kann dann im Material Design IconList Widget verwendet werden, um den Status der Skripte im VIS anzuzeigen.

          letzte Aktualierung: 04.03.2020

          Skript_Status.gif

          Voraussetzung:

          • Material Design Widgets v0.2.62

          Funktionen:

          • Anzeige des Status aller Skripte (Aktiviert, Deakitivert, Fehler)
          • Anzeige von Werten der Skripte(Sprache, letzte Änderung, Ordner)
          • Neustarten / Starten / Stoppen von Skripten
          • Sortier und Filter Funktion
          • Einstellungen, siehe im Skript Sektion Einstellungen, Funktion der Einstellungen ist dort als Kommentar beschrieben.

          Ist auch im Online Beispiel enthalten

          View zum importieren:

          {
            "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.SkriptStatus.jsonList",
                  "maxItemsperRow": "6",
                  "iconItemMinWidth": "280",
                  "iconHeight": "35",
                  "buttonHeight": "70",
                  "labelFontSize": "22",
                  "subLabelFontSize": "14",
                  "subLabelFontColor": "#000000",
                  "labelFontFamily": "RobotoCondensed-Regular",
                  "subLabelFontFamily": "RobotoCondensed-Light",
                  "horizontalIconContainerWidth": "70"
                },
                "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.SkriptStatus.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\": \"Skriptname\",\n\t\t\"value\": \"name\",\n\t\t\"icon\": \"sort-alphabetical\"\n\t},\n\t{\n\t\t\"text\": \"letzte Änderung\",\n\t\t\"value\": \"lastChange\",\n\t\t\"icon\": \"clock-outline\"\n\t},\n\t{\n\t\t\"text\": \"Status\",\n\t\t\"value\": \"status\",\n\t\t\"icon\": \"information-variant\"\n\t},\n\t{\n\t\t\"text\": \"Ordner\",\n\t\t\"value\": \"folder\",\n\t\t\"icon\": \"folder\"\n\t}\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.SkriptStatus.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\": \"Fehler\",\n\t\t\"value\": \"error\",\n\t\t\"icon\": \"alert-box-outline\"\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]",
                  "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": "SkriptStatus",
            "filterList": []
          }
          

          Hier hab ich beschrieben, wie man das layout am besten einstellt:
          https://forum.iobroker.net/topic/30661/material-design-widgets-adapter-status/5

          Skript:

          const moment = require("moment");
          
          // Skript Einstellungen *************************************************************************************************************************************************
          
          let dpList = '0_userdata.0.vis.SkriptStatus.jsonList';                      // Datenpunkt für IconList Widget (Typ: Zeichenkette (String))
          let dpskriptRestart = '0_userdata.0.vis.SkriptStatus.restart';              // Datenpunkt für Skript restart (Typ: Zeichenkette (String))
          
          let dpSortMode = '0_userdata.0.vis.SkriptStatus.sortMode';                  // Datenpunkt für Sortieren (Typ: Zeichenkette (String))
          let dpFilterMode = '0_userdata.0.vis.SkriptStatus.filterMode';              // Datenpunkt für Filter (Typ: Zeichenkette (String))
          
          const checkInterval = 30;                                                   // Interval wie oft Status der Skripte aktualisiert werden soll (in Sekunden)
          
          let sprache = 'de';                                                         // Sprache für formatierung letzte Änderung
          let formatierungLastChange = "ddd DD.MM - HH:mm";                           // Formatierung letzte Änderung -> siehe momentjs library
          
          let neustarten = true;                                                      // true: Skript wird neugestartet, false: Skript wird gestoppt oder gestartet
          
          let farbeSkriptAktiv = 'green';                                             // Status Bar Farbe wenn Skript aktiv ist
          let farbeSkriptDeaktiviert = 'darkgrey';                                    // Status Bar Farbe wenn Skript deaktiviert ist
          let farbeSkriptProblem = 'FireBrick';                                       // Status Bar Farbe wenn Skript Problem hat
          
          let sortResetAfter = 120;                                                   // Sortierung nach X Sekunden auf sortReset zurücksetzen (0=deaktiviert)
          let sortReset = 'name'                                                      // 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 Änderungen aktiver Skripts hören
          let enableSelector = `[id=javascript.*.scriptEnabled.*]`;
          let skriptEnableList = $(enableSelector);
          if (skriptEnableList.length === 0) {
              // Fehlermeldung ausgeben, wenn selector kein result liefert
              console.error(`no result for selector '${enableSelector}'`)
          } else {
              // listener nur für Änderung bei alive
              skriptEnableList.on(skriptStatus);
          }
          
          // auf Änderungen Skripts mit Problemen hören
          let problemSelector = `[id=javascript.*.scriptProblem.*]`;
          let skriptProblemList = $(problemSelector);
          if (skriptProblemList.length === 0) {
              // Fehlermeldung ausgeben, wenn selector kein result liefert
              console.error(`no result for selector '${problemSelector}'`)
          } else {
              // listener nur für Änderung bei alive
              skriptProblemList.on(skriptStatus);
          }
          
          
          // auf Änderungen der Sortieung hören
          on({ id: dpSortMode, change: 'any' }, skriptStatus);
          on({ id: dpSortMode, change: 'any' }, resetSort);
          
          // auf Änderungen der Filter hören
          on({ id: dpFilterMode, change: 'any' }, skriptStatus);
          on({ id: dpFilterMode, change: 'any' }, resetFilter);
          
          
          // Funktion adapterStatus alle x Sekunden ausführen
          schedule('*/' + checkInterval + ' * * * * *', skriptStatus);
          
          function skriptStatus() {
              try {
                  skriptList = [];
          
                  for (var i = 0; i <= skriptEnableList.length - 1; i++) {
                      let id = skriptEnableList[i];
                      let obj = getObject(id);
          
                      let scriptObj = undefined;
                      let scriptName = '';
                      let engineType = '';
                      let lastChangeText = '';
                      let lastChange = 0;
                      let image = 'image-off-outline';
                      let imageColor = '';
                      let statusBarColor = farbeSkriptDeaktiviert;
                      let status = 1;
          
          
                      if (obj && obj !== null && obj.native && obj.native.script) {
                          scriptObj = getObject(obj.native.script);
          
                          if (scriptObj && scriptObj.common) {
                              if (scriptObj.common.name) {
                                  scriptName = scriptObj.common.name;
                              }
          
                              if (scriptObj.common.engineType) {
                                  engineType = scriptObj.common.engineType.replace('/js', '').replace('/ts', '');
          
                                  if (engineType.toLowerCase() === 'Javascript'.toLowerCase()) {
                                      image = 'language-javascript';
                                      imageColor = '#ffca28';
                                  } else if (engineType.toLowerCase() === 'TypeScript'.toLowerCase()) {
                                      image = 'language-typescript';
                                      imageColor = '#007acc';
                                  } else if (engineType.toLowerCase() === 'Blockly'.toLowerCase()) {
                                      image = 'puzzle';
                                      imageColor = '#5a80a6';
                                  }
                              }
          
                              if (scriptObj.ts) {
                                  lastChange = scriptObj.ts;
                                  lastChangeText = moment(scriptObj.ts).format(formatierungLastChange);
                              }
          
                              if (scriptObj.common.enabled) {
                                  statusBarColor = farbeSkriptAktiv;
                                  status = 0;
                              }
          
                              if (myHelper().getStateValueIfExist(id) === 'true') {
                                  statusBarColor = farbeSkriptAktiv;
                                  status = 0;
                              }
          
                              if (myHelper().getStateValueIfExist(id.replace('.scriptEnabled.', '.scriptProblem.'), false) === 'true') {
                                  statusBarColor = farbeSkriptProblem;
                                  status = 2;
                              }
          
                              let folder = '-';
                              let folderList = id.replace('javascript.0.scriptEnabled.').split(".");
                              if (folderList.length > 1) {
                                  folder = id.replace('javascript.0.scriptEnabled.', '').replace('.' + folderList[folderList.length - 1], '');
                              }
          
                              let text = scriptName;
                              if (status === 2) {
                                  text = `<span class="mdi mdi-alert-box-outline" style="color: #ec0909;"></span> ${scriptName}`
                              }
          
                              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;">Sprache</div>
                                                  <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic; text-align: right;">${engineType}</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;">letzte Änderung</div>
                                                  <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic; text-align: right;">${lastChangeText}</div>
                                              </div>
                                              <div style="display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px;">
                                                  <div style="flex: 1;">Ordner</div>
                                                  <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic; text-overflow: ellipsis; white-space: normal; text-align: right;">${folder}</div>
                                              </div>`
          
                              skriptList.push({
                                  text: text,
                                  subText: subText,
                                  statusBarColor: statusBarColor,
                                  image: image,
                                  imageColor: imageColor,
                                  listType: "buttonState",
                                  objectId: dpskriptRestart,
                                  buttonStateValue: (obj && obj !== null && obj.native && obj.native.script) ? obj.native.script : '',
                                  showValueLabel: false,
                                  name: scriptName,
                                  lastChange: lastChange,
                                  status: status,
                                  folder: folder
                              });
                          }
                      }
                  }
          
                  let sortMode = myHelper().getStateValueIfExist(dpSortMode, 'name');
          
                  if (sortMode === 'name') {
                      skriptList.sort(function (a, b) {
                          return a[sortMode].toLowerCase() == b[sortMode].toLowerCase() ? 0 : +(a[sortMode].toLowerCase() > b[sortMode].toLowerCase()) || -1;
                      });
                  } else if (sortMode === 'lastChange' || sortMode === 'status' || sortMode === 'folder') {
                      skriptList.sort(function (a, b) {
                          return a[sortMode] == b[sortMode] ? 0 : +(a[sortMode] < b[sortMode]) || -1;
                      });
                  } else {
                      // default: nach name sortieren
                      sortMode = 'name'
                      skriptList.sort(function (a, b) {
                          return a[sortMode].toLowerCase() == b[sortMode].toLowerCase() ? 0 : +(a[sortMode].toLowerCase() > b[sortMode].toLowerCase()) || -1;
                      });
                  }
          
          
                  let filterMode = myHelper().getStateValueIfExist(dpFilterMode, null);
          
                  if (filterMode && filterMode !== null && filterMode !== '') {
                      if (filterMode === 'error') {
                          skriptList = skriptList.filter(function (item) {
                              return item.status === 2;
                          });
                      } else if (filterMode === 'deactivated') {
                          skriptList = skriptList.filter(function (item) {
                              return item.status === 1;
                          });
                      } else if (filterMode === 'activated') {
                          skriptList = skriptList.filter(function (item) {
                              return item.status === 0;
                          });
                      }
                  }
          
          
                  let result = JSON.stringify(skriptList);
                  if (existsState(dpList) && getState(dpList).val !== result) {
                      setState(dpList, result, true);
                  } else {
                      setState(dpList, result, true);
                  }
          
              } catch (err) {
                  console.error(`[skriptStatus] error: ${err.message}, stack: ${err.stack}`);
              }
          }
          
          
          // // Funktion um Skript starten / Stoppen
          on({ id: dpskriptRestart }, function (obj) {
              var scriptObj = getObject(obj.state.val.toString());
          
              if (neustarten) {
                  scriptObj.common.enabled = true;
                  setObject(obj.state.val.toString(), scriptObj);
              }
              else {
                  if (scriptObj && scriptObj.common) {
          
                      if (scriptObj.common.enabled) {
                          scriptObj.common.enabled = false;
                      } else {
                          scriptObj.common.enabled = true;
                      }
          
                      setObject(obj.state.val.toString(), scriptObj);
                  }
              }
          });
          
          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);
              }
          }
          
          // Beim Staren des Skriptes Adapter Status abrufen
          skriptStatus();
          
          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;
                      }
                  }
              }
          }
          

          Benötigte libraries & Einstellungen im Javascript Adapter:
          6222b915-4e9e-4025-98ec-0baedcaed5b1-grafik.png

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

          @Scrounger

          Hallo Scrounger,

          in der javasript-Adaptereinstellung, ist der Dateipfad "Spiegeln von Scripten in Dateipfad" willkürlich gewählt? (D:\iobroker\devBroker\scripts)
          Oder ist es ein fest definiert Pfad? Auf meinem RP4 ist dieser nicht vorhanden.
          Er ist sicherlich anzulegen???

          Daher kommt bestimmt auch meine Warnmeldung im Script:

          3.3.2020, 19:09:30.235	[warn ]: javascript.0 (13979)     at Object.skriptStatus (script.js.ScriptStatus_MaterialDesignWidget:211:13)
          3.3.2020, 19:09:30.240	[warn ]: javascript.0 (13979)     at Object.skriptStatus (script.js.ScriptStatus_MaterialDesignWidget:212:13)
          3.3.2020, 19:09:41.022	[info ]: javascript.0 (13979) Stop script script.js.ScriptStatus_MaterialDesignWidget
          3.3.2020, 19:09:41.175	[info ]: javascript.0 (13979) Start javascript script.js.ScriptStatus_MaterialDesignWidget
          3.3.2020, 19:09:41.217	[warn ]: javascript.0 (13979)     at skriptStatus (script.js.ScriptStatus_MaterialDesignWidget:211:13)
          3.3.2020, 19:09:41.217	[warn ]: javascript.0 (13979)     at script.js.ScriptStatus_MaterialDesignWidget:268:1
          3.3.2020, 19:09:41.219	[warn ]: javascript.0 (13979)     at skriptStatus (script.js.ScriptStatus_MaterialDesignWidget:212:13)
          3.3.2020, 19:09:41.219	[warn ]: javascript.0 (13979)     at script.js.ScriptStatus_MaterialDesignWidget:268:1
          3.3.2020, 19:09:41.219	[info ]: javascript.0 (13979) script.js.ScriptStatus_MaterialDesignWidget: registered 34 subscriptions and 1 schedule
          

          04af3732-20cc-4856-b391-08eec326d270-grafik.png

          Hoffe nicht, dass es wieder "Schreibfehler" sind... :face_with_rolling_eyes: :confounded:

          Hier die DP's

          13504f39-cd78-4a9f-8505-9e7b71ccb570-grafik.png
          Leider ohne Werte????

          ScroungerS GlasfaserG 2 Antworten Letzte Antwort
          0
          • ub.privatU ub.privat

            @Scrounger

            Hallo Scrounger,

            in der javasript-Adaptereinstellung, ist der Dateipfad "Spiegeln von Scripten in Dateipfad" willkürlich gewählt? (D:\iobroker\devBroker\scripts)
            Oder ist es ein fest definiert Pfad? Auf meinem RP4 ist dieser nicht vorhanden.
            Er ist sicherlich anzulegen???

            Daher kommt bestimmt auch meine Warnmeldung im Script:

            3.3.2020, 19:09:30.235	[warn ]: javascript.0 (13979)     at Object.skriptStatus (script.js.ScriptStatus_MaterialDesignWidget:211:13)
            3.3.2020, 19:09:30.240	[warn ]: javascript.0 (13979)     at Object.skriptStatus (script.js.ScriptStatus_MaterialDesignWidget:212:13)
            3.3.2020, 19:09:41.022	[info ]: javascript.0 (13979) Stop script script.js.ScriptStatus_MaterialDesignWidget
            3.3.2020, 19:09:41.175	[info ]: javascript.0 (13979) Start javascript script.js.ScriptStatus_MaterialDesignWidget
            3.3.2020, 19:09:41.217	[warn ]: javascript.0 (13979)     at skriptStatus (script.js.ScriptStatus_MaterialDesignWidget:211:13)
            3.3.2020, 19:09:41.217	[warn ]: javascript.0 (13979)     at script.js.ScriptStatus_MaterialDesignWidget:268:1
            3.3.2020, 19:09:41.219	[warn ]: javascript.0 (13979)     at skriptStatus (script.js.ScriptStatus_MaterialDesignWidget:212:13)
            3.3.2020, 19:09:41.219	[warn ]: javascript.0 (13979)     at script.js.ScriptStatus_MaterialDesignWidget:268:1
            3.3.2020, 19:09:41.219	[info ]: javascript.0 (13979) script.js.ScriptStatus_MaterialDesignWidget: registered 34 subscriptions and 1 schedule
            

            04af3732-20cc-4856-b391-08eec326d270-grafik.png

            Hoffe nicht, dass es wieder "Schreibfehler" sind... :face_with_rolling_eyes: :confounded:

            Hier die DP's

            13504f39-cd78-4a9f-8505-9e7b71ccb570-grafik.png
            Leider ohne Werte????

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

            @ub-privat
            Schreib Mal irgend einen Wert in dentanepumkt jsonList, dann müsste es gehen.

            <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

              @ub-privat
              Schreib Mal irgend einen Wert in dentanepumkt jsonList, dann müsste es gehen.

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

              @Scrounger

              geschrieben und getan.
              Hab mal "100" eingetragen, ist ja irgendein Wert, aber so wirklich tut sich nichts. Leider...

              Scripte laufen aber:
              c3dacb8a-0320-4555-ad01-2ab462c05729-grafik.png

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

                @Scrounger

                geschrieben und getan.
                Hab mal "100" eingetragen, ist ja irgendein Wert, aber so wirklich tut sich nichts. Leider...

                Scripte laufen aber:
                c3dacb8a-0320-4555-ad01-2ab462c05729-grafik.png

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

                @ub-privat
                Skript hast du danach neugestartet?

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

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

                GlasfaserG ub.privatU 2 Antworten Letzte Antwort
                0
                • ScroungerS Scrounger

                  @ub-privat
                  Skript hast du danach neugestartet?

                  GlasfaserG Offline
                  GlasfaserG Offline
                  Glasfaser
                  schrieb am zuletzt editiert von Glasfaser
                  #8

                  @Scrounger

                  Leider bricht mein System zusammen , sobald ich das Skript starte .

                  Ein haufen Warnmeldungen kommen regelmäßig .. die Tabelle wird träge gefüllt
                  und wenn man im VIS EDITOR ist auf der View , bricht das System auch zusammen .
                  Das Umschalten ist auch sehr träge bzw . funktioniert nicht .

                  Habe schon alles versucht , finde aber kein Fehler .

                  Auszug :

                  1.JPG

                  Da kommen Ordner , die kenne ich gar nicht :

                  2.JPG

                  Hier nach Zeit x , aber danach ist nichts mehr möglich , muß das Skript stoppen !
                  .
                  4.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 ..

                  ScroungerS 1 Antwort Letzte Antwort
                  0
                  • GlasfaserG Glasfaser

                    @Scrounger

                    Leider bricht mein System zusammen , sobald ich das Skript starte .

                    Ein haufen Warnmeldungen kommen regelmäßig .. die Tabelle wird träge gefüllt
                    und wenn man im VIS EDITOR ist auf der View , bricht das System auch zusammen .
                    Das Umschalten ist auch sehr träge bzw . funktioniert nicht .

                    Habe schon alles versucht , finde aber kein Fehler .

                    Auszug :

                    1.JPG

                    Da kommen Ordner , die kenne ich gar nicht :

                    2.JPG

                    Hier nach Zeit x , aber danach ist nichts mehr möglich , muß das Skript stoppen !
                    .
                    4.JPG

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

                    @Glasfaser

                    Test mal bitte das skript:

                    const moment = require("moment");
                    
                    // Skript Einstellungen *************************************************************************************************************************************************
                    
                    let dpList = '0_userdata.0.vis.SkriptStatus.jsonList';                      // Datenpunkt für IconList Widget (Typ: Zeichenkette (String))
                    let dpskriptRestart = '0_userdata.0.vis.SkriptStatus.restart';              // Datenpunkt für Skript restart (Typ: Zeichenkette (String))
                    
                    let dpSortMode = '0_userdata.0.vis.SkriptStatus.sortMode';                  // Datenpunkt für Sortieren (Typ: Zeichenkette (String))
                    let dpFilterMode = '0_userdata.0.vis.SkriptStatus.filterMode';              // Datenpunkt für Filter (Typ: Zeichenkette (String))
                    
                    const checkInterval = 30;                                                   // Interval wie oft Status der Skripte aktualisiert werden soll (in Sekunden)
                    
                    let sprache = 'de';                                                         // Sprache für formatierung letzte Änderung
                    let formatierungLastChange = "ddd DD.MM - HH:mm";                           // Formatierung letzte Änderung -> siehe momentjs library
                    
                    let neustarten = true;                                                      // true: Skript wird neugestartet, false: Skript wird gestoppt oder gestartet
                    
                    let farbeSkriptAktiv = 'green';                                             // Status Bar Farbe wenn Skript aktiv ist
                    let farbeSkriptDeaktiviert = 'darkgrey';                                    // Status Bar Farbe wenn Skript deaktiviert ist
                    let farbeSkriptProblem = 'FireBrick';                                       // Status Bar Farbe wenn Skript Problem hat
                    
                    let sortResetAfter = 120;                                                   // Sortierung nach X Sekunden auf sortReset zurücksetzen (0=deaktiviert)
                    let sortReset = 'name'                                                      // 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 Änderungen aktiver Skripts hören
                    let enableSelector = `[id=javascript.*.scriptEnabled.*]`;
                    let skriptEnableList = $(enableSelector);
                    if (skriptEnableList.length === 0) {
                        // Fehlermeldung ausgeben, wenn selector kein result liefert
                        console.error(`no result for selector '${enableSelector}'`)
                    } else {
                        // listener nur für Änderung bei alive
                        skriptEnableList.on(skriptStatus);
                    }
                    
                    // auf Änderungen Skripts mit Problemen hören
                    let problemSelector = `[id=javascript.*.scriptProblem.*]`;
                    let skriptProblemList = $(problemSelector);
                    if (skriptProblemList.length === 0) {
                        // Fehlermeldung ausgeben, wenn selector kein result liefert
                        console.error(`no result for selector '${problemSelector}'`)
                    } else {
                        // listener nur für Änderung bei alive
                        skriptProblemList.on(skriptStatus);
                    }
                    
                    
                    // auf Änderungen der Sortieung hören
                    on({ id: dpSortMode, change: 'any' }, skriptStatus);
                    on({ id: dpSortMode, change: 'any' }, resetSort);
                    
                    // auf Änderungen der Filter hören
                    on({ id: dpFilterMode, change: 'any' }, skriptStatus);
                    on({ id: dpFilterMode, change: 'any' }, resetFilter);
                    
                    
                    // Funktion adapterStatus alle x Sekunden ausführen
                    schedule('*/' + checkInterval + ' * * * * *', skriptStatus);
                    
                    function skriptStatus() {
                        try {
                            skriptList = [];
                    
                            for (var i = 0; i <= skriptEnableList.length - 1; i++) {
                                let id = skriptEnableList[i];
                                let obj = getObject(id);
                    
                                let scriptObj = undefined;
                                let scriptName = '';
                                let engineType = '';
                                let lastChangeText = '';
                                let lastChange = 0;
                                let image = 'image-off-outline';
                                let imageColor = '';
                                let statusBarColor = farbeSkriptDeaktiviert;
                                let status = 1;
                    
                    
                                if (obj && obj !== null && obj.native && obj.native.script) {
                                    scriptObj = getObject(obj.native.script);
                    
                                    if (scriptObj && scriptObj.common) {
                                        if (scriptObj.common.name) {
                                            scriptName = scriptObj.common.name;
                                        }
                    
                                        if (scriptObj.common.engineType) {
                                            engineType = scriptObj.common.engineType.replace('/js', '').replace('/ts', '');
                    
                                            if (engineType.toLowerCase() === 'Javascript'.toLowerCase()) {
                                                image = 'language-javascript';
                                                imageColor = '#ffca28';
                                            } else if (engineType.toLowerCase() === 'TypeScript'.toLowerCase()) {
                                                image = 'language-typescript';
                                                imageColor = '#007acc';
                                            } else if (engineType.toLowerCase() === 'Blockly'.toLowerCase()) {
                                                image = 'puzzle';
                                                imageColor = '#5a80a6';
                                            }
                                        }
                    
                                        if (scriptObj.ts) {
                                            lastChange = scriptObj.ts;
                                            lastChangeText = moment(scriptObj.ts).format(formatierungLastChange);
                                        }
                    
                                        if (scriptObj.common.enabled) {
                                            statusBarColor = farbeSkriptAktiv;
                                            status = 0;
                                        }
                    
                                        if (myHelper().getStateValueIfExist(id) === 'true') {
                                            statusBarColor = farbeSkriptAktiv;
                                            status = 0;
                                        }
                            
                                        if (myHelper().getStateValueIfExist(id.replace('.scriptEnabled.', '.scriptProblem.'), false) === 'true') {
                                            statusBarColor = farbeSkriptProblem;
                                            status = 2;
                                        }
                            
                                        let folder = '-';
                                        let folderList = id.replace('javascript.0.scriptEnabled.').split(".");
                                        if (folderList.length > 1) {
                                            folder = id.replace('javascript.0.scriptEnabled.', '').replace('.' + folderList[folderList.length - 1], '');
                                        }
                            
                                        let text = scriptName;
                                        if (status === 2) {
                                            text = `<span class="mdi mdi-alert-box-outline" style="color: #ec0909;"></span> ${scriptName}`
                                        }
                            
                                        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;">Sprache</div>
                                                            <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic; text-align: right;">${engineType}</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;">letzte Änderung</div>
                                                            <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic; text-align: right;">${lastChangeText}</div>
                                                        </div>
                                                        <div style="display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px;">
                                                            <div style="flex: 1;">Ordner</div>
                                                            <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic; text-overflow: ellipsis; white-space: normal; text-align: right;">${folder}</div>
                                                        </div>`
                            
                                        skriptList.push({
                                            text: text,
                                            subText: subText,
                                            statusBarColor: statusBarColor,
                                            image: image,
                                            imageColor: imageColor,
                                            listType: "buttonState",
                                            objectId: dpskriptRestart,
                                            buttonStateValue: (obj && obj !== null && obj.native && obj.native.script) ? obj.native.script : '',
                                            showValueLabel: false,
                                            name: scriptName,
                                            lastChange: lastChange,
                                            status: status,
                                            folder: folder
                                        });
                                    }
                                }
                            }
                    
                            let sortMode = myHelper().getStateValueIfExist(dpSortMode, 'name');
                    
                            if (sortMode === 'name') {
                                skriptList.sort(function (a, b) {
                                    return a[sortMode].toLowerCase() == b[sortMode].toLowerCase() ? 0 : +(a[sortMode].toLowerCase() > b[sortMode].toLowerCase()) || -1;
                                });
                            } else if (sortMode === 'lastChange' || sortMode === 'status' || sortMode === 'folder') {
                                skriptList.sort(function (a, b) {
                                    return a[sortMode] == b[sortMode] ? 0 : +(a[sortMode] < b[sortMode]) || -1;
                                });
                            } else {
                                // default: nach name sortieren
                                sortMode = 'name'
                                skriptList.sort(function (a, b) {
                                    return a[sortMode].toLowerCase() == b[sortMode].toLowerCase() ? 0 : +(a[sortMode].toLowerCase() > b[sortMode].toLowerCase()) || -1;
                                });
                            }
                    
                    
                            let filterMode = myHelper().getStateValueIfExist(dpFilterMode, null);
                    
                            if (filterMode && filterMode !== null && filterMode !== '') {
                                if (filterMode === 'error') {
                                    skriptList = skriptList.filter(function (item) {
                                        return item.status === 2;
                                    });
                                } else if (filterMode === 'deactivated') {
                                    skriptList = skriptList.filter(function (item) {
                                        return item.status === 1;
                                    });
                                } else if (filterMode === 'activated') {
                                    skriptList = skriptList.filter(function (item) {
                                        return item.status === 0;
                                    });
                                }
                            }
                    
                    
                            let result = JSON.stringify(skriptList);
                            if (getState(dpList) !== result) {
                                setState(dpList, result, true);
                            }
                    
                        } catch (err) {
                            console.error(`[skriptStatus] error: ${err.message}, stack: ${err.stack}`);
                        }
                    }
                    
                    
                    // // Funktion um Skript starten / Stoppen
                    on({ id: dpskriptRestart }, function (obj) {
                        var scriptObj = getObject(obj.state.val.toString());
                    
                        if (neustarten) {
                            scriptObj.common.enabled = true;
                            setObject(obj.state.val.toString(), scriptObj);
                        }
                        else {
                            if (scriptObj && scriptObj.common) {
                    
                                if (scriptObj.common.enabled) {
                                    scriptObj.common.enabled = false;
                                } else {
                                    scriptObj.common.enabled = true;
                                }
                    
                                setObject(obj.state.val.toString(), scriptObj);
                            }
                        }
                    });
                    
                    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);
                        }
                    }
                    
                    // Beim Staren des Skriptes Adapter Status abrufen
                    skriptStatus();
                    
                    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;
                                }
                            }
                        }
                    }
                    
                    

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

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

                    GlasfaserG 1 Antwort Letzte Antwort
                    0
                    • ScroungerS Scrounger

                      @Glasfaser

                      Test mal bitte das skript:

                      const moment = require("moment");
                      
                      // Skript Einstellungen *************************************************************************************************************************************************
                      
                      let dpList = '0_userdata.0.vis.SkriptStatus.jsonList';                      // Datenpunkt für IconList Widget (Typ: Zeichenkette (String))
                      let dpskriptRestart = '0_userdata.0.vis.SkriptStatus.restart';              // Datenpunkt für Skript restart (Typ: Zeichenkette (String))
                      
                      let dpSortMode = '0_userdata.0.vis.SkriptStatus.sortMode';                  // Datenpunkt für Sortieren (Typ: Zeichenkette (String))
                      let dpFilterMode = '0_userdata.0.vis.SkriptStatus.filterMode';              // Datenpunkt für Filter (Typ: Zeichenkette (String))
                      
                      const checkInterval = 30;                                                   // Interval wie oft Status der Skripte aktualisiert werden soll (in Sekunden)
                      
                      let sprache = 'de';                                                         // Sprache für formatierung letzte Änderung
                      let formatierungLastChange = "ddd DD.MM - HH:mm";                           // Formatierung letzte Änderung -> siehe momentjs library
                      
                      let neustarten = true;                                                      // true: Skript wird neugestartet, false: Skript wird gestoppt oder gestartet
                      
                      let farbeSkriptAktiv = 'green';                                             // Status Bar Farbe wenn Skript aktiv ist
                      let farbeSkriptDeaktiviert = 'darkgrey';                                    // Status Bar Farbe wenn Skript deaktiviert ist
                      let farbeSkriptProblem = 'FireBrick';                                       // Status Bar Farbe wenn Skript Problem hat
                      
                      let sortResetAfter = 120;                                                   // Sortierung nach X Sekunden auf sortReset zurücksetzen (0=deaktiviert)
                      let sortReset = 'name'                                                      // 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 Änderungen aktiver Skripts hören
                      let enableSelector = `[id=javascript.*.scriptEnabled.*]`;
                      let skriptEnableList = $(enableSelector);
                      if (skriptEnableList.length === 0) {
                          // Fehlermeldung ausgeben, wenn selector kein result liefert
                          console.error(`no result for selector '${enableSelector}'`)
                      } else {
                          // listener nur für Änderung bei alive
                          skriptEnableList.on(skriptStatus);
                      }
                      
                      // auf Änderungen Skripts mit Problemen hören
                      let problemSelector = `[id=javascript.*.scriptProblem.*]`;
                      let skriptProblemList = $(problemSelector);
                      if (skriptProblemList.length === 0) {
                          // Fehlermeldung ausgeben, wenn selector kein result liefert
                          console.error(`no result for selector '${problemSelector}'`)
                      } else {
                          // listener nur für Änderung bei alive
                          skriptProblemList.on(skriptStatus);
                      }
                      
                      
                      // auf Änderungen der Sortieung hören
                      on({ id: dpSortMode, change: 'any' }, skriptStatus);
                      on({ id: dpSortMode, change: 'any' }, resetSort);
                      
                      // auf Änderungen der Filter hören
                      on({ id: dpFilterMode, change: 'any' }, skriptStatus);
                      on({ id: dpFilterMode, change: 'any' }, resetFilter);
                      
                      
                      // Funktion adapterStatus alle x Sekunden ausführen
                      schedule('*/' + checkInterval + ' * * * * *', skriptStatus);
                      
                      function skriptStatus() {
                          try {
                              skriptList = [];
                      
                              for (var i = 0; i <= skriptEnableList.length - 1; i++) {
                                  let id = skriptEnableList[i];
                                  let obj = getObject(id);
                      
                                  let scriptObj = undefined;
                                  let scriptName = '';
                                  let engineType = '';
                                  let lastChangeText = '';
                                  let lastChange = 0;
                                  let image = 'image-off-outline';
                                  let imageColor = '';
                                  let statusBarColor = farbeSkriptDeaktiviert;
                                  let status = 1;
                      
                      
                                  if (obj && obj !== null && obj.native && obj.native.script) {
                                      scriptObj = getObject(obj.native.script);
                      
                                      if (scriptObj && scriptObj.common) {
                                          if (scriptObj.common.name) {
                                              scriptName = scriptObj.common.name;
                                          }
                      
                                          if (scriptObj.common.engineType) {
                                              engineType = scriptObj.common.engineType.replace('/js', '').replace('/ts', '');
                      
                                              if (engineType.toLowerCase() === 'Javascript'.toLowerCase()) {
                                                  image = 'language-javascript';
                                                  imageColor = '#ffca28';
                                              } else if (engineType.toLowerCase() === 'TypeScript'.toLowerCase()) {
                                                  image = 'language-typescript';
                                                  imageColor = '#007acc';
                                              } else if (engineType.toLowerCase() === 'Blockly'.toLowerCase()) {
                                                  image = 'puzzle';
                                                  imageColor = '#5a80a6';
                                              }
                                          }
                      
                                          if (scriptObj.ts) {
                                              lastChange = scriptObj.ts;
                                              lastChangeText = moment(scriptObj.ts).format(formatierungLastChange);
                                          }
                      
                                          if (scriptObj.common.enabled) {
                                              statusBarColor = farbeSkriptAktiv;
                                              status = 0;
                                          }
                      
                                          if (myHelper().getStateValueIfExist(id) === 'true') {
                                              statusBarColor = farbeSkriptAktiv;
                                              status = 0;
                                          }
                              
                                          if (myHelper().getStateValueIfExist(id.replace('.scriptEnabled.', '.scriptProblem.'), false) === 'true') {
                                              statusBarColor = farbeSkriptProblem;
                                              status = 2;
                                          }
                              
                                          let folder = '-';
                                          let folderList = id.replace('javascript.0.scriptEnabled.').split(".");
                                          if (folderList.length > 1) {
                                              folder = id.replace('javascript.0.scriptEnabled.', '').replace('.' + folderList[folderList.length - 1], '');
                                          }
                              
                                          let text = scriptName;
                                          if (status === 2) {
                                              text = `<span class="mdi mdi-alert-box-outline" style="color: #ec0909;"></span> ${scriptName}`
                                          }
                              
                                          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;">Sprache</div>
                                                              <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic; text-align: right;">${engineType}</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;">letzte Änderung</div>
                                                              <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic; text-align: right;">${lastChangeText}</div>
                                                          </div>
                                                          <div style="display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px;">
                                                              <div style="flex: 1;">Ordner</div>
                                                              <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic; text-overflow: ellipsis; white-space: normal; text-align: right;">${folder}</div>
                                                          </div>`
                              
                                          skriptList.push({
                                              text: text,
                                              subText: subText,
                                              statusBarColor: statusBarColor,
                                              image: image,
                                              imageColor: imageColor,
                                              listType: "buttonState",
                                              objectId: dpskriptRestart,
                                              buttonStateValue: (obj && obj !== null && obj.native && obj.native.script) ? obj.native.script : '',
                                              showValueLabel: false,
                                              name: scriptName,
                                              lastChange: lastChange,
                                              status: status,
                                              folder: folder
                                          });
                                      }
                                  }
                              }
                      
                              let sortMode = myHelper().getStateValueIfExist(dpSortMode, 'name');
                      
                              if (sortMode === 'name') {
                                  skriptList.sort(function (a, b) {
                                      return a[sortMode].toLowerCase() == b[sortMode].toLowerCase() ? 0 : +(a[sortMode].toLowerCase() > b[sortMode].toLowerCase()) || -1;
                                  });
                              } else if (sortMode === 'lastChange' || sortMode === 'status' || sortMode === 'folder') {
                                  skriptList.sort(function (a, b) {
                                      return a[sortMode] == b[sortMode] ? 0 : +(a[sortMode] < b[sortMode]) || -1;
                                  });
                              } else {
                                  // default: nach name sortieren
                                  sortMode = 'name'
                                  skriptList.sort(function (a, b) {
                                      return a[sortMode].toLowerCase() == b[sortMode].toLowerCase() ? 0 : +(a[sortMode].toLowerCase() > b[sortMode].toLowerCase()) || -1;
                                  });
                              }
                      
                      
                              let filterMode = myHelper().getStateValueIfExist(dpFilterMode, null);
                      
                              if (filterMode && filterMode !== null && filterMode !== '') {
                                  if (filterMode === 'error') {
                                      skriptList = skriptList.filter(function (item) {
                                          return item.status === 2;
                                      });
                                  } else if (filterMode === 'deactivated') {
                                      skriptList = skriptList.filter(function (item) {
                                          return item.status === 1;
                                      });
                                  } else if (filterMode === 'activated') {
                                      skriptList = skriptList.filter(function (item) {
                                          return item.status === 0;
                                      });
                                  }
                              }
                      
                      
                              let result = JSON.stringify(skriptList);
                              if (getState(dpList) !== result) {
                                  setState(dpList, result, true);
                              }
                      
                          } catch (err) {
                              console.error(`[skriptStatus] error: ${err.message}, stack: ${err.stack}`);
                          }
                      }
                      
                      
                      // // Funktion um Skript starten / Stoppen
                      on({ id: dpskriptRestart }, function (obj) {
                          var scriptObj = getObject(obj.state.val.toString());
                      
                          if (neustarten) {
                              scriptObj.common.enabled = true;
                              setObject(obj.state.val.toString(), scriptObj);
                          }
                          else {
                              if (scriptObj && scriptObj.common) {
                      
                                  if (scriptObj.common.enabled) {
                                      scriptObj.common.enabled = false;
                                  } else {
                                      scriptObj.common.enabled = true;
                                  }
                      
                                  setObject(obj.state.val.toString(), scriptObj);
                              }
                          }
                      });
                      
                      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);
                          }
                      }
                      
                      // Beim Staren des Skriptes Adapter Status abrufen
                      skriptStatus();
                      
                      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;
                                  }
                              }
                          }
                      }
                      
                      
                      GlasfaserG Offline
                      GlasfaserG Offline
                      Glasfaser
                      schrieb am zuletzt editiert von
                      #10

                      @Scrounger
                      Keine Meldungen im LOG , aber genauso träge .. mußte gerade Neustarte .
                      Keine Ahnung was das ist , sonst funktionieren alle anderen Skripts von dir !!

                      Hier das Ergebnis , auf umschalten Reagiert es auch nicht .

                      1.JPG

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

                      1 Antwort Letzte Antwort
                      0
                      • ScroungerS Scrounger

                        @ub-privat
                        Skript hast du danach neugestartet?

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

                        @Scrounger

                        JA, habe ich. Probiere nochmal das Script, was Du @Glasfaser gesendet hast.

                        Wird nicht besser:

                        4.3.2020, 18:34:46.230	[info ]: javascript.0 (17282) Stop script script.js.ScriptStatus_MaterialDesignWidget
                        4.3.2020, 18:34:46.385	[info ]: javascript.0 (17282) Start javascript script.js.ScriptStatus_MaterialDesignWidget
                        4.3.2020, 18:34:46.485	[warn ]: javascript.0 (17282)     at skriptStatus (script.js.ScriptStatus_MaterialDesignWidget:211:13)
                        4.3.2020, 18:34:46.486	[warn ]: javascript.0 (17282)     at script.js.ScriptStatus_MaterialDesignWidget:268:1
                        4.3.2020, 18:34:46.486	[warn ]: javascript.0 (17282)     at skriptStatus (script.js.ScriptStatus_MaterialDesignWidget:212:13)
                        4.3.2020, 18:34:46.487	[warn ]: javascript.0 (17282)     at script.js.ScriptStatus_MaterialDesignWidget:268:1
                        4.3.2020, 18:34:46.487	[info ]: javascript.0 (17282) script.js.ScriptStatus_MaterialDesignWidget: registered 31 subscriptions and 1 schedule
                        4.3.2020, 18:35:00.020	[warn ]: javascript.0 (17282)     at Object.skriptStatus (script.js.ScriptStatus_MaterialDesignWidget:211:13)
                        4.3.2020, 18:35:00.023	[warn ]: javascript.0 (17282)     at Object.skriptStatus (script.js.ScriptStatus_MaterialDesignWidget:212:13)
                        4.3.2020, 18:35:30.330	[warn ]: javascript.0 (17282)     at Object.skriptStatus (script.js.ScriptStatus_MaterialDesignWidget:211:13)
                        4.3.2020, 18:35:30.336	[warn ]: javascript.0 (17282)     at Object.skriptStatus (script.js.ScriptStatus_MaterialDesignWidget:212:13)
                        4.3.2020, 18:36:00.062	[warn ]: javascript.0 (17282)     at Object.skriptStatus (script.js.ScriptStatus_MaterialDesignWidget:211:13)
                        4.3.2020, 18:36:00.065	[warn ]: javascript.0 (17282)     at Object.skriptStatus (script.js.ScriptStatus_MaterialDesignWidget:212:13)
                        4.3.2020, 18:36:30.223	[warn ]: javascript.0 (17282)     at Object.skriptStatus (script.js.ScriptStatus_MaterialDesignWidget:211:13)
                        4.3.2020, 18:36:30.227	[warn ]: javascript.0 (17282)     at Object.skriptStatus (script.js.ScriptStatus_MaterialDesignWidget:212:13)
                        4.3.2020, 18:37:00.080	[warn ]: javascript.0 (17282)     at Object.skriptStatus (script.js.ScriptStatus_MaterialDesignWidget:211:13)
                        4.3.2020, 18:37:00.088	[warn ]: javascript.0 (17282)     at Object.skriptStatus (script.js.ScriptStatus_MaterialDesignWidget:212:13)
                        4.3.2020, 18:37:30.314	[warn ]: javascript.0 (17282)     at Object.skriptStatus (script.js.ScriptStatus_MaterialDesignWidget:211:13)
                        4.3.2020, 18:37:30.319	[warn ]: javascript.0 (17282)     at Object.skriptStatus (script.js.ScriptStatus_MaterialDesignWidget:212:13)
                        4.3.2020, 18:38:00.039	[warn ]: javascript.0 (17282)     at Object.skriptStatus (script.js.ScriptStatus_MaterialDesignWidget:211:13)
                        4.3.2020, 18:38:00.041	[warn ]: javascript.0 (17282)     at Object.skriptStatus (script.js.ScriptStatus_MaterialDesignWidget:212:13)
                        4.3.2020, 18:38:30.248	[warn ]: javascript.0 (17282)     at Object.skriptStatus (script.js.ScriptStatus_MaterialDesignWidget:211:13)
                        4.3.2020, 18:38:30.254	[warn ]: javascript.0 (17282)     at Object.skriptStatus (script.js.ScriptStatus_MaterialDesignWidget:212:13)
                        4.3.2020, 18:39:00.044	[warn ]: javascript.0 (17282)     at Object.skriptStatus (script.js.ScriptStatus_MaterialDesignWidget:211:13)
                        4.3.2020, 18:39:00.048	[warn ]: javascript.0 (17282)     at Object.skriptStatus (script.js.ScriptStatus_MaterialDesignWidget:212:13)
                        4.3.2020, 18:39:30.330	[warn ]: javascript.0 (17282)     at Object.skriptStatus (script.js.ScriptStatus_MaterialDesignWidget:211:13)
                        4.3.2020, 18:39:30.336	[warn ]: javascript.0 (17282)     at Object.skriptStatus (script.js.ScriptStatus_MaterialDesignWidget:212:13)
                        4.3.2020, 18:40:00.047	[warn ]: javascript.0 (17282)     at Object.skriptStatus (script.js.ScriptStatus_MaterialDesignWidget:211:13)
                        4.3.2020, 18:40:00.051	[warn ]: javascript.0 (17282)     at Object.skriptStatus (script.js.ScriptStatus_MaterialDesignWidget:212:13)
                        4.3.2020, 18:40:30.276	[warn ]: javascript.0 (17282)     at Object.skriptStatus (script.js.ScriptStatus_MaterialDesignWidget:211:13)
                        4.3.2020, 18:40:30.282	[warn ]: javascript.0 (17282)     at Object.skriptStatus (script.js.ScriptStatus_MaterialDesignWidget:212:13)
                        

                        Trage ich in den DP jsonList einen beliebigen Wert ein, dann geht im Widget die Fehlermeldung weg. Jedoch keine Spur von Scriptanzeige im View....
                        a2c4d479-1d4c-48c5-87fb-c4106c3516ea-grafik.png

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

                          @Scrounger

                          Hallo Scrounger,

                          in der javasript-Adaptereinstellung, ist der Dateipfad "Spiegeln von Scripten in Dateipfad" willkürlich gewählt? (D:\iobroker\devBroker\scripts)
                          Oder ist es ein fest definiert Pfad? Auf meinem RP4 ist dieser nicht vorhanden.
                          Er ist sicherlich anzulegen???

                          Daher kommt bestimmt auch meine Warnmeldung im Script:

                          3.3.2020, 19:09:30.235	[warn ]: javascript.0 (13979)     at Object.skriptStatus (script.js.ScriptStatus_MaterialDesignWidget:211:13)
                          3.3.2020, 19:09:30.240	[warn ]: javascript.0 (13979)     at Object.skriptStatus (script.js.ScriptStatus_MaterialDesignWidget:212:13)
                          3.3.2020, 19:09:41.022	[info ]: javascript.0 (13979) Stop script script.js.ScriptStatus_MaterialDesignWidget
                          3.3.2020, 19:09:41.175	[info ]: javascript.0 (13979) Start javascript script.js.ScriptStatus_MaterialDesignWidget
                          3.3.2020, 19:09:41.217	[warn ]: javascript.0 (13979)     at skriptStatus (script.js.ScriptStatus_MaterialDesignWidget:211:13)
                          3.3.2020, 19:09:41.217	[warn ]: javascript.0 (13979)     at script.js.ScriptStatus_MaterialDesignWidget:268:1
                          3.3.2020, 19:09:41.219	[warn ]: javascript.0 (13979)     at skriptStatus (script.js.ScriptStatus_MaterialDesignWidget:212:13)
                          3.3.2020, 19:09:41.219	[warn ]: javascript.0 (13979)     at script.js.ScriptStatus_MaterialDesignWidget:268:1
                          3.3.2020, 19:09:41.219	[info ]: javascript.0 (13979) script.js.ScriptStatus_MaterialDesignWidget: registered 34 subscriptions and 1 schedule
                          

                          04af3732-20cc-4856-b391-08eec326d270-grafik.png

                          Hoffe nicht, dass es wieder "Schreibfehler" sind... :face_with_rolling_eyes: :confounded:

                          Hier die DP's

                          13504f39-cd78-4a9f-8505-9e7b71ccb570-grafik.png
                          Leider ohne Werte????

                          GlasfaserG Offline
                          GlasfaserG Offline
                          Glasfaser
                          schrieb am zuletzt editiert von Glasfaser
                          #12

                          @ub-privat

                          Hier die DP's

                          13504f39-cd78-4a9f-8505-9e7b71ccb570-grafik.png
                          Leider ohne Werte????

                          deine Datenpunkte bei "Script" mit c geschrieben

                          0_userdata.0.vis.ScriptStatus.
                          

                          die vom Scrounger Skript sind mit k geschrieben :

                          0_userdata.0.vis.SkriptStatus.
                          

                          Hast du es auch im Skript geändert !!?

                          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
                          • ScroungerS Offline
                            ScroungerS Offline
                            Scrounger
                            Developer
                            schrieb am zuletzt editiert von Scrounger
                            #13

                            Hab noch einen kleinen Fehler gefunden und das skript in Post 1 aktualisiert.

                            @ub-privat
                            Laut Fehlermeldung gibt es den Datenpunkt nicht, prüf nochmal die DPs im Skript, so wie @Glasfaser schreibt.

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

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

                            GlasfaserG 1 Antwort Letzte Antwort
                            0
                            • ScroungerS Scrounger

                              Hab noch einen kleinen Fehler gefunden und das skript in Post 1 aktualisiert.

                              @ub-privat
                              Laut Fehlermeldung gibt es den Datenpunkt nicht, prüf nochmal die DPs im Skript, so wie @Glasfaser schreibt.

                              GlasfaserG Offline
                              GlasfaserG Offline
                              Glasfaser
                              schrieb am zuletzt editiert von
                              #14

                              @Scrounger

                              Das neue Skript eingefügt und gestartet .

                              Wieder LOG Warnmeldungen und der Javascript Adapter bricht zusammen .

                              Dann startet der Javascript neu und das LOG wird von Warnmeldungen überflutet !!

                              muß das Skript stoppen sonst läuft mein System nicht mehr .

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

                              ScroungerS 1 Antwort Letzte Antwort
                              0
                              • GlasfaserG Glasfaser

                                @Scrounger

                                Das neue Skript eingefügt und gestartet .

                                Wieder LOG Warnmeldungen und der Javascript Adapter bricht zusammen .

                                Dann startet der Javascript neu und das LOG wird von Warnmeldungen überflutet !!

                                muß das Skript stoppen sonst läuft mein System nicht mehr .

                                1.JPG

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

                                @Glasfaser

                                Prüf mal ob die Skripte die in den Warn Meldungen stehen überhaupt existieren.
                                Hatte auch mal so ein Problem, dass in der objects.json noch alte skripte existierten.

                                Lösung dafür wäre, die skripte mit exakt dem gleichen namen im gleichen Ordner nochmal zu erstellen, starten und dann löschen. Anschließend den Javascript Adapter neustarten.

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

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

                                GlasfaserG 2 Antworten Letzte Antwort
                                0
                                • ScroungerS Scrounger

                                  @Glasfaser

                                  Prüf mal ob die Skripte die in den Warn Meldungen stehen überhaupt existieren.
                                  Hatte auch mal so ein Problem, dass in der objects.json noch alte skripte existierten.

                                  Lösung dafür wäre, die skripte mit exakt dem gleichen namen im gleichen Ordner nochmal zu erstellen, starten und dann löschen. Anschließend den Javascript Adapter neustarten.

                                  GlasfaserG Offline
                                  GlasfaserG Offline
                                  Glasfaser
                                  schrieb am zuletzt editiert von
                                  #16

                                  @Scrounger

                                  Danke ..... :thinking_face:

                                  Jipp... 320 Script Leichen :confused:

                                  Habe ein Thread aufgemacht , da sie nicht gelöscht werden können .

                                  Script Leichen in objects.json können nicht gelöscht werden

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

                                  1 Antwort Letzte Antwort
                                  0
                                  • GlasfaserG Glasfaser

                                    @ub-privat

                                    Hier die DP's

                                    13504f39-cd78-4a9f-8505-9e7b71ccb570-grafik.png
                                    Leider ohne Werte????

                                    deine Datenpunkte bei "Script" mit c geschrieben

                                    0_userdata.0.vis.ScriptStatus.
                                    

                                    die vom Scrounger Skript sind mit k geschrieben :

                                    0_userdata.0.vis.SkriptStatus.
                                    

                                    Hast du es auch im Skript geändert !!?

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

                                    @Glasfaser
                                    @Scrounger

                                    Jupps, das wars! Und schon wieder hat ein kleines "c" so eine Auswirkung...

                                    DANKE!!!:+1: :+1:

                                    1 Antwort Letzte Antwort
                                    0
                                    • ScroungerS Scrounger

                                      @Glasfaser

                                      Prüf mal ob die Skripte die in den Warn Meldungen stehen überhaupt existieren.
                                      Hatte auch mal so ein Problem, dass in der objects.json noch alte skripte existierten.

                                      Lösung dafür wäre, die skripte mit exakt dem gleichen namen im gleichen Ordner nochmal zu erstellen, starten und dann löschen. Anschließend den Javascript Adapter neustarten.

                                      GlasfaserG Offline
                                      GlasfaserG Offline
                                      Glasfaser
                                      schrieb am zuletzt editiert von Glasfaser
                                      #18

                                      @Scrounger

                                      So alle 320 Script Leichen sind weg ...

                                      Ich habe das aktuelle Skript vom 04.03 genommen .

                                      So sieht es dann aus , es Fehler viele Werte bzw. Karte hinter Karte aufgebaut in der Ansicht :

                                      1.JPG

                                      Keine Fehlermeldung in LOG , er aktualisiert auch alle Datenpunkte

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

                                      O ScroungerS 2 Antworten Letzte Antwort
                                      0
                                      • GlasfaserG Glasfaser

                                        @Scrounger

                                        So alle 320 Script Leichen sind weg ...

                                        Ich habe das aktuelle Skript vom 04.03 genommen .

                                        So sieht es dann aus , es Fehler viele Werte bzw. Karte hinter Karte aufgebaut in der Ansicht :

                                        1.JPG

                                        Keine Fehlermeldung in LOG , er aktualisiert auch alle Datenpunkte

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

                                        @Glasfaser

                                        da sind die Namen von den Scripten zu lang, war bei mir auch, Namen ändern, oder kleinere Schriftgröße sollte helfen.

                                        Gruß
                                        Oliver

                                        1 Antwort Letzte Antwort
                                        1
                                        • GlasfaserG Glasfaser

                                          @Scrounger

                                          So alle 320 Script Leichen sind weg ...

                                          Ich habe das aktuelle Skript vom 04.03 genommen .

                                          So sieht es dann aus , es Fehler viele Werte bzw. Karte hinter Karte aufgebaut in der Ansicht :

                                          1.JPG

                                          Keine Fehlermeldung in LOG , er aktualisiert auch alle Datenpunkte

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

                                          @Glasfaser sagte in Material Design Widgets: Skript Status:

                                          @Scrounger

                                          So alle 320 Script Leichen sind weg ...

                                          Ich habe das aktuelle Skript vom 04.03 genommen .

                                          So sieht es dann aus , es Fehler viele Werte bzw. Karte hinter Karte aufgebaut in der Ansicht :

                                          1.JPG

                                          Keine Fehlermeldung in LOG , er aktualisiert auch alle Datenpunkte

                                          Hier hab ich beschrieben, wie man das layout am besten einstellt:
                                          https://forum.iobroker.net/topic/30661/material-design-widgets-adapter-status/6

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

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

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


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          587

                                          Online

                                          32.4k

                                          Benutzer

                                          81.5k

                                          Themen

                                          1.3m

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

                                          • Du hast noch kein Konto? Registrieren

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