Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Darkmann2000

    NEWS

    • [erledigt] 15. 05. Wartungsarbeiten am ioBroker Forum

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    D
    • Profile
    • Following 1
    • Followers 0
    • Topics 22
    • Posts 116
    • Best 7
    • Groups 2

    Darkmann2000

    @Darkmann2000

    Pro

    7
    Reputation
    45
    Profile views
    116
    Posts
    0
    Followers
    1
    Following
    Joined Last Online

    Darkmann2000 Follow
    Pro Starter

    Best posts made by Darkmann2000

    • RE: Simatic S7 Adapter Fehlermeldung

      Ich habe es hinbekommen 🙂

      NPM neu installiert und jetzt läuft der S7 Adapter.

      fedaf185-6a9b-4752-a36e-e41b5a370b5f-grafik.png

      posted in ioBroker Allgemein
      D
      Darkmann2000
    • RE: Widget für Türstatus VW Connect

      @Glasfaser

      Vielen Dank für deine Hilfe.

      Schönen Abend noch.

      posted in Visualisierung
      D
      Darkmann2000
    • RE: Backitup keine wiederherstellung möglich

      Ich habe ioBroker wieder am laufen.

      Leider nicht über Backitup, sondern ich habe den ioBroker Data Ordner ausgetauscht.

      Es läuft alles wieder. Alle Instanzen wurden neu Installiert und ich habe keine Fehlermeldungen.

      Warum ich das Backup nicht über Backitup herstellen konnte, keine Ahnung.

      Lieben Gruß

      posted in ioBroker Allgemein
      D
      Darkmann2000
    • RE: Zeigt her eure Dashboards

      Hallo zusammen,

      ich bin gerade dabei meine zweite Vis zu erstellen. Ich bin noch nicht fertig, aber der größte Teil ist erledigt👍

      home.1.png
      3.1.png 2.PNG 1.PNG
      4.PNG 6.PNG 5.1.png 9.1.png 8.PNG 9.PNG

      posted in Visualisierung
      D
      Darkmann2000
    • RE: Simatic S7 Adapter Fehlermeldung

      @vraanaa

      Mein System ist auf folgenden Stand:

      Admin Version 6.3.5
      JS Controller Version 4.0.23
      Node JS version 16.19.0
      NPM 8.19.3

      Damit läuft es ohne Probleme

      posted in ioBroker Allgemein
      D
      Darkmann2000
    • RE: [Gelöst] Vis im Kiosk Modus erster Start schneller aktuali

      @bananajoe

      Hi,
      ich kann dir gar nicht sagen wie dankbar ich dir bin. Das funktioniert einwandfrei. 👍 👍 👍

      Ist es möglich die weiße (Bildlaufleiste rot markiert) unsichtbar zu machen?
      Oder gibt es eine funktion Bildlaufleiste deaktivieren)

      5a5e03fc-0fdf-4a9c-8cab-2d66a9c67fa8-grafik.png

      PS: Die Funktion --enable-auto-reload in chromium hat nicht funktiniert.

      posted in Visualisierung
      D
      Darkmann2000
    • ioBroker im Wohnwagen mit Hobby Connect

      Hallo liebe Forengemeinde,

      villeicht befinden sich hier noch einige Camper unter euch 🙂

      Ich habe ioBroker in meinem Hobby Wohnwagen verbaut . Da ab Werk bereits das Hobby Connect verbaut ist, wäre es super wenn ich das via ioBorker mit einbinden könnte. Die Connect Box ist ein Pi 3B welches via Bluetooh mit dem Handy komuniziert. Von dem Pi geht es von USB auf einen Serial Wandler der das Lichtsteursystemn via CI Bus steuert. Das Original Image von der Connect Box habe ich als Image ausgelesen.

      Es wäre schön wenn ich noch die vorhandenen CI Bus Signale vom Hobby Connect abgreifen kann. Licht, Wasserstand usw. Dazu müsste es für den IoBroker ein Adapter geben. Kann mir dabei einer von euch helfen? Oder als gemeinsames Projekt lösen?

      Aktuell kann ich darüber folgendes über ioBroker Steuern bzw. abfragen:

      Temperatur Sensoren (Shelly)für den Kühlschrank, Gefrierschrank, Außentemperatur
      Dazu wird automatisch je nach Außentemperatur der Kühlschrank Ventilator automatisch ein bzw. ausgeschaltet.

      Ventile Therme
      ich habe für die Therme und das Frischwasser elektrische Kugelhähne verbaut. Andauernd die Kissen wegräumen ging mir auf den Keks. Diese steuere ich über eine Siemens Logo, die via Iobroker gesteuert wird. Zusätzlich kann ich die Ventile via Taster immer noch manuell steuern falls Iobroker mal ausfällt.

      Waage für die Gasflaschen:
      Der Füllstand der Gasflaschen wir über Wägezellen ermittelt.
      ESP8266

      Leistungsmessung:
      (Shelly Leistungsmessung) je nach Campingplatz Absicherung, kann ich die Absicherung einstellen und es erfolgt bei überlast ein Signal.

      Alexa:
      Radiosender, Lautstärke usw.

      CPE:
      TP Link CPE 210 WLAN Outdoor Accespoint. Wlan von Campingplatz auswählen. Hier habe ich noch das Problem das ich an der Login Seite der CPE Antenne nicht weiter komme. Habe es über iFrame versucht. Doch leider bleibt immer die Login Seite auch nach der Benutzername und Passwort Eingabe stehen.

      Lieben Gruß!
      1.JPG 2.jpg 3.jpg 4.jpg 5.jpg 6.jpg 7.PNG 8.PNG10.JPG 11.JPG 12.JPG 14.JPG13.JPGIMG_2101.JPGIMG_9608-min.JPG IMG_3375-min.JPG IMG_2100-min.JPG IMG_0136-min.JPG

      posted in ioBroker Allgemein
      D
      Darkmann2000

    Latest posts made by Darkmann2000

    • Ajax Alarmanlage in ioBroker integrieren

      ich würde gerne meine Ajax-Alarmanlage in ioBroker integrieren.
      Aktuell habe ich das über den SIA-Adapter gelöst, wodurch ich den Status scharf / unscharf / Nachtmodus über den msgdata-Code abrufen kann.

      Leider ist es bisher nicht möglich, von ioBroker aus Befehle an die Ajax-Anlage zu senden – zum Beispiel, um den Nachtmodus zu aktivieren oder zu deaktivieren. Genau das würde mir aber schon ausreichen.

      Hat jemand von euch die Ajax-Anlage erfolgreich (bidirektional) eingebunden?

      Lieben Gruß

      413533c4-4931-4861-828d-c53822ee917b-image.png

      posted in ioBroker Allgemein
      D
      Darkmann2000
    • RE: Neues Projekt IObroker im Camper/Caravan wer hat Lust ??

      @grisu73

      Hallo zusammen sorry das ich mich jetzt erst melde. Ich habe leider keine Benachrichtigung bekommen.

      Das was ich hier aufgebaut habe, hat nichts mit dem Originalen Hobby Connect von Hobby zu tun. Ich habe nicht die Kentnisse den CI Bus von Hobby abzufragen leider. Wenn das jemand könnte wäre das Mega, dann bitte sofort melden 👍

      Aktuell kann ich darüber folgendes über ioBroker Steuern bzw. abfragen:

      Temperatur Sensoren (Shelly)für den Kühlschrank, Gefrierschrank, Außentemperatur
      Dazu wird automatisch je nach Außentemperatur der Kühlschrank Ventilator automatisch ein bzw. ausgeschaltet.

      Ventile Therme
      ich habe für die Therme und das Frischwasser elektrische Kugelhähne verbaut. Andauernd die Kissen wegräumen ging mir auf den Keks. Diese steuere ich über eine Siemens Logo, die via Iobroker gesteuert wird. Zusätzlich kann ich die Ventile via Taster immer noch manuell steuern falls Iobroker mal ausfällt.

      Waage für die Gasflaschen:
      Der Füllstand der Gasflaschen wir über Wägezellen ermittelt.
      ESP8266

      Leistungsmessung:
      (Shelly Leistungsmessung) je nach Campingplatz Absicherung, kann ich die Absicherung einstellen und es erfolgt bei überlast ein Signal.

      Alexa:
      Radiosender, Lautstärke usw.

      CPE:
      TP Link CPE 210 WLAN Outdoor Accespoint. Wlan von Campingplatz auswählen. Hier habe ich noch das Problem das ich an der Login Seite der CPE Antenne nicht weiter komme. Habe es über iFrame versucht. Doch leider bleibt immer die Login Seite auch nach der Benutzername und Passwort Eingabe stehen.

      posted in Praktische Anwendungen (Showcase)
      D
      Darkmann2000
    • RE: Neuer Adapter ecoflow-mqtt

      @manny4566

      Ich habe das gleiche Problem. Die Werte werden nur aktualisiert wenn die App auf dem Handy geöffnet ist.

      posted in Tester
      D
      Darkmann2000
    • RE: View Adapter Status

      @sigi234

      Nein, das steht noch drin.

      Ich meinte damit

      4655e738-8612-4b26-bc33-f1a4786f79e8-image.png

      posted in Praktische Anwendungen (Showcase)
      D
      Darkmann2000
    • RE: View Adapter Status

      @frank579 sagte in View Adapter Status:

      momentDurationFormatSetup(moment);

      Hi,

      jetzt funktionert es wieder.

      PS: Habe das nur im Skript hinzugefügt.
      Das braucht nicht unter den Zusätzlichen NPM Modulen hinzugefügt werden.

      Vielen Dank an euch beiden für die schnelle Hilfe.

      posted in Praktische Anwendungen (Showcase)
      D
      Darkmann2000
    • RE: View Adapter Status

      @sigi234

      Danke für deine Hilfe.

      Das Problem sollten dann ja alle haben die den Adapter nutzen.

      posted in Praktische Anwendungen (Showcase)
      D
      Darkmann2000
    • RE: View Adapter Status

      @sigi234

      Hi,
      ist leider immer noch

      	script.js.Adapter_Status: [adapterStatus] error: moment.duration(...).format is not a function, stack: TypeError: moment.duration(...).format is not a function at Object.adapterStatus (script.js.Adapter_Status:109:115) at Object.callback (C:\ioBroker\node_modules\iobroker.javascript\lib\sandbox.js:1452:38) at Object.stateChange (C:\ioBroker\node_modules\iobroker.javascript\main.js:645:29) at Immediate._onImmediate (C:\ioBroker\node_modules\@iobroker\js-controller-adapter\src\lib\adapter\adapter.ts:11053:62) at processImmediate (node:internal/timers:483:21)
      

      Hier habe ich die entfernt.
      5578a63d-b7bc-46a4-9c28-c066ce9c88b6-image.png

      posted in Praktische Anwendungen (Showcase)
      D
      Darkmann2000
    • RE: View Adapter Status

      Hallo Zusammen,

      ich habe nach dem Urlaub mein System auf den Aktuellen Stand gebracht, und nun folgende Fehlermeldung.

      script.js.Adapter_Status: [adapterStatus] error: moment.duration(...).format is not a function, stack: TypeError: moment.duration(...).format is not a function at Object.adapterStatus (script.js.Adapter_Status:109:115) at Job.job (C:\ioBroker\node_modules\iobroker.javascript\lib\sandbox.js:1876:34) at Job.invoke (C:\ioBroker\node_modules\node-schedule\lib\Job.js:171:15) at C:\ioBroker\node_modules\node-schedule\lib\Invocation.js:268:28 at Timeout._onTimeout (C:\ioBroker\node_modules\node-schedule\lib\Invocation.js:228:7) at listOnTimeout (node:internal/timers:581:17) at processTimers (node:internal/timers:519:7)
      

      Habt ihr eine Idee was da sein kann?

      Vielen Dank im Voraus

      2f69fd4e-6ee4-4542-912d-2c72d2a41560-image.png

      Hier das Skript

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

      9365282d-305b-4e33-b7e3-4cb3ed45ee47-image.png

      posted in Praktische Anwendungen (Showcase)
      D
      Darkmann2000
    • RE: [Gelöst] Vis im Kiosk Modus erster Start schneller aktuali

      Perfekt vielen Dank

      posted in Visualisierung
      D
      Darkmann2000
    • RE: [Gelöst] Vis im Kiosk Modus erster Start schneller aktuali

      Dank Chat GPT ist die Bildlaufleiste nun auch entfernt. So funktinoiert es.

      Kann ich den Code von Chat GPT so lassen?

      <!DOCTYPE html>
      <html>
          <head>
              <title>ioBroker wird geladen</title>
              <meta name="viewport" content="width=device-width, initial-scale=1">
              <meta http-equiv="refresh" content="60; url=http://192.168.0.3:8082/vis/index.html?Wohnwagen#Home" />
              <style>
                  body {
                      background-color: #000000;
                      color: #ffffff;
                      font-family: Arial, Helvetica, sans-serif;
                      overflow: hidden; /* Prevents scrollbars from appearing */
                      margin: 0; /* Removes any default body margin */
                      height: 100vh; /* Ensures the body takes up the full viewport height */
                      display: flex;
                      justify-content: center;
                      align-items: center;
                  }
                  p {
                      text-align: center;
                      font-size: 60px;
                      margin: 0; /* Removes default paragraph margin */
                  }
              </style>
          </head>
          <body>
              <p id="countdown">ioBroker VIS wird in 60 Sekunden gestartet ...</p>
       
              <script>
                  var counter = 60;
                  var interval = setInterval(function() {
                      counter = counter - 1;
                      if (counter <= 0) {
                          clearInterval(interval);
                          document.getElementById("countdown").innerHTML = "ioBroker VIS wird gestartet ...";
                          return;
                      } else {
                          document.getElementById("countdown").innerHTML = "ioBroker VIS wird in<br><br>" + counter + "<br><br>Sekunden gestartet ...";
                      }
                  }, 1000);
              </script>
          </body>
      </html>
      
      

      👍 👍 👍

      posted in Visualisierung
      D
      Darkmann2000
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo