Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Adapter_widget Fehler

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    Adapter_widget Fehler

    This topic has been deleted. Only users with topic management privileges can see it.
    • D
      dg19222 last edited by

      Hallo zusammen schon wieder ich habe das nächste Skript mit nem fehler

      javascript.0 (11658) script.js.java.abfragen.adapter_widget compile failed: at script.js.java.abfragen.adapter_widget:438

      Screenshot 2023-12-22 192917.png

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

      Kann mir wer helfen bitte

      LG Daniel

      arteck 1 Reply Last reply Reply Quote 0
      • arteck
        arteck Developer Most Active @dg19222 last edited by arteck

        @dg19222 erstens passe den Titel an..

        adapter_widget heisst dein script ..damit kann keiner was anfangen...
        und wenn du schon scripte kopierst dann solltest du wissen was diese auch tun.. oder zumindest da nachfragen wo du es her hast

        sonst kann das zur 'mein iobroker läuft nicht mehr' oder 'mein iobroker ist plötzlich soooo lahm'

        und für das was du vorhast gibts einen Adapter device-watcher

        ansonsten löschen brauchst nicht

        export function log(arg0: string) {
        throw new Error("Function not implemented.");
        }
        
        1 Reply Last reply Reply Quote 2
        • First post
          Last post

        Support us

        ioBroker
        Community Adapters
        Donate

        669
        Online

        31.8k
        Users

        80.0k
        Topics

        1.3m
        Posts

        2
        2
        109
        Loading More Posts
        • Oldest to Newest
        • Newest to Oldest
        • Most Votes
        Reply
        • Reply as topic
        Log in to reply
        Community
        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
        The ioBroker Community 2014-2023
        logo