Navigation

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

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Profile
    • Following 0
    • Followers 0
    • Topics 1
    • Posts 2
    • Best 0
    • Groups 0

    snakepitnetwork

    @snakepitnetwork

    0
    Reputation
    3
    Profile views
    2
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    snakepitnetwork Follow

    Latest posts made by snakepitnetwork

    • RE: Auslesen von Wert eines Objektes

      Ich danke Euch schon mal für die Aufklärung, ich probiere es gleich mal aus und gebe Rückmeldung!

      posted in JavaScript
      snakepitnetwork
      snakepitnetwork
    • Auslesen von Wert eines Objektes

      Hallo zusammen, leider muss ich jetzt hier eine Frage stellen, ich komme nicht weiter, weder mit Google Suche oder anderem.

      Ich habe eine Luxtronix WP und möchte hier den Fehlerspeicher auslesen und bei einem Problem mir eine WhatsApp schicken lassen.

      Die Datenpunkte sind sichtbar und werden auch erkannt. Leider bekomme ich nicht die Werte aus dem Objekt. Die Native Werte, die man im Objekt anziegen kann, konnte das Programm auslesen, aber ein GetState(ID) liefert bei dem Objekt keine Werte.

      /**********************************************
       * Zweck: Wärmepumpe Alarm bei Fehler und Abschaltungen
       * Abhängigkeiten: luxtronik2.0.Informationen.Fehlerspeicher, luxtronik2.0.Informationen.Abschaltungen
       **********************************************/
      const STATE_ID_Fehlerspeicher = "luxtronik2.0.Informationen.Fehlerspeicher";
      const STATE_ID_Abschaltungen = "luxtronik2.0.Informationen.Abschaltungen";
      
      if (existsObject(STATE_ID_Fehlerspeicher)==true){
          console.log("STATE_ID_Fehlerspeicher: Exisitert");
          }
      else
          {console.log("STATE_ID_Fehlerspeicher: Exisitert nicht");}
      
      if (existsObject(STATE_ID_Abschaltungen)==true){
          console.log("STATE_ID_Abschaltungen: Exisitert");
          }
      else
          {console.log("STATE_ID_Abschaltungen: Exisitert nicht");}
      
          let fehlerspeicherState = getObject(STATE_ID_Fehlerspeicher);
          let abschaltungenState = getObject(STATE_ID_Abschaltungen);
          console.log("fehlerspeicherObj:", fehlerspeicherState);
          console.log("abschaltungenObj:", abschaltungenState);
      
          fehlerspeicherState = getObject(STATE_ID_Fehlerspeicher).val;
          abschaltungenState = getObject(STATE_ID_Abschaltungen).val;
          console.log("fehlerspeicherObj:", fehlerspeicherState);
          console.log("abschaltungenObj:", abschaltungenState);
      
          fehlerspeicherState = getState(STATE_ID_Fehlerspeicher);
          abschaltungenState = getState(STATE_ID_Abschaltungen);
          console.log("fehlerspeicherState:", fehlerspeicherState);
          console.log("abschaltungenState:", abschaltungenState);
      
          fehlerspeicherState = getState(STATE_ID_Fehlerspeicher).val;
          abschaltungenState = getState(STATE_ID_Abschaltungen).val;
          console.log("fehlerspeicherState:", fehlerspeicherState);
          console.log("abschaltungenState:", abschaltungenState);
      
          console.log(STATE_ID_Fehlerspeicher.val); 
      
      
      {
        "type": "state",
        "common": {
          "name": "Abschaltungen",
          "type": "object",
          "role": "json",
          "read": true,
          "write": false,
          "custom": {
            "influxdb.0": {
              "enabled": true,
              "storageType": "",
              "aliasId": "",
              "debounceTime": 0,
              "blockTime": 0,
              "changesOnly": true,
              "changesRelogInterval": 0,
              "changesMinDelta": 0,
              "ignoreBelowNumber": "",
              "disableSkippedValueLogging": false,
              "enableDebugLogs": true,
              "debounce": 0
            }
          }
        },
        "native": {
          "$": {
            "id": "0x0x510a90"
          },
          "name": [
            "Abschaltungen"
          ],
          "item": [
            {
              "$": {
                "id": "0x0x545d30"
              },
              "name": [
                "09.05.25 10:26:10"
              ],
              "value": [
                "keine Anf."
              ]
            },
            {
              "$": {
                "id": "0x0x50d548"
              },
              "name": [
                "09.05.25 07:02:00"
              ],
              "value": [
                "keine Anf."
              ]
            },
            {
              "$": {
                "id": "0x0x531038"
              },
              "name": [
                "09.05.25 04:53:05"
              ],
              "value": [
                "keine Anf."
              ]
            },
            {
              "$": {
                "id": "0x0x52d470"
              },
              "name": [
                "09.05.25 02:49:08"
              ],
              "value": [
                "keine Anf."
              ]
            },
            {
              "$": {
                "id": "0x0x510768"
              },
              "name": [
                "08.05.25 23:59:16"
              ],
              "value": [
                "keine Anf."
              ]
            }
          ]
        },
        "_id": "luxtronik2.0.Informationen.Abschaltungen",
        "acl": {
          "object": 1636,
          "state": 1636,
          "owner": "system.user.admin",
          "ownerGroup": "system.group.administrator"
        },
        "from": "system.adapter.admin.0",
        "user": "system.user.admin",
        "ts": 1749716042909
      }
      
      Wert:
      {"12.06.25 07:01:49":"keine Anf.","12.06.25 06:17:52":"keine Anf.","11.06.25 11:33:49":"keine Anf.","11.06.25 05:37:50":"keine Anf.","11.06.25 03:04:55":"keine Anf."}
      

      Ich habe jetzt mal nur das Test Skript angehängt ob man da schon einen groben Fehler sehen kann.

      Danke für Eure Hilfe!

      Hier noch das Vollständige:

      /**********************************************
       * Zweck: Wärmepumpe Alarm bei Fehler und Abschaltungen
       * Abhängigkeiten: luxtronik2.0.Informationen.Fehlerspeicher, luxtronik2.0.Informationen.Abschaltungen
       **********************************************/
      const STATE_ID_Fehlerspeicher = "luxtronik2.0.Informationen.Fehlerspeicher";
      const STATE_ID_Abschaltungen = "luxtronik2.0.Informationen.Abschaltungen";
      console.log("STATE_ID_Fehlerspeicher:", STATE_ID_Fehlerspeicher);
      console.log("STATE_ID_Abschaltungen:", STATE_ID_Abschaltungen);
      
      // Funktion, um das aktuelle Datum im Format "DD.MM.YY" zu erhalten
      function getCurrentDate() {
          const now = new Date();
          return now.toLocaleDateString('de-DE'); // Format: DD.MM.YY
      }
      
      // Variablen, um die letzten bekannten Einträge zu speichern
      let lastFehlerspeicher = {};
      let lastAbschaltungen = {};
      
      // Variable, um den Fehlerfall zu simulieren
      let simulateError = false;
      
      schedule('* * * * *', function () {
          // Objekte auslesen
          const fehlerspeicherObj = getState(STATE_ID_Fehlerspeicher);
          const abschaltungenObj = getState(STATE_ID_Abschaltungen);
      
          if (!fehlerspeicherObj || !abschaltungenObj) {
              console.warn("Fehlerspeicher oder Abschaltungen-Objekt nicht vorhanden.");
              return;
          }
      
          console.log("fehlerspeicherObj.val:", fehlerspeicherObj.val);
          console.log("abschaltungenObj.val:", abschaltungenObj.val);
          console.log("typeof fehlerspeicherObj.val:", typeof fehlerspeicherObj.val, "Inhalt:", fehlerspeicherObj.val);
          console.log("typeof abschaltungenObj.val:", typeof abschaltungenObj.val, "Inhalt:", abschaltungenObj.val);
      
          if (typeof fehlerspeicherObj.val !== "string" || fehlerspeicherObj.val.trim() === "") {
              console.warn("Fehlerspeicher-Objekt ist leer!");
          }
          if (typeof abschaltungenObj.val !== "string" || abschaltungenObj.val.trim() === "") {
              console.warn("Abschaltungen-Objekt ist leer!");
          }
      
          // JSON parsen, falls value ein JSON-String ist
          let fehlerspeicherData, abschaltungenData;
          try {
              if (fehlerspeicherObj.val) {
                  fehlerspeicherData = JSON.parse(fehlerspeicherObj.val);
              } else {
                  throw new Error("fehlerspeicherObj.val ist leer");
              }
          } catch (e) {
              console.warn("Fehlerspeicher-Objekt konnte nicht geparst werden:", e);
              fehlerspeicherData = {};
          }
          let abschaltungenItems = [];
          try {
              if (abschaltungenObj.val) {
                  const parsed = JSON.parse(abschaltungenObj.val);
                  // parsed ist ein Objekt mit Datum als Key und Grund als Value
                  abschaltungenItems = Object.entries(parsed).map(([date, value]) => ({
                      date,
                      value
                  }));
              }
          } catch (e) {
              console.warn("Abschaltungen-Objekt konnte nicht geparst werden:", e);
          }
      
          let fehlerspeicherItems = [];
          try {
              if (fehlerspeicherObj.val) {
                  const parsed = JSON.parse(fehlerspeicherObj.val);
                  // parsed ist ein Objekt mit Datum als Key und Fehlertext als Value
                  fehlerspeicherItems = Object.entries(parsed).map(([date, value]) => ({
                      date,
                      value
                  }));
              }
          } catch (e) {
              console.warn("Fehlerspeicher-Objekt konnte nicht geparst werden:", e);
          }
      
          const currentDate = getCurrentDate();
      
          let newFehler = [];
          fehlerspeicherItems.forEach((entry) => {
              // entry.date ist das Datum, entry.value der Fehlertext
              if (entry.date.startsWith(currentDate)) {
                  if (!lastFehlerspeicher[entry.date]) {
                      newFehler.push(entry);
                  } else {
                      console.log(`Eintrag ignoriert (bereits bekannt): Datum=${entry.date}`);
                  }
              }
          });
      
          let newAbschaltungen = [];
          abschaltungenItems.forEach((entry) => {
              // entry.date ist das Datum, entry.value der Grund
              // Prüfe auf aktuelles Datum (nur Tag, nicht Uhrzeit!)
              if (entry.date.startsWith(currentDate)) {
                  if (!lastAbschaltungen[entry.date]) {
                      newAbschaltungen.push(entry);
                  } else {
                      console.log(`Eintrag ignoriert (bereits bekannt): Datum=${entry.date}`);
                  }
              }
          });
      
          if (newFehler.length > 0 || newAbschaltungen.length > 0) {
              const fehlerDetails = newFehler
                  .map((entry) => `Datum: ${entry.date}, Fehler: ${entry.value}`)
                  .join("\n");
              const abschaltungenDetails = newAbschaltungen
                  .map((entry) => `Datum: ${entry.name[0]}, Grund: ${entry.value[0]}`)
                  .join("\n");
      
              const message = `Wärmepumpen-Alarm:\n\nNeue Fehlerspeicher-Einträge:\n${fehlerDetails}\n\nNeue Abschaltungen:\n${abschaltungenDetails}`;
              console.log("Nachricht für WhatsApp:", message);
      
              sendTo('whatsapp-cmb.0', 'send', {
                  text: message,
                  phone: ''
              });
      
              newFehler.forEach((entry) => {
                  lastFehlerspeicher[entry.date] = true;
              });
              newAbschaltungen.forEach((entry) => {
                  lastAbschaltungen[entry.date] = true;
              });
          } else {
              console.log("Keine neuen Einträge vom heutigen Datum gefunden.");
          }
      });
      
      // Reset lastFehlerspeicher and lastAbschaltungen at midnight
      schedule('0 0 * * *', function () {
          lastFehlerspeicher = {};
          lastAbschaltungen = {};
          console.log("Reset lastFehlerspeicher and lastAbschaltungen.");
      });
      
      
      posted in JavaScript
      snakepitnetwork
      snakepitnetwork
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo