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. Tester
  4. Tester für Javascript 9.0.1 gesucht

NEWS

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

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

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

Tester für Javascript 9.0.1 gesucht

Geplant Angeheftet Gesperrt Verschoben Tester
84 Beiträge 25 Kommentatoren 9.9k Aufrufe 23 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.
  • BluefoxB Offline
    BluefoxB Offline
    Bluefox
    schrieb am zuletzt editiert von
    #1
    Aktuelle Test Version 9.0.1
    Veröffentlichungsdatum 04.06.2025
    Github Link https://github.com/ioBroker/ioBroker.javascript

    Changelog

    • (@klein0r) Added possibility to escape chars in formatTimeDiff
    • (@GermanBluefox) Back-end was migrated to TypeScript
    • (@GermanBluefox) Breaking change: removed "request" module
    • (@GermanBluefox) Added prettier for scripts

    Also, Hauptänderung das ist dass alles auf TypeScript (Back-End) umgestellt wurde.
    Alles soll wie frühe funktionieren.
    Zusätzlich gibt es die Möglichkeit den Kode zu formatieren:

    56fb6c46-23ea-4dde-b3f4-778a42d177ae-image.png

    Das wird erleichtern die Weiterentwicklung von JavaScript adapter.

    sigi234S Thomas BraunT ? T 4 Antworten Letzte Antwort
    6
    • BluefoxB Bluefox
      Aktuelle Test Version 9.0.1
      Veröffentlichungsdatum 04.06.2025
      Github Link https://github.com/ioBroker/ioBroker.javascript

      Changelog

      • (@klein0r) Added possibility to escape chars in formatTimeDiff
      • (@GermanBluefox) Back-end was migrated to TypeScript
      • (@GermanBluefox) Breaking change: removed "request" module
      • (@GermanBluefox) Added prettier for scripts

      Also, Hauptänderung das ist dass alles auf TypeScript (Back-End) umgestellt wurde.
      Alles soll wie frühe funktionieren.
      Zusätzlich gibt es die Möglichkeit den Kode zu formatieren:

      56fb6c46-23ea-4dde-b3f4-778a42d177ae-image.png

      Das wird erleichtern die Weiterentwicklung von JavaScript adapter.

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

      @bluefox

      Installation erfolgreich.
      Derzeit kommt folgender Fehler:

      javascript.0
      2025-06-04 08:59:06.835	error	script.js.Test.Fenster2: at Object.callback (C:\SmartHome\node_modules\iobroker.javascript\build-backend\lib\sandbox.js:1418:38)
      
      javascript.0
      2025-06-04 08:59:06.835	error	script.js.Test.Fenster2: at Object.<anonymous> (script.js.Test.Fenster2:103:13)
      
      javascript.0
      2025-06-04 08:59:06.835	error	script.js.Test.Fenster2: at Count (script.js.Test.Fenster2:141:20)
      
      javascript.0
      2025-06-04 08:59:06.835	error	script.js.Test.Fenster2: at Array.forEach (<anonymous>)
      
      javascript.0
      2025-06-04 08:59:06.835	error	script.js.Test.Fenster2: at script.js.Test.Fenster2:142:34
      
      javascript.0
      2025-06-04 08:59:06.835	error	script.js.Test.Fenster2: at result.each (C:\SmartHome\node_modules\iobroker.javascript\build-backend\lib\sandbox.js:947:29)
      
      javascript.0
      2025-06-04 08:59:06.835	error	script.js.Test.Fenster2: at script.js.Test.Fenster2:156:21
      
      javascript.0
      2025-06-04 08:59:06.834	error	script.js.Test.Fenster2: at writelog (script.js.Test.Fenster2:345:8)
      
      javascript.0
      2025-06-04 08:59:06.834	error	script.js.Test.Fenster2: at ProtectFs.readFile (C:\SmartHome\node_modules\iobroker.javascript\build-backend\lib\protectFs.js:229:32)
      
      javascript.0
      2025-06-04 08:59:06.834	error	script.js.Test.Fenster2: at ProtectFs.readFile (node:fs:366:3)
      
      javascript.0
      2025-06-04 08:59:06.834	error	script.js.Test.Fenster2: Error in callback: TypeError [ERR_INVALID_ARG_TYPE]: The "cb" argument must be of type function. Received type string ('utf8')
      

      Hier das Skript dazu:

       // Zählscript für Fenster, Brunnen, Rolladen, Lichter (Dimmer und state) und Hue
      // Autor Looxer01 July 2020, optimiert und erweitert 08 2024
      // Version 4.6 23.09.2024 // korrektur initialer durchlauf / Text nur bis zum ersten Punkt // algemeiner Pfad hinzugefügt
      // Version 4.7 24.09.2024 // Reihenfolge CreateState&Initialisierung geändert // Korrektur paths
      
      
      // Das script sollte neu gestartet werden, wenn neue Objekte hinzukommen. z.B. neue HueLampen,(HM-Geräte ist automatisiert) Ansonsten erfolgt keine Zählung dieser Objektge
      // Das Löschen von relevanten Geräten sollte programmtechnisch abgefangen sein / Trotzdem empfehle ich das script neu zu starten
      //-------------------------------------------------------------------------------------------------------------------------------------------
      // Einstellungsbereich
      
      // Datenpunkte werden automatisch angelegt. Muss im Javascript Tree erfolgen, zwingend count, active, text und status müssen angelegt werden
      // Pfade für die Zählungsergebnisse
      // Achtung in allen 3 Tabellen muss Groß und Kleinschreibung berücksichtigt werden. Wenn in paths z.B. "MOTION" definiert ist, dann muss so auch in selectors definiert werden
      
      // CommonPath kann auch auf userdata gelegt werden. Einfach den Vorschlag übernehmen 
      const CommmonPath = "javascript.0.Counts.";
      //const CommmonPath = "0_userdata.0.Counts.";
      
      
      const paths = {
          Leuchten: {
              count: CommmonPath+'Leuchten.anzahlLichter',
              active: CommmonPath+'Leuchten.anzahlLichterAn',
              text: CommmonPath+'Leuchten.textLichterAn',
              status: CommmonPath+'Leuchten.Statusliste'
          },
          Fenster: {
              count: CommmonPath+'Fenster.anzahlFenster',
              active: CommmonPath+'Fenster.anzahlFensterauf',
              text: CommmonPath+'Fenster.textFensterauf',
              status: CommmonPath+'Fenster.Statusliste'
          },
          MOTION: {
              count: CommmonPath+'Motion.anzahlMotion',
              active: CommmonPath+'Motion.anzahlMotionAktiv',
              text: CommmonPath+'Motion.textMotionAktiv',
              status: CommmonPath+'Motion.Statusliste'
          },
          
          // Weitere Daenpunkte können hier hinzugefügt werden / löschen von Datenpunkten falls nicht benötigt
      };
      
      // Array für benutzerdefinierte Zusammenfassungen in die Zuvor definierten Datenpunkte, z.B. Dimmer Hue Lampen
      // Der name wird gemapped mit den Namen in der Tabelle paths - bedeutet die 3 Selektoren "Lampen,Dimmer,Hue" werden im Pfad unter "Leuchten" zusammengefasst.
      // Beispielsweise könnten auch Fenster und Rolladen zusammengefasst werden
      const groupings = {
          Leuchten: ['Lampen', 'Dimmer', 'Hue'], // "Lampen und Dimmer und Hue werden unter Leuchten zusammengefasst"
          // Weitere Zusammenfassungen können hier hinzugefügt werden / falls keine Groupings benötigt werden, dann ersetzen mit     const groupings = []
      };
      
      // Selectoren sind eine Art Filter um die richtigen Datenpunkte zu finden, die dann subscribed werden
      // Functions in iobroker entsprechen Gewerke in Homematic
      // Achtung die Namen aus den Datenpunkten muessen exakt mit den hier verwendeten Namen übereinstimmmen: also z.B. MOTION = MOTION
      // der update der Hue lampen dauert etwas länger, da die updates über die Hue-Bridge relativ langsam sind
      const selectors = {
          Lampen:     $('channel[state.id=*.STATE](functions=Licht)'), // allen Leuchten wurde das Gewerk "Licht zugeordnet aber nur für den relevanten Kanal in Homematic"
          Dimmer:     $('channel[state.id=*.LEVEL](functions=Licht)'),
          Hue:        $('channel[state.id=hue.0.*.on](functions=Hue)'), // in der objektliste habe ich den channels (Hue-Leuchten) die Funktion "Hue" zugeordnet
          Fenster:    $('channel[state.id=*.STATE](functions=Verschluss)'),
          MOTION:     $('channel[state.id=*.MOTION](functions=Sicherheit)'),
          //MOTION:     $('channel[state.id=*.MOTION]')
          
       // Weitere Selektoren können hier hinzugefügt werden / löschen von Selektoren falls nicht benötigt
      }
      
      const ReCreateSubscriptionsonNEW = true; // bei Erkennung neuer Geräte werden subscriptions neu erstellt (Erkennung geht nur bei Homematic)
      
      const debug = true;
      const listSelectors = true; // listet das Ergebnis der Selektoren beimn Start des Programmes- dient zum Fehler finden falls die Zählung nicht funktioniert
      
      const logObjects = ['MOTION'];  // die hier angegebenen Objekte (aus den selectors) werden in einer excel-lesbaren Datei geloggt
      // Weitere Objekte können hinzugefügt werden, z.B.  const logObjects = ['MOTION','Fenster']; oder keine Objekte: const logObjects = []
      
      
      // Ende Einstellungsbereich
      //----------------------------------------------------------------------------------------------------------------------------------------------
      const LogPath =  "/Users/sigi/Documents/Zaehlscript.csv"        // falls ein externes log in CSV Format geschrieben werden soll. (anhand Array logObjects)
      let subscriptions = []; // Array, um Subscriptions zu speichern wird genutzt für neu Erstellung der Subsriptions wenn neue Geräte hinzugefügt wurden
      
      if (listSelectors) { listMembers(); }; // Falls erforderlich, die Selector-Ergebnisse auflisten
      checkConsistency(paths, selectors, groupings); // Konsistenzprüfung der Arrays
      
      let modus = "init"; // während des Durchlaufs kann festgestellt werden, ob es sich um die Initialisierung handelt / kein log schreiben bei initialisierung
      CreateStates(() => {                                        // Anlegen der States mit Callback, um abzuwarten bis die States zur Verfügung stehen
          initializeCounts();                                     // Zählungen initialisieren
          modus = "subscription";                                 // Nach Abschluss aller Initialisierungen Modus auf 'subscription' setzen
      });
      
      
      if (ReCreateSubscriptionsonNEW) {                       // Falls neue Geräte erkannt werden, Subscriptions neu erstellen
          on({id: 'hm-rpc.0.updated', val: true, change: 'ne'}, recreateSubscriptions); 
          on({id: 'hm-rpc.1.updated', val: true, change: 'ne'}, recreateSubscriptions);
      }
      setupSubscriptions();                                       // Die Subscriptions für die Selectors werden eingerichtet
      //-----------------------------------------------------------------------------------------
      // Function setupSubscriptions - Einrichtung der Subscriptions
      //-----------------------------------------------------------------------------------------
      function setupSubscriptions() {
          Object.keys(selectors).forEach(type => {
              selectors[type].on(obj => {
                  Count(obj.id, obj.state.val, type);
              });
          });
      }
      //-----------------------------------------------------------------------------------------
      // Function recreateSubscriptions - Neuererstellung der Subscriptions
      //-----------------------------------------------------------------------------------------
      function recreateSubscriptions() {
          clearSubscriptions();
          setupSubscriptions(); // Subscriptions neu erstellen
          log("Es gab neue HMIP-Objekte - Subscriptions wurden neu erstellt");
      }
      //-----------------------------------------------------------------------------------------
      // Function recreateSubscriptions - Löschen der Subscriptions
      //-----------------------------------------------------------------------------------------
      function clearSubscriptions() {
          subscriptions.forEach(unsubscribe => unsubscribe()); // Alle gespeicherten Subscriptions aufheben
          subscriptions = []; // Array leeren
          log("Es gab neue HMIP-Objekte - Subscriptions wurden gelöscht");
      }
      //-----------------------------------------------------------------------------------------
      // Function Count - Zentrale Routine die bei Änderung eines Zustandes aufgerufen wird
      // geht durch alle Datenpunkte des Selectors und zählt - falls ein relevantes Gerät eingeschaltet ist
      //-----------------------------------------------------------------------------------------
      function Count(triggerId, newState, type) {
      //    if(triggerId === null ){return}; // keine Ergebnisse gefunden
          let primaryType = getPrimaryTypeForType(type);
          let typesToProcess = groupings[primaryType] || [primaryType];     // Wenn kein passender primaryType in den groupings gefunden wurde, nehmen wir den Typ direkt
          if (!paths[primaryType]) {
              log(`Kein Pfad für Typ ${primaryType} gefunden`, 'warn');
              return;
          }
          let path = paths[primaryType];
          let counterAll = 0;
          let counterActive = 0;
          const text = [];
          let jsonString = "[";
          // Iteration über die zu verarbeitenden Typen (entweder Gruppe oder einzelner Typ)
          typesToProcess.forEach(selectorType => {
              selectors[selectorType]?.each((id) => {
                  if (CheckDataPoint(id) === false) {
                      log("Objekt mit ID "+id + " existiert nicht, Zaehlung nicht vollstaendig // Subscriptions werden neu erstellt","warn");
                      clearSubscriptions();
                      setupSubscriptions();
                      return;
                  }
                  const status = getState(id).val;
                  const object = getObject(id);
                  if (shouldCount(status, selectorType, id)) {
                      counterActive++;
                      text.push(createTextEntry(object.common.name));
                      jsonString += createJsonEntry(selectorType, object.common.name, status);
                      if (modus != "init" && logObjects.includes(type)) {   // nur wenn keine initialisierung läuft und wenn das object geloggt werden soll erfolgt ein logeintrag
                          writelog(type+","+id+","+ object.common.name+";"+status);
                      }
                  }
                  counterAll++;
              });
          });
          jsonString = `${jsonString}]`.replace(",]", "]");
          logResult(type, counterAll, counterActive, triggerId, newState);
          setStateValues(path, counterAll, counterActive, text, jsonString);
      }
      //-----------------------------------------------------------------------------------------
      // Function getPrimaryTypeForType - Zentrale Routine die bei Änderung eines Zustandes aufgerufen wird
      // geht durch alle Datenpunkte des Selectors und zählt - falls ein relevantes Gerät eingeschaltet ist
      //-----------------------------------------------------------------------------------------
      function getPrimaryTypeForType(type) {
          // Suche den primaryType in den Gruppierungen, in denen dieser Typ enthalten ist
          for (let primaryType in groupings) {
              if (groupings[primaryType].includes(type)) {
                  return primaryType;
              }
          }
          if ( type ) {
              return type; // Wenn nicht in den Gruppierungen, als einzelner Typ behandeln
          }
          return null;
      }
      //-----------------------------------------------------------------------------------------
      // Function shouldCount -check relevanz ob hochgezählt werden soll
      //-----------------------------------------------------------------------------------------
      function shouldCount(status, type, id) {
          return status === true || parseFloat(status) > 0;
      }
      //-----------------------------------------------------------------------------------------
      // Function createJsonEntry - Routine erzeugt Json record
      //-----------------------------------------------------------------------------------------
      function createJsonEntry(type, Name, status) {
          let CleanName = Name.split('.')[0];
          return `{"Type":"${type}","Ort":"${CleanName}","Status":"${status}"},`;
      }
      //-----------------------------------------------------------------------------------------
      // Function createTextEntry - Routine erzeugt Text record
      //-----------------------------------------------------------------------------------------
      function createTextEntry(Name) {
          let CleanName = Name.split('.')[0];
          return CleanName;
      
      }
      //-----------------------------------------------------------------------------------------
      // Function logResult - log falls debug = true
      //-----------------------------------------------------------------------------------------
      function logResult(type, counterAll, counterActive, triggerId, newState) {
          let commonName = "Initial";
          if (triggerId !== null) {
             commonName = getObject(triggerId).common.name;   
          }
          if (debug) {
                  log(`Anzahl ${type}: ${counterAll} | ${type} aktiv: ${counterActive} | Auslöser: ${commonName} | Status: ${newState}`, "info");
          }
      }
      //-----------------------------------------------------------------------------------------
      // Function setStateValues - speichern der Zählung in den relevanten Datepunkten
      //-----------------------------------------------------------------------------------------
      function setStateValues(path, counterAll, counterActive, text, jsonString) {
          setState(path.status, jsonString);
          setState(path.active, counterActive);
          setState(path.count, counterAll);
          setState(path.text, text.toString());
      }
      //-----------------------------------------------------------------------------------------
      // Function CreateStates - Anlegen der States mit Verzögerung bis angelegt
      //-----------------------------------------------------------------------------------------
      function CreateStates(callback) {
          let createCount = 0;
          let expectedCount = 0;
          Object.keys(paths).forEach(type => {
              const path = paths[type];
              expectedCount += 4;          // Zählt die erwarteten neuen Datenpunkte
              createState(path.count, 0, { read: true, write: true, type: 'number', name: `Anzahl ${type}`, desc: `Anzahl ${type}` }, () => { createCount++; checkIfAllCreated(); });
              createState(path.active, 0, { read: true, write: true, type: 'number', name: `Anzahl ${type} aktiv`, desc: `Anzahl ${type} aktiv` }, () => {createCount++; checkIfAllCreated();});
              createState(path.text, "", { read: true, write: true, type: 'string', name: `Text ${type}`, desc: `Text ${type}` }, () => { createCount++;checkIfAllCreated(); });
              createState(path.status, "[]", { read: true, write: true, type: 'string', name: `Status ${type} JSON Liste`, desc: `Status ${type} als JSON` }, () => {createCount++; checkIfAllCreated();});
          });
      //-----------------------------------------------------------------------------------------
      // Function CreateStates - Anlegen der States mit Verzögerung bis angelegt
      //-----------------------------------------------------------------------------------------
      function checkIfAllCreated() {
              if (createCount === expectedCount && typeof callback === 'function') {
                  callback();
              }
          }
      }
      //-----------------------------------------------------------------------------------------
      // Function CheckDataPoint - Check States ob angelegt /falls objekte geloescht wurden
      //-----------------------------------------------------------------------------------------
      function CheckDataPoint(id) {
          return existsState(id)
      }
      //-----------------------------------------------------------------------------------------
      // Function initializeCounts - Initialisierung der Zähler beim Starten des Programmes. 
      // ermittelt aktuelle Zählung
      //-----------------------------------------------------------------------------------------
      function initializeCounts() {
          // Erst alle Typen, die in den groupings definiert sind
          Object.keys(groupings).forEach(primaryType => {
              Count(null, null, primaryType);
          });
          // Dann alle Typen, die nicht in den groupings enthalten sind
          Object.keys(selectors).forEach(type => {
              if (!Object.keys(groupings).some(primaryType => groupings[primaryType].includes(type))) {
                  Count(null, null, type);
              }
          });
      }
      //-----------------------------------------------------------------------------------------
      // Function listMembers - Funktion zum Auflisten der Mitglieder aller Selektoren - dient zur Fehlerfindung
      //-----------------------------------------------------------------------------------------
      function listMembers() {
          for (const [key, selector] of Object.entries(selectors)) {
              log(`Liste der ${key}-Geräte:`, 'info');
              
              selector.each((id) => {
                  const obj = getObject(id);
                  const name = obj && obj.common && obj.common.name ? obj.common.name : 'Unbekannt';
                  log(`- ID: ${id} | Name: ${name}`, 'info');
              });
              
              log(`Ende der ${key}-Liste`, 'info');
              log('', 'info');  // Leere Zeile zwischen den Typen
          }
      }
      //-----------------------------------------------------------------------------------------
      // Function checkConsistency - Funktion zur Überprüfung der übereinstimmung der arrays
      //-----------------------------------------------------------------------------------------
      function checkConsistency(paths, selectors, groupings) {
          // Extrahiere die Schlüssel aus paths und selectors
          const pathKeys = Object.keys(paths);
          const selectorKeys = Object.keys(selectors);
      
          // Wenn groupings angegeben ist, erstellen Sie eine Sammlung aller Keys aus groupings
          const groupKeys = groupings ? Object.keys(groupings) : [];
      
          // Sammle alle Mitglieder von groupings in einem Set
          const groupMembers = new Set();
          for (const key of groupKeys) {
              if (groupings[key]) {
                  groupings[key].forEach(member => groupMembers.add(member));
              }
          }
          // Prüfen, ob alle Keys in groupings auch in paths vorhanden sind
          const missingInPaths = groupKeys.filter(key => !pathKeys.includes(key));
      
          // Prüfen, ob alle Mitglieder der groupings in selectors vorhanden sind
          const missingInSelectors = [...groupMembers].filter(member => !selectorKeys.includes(member));
      
            // Ausgabe der Ergebnisse
          if (missingInPaths.length === 0 && missingInSelectors.length === 0 ) {
              if(debug) {console.log('Alle Namen stimmen überein.');};
          } else {
              if (missingInPaths.length > 0) {
                  console.warn(`Die folgenden Keys fehlen in paths, obwohl sie in groupings vorhanden sind: ${missingInPaths.join(', ')}`);
              }
              if (missingInSelectors.length > 0) {
                  console.warn(`Die folgenden Mitglieder der groupings fehlen in selectors: ${missingInSelectors.join(', ')}`);
              }
      
          }
      }
      //-----------------------------------------------------------------------------------------------------
      // Funktion zur Erzeugung von fuehrenden Nullen fuer das Datum Format
      //-----------------------------------------------------------------------------------------------------
      function addZero(i) {
          return i < 10 ? "0" + i : i;
      }
      //-----------------------------------------------------------------------------------------
      // Function writelog - Logeintrag schreiben
      //-----------------------------------------------------------------------------------------
      function writelog(string) {
          const fs = require('fs'); // enable write for external log
          const now = new Date();
          const [year, month, day, Thour, Tmin, Tsec] = [
              now.getFullYear(),
              addZero(now.getMonth() + 1),
              addZero(now.getDate()),
              addZero(now.getHours()),
              addZero(now.getMinutes()),
              addZero(now.getSeconds())
          ];
          const logdate = `${day}.${month}.${year}`;
          const logtime = `${Thour}:${Tmin}:${Tsec}`;
          fs.readFile(LogPath, 'utf8', (err, data) => {
              const entry = `${logdate} ;${logtime} ;${string}\n`;
              if (!err) {
                  fs.appendFileSync(LogPath, entry);
              } else {
                  log("Zaehlscript-Logging: Routine writelog - Logfile nicht gefunden - wird angelegt", "info");
                  const headerLine = "Datum;Uhrzeit;Type;GeraeteID;Geraetebezeichnung;Status";
                  fs.appendFileSync(LogPath, `${headerLine}\n${entry}`);
              }
          });
      }
      

      Plattform: Windows
      Admin: 7.6.18
      Node.js: v20.19.2
      NPM: 10.8.2
      JS: 9.0.1

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

      BluefoxB 1 Antwort Letzte Antwort
      0
      • sigi234S sigi234

        @bluefox

        Installation erfolgreich.
        Derzeit kommt folgender Fehler:

        javascript.0
        2025-06-04 08:59:06.835	error	script.js.Test.Fenster2: at Object.callback (C:\SmartHome\node_modules\iobroker.javascript\build-backend\lib\sandbox.js:1418:38)
        
        javascript.0
        2025-06-04 08:59:06.835	error	script.js.Test.Fenster2: at Object.<anonymous> (script.js.Test.Fenster2:103:13)
        
        javascript.0
        2025-06-04 08:59:06.835	error	script.js.Test.Fenster2: at Count (script.js.Test.Fenster2:141:20)
        
        javascript.0
        2025-06-04 08:59:06.835	error	script.js.Test.Fenster2: at Array.forEach (<anonymous>)
        
        javascript.0
        2025-06-04 08:59:06.835	error	script.js.Test.Fenster2: at script.js.Test.Fenster2:142:34
        
        javascript.0
        2025-06-04 08:59:06.835	error	script.js.Test.Fenster2: at result.each (C:\SmartHome\node_modules\iobroker.javascript\build-backend\lib\sandbox.js:947:29)
        
        javascript.0
        2025-06-04 08:59:06.835	error	script.js.Test.Fenster2: at script.js.Test.Fenster2:156:21
        
        javascript.0
        2025-06-04 08:59:06.834	error	script.js.Test.Fenster2: at writelog (script.js.Test.Fenster2:345:8)
        
        javascript.0
        2025-06-04 08:59:06.834	error	script.js.Test.Fenster2: at ProtectFs.readFile (C:\SmartHome\node_modules\iobroker.javascript\build-backend\lib\protectFs.js:229:32)
        
        javascript.0
        2025-06-04 08:59:06.834	error	script.js.Test.Fenster2: at ProtectFs.readFile (node:fs:366:3)
        
        javascript.0
        2025-06-04 08:59:06.834	error	script.js.Test.Fenster2: Error in callback: TypeError [ERR_INVALID_ARG_TYPE]: The "cb" argument must be of type function. Received type string ('utf8')
        

        Hier das Skript dazu:

         // Zählscript für Fenster, Brunnen, Rolladen, Lichter (Dimmer und state) und Hue
        // Autor Looxer01 July 2020, optimiert und erweitert 08 2024
        // Version 4.6 23.09.2024 // korrektur initialer durchlauf / Text nur bis zum ersten Punkt // algemeiner Pfad hinzugefügt
        // Version 4.7 24.09.2024 // Reihenfolge CreateState&Initialisierung geändert // Korrektur paths
        
        
        // Das script sollte neu gestartet werden, wenn neue Objekte hinzukommen. z.B. neue HueLampen,(HM-Geräte ist automatisiert) Ansonsten erfolgt keine Zählung dieser Objektge
        // Das Löschen von relevanten Geräten sollte programmtechnisch abgefangen sein / Trotzdem empfehle ich das script neu zu starten
        //-------------------------------------------------------------------------------------------------------------------------------------------
        // Einstellungsbereich
        
        // Datenpunkte werden automatisch angelegt. Muss im Javascript Tree erfolgen, zwingend count, active, text und status müssen angelegt werden
        // Pfade für die Zählungsergebnisse
        // Achtung in allen 3 Tabellen muss Groß und Kleinschreibung berücksichtigt werden. Wenn in paths z.B. "MOTION" definiert ist, dann muss so auch in selectors definiert werden
        
        // CommonPath kann auch auf userdata gelegt werden. Einfach den Vorschlag übernehmen 
        const CommmonPath = "javascript.0.Counts.";
        //const CommmonPath = "0_userdata.0.Counts.";
        
        
        const paths = {
            Leuchten: {
                count: CommmonPath+'Leuchten.anzahlLichter',
                active: CommmonPath+'Leuchten.anzahlLichterAn',
                text: CommmonPath+'Leuchten.textLichterAn',
                status: CommmonPath+'Leuchten.Statusliste'
            },
            Fenster: {
                count: CommmonPath+'Fenster.anzahlFenster',
                active: CommmonPath+'Fenster.anzahlFensterauf',
                text: CommmonPath+'Fenster.textFensterauf',
                status: CommmonPath+'Fenster.Statusliste'
            },
            MOTION: {
                count: CommmonPath+'Motion.anzahlMotion',
                active: CommmonPath+'Motion.anzahlMotionAktiv',
                text: CommmonPath+'Motion.textMotionAktiv',
                status: CommmonPath+'Motion.Statusliste'
            },
            
            // Weitere Daenpunkte können hier hinzugefügt werden / löschen von Datenpunkten falls nicht benötigt
        };
        
        // Array für benutzerdefinierte Zusammenfassungen in die Zuvor definierten Datenpunkte, z.B. Dimmer Hue Lampen
        // Der name wird gemapped mit den Namen in der Tabelle paths - bedeutet die 3 Selektoren "Lampen,Dimmer,Hue" werden im Pfad unter "Leuchten" zusammengefasst.
        // Beispielsweise könnten auch Fenster und Rolladen zusammengefasst werden
        const groupings = {
            Leuchten: ['Lampen', 'Dimmer', 'Hue'], // "Lampen und Dimmer und Hue werden unter Leuchten zusammengefasst"
            // Weitere Zusammenfassungen können hier hinzugefügt werden / falls keine Groupings benötigt werden, dann ersetzen mit     const groupings = []
        };
        
        // Selectoren sind eine Art Filter um die richtigen Datenpunkte zu finden, die dann subscribed werden
        // Functions in iobroker entsprechen Gewerke in Homematic
        // Achtung die Namen aus den Datenpunkten muessen exakt mit den hier verwendeten Namen übereinstimmmen: also z.B. MOTION = MOTION
        // der update der Hue lampen dauert etwas länger, da die updates über die Hue-Bridge relativ langsam sind
        const selectors = {
            Lampen:     $('channel[state.id=*.STATE](functions=Licht)'), // allen Leuchten wurde das Gewerk "Licht zugeordnet aber nur für den relevanten Kanal in Homematic"
            Dimmer:     $('channel[state.id=*.LEVEL](functions=Licht)'),
            Hue:        $('channel[state.id=hue.0.*.on](functions=Hue)'), // in der objektliste habe ich den channels (Hue-Leuchten) die Funktion "Hue" zugeordnet
            Fenster:    $('channel[state.id=*.STATE](functions=Verschluss)'),
            MOTION:     $('channel[state.id=*.MOTION](functions=Sicherheit)'),
            //MOTION:     $('channel[state.id=*.MOTION]')
            
         // Weitere Selektoren können hier hinzugefügt werden / löschen von Selektoren falls nicht benötigt
        }
        
        const ReCreateSubscriptionsonNEW = true; // bei Erkennung neuer Geräte werden subscriptions neu erstellt (Erkennung geht nur bei Homematic)
        
        const debug = true;
        const listSelectors = true; // listet das Ergebnis der Selektoren beimn Start des Programmes- dient zum Fehler finden falls die Zählung nicht funktioniert
        
        const logObjects = ['MOTION'];  // die hier angegebenen Objekte (aus den selectors) werden in einer excel-lesbaren Datei geloggt
        // Weitere Objekte können hinzugefügt werden, z.B.  const logObjects = ['MOTION','Fenster']; oder keine Objekte: const logObjects = []
        
        
        // Ende Einstellungsbereich
        //----------------------------------------------------------------------------------------------------------------------------------------------
        const LogPath =  "/Users/sigi/Documents/Zaehlscript.csv"        // falls ein externes log in CSV Format geschrieben werden soll. (anhand Array logObjects)
        let subscriptions = []; // Array, um Subscriptions zu speichern wird genutzt für neu Erstellung der Subsriptions wenn neue Geräte hinzugefügt wurden
        
        if (listSelectors) { listMembers(); }; // Falls erforderlich, die Selector-Ergebnisse auflisten
        checkConsistency(paths, selectors, groupings); // Konsistenzprüfung der Arrays
        
        let modus = "init"; // während des Durchlaufs kann festgestellt werden, ob es sich um die Initialisierung handelt / kein log schreiben bei initialisierung
        CreateStates(() => {                                        // Anlegen der States mit Callback, um abzuwarten bis die States zur Verfügung stehen
            initializeCounts();                                     // Zählungen initialisieren
            modus = "subscription";                                 // Nach Abschluss aller Initialisierungen Modus auf 'subscription' setzen
        });
        
        
        if (ReCreateSubscriptionsonNEW) {                       // Falls neue Geräte erkannt werden, Subscriptions neu erstellen
            on({id: 'hm-rpc.0.updated', val: true, change: 'ne'}, recreateSubscriptions); 
            on({id: 'hm-rpc.1.updated', val: true, change: 'ne'}, recreateSubscriptions);
        }
        setupSubscriptions();                                       // Die Subscriptions für die Selectors werden eingerichtet
        //-----------------------------------------------------------------------------------------
        // Function setupSubscriptions - Einrichtung der Subscriptions
        //-----------------------------------------------------------------------------------------
        function setupSubscriptions() {
            Object.keys(selectors).forEach(type => {
                selectors[type].on(obj => {
                    Count(obj.id, obj.state.val, type);
                });
            });
        }
        //-----------------------------------------------------------------------------------------
        // Function recreateSubscriptions - Neuererstellung der Subscriptions
        //-----------------------------------------------------------------------------------------
        function recreateSubscriptions() {
            clearSubscriptions();
            setupSubscriptions(); // Subscriptions neu erstellen
            log("Es gab neue HMIP-Objekte - Subscriptions wurden neu erstellt");
        }
        //-----------------------------------------------------------------------------------------
        // Function recreateSubscriptions - Löschen der Subscriptions
        //-----------------------------------------------------------------------------------------
        function clearSubscriptions() {
            subscriptions.forEach(unsubscribe => unsubscribe()); // Alle gespeicherten Subscriptions aufheben
            subscriptions = []; // Array leeren
            log("Es gab neue HMIP-Objekte - Subscriptions wurden gelöscht");
        }
        //-----------------------------------------------------------------------------------------
        // Function Count - Zentrale Routine die bei Änderung eines Zustandes aufgerufen wird
        // geht durch alle Datenpunkte des Selectors und zählt - falls ein relevantes Gerät eingeschaltet ist
        //-----------------------------------------------------------------------------------------
        function Count(triggerId, newState, type) {
        //    if(triggerId === null ){return}; // keine Ergebnisse gefunden
            let primaryType = getPrimaryTypeForType(type);
            let typesToProcess = groupings[primaryType] || [primaryType];     // Wenn kein passender primaryType in den groupings gefunden wurde, nehmen wir den Typ direkt
            if (!paths[primaryType]) {
                log(`Kein Pfad für Typ ${primaryType} gefunden`, 'warn');
                return;
            }
            let path = paths[primaryType];
            let counterAll = 0;
            let counterActive = 0;
            const text = [];
            let jsonString = "[";
            // Iteration über die zu verarbeitenden Typen (entweder Gruppe oder einzelner Typ)
            typesToProcess.forEach(selectorType => {
                selectors[selectorType]?.each((id) => {
                    if (CheckDataPoint(id) === false) {
                        log("Objekt mit ID "+id + " existiert nicht, Zaehlung nicht vollstaendig // Subscriptions werden neu erstellt","warn");
                        clearSubscriptions();
                        setupSubscriptions();
                        return;
                    }
                    const status = getState(id).val;
                    const object = getObject(id);
                    if (shouldCount(status, selectorType, id)) {
                        counterActive++;
                        text.push(createTextEntry(object.common.name));
                        jsonString += createJsonEntry(selectorType, object.common.name, status);
                        if (modus != "init" && logObjects.includes(type)) {   // nur wenn keine initialisierung läuft und wenn das object geloggt werden soll erfolgt ein logeintrag
                            writelog(type+","+id+","+ object.common.name+";"+status);
                        }
                    }
                    counterAll++;
                });
            });
            jsonString = `${jsonString}]`.replace(",]", "]");
            logResult(type, counterAll, counterActive, triggerId, newState);
            setStateValues(path, counterAll, counterActive, text, jsonString);
        }
        //-----------------------------------------------------------------------------------------
        // Function getPrimaryTypeForType - Zentrale Routine die bei Änderung eines Zustandes aufgerufen wird
        // geht durch alle Datenpunkte des Selectors und zählt - falls ein relevantes Gerät eingeschaltet ist
        //-----------------------------------------------------------------------------------------
        function getPrimaryTypeForType(type) {
            // Suche den primaryType in den Gruppierungen, in denen dieser Typ enthalten ist
            for (let primaryType in groupings) {
                if (groupings[primaryType].includes(type)) {
                    return primaryType;
                }
            }
            if ( type ) {
                return type; // Wenn nicht in den Gruppierungen, als einzelner Typ behandeln
            }
            return null;
        }
        //-----------------------------------------------------------------------------------------
        // Function shouldCount -check relevanz ob hochgezählt werden soll
        //-----------------------------------------------------------------------------------------
        function shouldCount(status, type, id) {
            return status === true || parseFloat(status) > 0;
        }
        //-----------------------------------------------------------------------------------------
        // Function createJsonEntry - Routine erzeugt Json record
        //-----------------------------------------------------------------------------------------
        function createJsonEntry(type, Name, status) {
            let CleanName = Name.split('.')[0];
            return `{"Type":"${type}","Ort":"${CleanName}","Status":"${status}"},`;
        }
        //-----------------------------------------------------------------------------------------
        // Function createTextEntry - Routine erzeugt Text record
        //-----------------------------------------------------------------------------------------
        function createTextEntry(Name) {
            let CleanName = Name.split('.')[0];
            return CleanName;
        
        }
        //-----------------------------------------------------------------------------------------
        // Function logResult - log falls debug = true
        //-----------------------------------------------------------------------------------------
        function logResult(type, counterAll, counterActive, triggerId, newState) {
            let commonName = "Initial";
            if (triggerId !== null) {
               commonName = getObject(triggerId).common.name;   
            }
            if (debug) {
                    log(`Anzahl ${type}: ${counterAll} | ${type} aktiv: ${counterActive} | Auslöser: ${commonName} | Status: ${newState}`, "info");
            }
        }
        //-----------------------------------------------------------------------------------------
        // Function setStateValues - speichern der Zählung in den relevanten Datepunkten
        //-----------------------------------------------------------------------------------------
        function setStateValues(path, counterAll, counterActive, text, jsonString) {
            setState(path.status, jsonString);
            setState(path.active, counterActive);
            setState(path.count, counterAll);
            setState(path.text, text.toString());
        }
        //-----------------------------------------------------------------------------------------
        // Function CreateStates - Anlegen der States mit Verzögerung bis angelegt
        //-----------------------------------------------------------------------------------------
        function CreateStates(callback) {
            let createCount = 0;
            let expectedCount = 0;
            Object.keys(paths).forEach(type => {
                const path = paths[type];
                expectedCount += 4;          // Zählt die erwarteten neuen Datenpunkte
                createState(path.count, 0, { read: true, write: true, type: 'number', name: `Anzahl ${type}`, desc: `Anzahl ${type}` }, () => { createCount++; checkIfAllCreated(); });
                createState(path.active, 0, { read: true, write: true, type: 'number', name: `Anzahl ${type} aktiv`, desc: `Anzahl ${type} aktiv` }, () => {createCount++; checkIfAllCreated();});
                createState(path.text, "", { read: true, write: true, type: 'string', name: `Text ${type}`, desc: `Text ${type}` }, () => { createCount++;checkIfAllCreated(); });
                createState(path.status, "[]", { read: true, write: true, type: 'string', name: `Status ${type} JSON Liste`, desc: `Status ${type} als JSON` }, () => {createCount++; checkIfAllCreated();});
            });
        //-----------------------------------------------------------------------------------------
        // Function CreateStates - Anlegen der States mit Verzögerung bis angelegt
        //-----------------------------------------------------------------------------------------
        function checkIfAllCreated() {
                if (createCount === expectedCount && typeof callback === 'function') {
                    callback();
                }
            }
        }
        //-----------------------------------------------------------------------------------------
        // Function CheckDataPoint - Check States ob angelegt /falls objekte geloescht wurden
        //-----------------------------------------------------------------------------------------
        function CheckDataPoint(id) {
            return existsState(id)
        }
        //-----------------------------------------------------------------------------------------
        // Function initializeCounts - Initialisierung der Zähler beim Starten des Programmes. 
        // ermittelt aktuelle Zählung
        //-----------------------------------------------------------------------------------------
        function initializeCounts() {
            // Erst alle Typen, die in den groupings definiert sind
            Object.keys(groupings).forEach(primaryType => {
                Count(null, null, primaryType);
            });
            // Dann alle Typen, die nicht in den groupings enthalten sind
            Object.keys(selectors).forEach(type => {
                if (!Object.keys(groupings).some(primaryType => groupings[primaryType].includes(type))) {
                    Count(null, null, type);
                }
            });
        }
        //-----------------------------------------------------------------------------------------
        // Function listMembers - Funktion zum Auflisten der Mitglieder aller Selektoren - dient zur Fehlerfindung
        //-----------------------------------------------------------------------------------------
        function listMembers() {
            for (const [key, selector] of Object.entries(selectors)) {
                log(`Liste der ${key}-Geräte:`, 'info');
                
                selector.each((id) => {
                    const obj = getObject(id);
                    const name = obj && obj.common && obj.common.name ? obj.common.name : 'Unbekannt';
                    log(`- ID: ${id} | Name: ${name}`, 'info');
                });
                
                log(`Ende der ${key}-Liste`, 'info');
                log('', 'info');  // Leere Zeile zwischen den Typen
            }
        }
        //-----------------------------------------------------------------------------------------
        // Function checkConsistency - Funktion zur Überprüfung der übereinstimmung der arrays
        //-----------------------------------------------------------------------------------------
        function checkConsistency(paths, selectors, groupings) {
            // Extrahiere die Schlüssel aus paths und selectors
            const pathKeys = Object.keys(paths);
            const selectorKeys = Object.keys(selectors);
        
            // Wenn groupings angegeben ist, erstellen Sie eine Sammlung aller Keys aus groupings
            const groupKeys = groupings ? Object.keys(groupings) : [];
        
            // Sammle alle Mitglieder von groupings in einem Set
            const groupMembers = new Set();
            for (const key of groupKeys) {
                if (groupings[key]) {
                    groupings[key].forEach(member => groupMembers.add(member));
                }
            }
            // Prüfen, ob alle Keys in groupings auch in paths vorhanden sind
            const missingInPaths = groupKeys.filter(key => !pathKeys.includes(key));
        
            // Prüfen, ob alle Mitglieder der groupings in selectors vorhanden sind
            const missingInSelectors = [...groupMembers].filter(member => !selectorKeys.includes(member));
        
              // Ausgabe der Ergebnisse
            if (missingInPaths.length === 0 && missingInSelectors.length === 0 ) {
                if(debug) {console.log('Alle Namen stimmen überein.');};
            } else {
                if (missingInPaths.length > 0) {
                    console.warn(`Die folgenden Keys fehlen in paths, obwohl sie in groupings vorhanden sind: ${missingInPaths.join(', ')}`);
                }
                if (missingInSelectors.length > 0) {
                    console.warn(`Die folgenden Mitglieder der groupings fehlen in selectors: ${missingInSelectors.join(', ')}`);
                }
        
            }
        }
        //-----------------------------------------------------------------------------------------------------
        // Funktion zur Erzeugung von fuehrenden Nullen fuer das Datum Format
        //-----------------------------------------------------------------------------------------------------
        function addZero(i) {
            return i < 10 ? "0" + i : i;
        }
        //-----------------------------------------------------------------------------------------
        // Function writelog - Logeintrag schreiben
        //-----------------------------------------------------------------------------------------
        function writelog(string) {
            const fs = require('fs'); // enable write for external log
            const now = new Date();
            const [year, month, day, Thour, Tmin, Tsec] = [
                now.getFullYear(),
                addZero(now.getMonth() + 1),
                addZero(now.getDate()),
                addZero(now.getHours()),
                addZero(now.getMinutes()),
                addZero(now.getSeconds())
            ];
            const logdate = `${day}.${month}.${year}`;
            const logtime = `${Thour}:${Tmin}:${Tsec}`;
            fs.readFile(LogPath, 'utf8', (err, data) => {
                const entry = `${logdate} ;${logtime} ;${string}\n`;
                if (!err) {
                    fs.appendFileSync(LogPath, entry);
                } else {
                    log("Zaehlscript-Logging: Routine writelog - Logfile nicht gefunden - wird angelegt", "info");
                    const headerLine = "Datum;Uhrzeit;Type;GeraeteID;Geraetebezeichnung;Status";
                    fs.appendFileSync(LogPath, `${headerLine}\n${entry}`);
                }
            });
        }
        

        Plattform: Windows
        Admin: 7.6.18
        Node.js: v20.19.2
        NPM: 10.8.2
        JS: 9.0.1

        BluefoxB Offline
        BluefoxB Offline
        Bluefox
        schrieb am zuletzt editiert von
        #3

        @sigi234 Danke. Ich baue gerade neue Version

        sigi234S T 2 Antworten Letzte Antwort
        2
        • BluefoxB Bluefox

          @sigi234 Danke. Ich baue gerade neue Version

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

          @bluefox sagte in Tester für Javascript 9.0.1 gesucht:

          @sigi234 Danke. Ich baue gerade neue Version

          Danke, Fehler ist mit Version 9.0.2
          weg.

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

          1 Antwort Letzte Antwort
          1
          • BluefoxB Bluefox

            @sigi234 Danke. Ich baue gerade neue Version

            T Offline
            T Offline
            TT-Tom
            schrieb am zuletzt editiert von TT-Tom
            #5

            @bluefox

            Installation ist sauber durchgelaufen, alle Script ohne Probleme gestartet. Es laufen hier 2 Instanzen.
            Plattform: linux "Bookwoorm"
            Admin: 7.6.18
            Node.js: v20.19.2
            NPM: 10.8.2

            Gruß Tom
            https://github.com/tt-tom17
            Wenn meine Hilfe erfolgreich war, benutze bitte das Voting unten rechts im Beitrag

            NSPanel Script Wiki
            https://github.com/joBr99/nspanel-lovelace-ui/wiki

            NSPanel Adapter Wiki
            https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/wiki

            1 Antwort Letzte Antwort
            0
            • BluefoxB Bluefox
              Aktuelle Test Version 9.0.1
              Veröffentlichungsdatum 04.06.2025
              Github Link https://github.com/ioBroker/ioBroker.javascript

              Changelog

              • (@klein0r) Added possibility to escape chars in formatTimeDiff
              • (@GermanBluefox) Back-end was migrated to TypeScript
              • (@GermanBluefox) Breaking change: removed "request" module
              • (@GermanBluefox) Added prettier for scripts

              Also, Hauptänderung das ist dass alles auf TypeScript (Back-End) umgestellt wurde.
              Alles soll wie frühe funktionieren.
              Zusätzlich gibt es die Möglichkeit den Kode zu formatieren:

              56fb6c46-23ea-4dde-b3f4-778a42d177ae-image.png

              Das wird erleichtern die Weiterentwicklung von JavaScript adapter.

              Thomas BraunT Online
              Thomas BraunT Online
              Thomas Braun
              Most Active
              schrieb am zuletzt editiert von
              #6

              @bluefox

              ├── iobroker.javascript@9.0.2 (git+ssh://git@github.com/ioBroker/ioBroker.javascript.git#7682b46eb3a38255d501c17f8cd80a7d4cffb33b)
              

              läuft ohne Auffälligkeiten hier.

              Linux-Werkzeugkasten:
              https://forum.iobroker.net/topic/42952/der-kleine-iobroker-linux-werkzeugkasten
              NodeJS Fixer Skript:
              https://forum.iobroker.net/topic/68035/iob-node-fix-skript
              iob_diag: curl -sLf -o diag.sh https://iobroker.net/diag.sh && bash diag.sh

              1 Antwort Letzte Antwort
              0
              • BluefoxB Bluefox
                Aktuelle Test Version 9.0.1
                Veröffentlichungsdatum 04.06.2025
                Github Link https://github.com/ioBroker/ioBroker.javascript

                Changelog

                • (@klein0r) Added possibility to escape chars in formatTimeDiff
                • (@GermanBluefox) Back-end was migrated to TypeScript
                • (@GermanBluefox) Breaking change: removed "request" module
                • (@GermanBluefox) Added prettier for scripts

                Also, Hauptänderung das ist dass alles auf TypeScript (Back-End) umgestellt wurde.
                Alles soll wie frühe funktionieren.
                Zusätzlich gibt es die Möglichkeit den Kode zu formatieren:

                56fb6c46-23ea-4dde-b3f4-778a42d177ae-image.png

                Das wird erleichtern die Weiterentwicklung von JavaScript adapter.

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

                @bluefox @TT-Tom

                Hier auch auf dem Produktivsystem (jaja ich weiss..) ohne Fehler und Auffälligkeiten.
                Node 20.19.2, Admin 7.6.18, js-controller 7.0.7, debian bookworm lxc. Ca. 600 Scripte am laufen, 54000 States und Objects.

                Edit: die nspanel-Scripte Version 4.5.01 melden Fehler (ist das in einer der neueren Versionen behoben? Der Fehler war nur nach manuellem Start des Scriptes zu sehen, nach dem Update des Adapters und neustart, waren keine Fehler im Protokoll und die Panels sehen aus wie immer, nur lassen Sie sich nicht mehr bedienen..)
                ( Topic gehoert evtl. nach ns-panel-Scripte verschoben..?)

                ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                                        await setStateAsync(NSPanel_Path + 'Berry_Driver.currentVersion', <iobJS.State>{ val: getState(NSPanel_Path + 'Berry_Driver.onlineVersion').val, ack: true });
                                                                                                                 ^
                ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                                            await setStateAsync(NSPanel_Path + 'Display_Firmware.currentVersion', <iobJS.State>{ val: getState(NSPanel_Path + 'Display_Firmware.onlineVersion').val, ack: true });
                                                                                                                         ^
                ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                            await setStateAsync(popupNotifyHeading, <iobJS.State>{ val: Headline, ack: false });
                                                                           ^
                ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                            await setStateAsync(popupNotifyHeadingColor, <iobJS.State>{ val: HeadlineColor, ack: false });
                                                                                ^
                ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                            await setStateAsync(popupNotifyButton1Text, <iobJS.State>{ val: Button1, ack: false });
                                                                               ^
                ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                            await setStateAsync(popupNotifyButton1TextColor, <iobJS.State>{ val: Button1Color, ack: false });
                                                                                    ^
                ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                            await setStateAsync(popupNotifyButton2Text, <iobJS.State>{ val: Button2, ack: false });
                                                                               ^
                ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                            await setStateAsync(popupNotifyButton2TextColor, <iobJS.State>{ val: Button2Color, ack: false });
                                                                                    ^
                ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                            await setStateAsync(popupNotifySleepTimeout, <iobJS.State>{ val: Timeout, ack: false });
                                                                                ^
                ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                            await setStateAsync(popupNotifyInternalName, <iobJS.State>{ val: InternalName, ack: false });
                                                                                ^
                ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                            await setStateAsync(popupNotifyLayout, <iobJS.State>{ val: Layout, ack: false });
                                                                          ^
                ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                            await setStateAsync(popupNotifyText, <iobJS.State>{ val: [formatDate(getDateObject(new Date().getTime()), 'TT.MM.JJJJ SS:mm:ss'), '\r\n', '\r\n', Text].join(''), ack: false });
                                                                        ^
                ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                            await setStateAsync(NSPanel_Path + 'NSPanel_ipAddress', <iobJS.State>{ val: get_current_tasmota_ip_address(), ack: true });
                                                                                           ^
                ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                                    await setStateAsync(NSPanel_Path + 'Tasmota_Firmware.onlineVersion', <iobJS.State>{ val: TasmotaVersionOnline, ack: true });
                                                                                                                ^
                ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                                    await setStateAsync(NSPanel_Path + 'Berry_Driver.currentVersion', <iobJS.State>{ val: JSON.parse(JSON.stringify(response.data)).nlui_driver_version, ack: true });
                                                                                                             ^
                ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                                        await setStateAsync(NSPanel_Path + 'Tasmota_Firmware.currentVersion', <iobJS.State>{ val: tasmoVersion, ack: true });
                                                                                                                     ^
                ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                                        await setStateAsync(NSPanel_Path + 'Tasmota.Uptime', <iobJS.State>{ val: Tasmota_JSON.StatusPRM.Uptime, ack: true });
                                                                                                    ^
                ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                                        await setStateAsync(NSPanel_Path + 'Tasmota.Version', <iobJS.State>{ val: Tasmota_JSON.StatusFWR.Version, ack: true });
                                                                                                     ^
                ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                                        await setStateAsync(NSPanel_Path + 'Tasmota.Hardware', <iobJS.State>{ val: TasmotaHardware[0] + '\r\n' + TasmotaHardware[1], ack: true });
                                                                                                      ^
                ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                                        await setStateAsync(NSPanel_Path + 'Tasmota.Wifi.AP', <iobJS.State>{ val: Tasmota_JSON.StatusSTS.Wifi.AP, ack: true });
                                                                                                     ^
                ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                                        await setStateAsync(NSPanel_Path + 'Tasmota.Wifi.SSId', <iobJS.State>{ val: Tasmota_JSON.StatusSTS.Wifi.SSId, ack: true });
                                                                                                       ^
                ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                                        await setStateAsync(NSPanel_Path + 'Tasmota.Wifi.BSSId', <iobJS.State>{ val: Tasmota_JSON.StatusSTS.Wifi.BSSId, ack: true });
                                                                                                        ^
                ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                                        await setStateAsync(NSPanel_Path + 'Tasmota.Wifi.Channel', <iobJS.State>{ val: Tasmota_JSON.StatusSTS.Wifi.Channel, ack: true });
                                                                                                          ^
                ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                                        await setStateAsync(NSPanel_Path + 'Tasmota.Wifi.Mode', <iobJS.State>{ val: Tasmota_JSON.StatusSTS.Wifi.Mode, ack: true });
                                                                                                       ^
                ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                                        await setStateAsync(NSPanel_Path + 'Tasmota.Wifi.RSSI', <iobJS.State>{ val: Tasmota_JSON.StatusSTS.Wifi.RSSI, ack: true });
                                                                                                       ^
                ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                                        await setStateAsync(NSPanel_Path + 'Tasmota.Wifi.Signal', <iobJS.State>{ val: Tasmota_JSON.StatusSTS.Wifi.Signal, ack: true });
                                                                                                         ^
                ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                                        await setStateAsync(NSPanel_Path + 'Tasmota.Product', <iobJS.State>{ val: 'SONOFF NSPanel', ack: true });
                                                                                                     ^
                ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                                        await setStateAsync(NSPanel_Path + 'Berry_Driver.onlineVersion', <iobJS.State>{ val: BerryDriverVersionOnline, ack: true });
                                                                                                                ^
                ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                                await setStateAsync(NSPanel_Path + 'TFT_Firmware.onlineVersion', <iobJS.State>{ val: NSPanelVersion, ack: true });
                                                                                                        ^
                ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                                await setStateAsync(NSPanel_Path + 'Display_Firmware.onlineVersion', <iobJS.State>{ val: desired_display_firmware_version, ack: true });
                                                                                                            ^
                ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                                    await setStateAsync(NSPanel_Path + 'Display_Firmware.currentVersion', <iobJS.State>{ val: split[2], ack: true });
                                                                                                                 ^
                ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                                    await setStateAsync(NSPanel_Path + 'NSPanel_Version', <iobJS.State>{ val: split[3], ack: true });
                                                                                                 ^
                ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                                                await setStateAsync(NSPanel_Path + 'TFT_Firmware.onlineVersion', <iobJS.State>{ val: tft_version, ack: true });
                                                                                                                        ^
                ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                                    setState(popupNotifyInternalName, <iobJS.State>{ val: words[2], ack: true });
                                                                             ^
                ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                                    setState(popupNotifyAction, <iobJS.State>{ val: true, ack: true });
                                                                       ^
                ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                                    setState(popupNotifyInternalName, <iobJS.State>{ val: words[2], ack: true });
                                                                             ^
                ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                                    setState(popupNotifyAction, <iobJS.State>{ val: false, ack: true });
                                                                       ^
                ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                            unsubscribe(value);
                                        ^
                ERROR: Argument of type 'unknown' is not assignable to parameter of type 'string | RegExp | string[]'.
                        await setStateAsync(NSPanel_Path + 'Sensor.Time', <iobJS.State>{ val: dateTime[0] + '\r\n' + dateTime[1], ack: true });
                                                                                 ^
                ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                        await setStateAsync(NSPanel_Path + 'Sensor.TempUnit', <iobJS.State>{ val: '°' + Tasmota_Sensor.TempUnit, ack: true });
                                                                                     ^
                ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                            await setStateAsync(NSPanel_Path + 'Sensor.ANALOG.Temperature', <iobJS.State>{ val: parseFloat(Tasmota_Sensor.ANALOG.Temperature1), ack: true });
                                                                                                   ^
                ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                            await setStateAsync(NSPanel_Path + 'Sensor.ESP32.Temperature', <iobJS.State>{ val: parseFloat(Tasmota_Sensor.ESP32.Temperature), ack: true });
                                                                                                  ^
                ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                            val: iobJS.StateValue;
                                       ^
                ERROR: 'global.iobJS' has no exported member named 'StateValue'. Did you mean 'StateACL'?
                            val: iobJS.StateValue;
                                       ^
                ERROR: 'global.iobJS' has no exported member named 'StateValue'. Did you mean 'StateACL'?
                
                
                
                
                T 1 Antwort Letzte Antwort
                0
                • ? Ein ehemaliger Benutzer

                  @bluefox @TT-Tom

                  Hier auch auf dem Produktivsystem (jaja ich weiss..) ohne Fehler und Auffälligkeiten.
                  Node 20.19.2, Admin 7.6.18, js-controller 7.0.7, debian bookworm lxc. Ca. 600 Scripte am laufen, 54000 States und Objects.

                  Edit: die nspanel-Scripte Version 4.5.01 melden Fehler (ist das in einer der neueren Versionen behoben? Der Fehler war nur nach manuellem Start des Scriptes zu sehen, nach dem Update des Adapters und neustart, waren keine Fehler im Protokoll und die Panels sehen aus wie immer, nur lassen Sie sich nicht mehr bedienen..)
                  ( Topic gehoert evtl. nach ns-panel-Scripte verschoben..?)

                  ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                                          await setStateAsync(NSPanel_Path + 'Berry_Driver.currentVersion', <iobJS.State>{ val: getState(NSPanel_Path + 'Berry_Driver.onlineVersion').val, ack: true });
                                                                                                                   ^
                  ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                                              await setStateAsync(NSPanel_Path + 'Display_Firmware.currentVersion', <iobJS.State>{ val: getState(NSPanel_Path + 'Display_Firmware.onlineVersion').val, ack: true });
                                                                                                                           ^
                  ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                              await setStateAsync(popupNotifyHeading, <iobJS.State>{ val: Headline, ack: false });
                                                                             ^
                  ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                              await setStateAsync(popupNotifyHeadingColor, <iobJS.State>{ val: HeadlineColor, ack: false });
                                                                                  ^
                  ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                              await setStateAsync(popupNotifyButton1Text, <iobJS.State>{ val: Button1, ack: false });
                                                                                 ^
                  ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                              await setStateAsync(popupNotifyButton1TextColor, <iobJS.State>{ val: Button1Color, ack: false });
                                                                                      ^
                  ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                              await setStateAsync(popupNotifyButton2Text, <iobJS.State>{ val: Button2, ack: false });
                                                                                 ^
                  ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                              await setStateAsync(popupNotifyButton2TextColor, <iobJS.State>{ val: Button2Color, ack: false });
                                                                                      ^
                  ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                              await setStateAsync(popupNotifySleepTimeout, <iobJS.State>{ val: Timeout, ack: false });
                                                                                  ^
                  ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                              await setStateAsync(popupNotifyInternalName, <iobJS.State>{ val: InternalName, ack: false });
                                                                                  ^
                  ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                              await setStateAsync(popupNotifyLayout, <iobJS.State>{ val: Layout, ack: false });
                                                                            ^
                  ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                              await setStateAsync(popupNotifyText, <iobJS.State>{ val: [formatDate(getDateObject(new Date().getTime()), 'TT.MM.JJJJ SS:mm:ss'), '\r\n', '\r\n', Text].join(''), ack: false });
                                                                          ^
                  ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                              await setStateAsync(NSPanel_Path + 'NSPanel_ipAddress', <iobJS.State>{ val: get_current_tasmota_ip_address(), ack: true });
                                                                                             ^
                  ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                                      await setStateAsync(NSPanel_Path + 'Tasmota_Firmware.onlineVersion', <iobJS.State>{ val: TasmotaVersionOnline, ack: true });
                                                                                                                  ^
                  ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                                      await setStateAsync(NSPanel_Path + 'Berry_Driver.currentVersion', <iobJS.State>{ val: JSON.parse(JSON.stringify(response.data)).nlui_driver_version, ack: true });
                                                                                                               ^
                  ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                                          await setStateAsync(NSPanel_Path + 'Tasmota_Firmware.currentVersion', <iobJS.State>{ val: tasmoVersion, ack: true });
                                                                                                                       ^
                  ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                                          await setStateAsync(NSPanel_Path + 'Tasmota.Uptime', <iobJS.State>{ val: Tasmota_JSON.StatusPRM.Uptime, ack: true });
                                                                                                      ^
                  ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                                          await setStateAsync(NSPanel_Path + 'Tasmota.Version', <iobJS.State>{ val: Tasmota_JSON.StatusFWR.Version, ack: true });
                                                                                                       ^
                  ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                                          await setStateAsync(NSPanel_Path + 'Tasmota.Hardware', <iobJS.State>{ val: TasmotaHardware[0] + '\r\n' + TasmotaHardware[1], ack: true });
                                                                                                        ^
                  ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                                          await setStateAsync(NSPanel_Path + 'Tasmota.Wifi.AP', <iobJS.State>{ val: Tasmota_JSON.StatusSTS.Wifi.AP, ack: true });
                                                                                                       ^
                  ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                                          await setStateAsync(NSPanel_Path + 'Tasmota.Wifi.SSId', <iobJS.State>{ val: Tasmota_JSON.StatusSTS.Wifi.SSId, ack: true });
                                                                                                         ^
                  ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                                          await setStateAsync(NSPanel_Path + 'Tasmota.Wifi.BSSId', <iobJS.State>{ val: Tasmota_JSON.StatusSTS.Wifi.BSSId, ack: true });
                                                                                                          ^
                  ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                                          await setStateAsync(NSPanel_Path + 'Tasmota.Wifi.Channel', <iobJS.State>{ val: Tasmota_JSON.StatusSTS.Wifi.Channel, ack: true });
                                                                                                            ^
                  ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                                          await setStateAsync(NSPanel_Path + 'Tasmota.Wifi.Mode', <iobJS.State>{ val: Tasmota_JSON.StatusSTS.Wifi.Mode, ack: true });
                                                                                                         ^
                  ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                                          await setStateAsync(NSPanel_Path + 'Tasmota.Wifi.RSSI', <iobJS.State>{ val: Tasmota_JSON.StatusSTS.Wifi.RSSI, ack: true });
                                                                                                         ^
                  ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                                          await setStateAsync(NSPanel_Path + 'Tasmota.Wifi.Signal', <iobJS.State>{ val: Tasmota_JSON.StatusSTS.Wifi.Signal, ack: true });
                                                                                                           ^
                  ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                                          await setStateAsync(NSPanel_Path + 'Tasmota.Product', <iobJS.State>{ val: 'SONOFF NSPanel', ack: true });
                                                                                                       ^
                  ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                                          await setStateAsync(NSPanel_Path + 'Berry_Driver.onlineVersion', <iobJS.State>{ val: BerryDriverVersionOnline, ack: true });
                                                                                                                  ^
                  ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                                  await setStateAsync(NSPanel_Path + 'TFT_Firmware.onlineVersion', <iobJS.State>{ val: NSPanelVersion, ack: true });
                                                                                                          ^
                  ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                                  await setStateAsync(NSPanel_Path + 'Display_Firmware.onlineVersion', <iobJS.State>{ val: desired_display_firmware_version, ack: true });
                                                                                                              ^
                  ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                                      await setStateAsync(NSPanel_Path + 'Display_Firmware.currentVersion', <iobJS.State>{ val: split[2], ack: true });
                                                                                                                   ^
                  ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                                      await setStateAsync(NSPanel_Path + 'NSPanel_Version', <iobJS.State>{ val: split[3], ack: true });
                                                                                                   ^
                  ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                                                  await setStateAsync(NSPanel_Path + 'TFT_Firmware.onlineVersion', <iobJS.State>{ val: tft_version, ack: true });
                                                                                                                          ^
                  ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                                      setState(popupNotifyInternalName, <iobJS.State>{ val: words[2], ack: true });
                                                                               ^
                  ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                                      setState(popupNotifyAction, <iobJS.State>{ val: true, ack: true });
                                                                         ^
                  ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                                      setState(popupNotifyInternalName, <iobJS.State>{ val: words[2], ack: true });
                                                                               ^
                  ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                                      setState(popupNotifyAction, <iobJS.State>{ val: false, ack: true });
                                                                         ^
                  ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                              unsubscribe(value);
                                          ^
                  ERROR: Argument of type 'unknown' is not assignable to parameter of type 'string | RegExp | string[]'.
                          await setStateAsync(NSPanel_Path + 'Sensor.Time', <iobJS.State>{ val: dateTime[0] + '\r\n' + dateTime[1], ack: true });
                                                                                   ^
                  ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                          await setStateAsync(NSPanel_Path + 'Sensor.TempUnit', <iobJS.State>{ val: '°' + Tasmota_Sensor.TempUnit, ack: true });
                                                                                       ^
                  ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                              await setStateAsync(NSPanel_Path + 'Sensor.ANALOG.Temperature', <iobJS.State>{ val: parseFloat(Tasmota_Sensor.ANALOG.Temperature1), ack: true });
                                                                                                     ^
                  ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                              await setStateAsync(NSPanel_Path + 'Sensor.ESP32.Temperature', <iobJS.State>{ val: parseFloat(Tasmota_Sensor.ESP32.Temperature), ack: true });
                                                                                                    ^
                  ERROR: Namespace 'global.iobJS' has no exported member 'State'.
                              val: iobJS.StateValue;
                                         ^
                  ERROR: 'global.iobJS' has no exported member named 'StateValue'. Did you mean 'StateACL'?
                              val: iobJS.StateValue;
                                         ^
                  ERROR: 'global.iobJS' has no exported member named 'StateValue'. Did you mean 'StateACL'?
                  
                  
                  
                  
                  T Offline
                  T Offline
                  TT-Tom
                  schrieb am zuletzt editiert von TT-Tom
                  #8

                  @neuschwansteini

                  die Fehler kommen auch in der aktuellen Script Version. Müssen das mit @Armilar mal prüfen

                  Edit: der Parameter name läuft auch nicht mehr, lieferte den Scriptnamen

                  value wird auch nicht mehr unterstützt

                  function UnsubscribeWatcher(): void {
                      try {
                          for (const [key, value] of Object.entries(subscriptions)) {
                              unsubscribe(value);
                              delete subscriptions[key];
                          }
                      } catch (err: any) {
                          log('error at function UnsubscribeWatcher: ' + err.message, 'warn');
                      }
                  }
                  

                  Gruß Tom
                  https://github.com/tt-tom17
                  Wenn meine Hilfe erfolgreich war, benutze bitte das Voting unten rechts im Beitrag

                  NSPanel Script Wiki
                  https://github.com/joBr99/nspanel-lovelace-ui/wiki

                  NSPanel Adapter Wiki
                  https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/wiki

                  ? 1 Antwort Letzte Antwort
                  -1
                  • T TT-Tom

                    @neuschwansteini

                    die Fehler kommen auch in der aktuellen Script Version. Müssen das mit @Armilar mal prüfen

                    Edit: der Parameter name läuft auch nicht mehr, lieferte den Scriptnamen

                    value wird auch nicht mehr unterstützt

                    function UnsubscribeWatcher(): void {
                        try {
                            for (const [key, value] of Object.entries(subscriptions)) {
                                unsubscribe(value);
                                delete subscriptions[key];
                            }
                        } catch (err: any) {
                            log('error at function UnsubscribeWatcher: ' + err.message, 'warn');
                        }
                    }
                    
                    ? Offline
                    ? Offline
                    Ein ehemaliger Benutzer
                    schrieb am zuletzt editiert von
                    #9

                    @tt-tom Danke schonmal, da lohnt sich das Update auch noch nicht.. :)

                    1 Antwort Letzte Antwort
                    0
                    • teletapiT Online
                      teletapiT Online
                      teletapi
                      schrieb am zuletzt editiert von teletapi
                      #10

                      Re: SONOFF NSPanel mit Lovelace UI

                      Ich hatte vor ein paar tagen das NSPanel bekommen und hab das soweit fertig zumindest die ersten Seiten alles ist aktuell Script ist die 4.7.2.1 Berrytreiber 9 Displaytreiber 56/V4.7.2
                      Hat auch alles wunderbar funktioniert bis ich eben den Javascript Adapter Beta 9.0.3 installiert habe danach ging nix mehr, hab dann nochmal ein neues Basis Script genommen und meine daten kurz eingetragen aber der fehler bleibt. Ich würde jetzt hier mal ein Problem mit dem Javascript adapter vermuten denn mit der 8.9.2 version des Javadapters funktioniert alles. In den Change Logs steht irgendwas von "Typescript "
                      Weiß da schon jemand mehr oder liegt der Fehler vielleicht doch bei mir

                      javascript.0 2025-06-12 18:15:13.811	error	script.js.NSPanel1.NSPanel1: TypeScript compilation failed: await setStateAsync(NSPanel_Path + 'PageNavi', <iobJS.State>{ val: "{ pagetype: 'page', pageId: 0 }", ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'NSPanel_Dimmode_brightnessDay', <iobJS.State>{ val: 8, ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'NSPanel_Dimmode_hourDay', <iobJS.State>{ val: 7, ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'NSPanel_Dimmode_brightnessNight', <iobJS.State>{ val: 1, ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'NSPanel_Dimmode_hourNight', <iobJS.State>{ val: 22, ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(meanPower, <iobJS.State>{ val: meanConsumption, ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(screensaverNotifyHeading, <iobJS.State>{ val: '', ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(screensaverNotifyText, <iobJS.State>{ val: '', ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(obj.id, <iobJS.State>{ val: obj.state.val, ack: true }); // ack new value ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'NSPanel_locales_json', <iobJS.State>{ val: JSON.stringify(response.data), ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'NSPanel_locales_service_json', <iobJS.State>{ val: JSON.stringify(response.data), ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'Tasmota_Firmware.currentVersion', <iobJS.State>{ val: getState(NSPanel_Path + 'Tasmota_Firmware.onlineVersion').val, ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'Berry_Driver.currentVersion', <iobJS.State>{ val: getState(NSPanel_Path + 'Berry_Driver.onlineVersion').val, ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'Display_Firmware.currentVersion', <iobJS.State>{ val: getState(NSPanel_Path + 'Display_Firmware.onlineVersion').val, ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(popupNotifyHeading, <iobJS.State>{ val: Headline, ack: false }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(popupNotifyHeadingColor, <iobJS.State>{ val: HeadlineColor, ack: false }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(popupNotifyButton1Text, <iobJS.State>{ val: Button1, ack: false }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(popupNotifyButton1TextColor, <iobJS.State>{ val: Button1Color, ack: false }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(popupNotifyButton2Text, <iobJS.State>{ val: Button2, ack: false }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(popupNotifyButton2TextColor, <iobJS.State>{ val: Button2Color, ack: false }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(popupNotifySleepTimeout, <iobJS.State>{ val: Timeout, ack: false }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(popupNotifyInternalName, <iobJS.State>{ val: InternalName, ack: false }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(popupNotifyLayout, <iobJS.State>{ val: Layout, ack: false }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(popupNotifyText, <iobJS.State>{ val: [formatDate(getDateObject(new Date().getTime()), 'TT.MM.JJJJ SS:mm:ss'), '\r\n', '\r\n', Text].join(''), ack: false }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'NSPanel_ipAddress', <iobJS.State>{ val: get_current_tasmota_ip_address(), ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'Tasmota_Firmware.onlineVersion', <iobJS.State>{ val: TasmotaVersionOnline, ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'Berry_Driver.currentVersion', <iobJS.State>{ val: JSON.parse(JSON.stringify(response.data)).nlui_driver_version, ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'Tasmota_Firmware.currentVersion', <iobJS.State>{ val: tasmoVersion, ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'Tasmota.Uptime', <iobJS.State>{ val: Tasmota_JSON.StatusPRM.Uptime, ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'Tasmota.Version', <iobJS.State>{ val: Tasmota_JSON.StatusFWR.Version, ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'Tasmota.Hardware', <iobJS.State>{ val: TasmotaHardware[0] + '\r\n' + TasmotaHardware[1], ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'Tasmota.Wifi.AP', <iobJS.State>{ val: Tasmota_JSON.StatusSTS.Wifi.AP, ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'Tasmota.Wifi.SSId', <iobJS.State>{ val: Tasmota_JSON.StatusSTS.Wifi.SSId, ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'Tasmota.Wifi.BSSId', <iobJS.State>{ val: Tasmota_JSON.StatusSTS.Wifi.BSSId, ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'Tasmota.Wifi.Channel', <iobJS.State>{ val: Tasmota_JSON.StatusSTS.Wifi.Channel, ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'Tasmota.Wifi.Mode', <iobJS.State>{ val: Tasmota_JSON.StatusSTS.Wifi.Mode, ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'Tasmota.Wifi.RSSI', <iobJS.State>{ val: Tasmota_JSON.StatusSTS.Wifi.RSSI, ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'Tasmota.Wifi.Signal', <iobJS.State>{ val: Tasmota_JSON.StatusSTS.Wifi.Signal, ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'Tasmota.Product', <iobJS.State>{ val: 'SONOFF NSPanel', ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'Berry_Driver.onlineVersion', <iobJS.State>{ val: BerryDriverVersionOnline, ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'TFT_Firmware.onlineVersion', <iobJS.State>{ val: NSPanelVersion, ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'Display_Firmware.onlineVersion', <iobJS.State>{ val: desired_display_firmware_version, ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'Display_Firmware.currentVersion', <iobJS.State>{ val: split[2], ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'Display_Firmware.currentRelease', <iobJS.State>{ val: split[4], ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'NSPanel_Version', <iobJS.State>{ val: split[3], ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'TFT_Firmware.onlineVersion', <iobJS.State>{ val: tft_version, ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. if (getState(pageItem.id + '.TEMPERATURE').ts < getState(pageItem.id + '.HUE').ts) { ^ERROR: Property 'ts' does not exist on type 'AbsentState | TypedState<any>'. Property 'ts' does not exist on type 'TypedState<any>'. if (getState(pageItem.id + '.TEMPERATURE').ts < getState(pageItem.id + '.HUE').ts) { ^ERROR: Property 'ts' does not exist on type 'AbsentState | TypedState<any>'. Property 'ts' does not exist on type 'TypedState<any>'. if (getState(pageItem.id + '.TEMPERATURE').ts < getState(pageItem.id + '.RED').ts) { ^ERROR: Property 'ts' does not exist on type 'AbsentState | TypedState<any>'. Property 'ts' does not exist on type 'TypedState<any>'. if (getState(pageItem.id + '.TEMPERATURE').ts < getState(pageItem.id + '.RED').ts) { ^ERROR: Property 'ts' does not exist on type 'AbsentState | TypedState<any>'. Property 'ts' does not exist on type 'TypedState<any>'. if (getState(pageItem.id + '.TEMPERATURE').ts < getState(pageItem.id + '.CIE').ts) { ^ERROR: Property 'ts' does not exist on type 'AbsentState | TypedState<any>'. Property 'ts' does not exist on type 'TypedState<any>'. if (getState(pageItem.id + '.TEMPERATURE').ts < getState(pageItem.id + '.CIE').ts) { ^ERROR: Property 'ts' does not exist on type 'AbsentState | TypedState<any>'. Property 'ts' does not exist on type 'TypedState<any>'. if (getState(pageItem.id + '.TEMPERATURE').ts < getState(pageItem.id + '.RGB').ts) { ^ERROR: Property 'ts' does not exist on type 'AbsentState | TypedState<any>'. Property 'ts' does not exist on type 'TypedState<any>'. if (getState(pageItem.id + '.TEMPERATURE').ts < getState(pageItem.id + '.RGB').ts) { ^ERROR: Property 'ts' does not exist on type 'AbsentState | TypedState<any>'. Property 'ts' does not exist on type 'TypedState<any>'. setState(popupNotifyInternalName, <iobJS.State>{ val: words[2], ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. setState(popupNotifyAction, <iobJS.State>{ val: true, ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. setState(popupNotifyInternalName, <iobJS.State>{ val: words[2], ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. setState(popupNotifyAction, <iobJS.State>{ val: false, ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. if (getState(id + '.TEMPERATURE').ts < getState(id + '.HUE').ts) { ^ERROR: Property 'ts' does not exist on type 'AbsentState | TypedState<any>'. Property 'ts' does not exist on type 'TypedState<any>'. if (getState(id + '.TEMPERATURE').ts < getState(id + '.HUE').ts) { ^ERROR: Property 'ts' does not exist on type 'AbsentState | TypedState<any>'. Property 'ts' does not exist on type 'TypedState<any>'. if (getState(id + '.TEMPERATURE').ts < getState(id + '.RED').ts) { ^ERROR: Property 'ts' does not exist on type 'AbsentState | TypedState<any>'. Property 'ts' does not exist on type 'TypedState<any>'. if (getState(id + '.TEMPERATURE').ts < getState(id + '.RED').ts) { ^ERROR: Property 'ts' does not exist on type 'AbsentState | TypedState<any>'. Property 'ts' does not exist on type 'TypedState<any>'. if (getState(id + '.TEMPERATURE').ts < getState(id + '.RGB').ts) { ^ERROR: Property 'ts' does not exist on type 'AbsentState | TypedState<any>'. Property 'ts' does not exist on type 'TypedState<any>'. if (getState(id + '.TEMPERATURE').ts < getState(id + '.RGB').ts) { ^ERROR: Property 'ts' does not exist on type 'AbsentState | TypedState<any>'. Property 'ts' does not exist on type 'TypedState<any>'. if (getState(id + '.TEMPERATURE').ts < getState(id + '.CIE').ts) { ^ERROR: Property 'ts' does not exist on type 'AbsentState | TypedState<any>'. Property 'ts' does not exist on type 'TypedState<any>'. if (getState(id + '.TEMPERATURE').ts < getState(id + '.CIE').ts) { ^ERROR: Property 'ts' does not exist on type 'AbsentState | TypedState<any>'. Property 'ts' does not exist on type 'TypedState<any>'. unsubscribe(value); ^ERROR: Argument of type 'unknown' is not assignable to parameter of type 'string | RegExp | string[]'. await setStateAsync(NSPanel_Path + 'Sensor.Time', <iobJS.State>{ val: dateTime[0] + '\r\n' + dateTime[1], ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'Sensor.TempUnit', <iobJS.State>{ val: '°' + Tasmota_Sensor.TempUnit, ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'Sensor.ANALOG.Temperature', <iobJS.State>{ val: parseFloat(Tasmota_Sensor.ANALOG.Temperature1), ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'Sensor.ESP32.Temperature', <iobJS.State>{ val: parseFloat(Tasmota_Sensor.ESP32.Temperature), ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. val: iobJS.StateValue; ^ERROR: 'global.iobJS' has no exported member named 'StateValue'. Did you mean 'StateACL'? val: iobJS.StateValue; ^ERROR: 'global.iobJS' has no exported member named 'StateValue'. Did you mean 'StateACL'?
                      
                      T 1 Antwort Letzte Antwort
                      0
                      • teletapiT teletapi

                        Re: SONOFF NSPanel mit Lovelace UI

                        Ich hatte vor ein paar tagen das NSPanel bekommen und hab das soweit fertig zumindest die ersten Seiten alles ist aktuell Script ist die 4.7.2.1 Berrytreiber 9 Displaytreiber 56/V4.7.2
                        Hat auch alles wunderbar funktioniert bis ich eben den Javascript Adapter Beta 9.0.3 installiert habe danach ging nix mehr, hab dann nochmal ein neues Basis Script genommen und meine daten kurz eingetragen aber der fehler bleibt. Ich würde jetzt hier mal ein Problem mit dem Javascript adapter vermuten denn mit der 8.9.2 version des Javadapters funktioniert alles. In den Change Logs steht irgendwas von "Typescript "
                        Weiß da schon jemand mehr oder liegt der Fehler vielleicht doch bei mir

                        javascript.0 2025-06-12 18:15:13.811	error	script.js.NSPanel1.NSPanel1: TypeScript compilation failed: await setStateAsync(NSPanel_Path + 'PageNavi', <iobJS.State>{ val: "{ pagetype: 'page', pageId: 0 }", ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'NSPanel_Dimmode_brightnessDay', <iobJS.State>{ val: 8, ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'NSPanel_Dimmode_hourDay', <iobJS.State>{ val: 7, ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'NSPanel_Dimmode_brightnessNight', <iobJS.State>{ val: 1, ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'NSPanel_Dimmode_hourNight', <iobJS.State>{ val: 22, ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(meanPower, <iobJS.State>{ val: meanConsumption, ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(screensaverNotifyHeading, <iobJS.State>{ val: '', ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(screensaverNotifyText, <iobJS.State>{ val: '', ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(obj.id, <iobJS.State>{ val: obj.state.val, ack: true }); // ack new value ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'NSPanel_locales_json', <iobJS.State>{ val: JSON.stringify(response.data), ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'NSPanel_locales_service_json', <iobJS.State>{ val: JSON.stringify(response.data), ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'Tasmota_Firmware.currentVersion', <iobJS.State>{ val: getState(NSPanel_Path + 'Tasmota_Firmware.onlineVersion').val, ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'Berry_Driver.currentVersion', <iobJS.State>{ val: getState(NSPanel_Path + 'Berry_Driver.onlineVersion').val, ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'Display_Firmware.currentVersion', <iobJS.State>{ val: getState(NSPanel_Path + 'Display_Firmware.onlineVersion').val, ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(popupNotifyHeading, <iobJS.State>{ val: Headline, ack: false }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(popupNotifyHeadingColor, <iobJS.State>{ val: HeadlineColor, ack: false }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(popupNotifyButton1Text, <iobJS.State>{ val: Button1, ack: false }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(popupNotifyButton1TextColor, <iobJS.State>{ val: Button1Color, ack: false }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(popupNotifyButton2Text, <iobJS.State>{ val: Button2, ack: false }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(popupNotifyButton2TextColor, <iobJS.State>{ val: Button2Color, ack: false }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(popupNotifySleepTimeout, <iobJS.State>{ val: Timeout, ack: false }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(popupNotifyInternalName, <iobJS.State>{ val: InternalName, ack: false }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(popupNotifyLayout, <iobJS.State>{ val: Layout, ack: false }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(popupNotifyText, <iobJS.State>{ val: [formatDate(getDateObject(new Date().getTime()), 'TT.MM.JJJJ SS:mm:ss'), '\r\n', '\r\n', Text].join(''), ack: false }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'NSPanel_ipAddress', <iobJS.State>{ val: get_current_tasmota_ip_address(), ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'Tasmota_Firmware.onlineVersion', <iobJS.State>{ val: TasmotaVersionOnline, ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'Berry_Driver.currentVersion', <iobJS.State>{ val: JSON.parse(JSON.stringify(response.data)).nlui_driver_version, ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'Tasmota_Firmware.currentVersion', <iobJS.State>{ val: tasmoVersion, ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'Tasmota.Uptime', <iobJS.State>{ val: Tasmota_JSON.StatusPRM.Uptime, ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'Tasmota.Version', <iobJS.State>{ val: Tasmota_JSON.StatusFWR.Version, ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'Tasmota.Hardware', <iobJS.State>{ val: TasmotaHardware[0] + '\r\n' + TasmotaHardware[1], ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'Tasmota.Wifi.AP', <iobJS.State>{ val: Tasmota_JSON.StatusSTS.Wifi.AP, ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'Tasmota.Wifi.SSId', <iobJS.State>{ val: Tasmota_JSON.StatusSTS.Wifi.SSId, ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'Tasmota.Wifi.BSSId', <iobJS.State>{ val: Tasmota_JSON.StatusSTS.Wifi.BSSId, ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'Tasmota.Wifi.Channel', <iobJS.State>{ val: Tasmota_JSON.StatusSTS.Wifi.Channel, ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'Tasmota.Wifi.Mode', <iobJS.State>{ val: Tasmota_JSON.StatusSTS.Wifi.Mode, ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'Tasmota.Wifi.RSSI', <iobJS.State>{ val: Tasmota_JSON.StatusSTS.Wifi.RSSI, ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'Tasmota.Wifi.Signal', <iobJS.State>{ val: Tasmota_JSON.StatusSTS.Wifi.Signal, ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'Tasmota.Product', <iobJS.State>{ val: 'SONOFF NSPanel', ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'Berry_Driver.onlineVersion', <iobJS.State>{ val: BerryDriverVersionOnline, ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'TFT_Firmware.onlineVersion', <iobJS.State>{ val: NSPanelVersion, ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'Display_Firmware.onlineVersion', <iobJS.State>{ val: desired_display_firmware_version, ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'Display_Firmware.currentVersion', <iobJS.State>{ val: split[2], ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'Display_Firmware.currentRelease', <iobJS.State>{ val: split[4], ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'NSPanel_Version', <iobJS.State>{ val: split[3], ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'TFT_Firmware.onlineVersion', <iobJS.State>{ val: tft_version, ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. if (getState(pageItem.id + '.TEMPERATURE').ts < getState(pageItem.id + '.HUE').ts) { ^ERROR: Property 'ts' does not exist on type 'AbsentState | TypedState<any>'. Property 'ts' does not exist on type 'TypedState<any>'. if (getState(pageItem.id + '.TEMPERATURE').ts < getState(pageItem.id + '.HUE').ts) { ^ERROR: Property 'ts' does not exist on type 'AbsentState | TypedState<any>'. Property 'ts' does not exist on type 'TypedState<any>'. if (getState(pageItem.id + '.TEMPERATURE').ts < getState(pageItem.id + '.RED').ts) { ^ERROR: Property 'ts' does not exist on type 'AbsentState | TypedState<any>'. Property 'ts' does not exist on type 'TypedState<any>'. if (getState(pageItem.id + '.TEMPERATURE').ts < getState(pageItem.id + '.RED').ts) { ^ERROR: Property 'ts' does not exist on type 'AbsentState | TypedState<any>'. Property 'ts' does not exist on type 'TypedState<any>'. if (getState(pageItem.id + '.TEMPERATURE').ts < getState(pageItem.id + '.CIE').ts) { ^ERROR: Property 'ts' does not exist on type 'AbsentState | TypedState<any>'. Property 'ts' does not exist on type 'TypedState<any>'. if (getState(pageItem.id + '.TEMPERATURE').ts < getState(pageItem.id + '.CIE').ts) { ^ERROR: Property 'ts' does not exist on type 'AbsentState | TypedState<any>'. Property 'ts' does not exist on type 'TypedState<any>'. if (getState(pageItem.id + '.TEMPERATURE').ts < getState(pageItem.id + '.RGB').ts) { ^ERROR: Property 'ts' does not exist on type 'AbsentState | TypedState<any>'. Property 'ts' does not exist on type 'TypedState<any>'. if (getState(pageItem.id + '.TEMPERATURE').ts < getState(pageItem.id + '.RGB').ts) { ^ERROR: Property 'ts' does not exist on type 'AbsentState | TypedState<any>'. Property 'ts' does not exist on type 'TypedState<any>'. setState(popupNotifyInternalName, <iobJS.State>{ val: words[2], ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. setState(popupNotifyAction, <iobJS.State>{ val: true, ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. setState(popupNotifyInternalName, <iobJS.State>{ val: words[2], ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. setState(popupNotifyAction, <iobJS.State>{ val: false, ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. if (getState(id + '.TEMPERATURE').ts < getState(id + '.HUE').ts) { ^ERROR: Property 'ts' does not exist on type 'AbsentState | TypedState<any>'. Property 'ts' does not exist on type 'TypedState<any>'. if (getState(id + '.TEMPERATURE').ts < getState(id + '.HUE').ts) { ^ERROR: Property 'ts' does not exist on type 'AbsentState | TypedState<any>'. Property 'ts' does not exist on type 'TypedState<any>'. if (getState(id + '.TEMPERATURE').ts < getState(id + '.RED').ts) { ^ERROR: Property 'ts' does not exist on type 'AbsentState | TypedState<any>'. Property 'ts' does not exist on type 'TypedState<any>'. if (getState(id + '.TEMPERATURE').ts < getState(id + '.RED').ts) { ^ERROR: Property 'ts' does not exist on type 'AbsentState | TypedState<any>'. Property 'ts' does not exist on type 'TypedState<any>'. if (getState(id + '.TEMPERATURE').ts < getState(id + '.RGB').ts) { ^ERROR: Property 'ts' does not exist on type 'AbsentState | TypedState<any>'. Property 'ts' does not exist on type 'TypedState<any>'. if (getState(id + '.TEMPERATURE').ts < getState(id + '.RGB').ts) { ^ERROR: Property 'ts' does not exist on type 'AbsentState | TypedState<any>'. Property 'ts' does not exist on type 'TypedState<any>'. if (getState(id + '.TEMPERATURE').ts < getState(id + '.CIE').ts) { ^ERROR: Property 'ts' does not exist on type 'AbsentState | TypedState<any>'. Property 'ts' does not exist on type 'TypedState<any>'. if (getState(id + '.TEMPERATURE').ts < getState(id + '.CIE').ts) { ^ERROR: Property 'ts' does not exist on type 'AbsentState | TypedState<any>'. Property 'ts' does not exist on type 'TypedState<any>'. unsubscribe(value); ^ERROR: Argument of type 'unknown' is not assignable to parameter of type 'string | RegExp | string[]'. await setStateAsync(NSPanel_Path + 'Sensor.Time', <iobJS.State>{ val: dateTime[0] + '\r\n' + dateTime[1], ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'Sensor.TempUnit', <iobJS.State>{ val: '°' + Tasmota_Sensor.TempUnit, ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'Sensor.ANALOG.Temperature', <iobJS.State>{ val: parseFloat(Tasmota_Sensor.ANALOG.Temperature1), ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. await setStateAsync(NSPanel_Path + 'Sensor.ESP32.Temperature', <iobJS.State>{ val: parseFloat(Tasmota_Sensor.ESP32.Temperature), ack: true }); ^ERROR: Namespace 'global.iobJS' has no exported member 'State'. val: iobJS.StateValue; ^ERROR: 'global.iobJS' has no exported member named 'StateValue'. Did you mean 'StateACL'? val: iobJS.StateValue; ^ERROR: 'global.iobJS' has no exported member named 'StateValue'. Did you mean 'StateACL'?
                        
                        T Offline
                        T Offline
                        TT-Tom
                        schrieb am zuletzt editiert von
                        #11

                        @teletapi
                        wie oben zu lesen, sind die Fehler schon bekannt. Mal sehen was die nächste Beta bringt.

                        Gruß Tom
                        https://github.com/tt-tom17
                        Wenn meine Hilfe erfolgreich war, benutze bitte das Voting unten rechts im Beitrag

                        NSPanel Script Wiki
                        https://github.com/joBr99/nspanel-lovelace-ui/wiki

                        NSPanel Adapter Wiki
                        https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/wiki

                        1 Antwort Letzte Antwort
                        1
                        • Thomas MaulT Offline
                          Thomas MaulT Offline
                          Thomas Maul
                          schrieb am zuletzt editiert von
                          #12

                          Moin,

                          es wurde irgendetwas an der Formatierung von Zeitdifferenzen geändert. Leider finde ich nirgends eine Beschreibung, was genau geändert wurde. Jedenfalls bekomme ich jetzt komische Warnungen in einem meiner Skripte. Hat irgendetwas mit Formatierung zu schaffen...

                          Weiß jemand, wo ich eine Erläuterung der Änderungen finde?

                          Danke!

                          mcm1957M 1 Antwort Letzte Antwort
                          0
                          • Thomas MaulT Thomas Maul

                            Moin,

                            es wurde irgendetwas an der Formatierung von Zeitdifferenzen geändert. Leider finde ich nirgends eine Beschreibung, was genau geändert wurde. Jedenfalls bekomme ich jetzt komische Warnungen in einem meiner Skripte. Hat irgendetwas mit Formatierung zu schaffen...

                            Weiß jemand, wo ich eine Erläuterung der Änderungen finde?

                            Danke!

                            mcm1957M Online
                            mcm1957M Online
                            mcm1957
                            schrieb am zuletzt editiert von
                            #13

                            @thomas-maul
                            Erwartest du im Ernst dass jemand deine "komischen Warnungen" kommentieren kann ohne dass du sie zeigst?

                            Changelog siehe erstes Posting in diesem Topic und README im Adapter Repo.

                            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

                            Thomas MaulT 1 Antwort Letzte Antwort
                            0
                            • BluefoxB Bluefox
                              Aktuelle Test Version 9.0.1
                              Veröffentlichungsdatum 04.06.2025
                              Github Link https://github.com/ioBroker/ioBroker.javascript

                              Changelog

                              • (@klein0r) Added possibility to escape chars in formatTimeDiff
                              • (@GermanBluefox) Back-end was migrated to TypeScript
                              • (@GermanBluefox) Breaking change: removed "request" module
                              • (@GermanBluefox) Added prettier for scripts

                              Also, Hauptänderung das ist dass alles auf TypeScript (Back-End) umgestellt wurde.
                              Alles soll wie frühe funktionieren.
                              Zusätzlich gibt es die Möglichkeit den Kode zu formatieren:

                              56fb6c46-23ea-4dde-b3f4-778a42d177ae-image.png

                              Das wird erleichtern die Weiterentwicklung von JavaScript adapter.

                              T Offline
                              T Offline
                              TT-Tom
                              schrieb am zuletzt editiert von
                              #14

                              Hi @bluefox,

                              Version 9.0.3 bringt immer noch die selben Fehler im Script (NSPanel), ansonsten laufen alle anderen Scripte ohne Fehlermeldungen.

                              Gruß Tom
                              https://github.com/tt-tom17
                              Wenn meine Hilfe erfolgreich war, benutze bitte das Voting unten rechts im Beitrag

                              NSPanel Script Wiki
                              https://github.com/joBr99/nspanel-lovelace-ui/wiki

                              NSPanel Adapter Wiki
                              https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/wiki

                              ? 1 Antwort Letzte Antwort
                              0
                              • mcm1957M mcm1957

                                @thomas-maul
                                Erwartest du im Ernst dass jemand deine "komischen Warnungen" kommentieren kann ohne dass du sie zeigst?

                                Changelog siehe erstes Posting in diesem Topic und README im Adapter Repo.

                                Thomas MaulT Offline
                                Thomas MaulT Offline
                                Thomas Maul
                                schrieb am zuletzt editiert von Thomas Maul
                                #15

                                @mcm1957
                                Hi,
                                ich habe zunächst keine Kommentare erwartet und deshalb nichts mit gepostet.
                                Die Frage lautete: wo ist dokumentiert, was sich bei der Zeitdifferenz konkret geändert hat für den Blockly-User. Alternativ wäre eine kurze Beschreibung der Änderungen hier hilfreich.

                                Ansonsten versuche ich es mit Try&Error zu fixen.
                                BG Thomas

                                EDIT: Hat sich erledigt... Hab's hinbekommen bei mir im Script schreibe ich die Zeitdifferenz (Format hh:mm:ss) in einen Datenpunkt, der eine Zahl erwartet... Mit setzen auf "gemischt" des Datenpunktes ist's dann weg.

                                1 Antwort Letzte Antwort
                                0
                                • mg99M Offline
                                  mg99M Offline
                                  mg99
                                  schrieb am zuletzt editiert von
                                  #16

                                  Veränderungen von bereits bestehenden Skripten teilweise nicht möglich.
                                  D.h. die Buttons Speichern bzw. Abbrechen kommen nicht.

                                  Das passiert allerdings nicht bei allen blocklys.

                                  F5 - hilft nicht.

                                  Bitte ausfüllen:

                                  • Skripte: blockly
                                  • Link zu Adapterrepository: www.github.com...
                                  • Adapterversion: Skriptausführung V. 9.0.3
                                  • js-controller Version: 7.0.7
                                  • Admin Version: v7.6.19
                                  • Hardwaresystem: Pi5 ...
                                  • Arbeitsspeicher: 8GB
                                  • Festplattenart: SSD
                                  • Betriebssystem: linux
                                  • Nodejs-Version: v20.19.2
                                  • NPM-Version: 10.8.2
                                  • Installationsart: Skript
                                  • Image, Docker genutzt: Nein
                                  • Ort, Name der Imagedatei: HDD

                                  Linux User bitte hier den Output von iob diag einfügen.
                                  ========== Start marking the full check here ===========

                                  Script v.2025-03-08
                                  
                                  *** BASE SYSTEM ***
                                   Static hostname: raspberrypi5a
                                         Icon name: computer
                                  Operating System: Debian GNU/Linux 12 (bookworm)
                                            Kernel: Linux 6.6.62+rpt-rpi-2712
                                      Architecture: arm64
                                  OS is similar to:
                                  
                                  Model           : Raspberry Pi 5 Model B Rev 1.0
                                  Docker          : false
                                  Virtualization  : none
                                  Kernel          : aarch64
                                  Userland        : 64 bit
                                  
                                  Systemuptime and Load:
                                   18:28:32 up  2:06,  2 users,  load average: 1.77, 1.60, 1.25
                                  CPU threads: 4
                                  
                                  
                                  *** LIFE CYCLE STATUS ***
                                  Operating System is the current Debian stable version codenamed 'bookworm'!
                                  
                                  *** RASPBERRY THROTTLING ***
                                  Current issues:
                                  No throttling issues detected.
                                  
                                  Previously detected issues:
                                  No throttling issues detected.
                                  
                                  *** TIME AND TIMEZONES ***
                                                 Local time: Fri 2025-06-13 18:28:33 CEST
                                             Universal time: Fri 2025-06-13 16:28:33 UTC
                                                   RTC time: Fri 2025-06-13 16:28:33
                                                  Time zone: Europe/Vienna (CEST, +0200)
                                  System clock synchronized: yes
                                                NTP service: active
                                            RTC in local TZ: no
                                  
                                  *** Users and Groups ***
                                  User that called 'iob diag':
                                  Guido
                                  HOME=/home/Guido
                                  GROUPS=Guido adm dialout cdrom sudo audio video plugdev games users input render                                                                                                                                                              netdev gpio i2c spi iobroker
                                  
                                  User that is running 'js-controller':
                                  iobroker
                                  HOME=/home/iobroker
                                  GROUPS=iobroker tty dialout audio video plugdev bluetooth redis gpio i2c
                                  
                                  *** DISPLAY-SERVER SETUP ***
                                  Display-Server: false
                                  Desktop:
                                  Terminal:       tty
                                  
                                  *** MEMORY ***
                                                 total        used        free      shared  buff/cache   available
                                  Mem:            8.5G        4.7G        1.2G        5.7M        2.6G        3.7G
                                  Swap:           209M          0B        209M
                                  Total:          8.7G        4.7G        1.4G
                                  
                                  Active iob-Instances:   50
                                  
                                           8064 M total memory
                                           4491 M used memory
                                           4577 M active memory
                                           1788 M inactive memory
                                           1166 M free memory
                                            824 M buffer memory
                                           1674 M swap cache
                                            199 M total swap
                                              0 M used swap
                                            199 M free swap
                                  
                                  *** top - Table Of Processes  ***
                                  top - 18:28:33 up  2:06,  2 users,  load average: 1.77, 1.60, 1.25
                                  Tasks: 233 total,   1 running, 232 sleeping,   0 stopped,   0 zombie
                                  %Cpu(s):  0.0 us, 33.3 sy,  0.0 ni, 66.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
                                  MiB Mem :   8064.1 total,   1164.0 free,   4494.5 used,   2499.0 buff/cache
                                  MiB Swap:    200.0 total,    200.0 free,      0.0 used.   3569.6 avail Mem
                                  
                                  *** FAILED SERVICES ***
                                  
                                    UNIT LOAD ACTIVE SUB DESCRIPTION
                                  0 loaded units listed.
                                  
                                  
                                  *** DMESG CRITICAL ERRORS ***
                                  No critical errors detected
                                  
                                  *** FILESYSTEM ***
                                  Filesystem     Type      Size  Used Avail Use% Mounted on
                                  udev           devtmpfs  3.9G     0  3.9G   0% /dev
                                  tmpfs          tmpfs     807M  5.4M  802M   1% /run
                                  /dev/nvme0n1p2 ext4      938G   18G  873G   2% /
                                  tmpfs          tmpfs     4.0G     0  4.0G   0% /dev/shm
                                  tmpfs          tmpfs     5.0M   48K  5.0M   1% /run/lock
                                  /dev/nvme0n1p1 vfat      511M   65M  447M  13% /boot/firmware
                                  tmpfs          tmpfs     807M     0  807M   0% /run/user/1000
                                  
                                  Messages concerning ext4 filesystem in dmesg:
                                  [Fri Jun 13 16:21:43 2025] Kernel command line: reboot=w coherent_pool=1M 8250.n                                                                                                                                                             r_uarts=1 pci=pcie_bus_safe cgroup_disable=memory numa_policy=interleave  numa=f                                                                                                                                                             ake=8 system_heap.max_order=0 smsc95xx.macaddr=2C:CF:67:38:30:C8 vc_mem.mem_base                                                                                                                                                             =0x3fc00000 vc_mem.mem_size=0x40000000  console=ttyAMA10,115200 console=tty1 roo                                                                                                                                                             t=PARTUUID=d86775b7-02 rootfstype=ext4 fsck.repair=yes rootwait cfg80211.ieee802                                                                                                                                                             11_regdom=AT
                                  [Fri Jun 13 16:21:46 2025] EXT4-fs (nvme0n1p2): mounted filesystem 4e43b7ef-50b8                                                                                                                                                             -4db8-af9c-bba08ba271ec ro with ordered data mode. Quota mode: none.
                                  [Fri Jun 13 16:21:47 2025] EXT4-fs (nvme0n1p2): re-mounted 4e43b7ef-50b8-4db8-af                                                                                                                                                             9c-bba08ba271ec r/w. Quota mode: none.
                                  
                                  Show mounted filesystems:
                                  TARGET           SOURCE         FSTYPE OPTIONS
                                  /                /dev/nvme0n1p2 ext4   rw,noatime
                                  `-/boot/firmware /dev/nvme0n1p1 vfat   rw,relatime,fmask=0022,dmask=0022,codepag                                                                                                                                                             e=437,iocharset=ascii,shortname=mixed,errors=remount-ro
                                  
                                  Files in neuralgic directories:
                                  
                                  /var:
                                  8.8G    /var/
                                  4.0G    /var/cache/apt
                                  4.0G    /var/cache
                                  3.9G    /var/cache/apt/archives
                                  3.1G    /var/lib
                                  
                                  Archived and active journals take up 1.5G in the file system.
                                  
                                  /opt/iobroker/backups:
                                  41M     /opt/iobroker/backups/
                                  
                                  /opt/iobroker/iobroker-data:
                                  2.7G    /opt/iobroker/iobroker-data/
                                  2.0G    /opt/iobroker/iobroker-data/history
                                  532M    /opt/iobroker/iobroker-data/files
                                  228M    /opt/iobroker/iobroker-data/files/vis
                                  221M    /opt/iobroker/iobroker-data/files/vis/widgets
                                  
                                  The five largest files in iobroker-data are:
                                  47M     /opt/iobroker/iobroker-data/objects.jsonl
                                  16M     /opt/iobroker/iobroker-data/states.jsonl
                                  9.8M    /opt/iobroker/iobroker-data/files/vis-2/material-icons/knx-uf.json
                                  9.8M    /opt/iobroker/iobroker-data/files/homekit-controller.admin/static/js/mai                                                                                                                                                             n.f592ece1.js
                                  8.1M    /opt/iobroker/iobroker-data/files/backitup.admin/assets/index-BFvcOIQE.j                                                                                                                                                             s
                                  
                                  USB-Devices by-id:
                                  USB-Sticks -  Avoid direct links to /dev/tty* in your adapter setups, please alw                                                                                                                                                             ays prefer the links 'by-id':
                                  
                                  /dev/serial/by-id/usb-ITead_Sonoff_Zigbee_3.0_USB_Dongle_Plus_d4edcf55336cef1193                                                                                                                                                             0b9fadc169b110-if00-port0
                                  
                                  *** ZigBee Settings ***
                                  
                                  Your zigbee.0 COM-Port is matching 'by-id'. Very good!
                                  Zigbee Network Settings on your coordinator/in nvbackup are:
                                  
                                  zigbee.X
                                  Extended Pan ID:
                                  *** MASKED ***
                                  Pan ID:
                                  *** MASKED ***
                                  Channel:
                                  *** MASKED ***
                                  Network Key:
                                  *** MASKED ***
                                  
                                  To unmask the settings run 'iob diag --unmask'
                                  
                                  
                                  *** NodeJS-Installation ***
                                  
                                  /usr/bin/nodejs         v20.19.2
                                  /usr/bin/node           v20.19.2
                                  /usr/bin/npm            10.8.2
                                  /usr/bin/npx            10.8.2
                                  /usr/bin/corepack       0.31.0
                                  
                                  nodejs:
                                    Installed: 20.19.2-1nodesource1
                                    Candidate: 20.19.2-1nodesource1
                                    Version table:
                                   *** 20.19.2-1nodesource1 1001
                                          500 https://deb.nodesource.com/node_20.x nodistro/main arm64 Packages
                                          100 /var/lib/dpkg/status
                                       20.19.1-1nodesource1 1001
                                          500 https://deb.nodesource.com/node_20.x nodistro/main arm64 Packages
                                       20.19.0-1nodesource1 1001
                                          500 https://deb.nodesource.com/node_20.x nodistro/main arm64 Packages
                                       20.18.3-1nodesource1 1001
                                          500 https://deb.nodesource.com/node_20.x nodistro/main arm64 Packages
                                       20.18.2-1nodesource1 1001
                                          500 https://deb.nodesource.com/node_20.x nodistro/main arm64 Packages
                                       20.18.1-1nodesource1 1001
                                          500 https://deb.nodesource.com/node_20.x nodistro/main arm64 Packages
                                       20.18.0-1nodesource1 1001
                                          500 https://deb.nodesource.com/node_20.x nodistro/main arm64 Packages
                                       20.17.0-1nodesource1 1001
                                          500 https://deb.nodesource.com/node_20.x nodistro/main arm64 Packages
                                       20.16.0-1nodesource1 1001
                                          500 https://deb.nodesource.com/node_20.x nodistro/main arm64 Packages
                                       20.15.1-1nodesource1 1001
                                          500 https://deb.nodesource.com/node_20.x nodistro/main arm64 Packages
                                       20.15.0-1nodesource1 1001
                                          500 https://deb.nodesource.com/node_20.x nodistro/main arm64 Packages
                                       20.14.0-1nodesource1 1001
                                          500 https://deb.nodesource.com/node_20.x nodistro/main arm64 Packages
                                       20.13.1-1nodesource1 1001
                                          500 https://deb.nodesource.com/node_20.x nodistro/main arm64 Packages
                                       20.13.0-1nodesource1 1001
                                          500 https://deb.nodesource.com/node_20.x nodistro/main arm64 Packages
                                       20.12.2-1nodesource1 1001
                                          500 https://deb.nodesource.com/node_20.x nodistro/main arm64 Packages
                                       20.12.1-1nodesource1 1001
                                          500 https://deb.nodesource.com/node_20.x nodistro/main arm64 Packages
                                       20.12.0-1nodesource1 1001
                                          500 https://deb.nodesource.com/node_20.x nodistro/main arm64 Packages
                                       20.11.1-1nodesource1 1001
                                          500 https://deb.nodesource.com/node_20.x nodistro/main arm64 Packages
                                       20.11.0-1nodesource1 1001
                                          500 https://deb.nodesource.com/node_20.x nodistro/main arm64 Packages
                                       20.10.0-1nodesource1 1001
                                          500 https://deb.nodesource.com/node_20.x nodistro/main arm64 Packages
                                       20.9.0-1nodesource1 1001
                                          500 https://deb.nodesource.com/node_20.x nodistro/main arm64 Packages
                                       20.8.1-1nodesource1 1001
                                          500 https://deb.nodesource.com/node_20.x nodistro/main arm64 Packages
                                       20.8.0-1nodesource1 1001
                                          500 https://deb.nodesource.com/node_20.x nodistro/main arm64 Packages
                                       20.7.0-1nodesource1 1001
                                          500 https://deb.nodesource.com/node_20.x nodistro/main arm64 Packages
                                       20.6.1-1nodesource1 1001
                                          500 https://deb.nodesource.com/node_20.x nodistro/main arm64 Packages
                                       20.6.0-1nodesource1 1001
                                          500 https://deb.nodesource.com/node_20.x nodistro/main arm64 Packages
                                       20.5.1-1nodesource1 1001
                                          500 https://deb.nodesource.com/node_20.x nodistro/main arm64 Packages
                                       20.5.0-1nodesource1 1001
                                          500 https://deb.nodesource.com/node_20.x nodistro/main arm64 Packages
                                       20.4.0-1nodesource1 1001
                                          500 https://deb.nodesource.com/node_20.x nodistro/main arm64 Packages
                                       20.3.1-1nodesource1 1001
                                          500 https://deb.nodesource.com/node_20.x nodistro/main arm64 Packages
                                       20.3.0-1nodesource1 1001
                                          500 https://deb.nodesource.com/node_20.x nodistro/main arm64 Packages
                                       20.2.0-1nodesource1 1001
                                          500 https://deb.nodesource.com/node_20.x nodistro/main arm64 Packages
                                       20.1.0-1nodesource1 1001
                                          500 https://deb.nodesource.com/node_20.x nodistro/main arm64 Packages
                                       20.0.0-1nodesource1 1001
                                          500 https://deb.nodesource.com/node_20.x nodistro/main arm64 Packages
                                       18.19.0+dfsg-6~deb12u2 500
                                          500 http://deb.debian.org/debian bookworm/main arm64 Packages
                                       18.19.0+dfsg-6~deb12u1 500
                                          500 http://deb.debian.org/debian-security bookworm-security/main arm64 P                                                                                                                                                             ackages
                                  
                                  Temp directories causing deletion problem: 0
                                  No problems detected
                                  
                                  Errors in npm tree: 0
                                  No problems detected
                                  
                                  *** ioBroker-Installation ***
                                  
                                  ioBroker Status
                                  iobroker is running on this host.
                                  
                                  
                                  Objects type: jsonl
                                  States  type: jsonl
                                  
                                  Hosts:
                                  raspberrypi5a       raspberrypi5a (version: 7.0.7, hostname: raspberrypi5a , ali                                                                                                                                                             ve, uptime: 7601)
                                  
                                  Core adapters versions
                                  js-controller:  7.0.7
                                  admin:          7.6.19
                                  javascript:     9.0.3
                                  
                                  nodejs modules from github:     0
                                  
                                  Adapter State
                                  + system.adapter.accuweather.0            : accuweather           : raspberrypi5a                            -  enabled
                                  + system.adapter.admin.0                  : admin                 : raspberrypi5a                            -  enabled, port: 8081, bind: 0.0.0.0, run as: admin
                                  + system.adapter.alexa2.0                 : alexa2                : raspberrypi5a                            -  enabled
                                    system.adapter.awattar.0                : awattar               : raspberrypi5a                            -  enabled
                                  + system.adapter.backitup.0               : backitup              : raspberrypi5a                            -  enabled
                                  + system.adapter.ble.0                    : ble                   : raspberrypi5a                            -  enabled
                                  + system.adapter.bydhvs.0                 : bydhvs                : raspberrypi5a                            -  enabled
                                  + system.adapter.cloud.0                  : cloud                 : raspberrypi5a                            -  enabled
                                  + system.adapter.countdown.0              : countdown             : raspberrypi5a                            -  enabled
                                    system.adapter.daswetter.0              : daswetter             : raspberrypi5a                            -  enabled
                                    system.adapter.daswetter.1              : daswetter             : raspberrypi5a                            -  enabled
                                    system.adapter.devices.0                : devices               : raspberrypi5a                            - disabled
                                  + system.adapter.discovery.0              : discovery             : raspberrypi5a                            -  enabled
                                  + system.adapter.echarts.0                : echarts               : raspberrypi5a                            -  enabled
                                  + system.adapter.energiefluss-erweitert.0 : energiefluss-erweitert: raspberrypi5a                            -  enabled
                                  + system.adapter.evcc.0                   : evcc                  : raspberrypi5a                            -  enabled, port: 7070
                                  + system.adapter.fritzdect.0              : fritzdect             : raspberrypi5a                            -  enabled
                                  + system.adapter.fronius-solarweb.0       : fronius-solarweb      : raspberrypi5a                            -  enabled
                                  + system.adapter.fronius-wattpilot.0      : fronius-wattpilot     : raspberrypi5a                            -  enabled
                                  + system.adapter.fronius-wattpilot.1      : fronius-wattpilot     : raspberrypi5a                            -  enabled
                                  + system.adapter.fronius.0                : fronius               : raspberrypi5a                            -  enabled
                                  + system.adapter.fronius.1                : fronius               : raspberrypi5a                            -  enabled
                                  + system.adapter.history.0                : history               : raspberrypi5a                            -  enabled
                                    system.adapter.homekit-controller.0     : homekit-controller    : raspberrypi5a                            - disabled
                                    system.adapter.ical.0                   : ical                  : raspberrypi5a                            -  enabled
                                  + system.adapter.influxdb.0               : influxdb              : raspberrypi5a                            -  enabled, port: 8086
                                    system.adapter.iot.0                    : iot                   : raspberrypi5a                            - disabled
                                  + system.adapter.iqontrol.0               : iqontrol              : raspberrypi5a                            -  enabled
                                  + system.adapter.javascript.0             : javascript            : raspberrypi5a                            -  enabled
                                  + system.adapter.meross.0                 : meross                : raspberrypi5a                            -  enabled
                                  + system.adapter.modbus.0                 : modbus                : raspberrypi5a                            -  enabled
                                  + system.adapter.modbus.1                 : modbus                : raspberrypi5a                            -  enabled
                                  + system.adapter.mqtt.0                   : mqtt                  : raspberrypi5a                            -  enabled, port: 1883, bind: 0.0.0.0
                                  + system.adapter.node-red.0               : node-red              : raspberrypi5a                            -  enabled, port: 1880, bind: 0.0.0.0
                                    system.adapter.ocpp.0                   : ocpp                  : raspberrypi5a                            - disabled, port: 9220
                                  + system.adapter.parser.0                 : parser                : raspberrypi5a                            -  enabled
                                  + system.adapter.ping.0                   : ping                  : raspberrypi5a                            -  enabled
                                  + system.adapter.pvforecast.0             : pvforecast            : raspberrypi5a                            -  enabled
                                  + system.adapter.pvforecast.1             : pvforecast            : raspberrypi5a                            -  enabled
                                  + system.adapter.shelly.0                 : shelly                : raspberrypi5a                            -  enabled, port: 1884, bind: 0.0.0.0
                                  + system.adapter.shelly.1                 : shelly                : raspberrypi5a                            -  enabled, port: 1882, bind: 0.0.0.0
                                  + system.adapter.smartgarden.0            : smartgarden           : raspberrypi5a                            -  enabled
                                    system.adapter.smartmeter.0             : smartmeter            : raspberrypi5a                            - disabled
                                  + system.adapter.smartthings.0            : smartthings           : raspberrypi5a                            -  enabled
                                    system.adapter.sonoff.0                 : sonoff                : raspberrypi5a                            - disabled, port: 1884, bind: 0.0.0.0
                                  + system.adapter.sourceanalytix.0         : sourceanalytix        : raspberrypi5a                            -  enabled
                                  + system.adapter.synochat.0               : synochat              : raspberrypi5a                            -  enabled
                                  + system.adapter.terminal.0               : terminal              : raspberrypi5a                            -  enabled, port: 8088, bind: 0.0.0.0, run as: admin
                                  + system.adapter.tr-064.0                 : tr-064                : raspberrypi5a                            -  enabled
                                  + system.adapter.tr-064.1                 : tr-064                : raspberrypi5a                            -  enabled
                                  + system.adapter.tr-064.2                 : tr-064                : raspberrypi5a                            -  enabled
                                  + system.adapter.trashschedule.0          : trashschedule         : raspberrypi5a                            -  enabled
                                  + system.adapter.tuya.0                   : tuya                  : raspberrypi5a                            -  enabled
                                    system.adapter.vis-2-widgets-energy.0   : vis-2-widgets-energy  : raspberrypi5a                            - disabled
                                    system.adapter.vis-2-widgets-gauges.0   : vis-2-widgets-gauges  : raspberrypi5a                            - disabled
                                    system.adapter.vis-2-widgets-jaeger-design.0: vis-2-widgets-jaeger-design: raspberrypi5a                            - disabled
                                    system.adapter.vis-2-widgets-material.0 : vis-2-widgets-material: raspberrypi5a                            - disabled
                                  + system.adapter.vis-2.0                  : vis-2                 : raspberrypi5a                            -  enabled
                                    system.adapter.vis-hqwidgets.0          : vis-hqwidgets         : raspberrypi5a                            - disabled
                                  + system.adapter.vis-inventwo.0           : vis-inventwo          : raspberrypi5a                            -  enabled
                                    system.adapter.vis-materialdesign.0     : vis-materialdesign    : raspberrypi5a                            - disabled
                                    system.adapter.vis-metro.0              : vis-metro             : raspberrypi5a                            - disabled
                                    system.adapter.vis.0                    : vis                   : raspberrypi5a                            -  enabled
                                    system.adapter.volvo.0                  : volvo                 : raspberrypi5a                            - disabled
                                    system.adapter.volvo.1                  : volvo                 : raspberrypi5a                            - disabled
                                  + system.adapter.weather-warnings.0       : weather-warnings      : raspberrypi5a                            -  enabled
                                  + system.adapter.web.0                    : web                   : raspberrypi5a                            -  enabled, port: 8082, bind: 0.0.0.0, run as: admin
                                  + system.adapter.whatsapp-cmb.0           : whatsapp-cmb          : raspberrypi5a                            -  enabled
                                    system.adapter.yr.0                     : yr                    : raspberrypi5a                            -  enabled
                                  + system.adapter.zigbee.0                 : zigbee                : raspberrypi5a                            -  enabled, port: /dev/serial/by-id/usb-ITead_Sonoff_Zigbee_3.0_USB_Dongle_Plus_d4edcf55336cef11930b9fadc169b110-if00-port0
                                    system.adapter.zigbee2mqtt.0            : zigbee2mqtt           : raspberrypi5a                            - disabled
                                  
                                  + instance is alive
                                  
                                  Enabled adapters with bindings
                                  + system.adapter.admin.0                  : admin                 : raspberrypi5a                            -  enabled, port: 8081, bind: 0.0.0.0, run as: admin
                                  + system.adapter.evcc.0                   : evcc                  : raspberrypi5a                            -  enabled, port: 7070
                                  + system.adapter.influxdb.0               : influxdb              : raspberrypi5a                            -  enabled, port: 8086
                                  + system.adapter.mqtt.0                   : mqtt                  : raspberrypi5a                            -  enabled, port: 1883, bind: 0.0.0.0
                                  + system.adapter.node-red.0               : node-red              : raspberrypi5a                            -  enabled, port: 1880, bind: 0.0.0.0
                                  + system.adapter.shelly.0                 : shelly                : raspberrypi5a                            -  enabled, port: 1884, bind: 0.0.0.0
                                  + system.adapter.shelly.1                 : shelly                : raspberrypi5a                            -  enabled, port: 1882, bind: 0.0.0.0
                                  + system.adapter.terminal.0               : terminal              : raspberrypi5a                            -  enabled, port: 8088, bind: 0.0.0.0, run as: admin
                                  + system.adapter.web.0                    : web                   : raspberrypi5a                            -  enabled, port: 8082, bind: 0.0.0.0, run as: admin
                                  + system.adapter.zigbee.0                 : zigbee                : raspberrypi5a                            -  enabled, port: /dev/serial/by-id/usb-ITead_Sonoff_Zigbee_3.0_USB_Dongle_Plus_d4edcf55336cef11930b9fadc169b110-if00-port0
                                  
                                  ioBroker-Repositories
                                  ┌─────────┬──────────┬─────────────────────────────────────────────────────────┬──────────────┐
                                  │ (index) │ name     │ url                                                     │ auto upgrade │
                                  ├─────────┼──────────┼─────────────────────────────────────────────────────────┼──────────────┤
                                  │ 0       │ 'stable' │ 'http://download.iobroker.net/sources-dist.json'        │ false        │
                                  │ 1       │ 'beta'   │ 'http://download.iobroker.net/sources-dist-latest.json' │ false        │
                                  └─────────┴──────────┴─────────────────────────────────────────────────────────┴──────────────┘
                                  
                                  Active repo(s): beta
                                  Upgrade policy: patch
                                  
                                  Installed ioBroker-Adapters
                                  Used repository: beta
                                  Adapter    "accuweather"  : 2.1.0    , installed 2.1.0
                                  Adapter    "admin"        : 7.6.19   , installed 7.6.19
                                  Adapter    "alexa2"       : 3.26.7   , installed 3.26.7
                                  Adapter    "awattar"      : 1.0.6    , installed 1.0.6
                                  Adapter    "backitup"     : 3.2.2    , installed 3.2.2
                                  Adapter    "ble"          : 0.14.1   , installed 0.14.1
                                  Adapter    "bydhvs"       : 1.5.0    , installed 1.5.0
                                  Adapter    "cloud"        : 5.0.1    , installed 5.0.1
                                  Adapter    "countdown"    : 3.0.0    , installed 3.0.0
                                  Adapter    "daswetter"    : 3.2.3    , installed 3.2.3
                                  Adapter    "devices"      : 1.2.6    , installed 1.2.6
                                  Adapter    "discovery"    : 5.0.0    , installed 5.0.0
                                  Adapter    "echarts"      : 2.0.6    , installed 2.0.6
                                  Adapter    "energiefluss-erweitert": 0.7.7, installed 0.7.7
                                  Adapter    "evcc"         : 0.2.2    , installed 0.2.2
                                  Adapter    "fritzdect"    : 2.6.2    , installed 2.6.2
                                  Adapter    "fronius"      : 2.1.1    , installed 2.1.1
                                  Adapter    "fronius-solarweb": 0.1.1 , installed 0.1.1
                                  Adapter    "fronius-wattpilot": 4.6.3, installed 4.6.3
                                  Adapter    "history"      : 3.0.1    , installed 3.0.1
                                  Adapter    "homekit-controller": 0.5.11, installed 0.5.11
                                  Adapter    "ical"         : 1.16.1   , installed 1.16.1
                                  Adapter    "influxdb"     : 4.0.2    , installed 4.0.2
                                  Adapter    "iot"          : 3.5.2    , installed 3.5.2
                                  Adapter    "iqontrol"     : 3.0.0    , installed 3.0.0
                                  Adapter    "javascript"   : 9.0.3    , installed 9.0.3
                                  Controller "js-controller": 7.0.7    , installed 7.0.7
                                  Adapter    "meross"       : 1.17.0   , installed 1.17.0
                                  Adapter    "modbus"       : 6.4.0    , installed 6.4.0
                                  Adapter    "mqtt"         : 6.1.4    , installed 6.1.4
                                  Adapter    "node-red"     : 6.0.7    , installed 6.0.7
                                  Adapter    "ocpp"         : 0.12.5   , installed 0.12.5
                                  Adapter    "parser"       : 2.3.1    , installed 2.3.1
                                  Adapter    "ping"         : 1.7.9    , installed 1.7.9
                                  Adapter    "pvforecast"   : 5.0.0    , installed 5.0.0
                                  Adapter    "shelly"       : 10.0.0   , installed 10.0.0
                                  Adapter    "smartgarden"  : 2.0.1    , installed 2.0.1
                                  Adapter    "smartmeter"   : 3.4.0    , installed 3.4.0
                                  Adapter    "smartthings"  : 0.2.2    , installed 0.2.2
                                  Adapter    "socketio"     : 7.0.8    , installed 7.0.8
                                  Adapter    "sonoff"       : 3.2.1    , installed 3.2.1
                                  Adapter    "sourceanalytix": 0.4.14  , installed 0.4.14
                                  Adapter    "synochat"     : 1.3.3    , installed 1.3.3
                                  Adapter    "terminal"     : 1.0.0    , installed 1.0.0
                                  Adapter    "tr-064"       : 4.3.0    , installed 4.3.0
                                  Adapter    "trashschedule": 4.0.0    , installed 4.0.0
                                  Adapter    "tuya"         : 3.17.0   , installed 3.17.0
                                  Adapter    "vis"          : 1.5.6    , installed 1.5.6
                                  Adapter    "vis-2"        : 2.12.10  , installed 2.12.10
                                  Adapter    "vis-2-widgets-energy": 1.0.2, installed 1.0.2
                                  Adapter    "vis-2-widgets-gauges": 1.1.1, installed 1.1.1
                                  Adapter    "vis-2-widgets-jaeger-design": 1.4.3, installed 1.4.3
                                  Adapter    "vis-2-widgets-material": 1.4.10, installed 1.4.10
                                  Adapter    "vis-hqwidgets": 1.5.1    , installed 1.5.1
                                  Adapter    "vis-inventwo" : 3.3.5    , installed 3.3.5
                                  Adapter    "vis-materialdesign": 0.5.9, installed 0.5.9
                                  Adapter    "vis-metro"    : 1.2.0    , installed 1.2.0
                                  Adapter    "volvo"        : 0.1.2    , installed 0.1.2
                                  Adapter    "weather-warnings": 0.7.4 , installed 0.7.4
                                  Adapter    "web"          : 7.0.9    , installed 7.0.9
                                  Adapter    "whatsapp-cmb" : 0.3.0    , installed 0.3.0
                                  Adapter    "ws"           : 3.0.19   , installed 3.0.19
                                  Adapter    "yr"           : 5.3.0    , installed 5.3.0
                                  Adapter    "zigbee"       : 3.0.1    , installed 3.0.1
                                  Adapter    "zigbee2mqtt"  : 3.0.8    , installed 3.0.8
                                  
                                  Objects and States
                                  Please stand by - This may take a while
                                  Objects:        46620
                                  States:         39800
                                  
                                  *** OS-Repositories and Updates ***
                                  Hit:1 http://archive.raspberrypi.com/debian bookworm InRelease
                                  Hit:2 http://deb.debian.org/debian bookworm InRelease
                                  Hit:3 https://apt.grafana.com stable InRelease
                                  Hit:4 https://repos.influxdata.com/debian stable InRelease
                                  Hit:5 http://deb.debian.org/debian-security bookworm-security InRelease
                                  Hit:6 https://deb.nodesource.com/node_20.x nodistro InRelease
                                  Get:7 https://dl.evcc.io/public/evcc/stable/deb/debian bookworm InRelease
                                  Hit:8 http://deb.debian.org/debian bookworm-updates InRelease
                                  Fetched 5127 B in 1s (7101 B/s)
                                  Reading package lists...
                                  Pending Updates: 1
                                  
                                  *** Listening Ports ***
                                  Active Internet connections (only servers)
                                  Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode      PID/Program name
                                  tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      0          4834       817/sshd: /usr/sbin
                                  tcp        0      0 127.0.0.1:1883          0.0.0.0:*               LISTEN      107        5615       814/mosquitto
                                  tcp        0      0 127.0.0.1:9001          0.0.0.0:*               LISTEN      1001       6934       995/iobroker.js-con
                                  tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      1001       6939       995/iobroker.js-con
                                  tcp        0      0 0.0.0.0:1884            0.0.0.0:*               LISTEN      1001       10488      1421/io.shelly.0
                                  tcp        0      0 0.0.0.0:1880            0.0.0.0:*               LISTEN      1001       6044       1195/node-red
                                  tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      108        5653       802/redis-server 12
                                  tcp6       0      0 :::22                   :::*                    LISTEN      0          4836       817/sshd: /usr/sbin
                                  tcp6       0      0 ::1:6379                :::*                    LISTEN      108        5654       802/redis-server 12
                                  tcp6       0      0 :::7070                 :::*                    LISTEN      109        8274       891/evcc
                                  tcp6       0      0 :::3000                 :::*                    LISTEN      106        5813       994/grafana
                                  tcp6       0      0 ::1:1883                :::*                    LISTEN      107        5616       814/mosquitto
                                  tcp6       0      0 :::8086                 :::*                    LISTEN      999        7548       904/influxd
                                  tcp6       0      0 :::8082                 :::*                    LISTEN      1001       15161      2061/io.web.0
                                  tcp6       0      0 :::8081                 :::*                    LISTEN      1001       6982       1051/io.admin.0
                                  tcp6       0      0 :::8088                 :::*                    LISTEN      1001       15581      1947/io.terminal.0
                                  udp        0      0 0.0.0.0:5353            0.0.0.0:*                           104        5515       694/avahi-daemon: r
                                  udp        0      0 0.0.0.0:5683            0.0.0.0:*                           1001       10526      1439/io.shelly.1
                                  udp        0      0 0.0.0.0:59008           0.0.0.0:*                           104        5517       694/avahi-daemon: r
                                  udp        0      0 0.0.0.0:6666            0.0.0.0:*                           1001       9111       1510/io.tuya.0
                                  udp        0      0 0.0.0.0:6667            0.0.0.0:*                           1001       9112       1510/io.tuya.0
                                  udp6       0      0 fe80::8810:fd5e:d9b:546 :::*                                0          5760       735/NetworkManager
                                  udp6       0      0 fe80::2cd7:eb6f:729:546 :::*                                0          5754       735/NetworkManager
                                  udp6       0      0 :::5353                 :::*                                104        5516       694/avahi-daemon: r
                                  udp6       0      0 :::56267                :::*                                104        5518       694/avahi-daemon: r
                                  
                                  *** Log File - Last 25 Lines ***
                                  
                                  2025-06-13 18:29:15.968  - debug: shelly.0 (1421) [httpIoBrokerState] State change 192.168.178.31 (shellyplusplugs / shellyplusplugs-b0b21c1309fc / shellyplusplugs#b0b21c1309fc#1): state: shellyplusplugs#b0b21c1309fc#1.Sys.lon, value: 16.3662
                                  2025-06-13 18:29:15.968  - debug: shelly.0 (1421) [httpIoBrokerState] State change 192.168.178.31 (shellyplusplugs / shellyplusplugs-b0b21c1309fc / shellyplusplugs#b0b21c1309fc#1): state: shellyplusplugs#b0b21c1309fc#1.Sys.debugEnabled, value: false
                                  2025-06-13 18:29:16.052  - debug: shelly.0 (1421) [httpIoBrokerState] State change 192.168.178.31 (shellyplusplugs / shellyplusplugs-b0b21c1309fc / shellyplusplugs#b0b21c1309fc#1): state: shellyplusplugs#b0b21c1309fc#1.WiFi.apEnabled, value: false
                                  2025-06-13 18:29:16.195  - debug: shelly.0 (1421) [httpIoBrokerState] State change 192.168.178.31 (shellyplusplugs / shellyplusplugs-b0b21c1309fc / shellyplusplugs#b0b21c1309fc#1): state: shellyplusplugs#b0b21c1309fc#1.Mqtt.topicPrefix, value: "shellyplusplugs-b0b21c1309fc"
                                  2025-06-13 18:29:16.195  - debug: shelly.0 (1421) [httpIoBrokerState] State change 192.168.178.31 (shellyplusplugs / shellyplusplugs-b0b21c1309fc / shellyplusplugs#b0b21c1309fc#1): state: shellyplusplugs#b0b21c1309fc#1.Mqtt.rpcNotifications, value: true
                                  2025-06-13 18:29:16.195  - debug: shelly.0 (1421) [httpIoBrokerState] State change 192.168.178.31 (shellyplusplugs / shellyplusplugs-b0b21c1309fc / shellyplusplugs#b0b21c1309fc#1): state: shellyplusplugs#b0b21c1309fc#1.Mqtt.statusNotifications, value: true
                                  2025-06-13 18:29:16.195  - debug: shelly.0 (1421) [httpIoBrokerState] State change 192.168.178.31 (shellyplusplugs / shellyplusplugs-b0b21c1309fc / shellyplusplugs#b0b21c1309fc#1): state: shellyplusplugs#b0b21c1309fc#1.Mqtt.clientId, value: "shellyplusplugs-b0b21c1309fc"
                                  2025-06-13 18:29:16.283  - debug: shelly.0 (1421) [httpIoBrokerState] State change 192.168.178.31 (shellyplusplugs / shellyplusplugs-b0b21c1309fc / shellyplusplugs#b0b21c1309fc#1): state: shellyplusplugs#b0b21c1309fc#1.Cloud.enabled, value: true
                                  2025-06-13 18:29:16.435  - debug: shelly.0 (1421) [httpIoBrokerState] State change 192.168.178.31 (shellyplusplugs / shellyplusplugs-b0b21c1309fc / shellyplusplugs#b0b21c1309fc#1): state: shellyplusplugs#b0b21c1309fc#1.PLUGS_UI.Mode, value: "switch"
                                  2025-06-13 18:29:16.435  - debug: shelly.0 (1421) [httpIoBrokerState] State change 192.168.178.31 (shellyplusplugs / shellyplusplugs-b0b21c1309fc / shellyplusplugs#b0b21c1309fc#1): state: shellyplusplugs#b0b21c1309fc#1.PLUGS_UI.PowerBrightness, value: 30
                                  2025-06-13 18:29:16.435  - debug: shelly.0 (1421) [httpIoBrokerState] State change 192.168.178.31 (shellyplusplugs / shellyplusplugs-b0b21c1309fc / shellyplusplugs#b0b21c1309fc#1): state: shellyplusplugs#b0b21c1309fc#1.PLUGS_UI.SwitchOnBrightness, value: 20
                                  2025-06-13 18:29:16.435  - debug: shelly.0 (1421) [httpIoBrokerState] State change 192.168.178.31 (shellyplusplugs / shellyplusplugs-b0b21c1309fc / shellyplusplugs#b0b21c1309fc#1): state: shellyplusplugs#b0b21c1309fc#1.PLUGS_UI.SwitchOnColor, value: "8,100,13"
                                  2025-06-13 18:29:16.435  - debug: shelly.0 (1421) [httpIoBrokerState] State change 192.168.178.31 (shellyplusplugs / shellyplusplugs-b0b21c1309fc / shellyplusplugs#b0b21c1309fc#1): state: shellyplusplugs#b0b21c1309fc#1.PLUGS_UI.SwitchOffBrightness, value: 20
                                  2025-06-13 18:29:16.435  - debug: shelly.0 (1421) [httpIoBrokerState] State change 192.168.178.31 (shellyplusplugs / shellyplusplugs-b0b21c1309fc / shellyplusplugs#b0b21c1309fc#1): state: shellyplusplugs#b0b21c1309fc#1.PLUGS_UI.SwitchOffColor, value: "100,0,6"
                                  2025-06-13 18:29:16.435  - debug: shelly.0 (1421) [httpIoBrokerState] State change 192.168.178.31 (shellyplusplugs / shellyplusplugs-b0b21c1309fc / shellyplusplugs#b0b21c1309fc#1): state: shellyplusplugs#b0b21c1309fc#1.PLUGS_UI.NightModeEnabled, value: false
                                  2025-06-13 18:29:16.436  - debug: shelly.0 (1421) [httpIoBrokerState] State change 192.168.178.31 (shellyplusplugs / shellyplusplugs-b0b21c1309fc / shellyplusplugs#b0b21c1309fc#1): state: shellyplusplugs#b0b21c1309fc#1.PLUGS_UI.NightModeBrightness, value: 80
                                  2025-06-13 18:29:16.520  - debug: shelly.0 (1421) [httpIoBrokerState] State change 192.168.178.31 (shellyplusplugs / shellyplusplugs-b0b21c1309fc / shellyplusplugs#b0b21c1309fc#1): state: shellyplusplugs#b0b21c1309fc#1.Relay0.ChannelName, value: null
                                  2025-06-13 18:29:16.520  - debug: shelly.0 (1421) [httpIoBrokerState] State change 192.168.178.31 (shellyplusplugs / shellyplusplugs-b0b21c1309fc / shellyplusplugs#b0b21c1309fc#1): state: shellyplusplugs#b0b21c1309fc#1.Relay0.InitialState, value: "off"
                                  2025-06-13 18:29:16.520  - debug: shelly.0 (1421) [httpIoBrokerState] State change 192.168.178.31 (shellyplusplugs / shellyplusplugs-b0b21c1309fc / shellyplusplugs#b0b21c1309fc#1): state: shellyplusplugs#b0b21c1309fc#1.Relay0.AutoTimerOn, value: false
                                  2025-06-13 18:29:16.520  - debug: shelly.0 (1421) [httpIoBrokerState] State change 192.168.178.31 (shellyplusplugs / shellyplusplugs-b0b21c1309fc / shellyplusplugs#b0b21c1309fc#1): state: shellyplusplugs#b0b21c1309fc#1.Relay0.AutoTimerOnDelay, value: 60
                                  2025-06-13 18:29:16.520  - debug: shelly.0 (1421) [httpIoBrokerState] State change 192.168.178.31 (shellyplusplugs / shellyplusplugs-b0b21c1309fc / shellyplusplugs#b0b21c1309fc#1): state: shellyplusplugs#b0b21c1309fc#1.Relay0.AutoTimerOff, value: false
                                  2025-06-13 18:29:16.520  - debug: shelly.0 (1421) [httpIoBrokerState] State change 192.168.178.31 (shellyplusplugs / shellyplusplugs-b0b21c1309fc / shellyplusplugs#b0b21c1309fc#1): state: shellyplusplugs#b0b21c1309fc#1.Relay0.AutoTimerOffDelay, value: 60
                                  2025-06-13 18:29:16.520  - debug: shelly.0 (1421) [httpIoBrokerState] State change 192.168.178.31 (shellyplusplugs / shellyplusplugs-b0b21c1309fc / shellyplusplugs#b0b21c1309fc#1): state: shellyplusplugs#b0b21c1309fc#1.Relay0.LimitPower, value: 2500
                                  2025-06-13 18:29:16.520  - debug: shelly.0 (1421) [httpIoBrokerState] State change 192.168.178.31 (shellyplusplugs / shellyplusplugs-b0b21c1309fc / shellyplusplugs#b0b21c1309fc#1): state: shellyplusplugs#b0b21c1309fc#1.Relay0.LimitCurrent, value: 12
                                  2025-06-13 18:29:16.520  - debug: shelly.0 (1421) [httpIoBrokerState] State change 192.168.178.31 (shellyplusplugs / shellyplusplugs-b0b21c1309fc / shellyplusplugs#b0b21c1309fc#1): state: shellyplusplugs#b0b21c1309fc#1.Relay0.LimitVoltage, value: 280
                                  
                                  

                                  ============ Mark until here for C&P =============

                                  iob diag has finished.

                                  1 Antwort Letzte Antwort
                                  0
                                  • Thomas MaulT Offline
                                    Thomas MaulT Offline
                                    Thomas Maul
                                    schrieb am zuletzt editiert von Thomas Maul
                                    #17

                                    @mg99 said in Tester für Javascript 9.0.1 gesucht:

                                    Veränderungen von bereits bestehenden Skripten teilweise nicht möglich.
                                    D.h. die Buttons Speichern bzw. Abbrechen kommen nicht.
                                    Das passiert allerdings nicht bei allen blocklys.
                                    F5 - hilft nicht.

                                    Kann ich bestätigen.

                                    EDIT plus: neues Skript anlegen funktioniert auch nicht.

                                    1 Antwort Letzte Antwort
                                    0
                                    • BananaJoeB Online
                                      BananaJoeB Online
                                      BananaJoe
                                      Most Active
                                      schrieb am zuletzt editiert von
                                      #18

                                      Ich wollte gerade ein Blockly kopieren. Dazu habe ich ein vorhandenes Exportiert und in die Zwischenablage kopiert,
                                      dann ein neues, leeres angelegt und wollt dann importieren:

                                      d0b11978-765a-4a5e-86c3-78409a53d1ee-image.png

                                      TypeError: this.blocklyWorkspace.paste is not a function
                                      

                                      Falls das mal jemand verifizieren kann.

                                      ioBroker@Ubuntu 24.04 LTS (VMware) für: >260 Geräte, 5 Switche, 7 AP, 9 IP-Cam, 1 NAS 42TB, 1 ESXi 15TB, 4 Proxmox 1TB, 1 Hyper-V 48TB, 14 x Echo, 5x FireTV, 5 x Tablett/Handy VIS || >=160 Tasmota/Shelly || >=95 ZigBee || PV 8.1kW / Akku 14kWh || 2x USV 750W kaskadiert || Creality CR-10 SE 3D-Drucker

                                      S 1 Antwort Letzte Antwort
                                      0
                                      • BananaJoeB BananaJoe

                                        Ich wollte gerade ein Blockly kopieren. Dazu habe ich ein vorhandenes Exportiert und in die Zwischenablage kopiert,
                                        dann ein neues, leeres angelegt und wollt dann importieren:

                                        d0b11978-765a-4a5e-86c3-78409a53d1ee-image.png

                                        TypeError: this.blocklyWorkspace.paste is not a function
                                        

                                        Falls das mal jemand verifizieren kann.

                                        S Abwesend
                                        S Abwesend
                                        Shadowhunter23
                                        schrieb am zuletzt editiert von Shadowhunter23
                                        #19

                                        @bananajoe
                                        Kann ich, ist bei mir auch.
                                        Dazu gibt's auch ein Issue:
                                        https://github.com/ioBroker/ioBroker.javascript/issues/1890

                                        Proxmox 9 HA-Cluster mit 3x HP prodesk 400 G6 i5
                                        Bei einem downvote bitte melden, es könnte sein, dass dieser ungewollt ist!

                                        1 Antwort Letzte Antwort
                                        1
                                        • amg_666A Offline
                                          amg_666A Offline
                                          amg_666
                                          schrieb am zuletzt editiert von
                                          #20

                                          ich möchte ein vorthandenes Blockly Script umbauen und will hierfür eine Funktion einbauen.
                                          Ich habe die Funktion inkl deren Aufruf mehrfach in Blockly eingegeben und gespeichert. wenn ich den Editor zu und wieder aufmache sind die Änderungen weg...
                                          Browser Cache habe ich gelöscht und Browser neu gestartet.
                                          Mir ist noch aufgefallen: Wenn ich das Script öffne und dann einen "Funktion" Baustein in das Script ziehe, dann erscheint der Button "Speichern" nicht. Wenn ich im Script irgendwas anderes ändere (einen Block lösche, einen Trigger einfüge etc), dann erscheint "Speichern".
                                          Hat hir jemand eine Idee woran es liegen könnte?
                                          Firefox Browser, iob auf proxmox container, Beta repo
                                          node-js 20.19.2
                                          npm 10.8.2
                                          js-controller 7.0.7
                                          javascript adapter 9.0.3

                                          iobroker auf proxmox container

                                          T 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

                                          852

                                          Online

                                          32.4k

                                          Benutzer

                                          81.5k

                                          Themen

                                          1.3m

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

                                          • Du hast noch kein Konto? Registrieren

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