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. Skripten / Logik
  4. JavaScript
  5. 3 Skripte melden Fehler seit js 8.4.0

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    18
    1
    629

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

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

3 Skripte melden Fehler seit js 8.4.0

Geplant Angeheftet Gesperrt Verschoben JavaScript
21 Beiträge 7 Kommentatoren 2.2k Aufrufe 6 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.
  • NashraN Nashra

    Hallo Leute,
    seit js 8.4.0 wollen 3 Skripte nicht so recht bzw. eins versagt komplett den Dienst.
    Da ich mich damit nicht auskenne wäre ich für Hilfe dankbar, wobei ich sagen muß
    das zwei von @pix sind und eins von, ich glaube, @liv-in-sky

    /* VIS Tagesschau_Link
    parsed die Seite https://www.tagesschau.de/100sekunden/ und sucht nach der URL zum aktuellsten Video
    02.03.2016 erstellt von pix
    15.03.2016 zu Javascript Instanz 1 gewechselt
    24.09.2016 umbenannt in VIS_Link_Tagesschau
    11.11.2018 Skript angepasst und optimiert
    03.05.2021 Skript angepasst
          tagesschau 100s mp4
          tagesschau Stream HTML-Link
    todo: axios statt request() und etwas schöner machen
    */
    
    const fC = false; // forceCreation für createState()
    const logging = true;
    const instanz = '0_userdata.0.';
    const idURL = instanz + 'Tagesschau.URL.Tagesschau';
    const idURL100s = instanz + 'Tagesschau.URL.Tagesschau100s';
    
    // ab hier nix mehr ändern
    createState(idURL,"", fC, {
      name: "HTML-Seite mit Tagesschau-Stream",
      desc: "geparster Link aus tagesschau.de",
      type: "string",
      role: "text.url"
    });
    
    createState(idURL100s,"", fC, {
      name: "Link zu Tagesschau in 100s",
      desc: "geparster Link aus tagesschau.de",
      type: "string",
      role: "text.url"
    });
    
    function findeURL () {   
      let request = require('request');
      let film_url;
      try {
          // Tagesschau in 100s
          const link = "https://www.tagesschau.de/multimedia/sendung/tagesschau_in_100_sekunden/";
          let regexp = /media\.tagesschau\.de\/video\/\d*\/\d*\/TV-\d*-\d*-\d*\.webxl\.h264\.mp4/gm;
          request(link, function (error, response, body) {
              if (!error && response.statusCode == 200) {
                  let result_arr = regexp.exec(body);
                  film_url = result_arr[0];
                  setState(idURL100s, "https://" + film_url);
                  if (logging) log ("URL: " + film_url);
              } else  { // Error beim Einlesen
                  log(error, 'error'); 
              }
          });   // Ende request 
      } catch (fehler) {
          log("Fehler TS_100s (try): " + fehler, "error");
      }
    
    
      
      // nicht schön, aber nochmal für Stream
      let stream_url;
      try {
          //Tagesschau Stream als HTML
          const link = "https://www.tagesschau.de/multimedia/livestreams/";
          let regexp = /https:\/\/www\.tagesschau\.de\/multimedia\/livestreams\/index~player\.html/gm;
    
          request(link, function (error, response, body) {
              if (!error && response.statusCode == 200) {
                  let result_arr = regexp.exec(body);
                  stream_url = result_arr[0];
                  setState(idURL, stream_url);
                  if (logging) log ("HTML: " + stream_url);
              } else  { // Error beim Einlesen
                  log(error, 'error'); 
              }
          });   // Ende request 
      } catch (fehler) {
          log("Fehler TS_2 Stream (try): " + fehler, "error");
      }
    } // Ende findeURL
    
    schedule("8 */1 * * *", findeURL); // jedeStunde um 8 nach voll
    setTimeout(findeURL, 2000);
    
    
    

    javascript.0	13:33:15.006	info	Start JavaScript script.js.Allerlei.Tagesschau-neu (Javascript/js)
    javascript.0	13:33:15.020	info	script.js.Allerlei.Tagesschau-neu: registered 0 subscriptions, 1 schedule, 0 messages, 0 logs and 0 file subscriptions
    javascript.0	13:33:17.021	warn	script.js.Allerlei.Tagesschau-neu: request package is deprecated - please use httpGet (or a stable lib like axios) instead!
    javascript.0	13:33:17.226	info	script.js.Allerlei.Tagesschau-neu: HTML: https://www.tagesschau.de/multimedia/livestreams/index~player.html
    javascript.0	13:33:17.228	info	script.js.Allerlei.Tagesschau-neu: URL: media.tagesschau.de/video/2024/0526/TV-20240526-1303-2500.webxl.h264.mp4
    

    /* IP Adresse einlesen 
    Quelle: http://ipecho.net/plain
    {1}
    erstellt: 27.08.2015 von pix
    03.01.2016 ID erstellt
    16.01.2018 Code optimiert
    22.07.2020 WAN IP kommt jetzt erstmal aus Unifi Adapter
    14.11.2021 bessere Quelle ohne Schnickschnack http://ipecho.net/plain
              Danke @wildbill und @crunchip https://forum.iobroker.net/post/702174      
    */
    
    const fC = false;
    const logging = true; // (true;false) Logausgabe zentral schalten, ob stündlich geloggt werden soll
    const idIP_Adresse = "IP.public";
    const idIP_aktualisieren = "IP.aktualisieren";
    
    let url = "http://ipecho.net/plain"; 
    
    // Objekte erstellen
    createState(idIP_Adresse, " ", fC, {
       name: "Öffentliche IP-Adresse",
       desc: "WAN Internet Protokoll Adresse",
       type: "string",
       role: "url"
    });
    
    createState(idIP_aktualisieren, false, fC, {
       name: "Taster zum Aktualisieren der IP Adresse",
       desc: "IP wird neu eingelesen",
       type: "boolean",
       role: "switch"
    });
    
    // Daten einlesen
    function ip_einlesen() {
       
       request(url, function (error, response, body) {
           if (!error && response.statusCode == 200) {
               try {
                   if (logging) log("IP-Adresse (ausgelesen von " + url + "): " + body);
                   setState(idIP_Adresse, body);
               } catch (e) {
                   log("IP-Adresse einlesen - Parse Fehler: " + e, "warn");
               }
           } else log("IP-Adresse einlesen - Fehler/" + error);
       });   // Ende request 
       
       /*
       setState(idIP_Adresse, getState("unifi.0.default.health.wan.wan_ip").val, function () {
           log("WAN IP aus Unifi-Adapter ausgelesen");
       });
       */
    }
    
    // Manuelles Einlesen der IP (über VIS Taster)
    on(idIP_aktualisieren, function (obj) {
       if (!obj.state.ack && obj.state.val) {
           ip_einlesen(); // Daten sofort einlesen
           log("IP-Adresse einlesen - manuell gestartet");
           setState(idIP_aktualisieren, false, false); // zurücksetzen des Tasters
       }
    });
    
    // Ausführung
    ip_einlesen();
    schedule("16 * * * *", ip_einlesen); // jede Stunde um 16min nach
    
    

    javascript.0	13:34:45.687	info	Start JavaScript script.js.Netzwerk.IP-Adresse2 (Javascript/js)
    javascript.0	13:34:45.703	error	script.js.Netzwerk.IP-Adresse2: ReferenceError: request is not defined
    javascript.0	13:34:45.703	error	at ip_einlesen (script.js.Netzwerk.IP-Adresse2:38:5)
    javascript.0	13:34:45.703	error	at script.js.Netzwerk.IP-Adresse2:66:1
    javascript.0	13:34:45.703	error	at script.js.Netzwerk.IP-Adresse2:73:3
    

    // 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 = 60;                                                   // 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: #d7cec1; 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: #d7cec1; 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: #d7cec1; 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: #d7cec1; 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: #d7cec1; 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: #d7cec1; 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: #d7cec1; 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;
               }
           }
       }
    }
    
    

    javascript.0	13:35:54.300	info	Start JavaScript script.js.Allerlei.Adapterliste-md (Javascript/js)
    javascript.0	13:35:54.519	warn	script.js.Allerlei.Adapterliste-md: More than 100 subscriptions registered. Check your script!
    javascript.0	13:35:54.556	info	script.js.Allerlei.Adapterliste-md: registered 161 subscriptions, 1 schedule, 0 messages, 0 logs and 0 file subscriptions
    
    ? Offline
    ? Offline
    Ein ehemaliger Benutzer
    schrieb am zuletzt editiert von
    #2

    @nashra

    Fuer die Scripte wo der depricated request benutzt wird, gibts schon Updates (schau mal im Tagesschau-Thread nach), das andere kannst du einfach umstellen, hilfen gibts hier im Forum schon einige dazu.

    Fuer dein letztes Script, wird anscheinend das NPM Modul nicht erkannt, einfach mal in die Einstellung im javascript Adapter gehen, und alle NPM Module, die mit einem Komma hintendran stehen, loeschen und neu eintragen.

    Dann klappt das alles wieder... :-)

    NashraN 1 Antwort Letzte Antwort
    2
    • crunchipC Abwesend
      crunchipC Abwesend
      crunchip
      Forum Testing Most Active
      schrieb am zuletzt editiert von
      #3

      @nashra siehe https://forum.iobroker.net/post/1163109 für ip-adresse, falss du das meinst

      umgestiegen von Proxmox auf Unraid

      1 Antwort Letzte Antwort
      1
      • NashraN Nashra

        Hallo Leute,
        seit js 8.4.0 wollen 3 Skripte nicht so recht bzw. eins versagt komplett den Dienst.
        Da ich mich damit nicht auskenne wäre ich für Hilfe dankbar, wobei ich sagen muß
        das zwei von @pix sind und eins von, ich glaube, @liv-in-sky

        /* VIS Tagesschau_Link
        parsed die Seite https://www.tagesschau.de/100sekunden/ und sucht nach der URL zum aktuellsten Video
        02.03.2016 erstellt von pix
        15.03.2016 zu Javascript Instanz 1 gewechselt
        24.09.2016 umbenannt in VIS_Link_Tagesschau
        11.11.2018 Skript angepasst und optimiert
        03.05.2021 Skript angepasst
              tagesschau 100s mp4
              tagesschau Stream HTML-Link
        todo: axios statt request() und etwas schöner machen
        */
        
        const fC = false; // forceCreation für createState()
        const logging = true;
        const instanz = '0_userdata.0.';
        const idURL = instanz + 'Tagesschau.URL.Tagesschau';
        const idURL100s = instanz + 'Tagesschau.URL.Tagesschau100s';
        
        // ab hier nix mehr ändern
        createState(idURL,"", fC, {
          name: "HTML-Seite mit Tagesschau-Stream",
          desc: "geparster Link aus tagesschau.de",
          type: "string",
          role: "text.url"
        });
        
        createState(idURL100s,"", fC, {
          name: "Link zu Tagesschau in 100s",
          desc: "geparster Link aus tagesschau.de",
          type: "string",
          role: "text.url"
        });
        
        function findeURL () {   
          let request = require('request');
          let film_url;
          try {
              // Tagesschau in 100s
              const link = "https://www.tagesschau.de/multimedia/sendung/tagesschau_in_100_sekunden/";
              let regexp = /media\.tagesschau\.de\/video\/\d*\/\d*\/TV-\d*-\d*-\d*\.webxl\.h264\.mp4/gm;
              request(link, function (error, response, body) {
                  if (!error && response.statusCode == 200) {
                      let result_arr = regexp.exec(body);
                      film_url = result_arr[0];
                      setState(idURL100s, "https://" + film_url);
                      if (logging) log ("URL: " + film_url);
                  } else  { // Error beim Einlesen
                      log(error, 'error'); 
                  }
              });   // Ende request 
          } catch (fehler) {
              log("Fehler TS_100s (try): " + fehler, "error");
          }
        
        
          
          // nicht schön, aber nochmal für Stream
          let stream_url;
          try {
              //Tagesschau Stream als HTML
              const link = "https://www.tagesschau.de/multimedia/livestreams/";
              let regexp = /https:\/\/www\.tagesschau\.de\/multimedia\/livestreams\/index~player\.html/gm;
        
              request(link, function (error, response, body) {
                  if (!error && response.statusCode == 200) {
                      let result_arr = regexp.exec(body);
                      stream_url = result_arr[0];
                      setState(idURL, stream_url);
                      if (logging) log ("HTML: " + stream_url);
                  } else  { // Error beim Einlesen
                      log(error, 'error'); 
                  }
              });   // Ende request 
          } catch (fehler) {
              log("Fehler TS_2 Stream (try): " + fehler, "error");
          }
        } // Ende findeURL
        
        schedule("8 */1 * * *", findeURL); // jedeStunde um 8 nach voll
        setTimeout(findeURL, 2000);
        
        
        

        javascript.0	13:33:15.006	info	Start JavaScript script.js.Allerlei.Tagesschau-neu (Javascript/js)
        javascript.0	13:33:15.020	info	script.js.Allerlei.Tagesschau-neu: registered 0 subscriptions, 1 schedule, 0 messages, 0 logs and 0 file subscriptions
        javascript.0	13:33:17.021	warn	script.js.Allerlei.Tagesschau-neu: request package is deprecated - please use httpGet (or a stable lib like axios) instead!
        javascript.0	13:33:17.226	info	script.js.Allerlei.Tagesschau-neu: HTML: https://www.tagesschau.de/multimedia/livestreams/index~player.html
        javascript.0	13:33:17.228	info	script.js.Allerlei.Tagesschau-neu: URL: media.tagesschau.de/video/2024/0526/TV-20240526-1303-2500.webxl.h264.mp4
        

        /* IP Adresse einlesen 
        Quelle: http://ipecho.net/plain
        {1}
        erstellt: 27.08.2015 von pix
        03.01.2016 ID erstellt
        16.01.2018 Code optimiert
        22.07.2020 WAN IP kommt jetzt erstmal aus Unifi Adapter
        14.11.2021 bessere Quelle ohne Schnickschnack http://ipecho.net/plain
                  Danke @wildbill und @crunchip https://forum.iobroker.net/post/702174      
        */
        
        const fC = false;
        const logging = true; // (true;false) Logausgabe zentral schalten, ob stündlich geloggt werden soll
        const idIP_Adresse = "IP.public";
        const idIP_aktualisieren = "IP.aktualisieren";
        
        let url = "http://ipecho.net/plain"; 
        
        // Objekte erstellen
        createState(idIP_Adresse, " ", fC, {
           name: "Öffentliche IP-Adresse",
           desc: "WAN Internet Protokoll Adresse",
           type: "string",
           role: "url"
        });
        
        createState(idIP_aktualisieren, false, fC, {
           name: "Taster zum Aktualisieren der IP Adresse",
           desc: "IP wird neu eingelesen",
           type: "boolean",
           role: "switch"
        });
        
        // Daten einlesen
        function ip_einlesen() {
           
           request(url, function (error, response, body) {
               if (!error && response.statusCode == 200) {
                   try {
                       if (logging) log("IP-Adresse (ausgelesen von " + url + "): " + body);
                       setState(idIP_Adresse, body);
                   } catch (e) {
                       log("IP-Adresse einlesen - Parse Fehler: " + e, "warn");
                   }
               } else log("IP-Adresse einlesen - Fehler/" + error);
           });   // Ende request 
           
           /*
           setState(idIP_Adresse, getState("unifi.0.default.health.wan.wan_ip").val, function () {
               log("WAN IP aus Unifi-Adapter ausgelesen");
           });
           */
        }
        
        // Manuelles Einlesen der IP (über VIS Taster)
        on(idIP_aktualisieren, function (obj) {
           if (!obj.state.ack && obj.state.val) {
               ip_einlesen(); // Daten sofort einlesen
               log("IP-Adresse einlesen - manuell gestartet");
               setState(idIP_aktualisieren, false, false); // zurücksetzen des Tasters
           }
        });
        
        // Ausführung
        ip_einlesen();
        schedule("16 * * * *", ip_einlesen); // jede Stunde um 16min nach
        
        

        javascript.0	13:34:45.687	info	Start JavaScript script.js.Netzwerk.IP-Adresse2 (Javascript/js)
        javascript.0	13:34:45.703	error	script.js.Netzwerk.IP-Adresse2: ReferenceError: request is not defined
        javascript.0	13:34:45.703	error	at ip_einlesen (script.js.Netzwerk.IP-Adresse2:38:5)
        javascript.0	13:34:45.703	error	at script.js.Netzwerk.IP-Adresse2:66:1
        javascript.0	13:34:45.703	error	at script.js.Netzwerk.IP-Adresse2:73:3
        

        // 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 = 60;                                                   // 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: #d7cec1; 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: #d7cec1; 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: #d7cec1; 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: #d7cec1; 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: #d7cec1; 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: #d7cec1; 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: #d7cec1; 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;
                   }
               }
           }
        }
        
        

        javascript.0	13:35:54.300	info	Start JavaScript script.js.Allerlei.Adapterliste-md (Javascript/js)
        javascript.0	13:35:54.519	warn	script.js.Allerlei.Adapterliste-md: More than 100 subscriptions registered. Check your script!
        javascript.0	13:35:54.556	info	script.js.Allerlei.Adapterliste-md: registered 161 subscriptions, 1 schedule, 0 messages, 0 logs and 0 file subscriptions
        
        liv-in-skyL Offline
        liv-in-skyL Offline
        liv-in-sky
        schrieb am zuletzt editiert von
        #4

        @nashra nix von mir dabei

        nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

        NashraN 1 Antwort Letzte Antwort
        0
        • liv-in-skyL liv-in-sky

          @nashra nix von mir dabei

          NashraN Offline
          NashraN Offline
          Nashra
          Most Active Forum Testing
          schrieb am zuletzt editiert von
          #5

          @liv-in-sky sagte in 3 Skripte melden Fehler seit js 8.4.0:

          @nashra nix von mir dabei

          Hm, dachte es wäre von dir gewesen. Nur von wem war es jetzt :thinking_face:

          Gruß Ralf
          Mir egal, wer Dein Vater ist! Wenn ich hier angel, wird nicht übers Wasser gelaufen!!

          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

          liv-in-skyL 1 Antwort Letzte Antwort
          0
          • ? Ein ehemaliger Benutzer

            @nashra

            Fuer die Scripte wo der depricated request benutzt wird, gibts schon Updates (schau mal im Tagesschau-Thread nach), das andere kannst du einfach umstellen, hilfen gibts hier im Forum schon einige dazu.

            Fuer dein letztes Script, wird anscheinend das NPM Modul nicht erkannt, einfach mal in die Einstellung im javascript Adapter gehen, und alle NPM Module, die mit einem Komma hintendran stehen, loeschen und neu eintragen.

            Dann klappt das alles wieder... :-)

            NashraN Offline
            NashraN Offline
            Nashra
            Most Active Forum Testing
            schrieb am zuletzt editiert von
            #6

            @ilovegym sagte in 3 Skripte melden Fehler seit js 8.4.0:

            @nashra

            Fuer dein letztes Script, wird anscheinend das NPM Modul nicht erkannt, einfach mal in die Einstellung im javascript Adapter gehen, und alle NPM Module, die mit einem Komma hintendran stehen, loeschen und neu eintragen.

            Dann klappt das alles wieder... :-)

            Nö, leider nicht aber es ist ja auch nur ein warn bis jetzt.

            Gruß Ralf
            Mir egal, wer Dein Vater ist! Wenn ich hier angel, wird nicht übers Wasser gelaufen!!

            Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

            1 Antwort Letzte Antwort
            0
            • NashraN Nashra

              @liv-in-sky sagte in 3 Skripte melden Fehler seit js 8.4.0:

              @nashra nix von mir dabei

              Hm, dachte es wäre von dir gewesen. Nur von wem war es jetzt :thinking_face:

              liv-in-skyL Offline
              liv-in-skyL Offline
              liv-in-sky
              schrieb am zuletzt editiert von
              #7

              @nashra meinst du das 3te? https://forum.iobroker.net/post/750477

              nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

              NashraN 1 Antwort Letzte Antwort
              0
              • liv-in-skyL liv-in-sky

                @nashra meinst du das 3te? https://forum.iobroker.net/post/750477

                NashraN Offline
                NashraN Offline
                Nashra
                Most Active Forum Testing
                schrieb am zuletzt editiert von
                #8

                @liv-in-sky sagte in 3 Skripte melden Fehler seit js 8.4.0:

                @nashra meinst du das 3te? https://forum.iobroker.net/post/750477

                Ja genau, das ist es. Also von @Scrounger
                Danke dir

                Gruß Ralf
                Mir egal, wer Dein Vater ist! Wenn ich hier angel, wird nicht übers Wasser gelaufen!!

                Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                D 1 Antwort Letzte Antwort
                0
                • NashraN Nashra

                  @liv-in-sky sagte in 3 Skripte melden Fehler seit js 8.4.0:

                  @nashra meinst du das 3te? https://forum.iobroker.net/post/750477

                  Ja genau, das ist es. Also von @Scrounger
                  Danke dir

                  D Offline
                  D Offline
                  denjo
                  schrieb am zuletzt editiert von
                  #9

                  @nashra kann mir jemand sagen was das bedeuten soll:

                  script.js.Test.Tagesschau: request package is deprecated - please use httpGet (or a stable lib like axios) instead!
                  
                  liv-in-skyL mcm1957M 2 Antworten Letzte Antwort
                  0
                  • D denjo

                    @nashra kann mir jemand sagen was das bedeuten soll:

                    script.js.Test.Tagesschau: request package is deprecated - please use httpGet (or a stable lib like axios) instead!
                    
                    liv-in-skyL Offline
                    liv-in-skyL Offline
                    liv-in-sky
                    schrieb am zuletzt editiert von
                    #10

                    @denjo

                    du musst deine request blöcke ändern - such mal im forum - ist voll damit

                    z.b. https://forum.iobroker.net/post/1159311

                    nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

                    1 Antwort Letzte Antwort
                    0
                    • D denjo

                      @nashra kann mir jemand sagen was das bedeuten soll:

                      script.js.Test.Tagesschau: request package is deprecated - please use httpGet (or a stable lib like axios) instead!
                      
                      mcm1957M Online
                      mcm1957M Online
                      mcm1957
                      schrieb am zuletzt editiert von
                      #11

                      @denjo said in 3 Skripte melden Fehler seit js 8.4.0:

                      @nashra kann mir jemand sagen was das bedeuten soll:

                      script.js.Test.Tagesschau: request package is deprecated - please use httpGet (or a stable lib like axios) instead!
                      

                      Bitte verwende die Suche - gibt gefühlte 100 Beiträge hier im Forum.

                      'request' wurde DEPRECATED (= abgekündigt). Das hast du ja auch im Changelog den du bei einem MAJOTR Update immer lesen solltest ja gelesen :-).

                      Du musst dein Scrip anpassen.

                      Entwicklung u Betreuung: envertech-pv, hoymiles-ms, ns-client, pid, snmp Adapter;
                      Support Repositoryverwaltung.

                      Wer Danke sagen will, kann nen Kaffee spendieren: https://paypal.me/mcm1957atiobroker

                      LESEN - gute Forenbeitrage

                      D 2 Antworten Letzte Antwort
                      0
                      • mcm1957M mcm1957

                        @denjo said in 3 Skripte melden Fehler seit js 8.4.0:

                        @nashra kann mir jemand sagen was das bedeuten soll:

                        script.js.Test.Tagesschau: request package is deprecated - please use httpGet (or a stable lib like axios) instead!
                        

                        Bitte verwende die Suche - gibt gefühlte 100 Beiträge hier im Forum.

                        'request' wurde DEPRECATED (= abgekündigt). Das hast du ja auch im Changelog den du bei einem MAJOTR Update immer lesen solltest ja gelesen :-).

                        Du musst dein Scrip anpassen.

                        D Offline
                        D Offline
                        denjo
                        schrieb am zuletzt editiert von
                        #12

                        @mcm1957 habs, thanks

                        1 Antwort Letzte Antwort
                        0
                        • mcm1957M mcm1957

                          @denjo said in 3 Skripte melden Fehler seit js 8.4.0:

                          @nashra kann mir jemand sagen was das bedeuten soll:

                          script.js.Test.Tagesschau: request package is deprecated - please use httpGet (or a stable lib like axios) instead!
                          

                          Bitte verwende die Suche - gibt gefühlte 100 Beiträge hier im Forum.

                          'request' wurde DEPRECATED (= abgekündigt). Das hast du ja auch im Changelog den du bei einem MAJOTR Update immer lesen solltest ja gelesen :-).

                          Du musst dein Scrip anpassen.

                          D Offline
                          D Offline
                          denjo
                          schrieb am zuletzt editiert von
                          #13

                          @mcm1957 jetzt hab ich seid gestern immer diese meldung, kann da leider nix mit anfangen:

                          
                          javascript.0
                          2024-06-20 13:08:02.016	error	script.js.Test.Tagesschau_neu: timeout of 2000ms exceeded
                          
                          javascript.0
                          2024-06-20 13:08:02.014	error	script.js.Test.Tagesschau_neu: timeout of 2000ms exceeded
                          
                          HomoranH 1 Antwort Letzte Antwort
                          0
                          • D denjo

                            @mcm1957 jetzt hab ich seid gestern immer diese meldung, kann da leider nix mit anfangen:

                            
                            javascript.0
                            2024-06-20 13:08:02.016	error	script.js.Test.Tagesschau_neu: timeout of 2000ms exceeded
                            
                            javascript.0
                            2024-06-20 13:08:02.014	error	script.js.Test.Tagesschau_neu: timeout of 2000ms exceeded
                            
                            HomoranH Nicht stören
                            HomoranH Nicht stören
                            Homoran
                            Global Moderator Administrators
                            schrieb am zuletzt editiert von
                            #14

                            @denjo sagte in 3 Skripte melden Fehler seit js 8.4.0:

                            kann da leider nix mit anfangen:

                            das kann niemand ohne das Skript zu sehen.

                            Glaskugel meint: als erste Lösung mal den Timeout auf 3000 setzen

                            kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                            Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                            der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                            D 1 Antwort Letzte Antwort
                            0
                            • HomoranH Homoran

                              @denjo sagte in 3 Skripte melden Fehler seit js 8.4.0:

                              kann da leider nix mit anfangen:

                              das kann niemand ohne das Skript zu sehen.

                              Glaskugel meint: als erste Lösung mal den Timeout auf 3000 setzen

                              D Offline
                              D Offline
                              denjo
                              schrieb am zuletzt editiert von
                              #15

                              @homoran sorry ich hatte das script hier aus den Forum, mit java kenne ich mich leider nicht aus?

                              /* VIS Tagesschau_Link
                              parsed die Seite https://www.tagesschau.de/100sekunden/ und sucht nach der URL zum aktuellsten Video
                              {1}
                              02.03.2016 erstellt von pix
                              15.03.2016 zu Javascript Instanz 1 gewechselt
                              24.09.2016 umbenannt in VIS_Link_Tagesschau
                              11.11.2018 Skript angepasst und optimiert
                              03.05.2021 Skript an neue Tagesschau-Seite angepasst und optimiert
                              */
                               
                               
                              const logging = true;
                              const idURL = '0_userdata.0.Tagesschau_100';
                              const idURL2 = '0_userdata.0.Tagesschau_Stream';
                              const link = 'http://www.tagesschau.de/multimedia/sendung/tagesschau_in_100_sekunden/';
                              let film_url; let stream_url;
                               
                               
                              function findeURL () {   
                                 try {
                                      httpGet(link, { responseType: 'text' }, (error, response) => { 
                                          if (!error && response.statusCode == 200) {
                                             let regexp = /media\.tagesschau\.de\/video\/\d*\/\d*\/TV-\d*-\d*-\d*\.webxl\.h264\.mp4/gm;
                                             let result_arr = regexp.exec(response.data);
                                             film_url = result_arr[0];
                                             setState(idURL, "https://" + film_url);
                                             if (logging) log ("URL: " + "https://" + film_url);
                                          } else { 
                                              log(error, 'error'); 
                                          } 
                                      });
                                  } catch (fehler) {
                                      log("Fehler (try): " + fehler, "error");
                                  }
                                      // nicht schön, aber nochmal für Stream
                                 try {
                                      //Tagesschau Stream als HTML
                                      const link = "https://www.tagesschau.de/multimedia/livestreams/";
                                      httpGet(link, { responseType: 'text' }, (error, response) => { 
                                          if (!error && response.statusCode == 200) {
                                             stream_url = "https://www.tagesschau.de/multimedia/livestreams/index~player.html";
                                             setState(idURL2, stream_url);
                                             if (logging) log ("HTML: " + stream_url);
                                          } else { 
                                              log(error, 'error'); 
                                          } 
                                      });
                                  } catch (fehler) {
                                      log("Fehler (try): " + fehler, "error");
                                  }
                              } 
                               
                              schedule("8 */1 * * *", findeURL); // jedeStunde um 8 nach voll
                              findeURL();
                              
                              ? 1 Antwort Letzte Antwort
                              0
                              • D denjo

                                @homoran sorry ich hatte das script hier aus den Forum, mit java kenne ich mich leider nicht aus?

                                /* VIS Tagesschau_Link
                                parsed die Seite https://www.tagesschau.de/100sekunden/ und sucht nach der URL zum aktuellsten Video
                                {1}
                                02.03.2016 erstellt von pix
                                15.03.2016 zu Javascript Instanz 1 gewechselt
                                24.09.2016 umbenannt in VIS_Link_Tagesschau
                                11.11.2018 Skript angepasst und optimiert
                                03.05.2021 Skript an neue Tagesschau-Seite angepasst und optimiert
                                */
                                 
                                 
                                const logging = true;
                                const idURL = '0_userdata.0.Tagesschau_100';
                                const idURL2 = '0_userdata.0.Tagesschau_Stream';
                                const link = 'http://www.tagesschau.de/multimedia/sendung/tagesschau_in_100_sekunden/';
                                let film_url; let stream_url;
                                 
                                 
                                function findeURL () {   
                                   try {
                                        httpGet(link, { responseType: 'text' }, (error, response) => { 
                                            if (!error && response.statusCode == 200) {
                                               let regexp = /media\.tagesschau\.de\/video\/\d*\/\d*\/TV-\d*-\d*-\d*\.webxl\.h264\.mp4/gm;
                                               let result_arr = regexp.exec(response.data);
                                               film_url = result_arr[0];
                                               setState(idURL, "https://" + film_url);
                                               if (logging) log ("URL: " + "https://" + film_url);
                                            } else { 
                                                log(error, 'error'); 
                                            } 
                                        });
                                    } catch (fehler) {
                                        log("Fehler (try): " + fehler, "error");
                                    }
                                        // nicht schön, aber nochmal für Stream
                                   try {
                                        //Tagesschau Stream als HTML
                                        const link = "https://www.tagesschau.de/multimedia/livestreams/";
                                        httpGet(link, { responseType: 'text' }, (error, response) => { 
                                            if (!error && response.statusCode == 200) {
                                               stream_url = "https://www.tagesschau.de/multimedia/livestreams/index~player.html";
                                               setState(idURL2, stream_url);
                                               if (logging) log ("HTML: " + stream_url);
                                            } else { 
                                                log(error, 'error'); 
                                            } 
                                        });
                                    } catch (fehler) {
                                        log("Fehler (try): " + fehler, "error");
                                    }
                                } 
                                 
                                schedule("8 */1 * * *", findeURL); // jedeStunde um 8 nach voll
                                findeURL();
                                
                                ? Offline
                                ? Offline
                                Ein ehemaliger Benutzer
                                schrieb am zuletzt editiert von
                                #16

                                @denjo

                                das wurde in dem entsprechenden Thread schon geloest:
                                https://forum.iobroker.net/post/1161793

                                D 1 Antwort Letzte Antwort
                                0
                                • ? Ein ehemaliger Benutzer

                                  @denjo

                                  das wurde in dem entsprechenden Thread schon geloest:
                                  https://forum.iobroker.net/post/1161793

                                  D Offline
                                  D Offline
                                  denjo
                                  schrieb am zuletzt editiert von denjo
                                  #17

                                  @ilovegym könntest du es mir erklären ich steh etwas auf dem schlauch?

                                  muss ich das "https://" oder "http://" im script ändern??

                                  ? 1 Antwort Letzte Antwort
                                  0
                                  • D denjo

                                    @ilovegym könntest du es mir erklären ich steh etwas auf dem schlauch?

                                    muss ich das "https://" oder "http://" im script ändern??

                                    ? Offline
                                    ? Offline
                                    Ein ehemaliger Benutzer
                                    schrieb am zuletzt editiert von
                                    #18

                                    @denjo

                                    neee, warum? Wenn du die aktuelle Version des Scripts hast, dann sollte die auch funktionieren.
                                    Welche Version des javascript-Adapters?

                                    Der Fehler sagt ja, dass ein Timeout nach 2000ms kommt... also waere die Addresse nicht zu erreichen..??

                                    D 1 Antwort Letzte Antwort
                                    0
                                    • ? Ein ehemaliger Benutzer

                                      @denjo

                                      neee, warum? Wenn du die aktuelle Version des Scripts hast, dann sollte die auch funktionieren.
                                      Welche Version des javascript-Adapters?

                                      Der Fehler sagt ja, dass ein Timeout nach 2000ms kommt... also waere die Addresse nicht zu erreichen..??

                                      D Offline
                                      D Offline
                                      denjo
                                      schrieb am zuletzt editiert von
                                      #19

                                      @ilovegym v. 8.3.1 und ja habe das letzte script aus dem Thread genommen.

                                      ? 1 Antwort Letzte Antwort
                                      0
                                      • D denjo

                                        @ilovegym v. 8.3.1 und ja habe das letzte script aus dem Thread genommen.

                                        ? Offline
                                        ? Offline
                                        Ein ehemaliger Benutzer
                                        schrieb am zuletzt editiert von
                                        #20

                                        @denjo glaub in der Version war genau da auch ein Fehler drin.. ist in den neueren Versionen behoben.. also entweder warten, bis eine stable ist, oder die aktuelle latest installieren..oder mit den timeout-error leben.. das macht ja nix kaputt...

                                        D 1 Antwort Letzte Antwort
                                        1
                                        • ? Ein ehemaliger Benutzer

                                          @denjo glaub in der Version war genau da auch ein Fehler drin.. ist in den neueren Versionen behoben.. also entweder warten, bis eine stable ist, oder die aktuelle latest installieren..oder mit den timeout-error leben.. das macht ja nix kaputt...

                                          D Offline
                                          D Offline
                                          denjo
                                          schrieb am zuletzt editiert von
                                          #21

                                          @ilovegym ja alles gut, dann weiß ich das es nicht an mir liegt. danke

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


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          527

                                          Online

                                          32.5k

                                          Benutzer

                                          81.6k

                                          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