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. ioBroker Allgemein
  4. 0_userdata.0.lovelace.showIcal.log0.markdown nicht aktuell

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    3.6k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.2k

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.5k

0_userdata.0.lovelace.showIcal.log0.markdown nicht aktuell

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
4 Beiträge 2 Kommentatoren 121 Aufrufe 1 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.
  • AtifanA Offline
    AtifanA Offline
    Atifan
    schrieb am zuletzt editiert von
    #1

    Hallo zusammen,

    ich nutze den Adapter Ical.0 um einen Kalender von Google auszulesen.
    Die Daten zeige ich über Lovelace UI auf meinem Dashboard an.
    Nutze das um anzuzeigen wann die nächsten Mülltonnenentleerungen stattfinden.

    Jetzt habe ich das Problem, dass der Datenpunkt 0_userdata.0.lovelace.showIcal.log0.markdown das letze Mal am 17.10. aktualisiert wurde, daher werden mir nur noch alte Werte angezeigt und meine Daten sind nicht mehr aktuell.
    Ich weiss aber nicht wieso der nicht aktualisiert wird bzw. von welchem Adapter wann der Datenpunkt aktualisiert wird.
    Weiß das evlt. jemand?

    1b8b75da-c47a-46e3-8379-0a56eebd45cb-grafik.png

    AtifanA 1 Antwort Letzte Antwort
    0
    • AtifanA Atifan

      Hallo zusammen,

      ich nutze den Adapter Ical.0 um einen Kalender von Google auszulesen.
      Die Daten zeige ich über Lovelace UI auf meinem Dashboard an.
      Nutze das um anzuzeigen wann die nächsten Mülltonnenentleerungen stattfinden.

      Jetzt habe ich das Problem, dass der Datenpunkt 0_userdata.0.lovelace.showIcal.log0.markdown das letze Mal am 17.10. aktualisiert wurde, daher werden mir nur noch alte Werte angezeigt und meine Daten sind nicht mehr aktuell.
      Ich weiss aber nicht wieso der nicht aktualisiert wird bzw. von welchem Adapter wann der Datenpunkt aktualisiert wird.
      Weiß das evlt. jemand?

      1b8b75da-c47a-46e3-8379-0a56eebd45cb-grafik.png

      AtifanA Offline
      AtifanA Offline
      Atifan
      schrieb am zuletzt editiert von Atifan
      #2

      Hi, ich weiss zwar nicht warum das oben nicht mehr funktioniert, aber es spielt keine Rolle mehr.
      Ich habe mit Hilfe von ChatGPT ein Script erstellt, das das macht was ich wollte.

      Falls einer ein Müllkalender Script möchte, das er mit Hilfe von LovelaceUI in einem Markdown-Fenster anzeigen kann.
      Hier die funktionsweise.
      Man benötigt nur den Adapter Ical (zum Auslesen eines Google Kalenders in dem die Müllabfuhrtermine hinterlegt sind).
      Außerdem den Adapter LovelaceUI um das Lovelace Dashboard aufzubauen. Dort benötigt man dann noch ein Markdown-Karte für die Anzeige.
      Am Ende sieht das dann so aus:

      93756da5-20ad-4f31-b19a-bd7929502352-grafik.png

      Das Script liest den Datenpunkt "ical.0.data.text" aus und schreibt die Daten um in den Datenpunkt "0_userdata.0.Abfallkalender.Abfalldaten_komprimiert".
      Dieser Datenpunkt muss dann im Markdown-Karte als Quelle angegeben werden.

      2a594cce-42b1-43fe-98a1-3f3a4d45e559-grafik.png

      const TARGET_STATE = "0_userdata.0.Abfallkalender.Abfalldaten_komprimiert";
      const SOURCE_STATE = "ical.0.data.text";
      
      let updateTimeout = null;
      
      // Ziel-State erstellen, falls nicht vorhanden
      if (!existsState(TARGET_STATE)) {
          createState(TARGET_STATE, "", {
              name: "Komprimierte Abfalldaten (HTML, farbig, fett, 4 Zeilen)",
              type: "string",
              role: "text",
              read: true,
              write: false
          }, (err) => {
              if (err) log("Fehler beim Erstellen des Ziel-States: " + err, "error");
              else scheduleUpdate();
          });
      } else {
          scheduleUpdate();
      }
      
      // Hilfsfunktionen
      function formatDateGerman(date) {
          return `${String(date.getDate()).padStart(2,'0')}.${String(date.getMonth()+1).padStart(2,'0')}.${date.getFullYear()}`;
      }
      
      function parseRelativeDate(text) {
          const now = new Date();
          const date = new Date(now);
          const relMatch = text.match(/(Heute|Morgen|Übermorgen|In (\d+) Tagen)/i);
          if (!relMatch) return text;
          const word = relMatch[1].toLowerCase();
          if (word.includes("heute")) date.setDate(now.getDate());
          else if (word.includes("morgen") && !word.includes("übermorgen")) date.setDate(now.getDate()+1);
          else if (word.includes("übermorgen")) date.setDate(now.getDate()+2);
          else if (word.includes("in")) {
              const num = parseInt(relMatch[2],10);
              if (!isNaN(num)) date.setDate(now.getDate()+num);
          }
          return formatDateGerman(date);
      }
      
      // Update-Trigger (Debounce)
      function scheduleUpdate() {
          if (updateTimeout) clearTimeout(updateTimeout);
          updateTimeout = setTimeout(() => {
              updateAbfallkalender();
              updateTimeout = null;
          }, 500);
      }
      
      // Hauptfunktion
      function updateAbfallkalender() {
          try {
              if (!existsState(SOURCE_STATE)) return;
      
              const src = getState(SOURCE_STATE);
              if (!src || !src.val || typeof src.val !== "string" || src.val.trim() === "") return;
      
              const lines = src.val.split(/\r?\n/).filter(l => l.trim() !== "");
              const top4 = lines.slice(0, 4);
      
              const colorMap = { "Biotonne":"green", "Blaue Tonne":"blue", "Gelbe Tonne":"gold", "Restabfalltonne":"black" };
              const muellRegex = /(Biotonne|Blaue Tonne|Gelbe Tonne|Restabfalltonne)/i;
              const result = [];
      
              for (const line of top4) {
                  if (!line) continue;
                  const dateMatch = line.match(/^(Übermorgen|Morgen|Heute|In \d+ Tagen|\d{1,2}\.\d{1,2}\.\d{4})/i);
                  const muellMatch = line.match(muellRegex);
                  if (dateMatch && muellMatch) {
                      const datum = parseRelativeDate(dateMatch[0]);
                      const muell = muellMatch[1];
                      const farbe = colorMap[muell] || "black";
                      const muellColored = `<font color="${farbe}" size="5"><b>${muell}</b></font>`; // Schrift eine Stufe kleiner
                      result.push(`<b><font size="5">${datum} – ${muellColored}</font></b>`); // Datum ebenfalls kleiner
                  }
              }
      
              // Header: Abfallkalender rot, fett, unterstrichen, Schriftgröße eine Stufe kleiner
              const header = `<font color="red" size="6"><b><u>Abfallkalender</u></b></font><br><br>`;
              const body = result.join("<br>");
              const output = header + body;
      
              if (existsState(TARGET_STATE)) setState(TARGET_STATE, output, {ack: true});
      
          } catch(e) {
              log("Fehler in updateAbfallkalender(): " + e, "error");
          }
      }
      
      // Trigger auf Änderungen der iCal-Daten
      if (existsState(SOURCE_STATE)) {
          on({id: SOURCE_STATE, change: "any"}, () => scheduleUpdate());
      }
      
      // Einmal beim Start ausführen
      scheduleUpdate();
      
      
      1 Antwort Letzte Antwort
      0
      • T Nicht stören
        T Nicht stören
        ticaki
        schrieb am zuletzt editiert von
        #3

        Der oben benannte datenpunkt wird wohl auch von einem Skript erzeugt, könntest ja mal mit der Suche im Skriptadapter nach dem datenpunkt in den Skripten suchen.

        Weather-Warnings Espresense NSPanel-Lovelace-ui Tagesschau

        Spenden

        AtifanA 1 Antwort Letzte Antwort
        0
        • T ticaki

          Der oben benannte datenpunkt wird wohl auch von einem Skript erzeugt, könntest ja mal mit der Suche im Skriptadapter nach dem datenpunkt in den Skripten suchen.

          AtifanA Offline
          AtifanA Offline
          Atifan
          schrieb am zuletzt editiert von
          #4

          @ticaki Ja es war so, dass mehrere Adapter und Scripte ineinander griffen, deswegen hab ich es jetzt komplett vereinfacht.

          Voher war es so, dass der Ical Adapter die Daten von Google Kalender ausgelesen hat.
          Dann hat der TreasureShedule Adapter die Daten aus nem Ical Datenpunkt gelesen und diese unter 0_userdata.0.Abfallkalender gespeichert.
          Dann hat ein Script die Daten genommen und in einen Datenpunkt zusammengefasst.
          Dann hat ein anderes Script den Datenpunkt vom andern Script genommen und gekürzt, so dass von ca. 8 Abfallterminen nur noch 3 angezeigt werden, und das in einen neuen Datenpunkt geschrieben. Das war dann der Datenpunkt den ich in meinem LovelaceUI angezeigt hab.

          Jetzt macht das alles das eine Script. Es werden nur noch die Daten über Ical von Google gezogen und das Script liest alles und schreibt die neuen Daten in einen Datenpunkt, der dann über LovelaceUI angezeigt wird.

          Alles möglich dank ChatGPT :)

          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
          FAQ Cloud / IOT
          HowTo: Node.js-Update
          HowTo: Backup/Restore
          Downloads
          BLOG

          843

          Online

          32.7k

          Benutzer

          82.4k

          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