<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[VIS-2 Widget für Anzeige der Anrufliste]]></title><description><![CDATA[<p dir="auto">Hallöchen,</p>
<p dir="auto">hat schon jemand ein Widget zur Anzeige der Anrufliste aus der Fritzbox hinbekommen?</p>
<p dir="auto">Gruß<br />
Holger</p>
]]></description><link>https://forum.iobroker.net/topic/84984/vis-2-widget-für-anzeige-der-anrufliste</link><generator>RSS for Node</generator><lastBuildDate>Tue, 21 Jul 2026 07:09:59 GMT</lastBuildDate><atom:link href="https://forum.iobroker.net/topic/84984.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 16 Jul 2026 09:23:46 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to VIS-2 Widget für Anzeige der Anrufliste on Sun, 19 Jul 2026 09:02:31 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/skvarel" aria-label="Profile: skvarel">@<bdi>skvarel</bdi></a><br />
danke schon mal.</p>
<p dir="auto">Die Einstellungen vom  'ernergiefluss-erweitert' Adapter verstehe ich aktuell nicht. Hast du zufällig eine Beispiel-Projekt und kann man das im Adapter einspielen?</p>
]]></description><link>https://forum.iobroker.net/post/1348594</link><guid isPermaLink="true">https://forum.iobroker.net/post/1348594</guid><dc:creator><![CDATA[Holger Etzel]]></dc:creator><pubDate>Sun, 19 Jul 2026 09:02:31 GMT</pubDate></item><item><title><![CDATA[Reply to VIS-2 Widget für Anzeige der Anrufliste on Sun, 19 Jul 2026 08:34:02 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/holger-etzel" aria-label="Profile: Holger-Etzel">@<bdi>Holger-Etzel</bdi></a> .. die habe ich selbst erstellt und sind in meinem Icon Adapter verfügbar:</p>
<p dir="auto"><a href="https://github.com/inventwo/ioBroker.vis-icontwo" rel="nofollow ugc">https://github.com/inventwo/ioBroker.vis-icontwo</a></p>
<p dir="auto"><img src="/assets/uploads/files/1784450040867-7e479e75-37b5-4ef6-b1ab-8db84a2947e3-image.jpeg" alt="7e479e75-37b5-4ef6-b1ab-8db84a2947e3-image.jpeg" class=" img-fluid img-markdown" /></p>
]]></description><link>https://forum.iobroker.net/post/1348589</link><guid isPermaLink="true">https://forum.iobroker.net/post/1348589</guid><dc:creator><![CDATA[skvarel]]></dc:creator><pubDate>Sun, 19 Jul 2026 08:34:02 GMT</pubDate></item><item><title><![CDATA[Reply to VIS-2 Widget für Anzeige der Anrufliste on Sun, 19 Jul 2026 08:32:01 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/skvarel" aria-label="Profile: skvarel">@<bdi>skvarel</bdi></a><br />
und die Bilder? Hast du die selbst erstellt, oder gibt es die schon fertig?</p>
]]></description><link>https://forum.iobroker.net/post/1348587</link><guid isPermaLink="true">https://forum.iobroker.net/post/1348587</guid><dc:creator><![CDATA[Holger Etzel]]></dc:creator><pubDate>Sun, 19 Jul 2026 08:32:01 GMT</pubDate></item><item><title><![CDATA[Reply to VIS-2 Widget für Anzeige der Anrufliste on Sun, 19 Jul 2026 08:27:09 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/holger-etzel" aria-label="Profile: Holger-Etzel">@<bdi>Holger-Etzel</bdi></a> .. das kommt von dem 'ernergiefluss-erweitert' Adapter</p>
<p dir="auto">Auf meiner Startseite als Vorschau und per Popup dann nochmal in groß und ausführlicher.</p>
<p dir="auto"><img src="/assets/uploads/files/1784449579426-b4247c0f-3f80-4daa-b824-b4131c83a5ec-image.jpeg" alt="b4247c0f-3f80-4daa-b824-b4131c83a5ec-image.jpeg" class=" img-fluid img-markdown" /></p>
]]></description><link>https://forum.iobroker.net/post/1348585</link><guid isPermaLink="true">https://forum.iobroker.net/post/1348585</guid><dc:creator><![CDATA[skvarel]]></dc:creator><pubDate>Sun, 19 Jul 2026 08:27:09 GMT</pubDate></item><item><title><![CDATA[Reply to VIS-2 Widget für Anzeige der Anrufliste on Sun, 19 Jul 2026 08:26:58 GMT]]></title><description><![CDATA[<p dir="auto">Das Script holt die Daten aus der Fritzbox, bereitet das JSON noch etwas auf und Grafana stellt das Diagramm mit dem Infinity-Plugin dar. Bei mir wird in Grafana nur noch darüber gearbeitet.</p>
<p dir="auto">Ro75.</p>
]]></description><link>https://forum.iobroker.net/post/1348584</link><guid isPermaLink="true">https://forum.iobroker.net/post/1348584</guid><dc:creator><![CDATA[Ro75]]></dc:creator><pubDate>Sun, 19 Jul 2026 08:26:58 GMT</pubDate></item><item><title><![CDATA[Reply to VIS-2 Widget für Anzeige der Anrufliste on Sun, 19 Jul 2026 08:23:29 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/skvarel" aria-label="Profile: skvarel">@<bdi>skvarel</bdi></a><br />
wie hast du eigentlich dein Energiefluss-Widget gemacht, sieht gut aus.</p>
]]></description><link>https://forum.iobroker.net/post/1348581</link><guid isPermaLink="true">https://forum.iobroker.net/post/1348581</guid><dc:creator><![CDATA[Holger Etzel]]></dc:creator><pubDate>Sun, 19 Jul 2026 08:23:29 GMT</pubDate></item><item><title><![CDATA[Reply to VIS-2 Widget für Anzeige der Anrufliste on Thu, 16 Jul 2026 13:42:05 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/holger-etzel" aria-label="Profile: Holger-Etzel">@<bdi>Holger-Etzel</bdi></a> Das Problem an der Stelle ist, ich mache das ohne den Adapter. Ich habe mein eigenes tr-064 Skript und keine Adapter mehr, weil der Adapter mir zu wenig Infos gab.</p>
<p dir="auto">Im Grunde kann ich auch alles, aber eben mehr. Alle Anruflisten, alle Telefonbücher, alle Fritzbox-Infos.</p>
<p dir="auto">Deswegen wird dir das so nichts nützen - ich muss mal schauen ob ich das Projekt mal veröffentliche.<br />
<img src="/assets/uploads/files/1784209299753-unbenannt_anonymized.png" alt="Unbenannt_anonymized.png" class=" img-fluid img-markdown" /></p>
<p dir="auto"><img src="/assets/uploads/files/1784209299815-unbenannt2_anonymized.png" alt="Unbenannt2_anonymized.png" class=" img-fluid img-markdown" /></p>
<p dir="auto">Ro75.</p>
]]></description><link>https://forum.iobroker.net/post/1348264</link><guid isPermaLink="true">https://forum.iobroker.net/post/1348264</guid><dc:creator><![CDATA[Ro75]]></dc:creator><pubDate>Thu, 16 Jul 2026 13:42:05 GMT</pubDate></item><item><title><![CDATA[Reply to VIS-2 Widget für Anzeige der Anrufliste on Thu, 16 Jul 2026 13:38:00 GMT]]></title><description><![CDATA[<blockquote>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/ro75" aria-label="Profile: Ro75">@<bdi>Ro75</bdi></a> <a href="/post/1348256">sagte</a>:</p>
<p dir="auto">bekommt ihr das mit euren Widgets auch mit Bildern hin?</p>
</blockquote>
<p dir="auto">wenn die bildchen hinterlegt sind, kann man das auf die nummern mappen</p>
]]></description><link>https://forum.iobroker.net/post/1348263</link><guid isPermaLink="true">https://forum.iobroker.net/post/1348263</guid><dc:creator><![CDATA[OliverIO]]></dc:creator><pubDate>Thu, 16 Jul 2026 13:38:00 GMT</pubDate></item><item><title><![CDATA[Reply to VIS-2 Widget für Anzeige der Anrufliste on Thu, 16 Jul 2026 13:31:27 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/ro75" aria-label="Profile: Ro75">@<bdi>Ro75</bdi></a></p>
<p dir="auto">genauso suche ich das, kannst du das bitte veröffentlichen?</p>
]]></description><link>https://forum.iobroker.net/post/1348259</link><guid isPermaLink="true">https://forum.iobroker.net/post/1348259</guid><dc:creator><![CDATA[Holger Etzel]]></dc:creator><pubDate>Thu, 16 Jul 2026 13:31:27 GMT</pubDate></item><item><title><![CDATA[Reply to VIS-2 Widget für Anzeige der Anrufliste on Thu, 16 Jul 2026 13:28:33 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/ro75" aria-label="Profile: Ro75">@<bdi>Ro75</bdi></a> .. ja, wenn die Bildurl im json steht</p>
<p dir="auto"><img src="/assets/uploads/files/1784208511633-74693ea3-3d0f-44c9-bdb8-a41d449b51c1-image.jpeg" alt="74693ea3-3d0f-44c9-bdb8-a41d449b51c1-image.jpeg" class=" img-fluid img-markdown" /></p>
]]></description><link>https://forum.iobroker.net/post/1348257</link><guid isPermaLink="true">https://forum.iobroker.net/post/1348257</guid><dc:creator><![CDATA[skvarel]]></dc:creator><pubDate>Thu, 16 Jul 2026 13:28:33 GMT</pubDate></item><item><title><![CDATA[Reply to VIS-2 Widget für Anzeige der Anrufliste on Thu, 16 Jul 2026 13:25:31 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/skvarel" aria-label="Profile: skvarel">@<bdi>skvarel</bdi></a> <a class="plugin-mentions-user plugin-mentions-a" href="/user/oliverio" aria-label="Profile: oliverio">@<bdi>oliverio</bdi></a>  bekommt ihr das mit euren Widgets auch mit Bildern hin?<br />
<img src="/assets/uploads/files/1784208281148-unbenannt_anonymized.png" alt="Unbenannt_anonymized.png" class=" img-fluid img-markdown" /></p>
<p dir="auto">Ro75.</p>
]]></description><link>https://forum.iobroker.net/post/1348256</link><guid isPermaLink="true">https://forum.iobroker.net/post/1348256</guid><dc:creator><![CDATA[Ro75]]></dc:creator><pubDate>Thu, 16 Jul 2026 13:25:31 GMT</pubDate></item><item><title><![CDATA[Reply to VIS-2 Widget für Anzeige der Anrufliste on Thu, 16 Jul 2026 13:23:24 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/skvarel" aria-label="Profile: skvarel">@<bdi>skvarel</bdi></a></p>
<p dir="auto">und wo finde ich das Widget auf deiner Startseite?</p>
]]></description><link>https://forum.iobroker.net/post/1348255</link><guid isPermaLink="true">https://forum.iobroker.net/post/1348255</guid><dc:creator><![CDATA[Holger Etzel]]></dc:creator><pubDate>Thu, 16 Jul 2026 13:23:24 GMT</pubDate></item><item><title><![CDATA[Reply to VIS-2 Widget für Anzeige der Anrufliste on Thu, 16 Jul 2026 13:15:11 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/holger-etzel" aria-label="Profile: Holger-Etzel">@<bdi>Holger-Etzel</bdi></a></p>
<p dir="auto"><img src="/assets/uploads/files/1784207709883-4d1afc8e-077c-4a47-bd49-001d1c21619c-image.jpeg" alt="4d1afc8e-077c-4a47-bd49-001d1c21619c-image.jpeg" class=" img-fluid img-markdown" /></p>
]]></description><link>https://forum.iobroker.net/post/1348252</link><guid isPermaLink="true">https://forum.iobroker.net/post/1348252</guid><dc:creator><![CDATA[skvarel]]></dc:creator><pubDate>Thu, 16 Jul 2026 13:15:11 GMT</pubDate></item><item><title><![CDATA[Reply to VIS-2 Widget für Anzeige der Anrufliste on Thu, 16 Jul 2026 13:10:33 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/skvarel" aria-label="Profile: skvarel">@<bdi>skvarel</bdi></a></p>
<p dir="auto">wo finde ich das Widget in der VIS-2</p>
]]></description><link>https://forum.iobroker.net/post/1348251</link><guid isPermaLink="true">https://forum.iobroker.net/post/1348251</guid><dc:creator><![CDATA[Holger Etzel]]></dc:creator><pubDate>Thu, 16 Jul 2026 13:10:33 GMT</pubDate></item><item><title><![CDATA[Reply to VIS-2 Widget für Anzeige der Anrufliste on Thu, 16 Jul 2026 13:04:17 GMT]]></title><description><![CDATA[<p dir="auto">inventwo json Widget, direkt mit der dem tr-064.0.calllists.missed.json Datenpunk</p>
<p dir="auto"><em>(Nummern nur für den Screenhot abgedeckt)</em><br />
<img src="/assets/uploads/files/1784207038338-c7017f67-d1b2-4f98-9c5b-501b821b571a-image.jpeg" alt="c7017f67-d1b2-4f98-9c5b-501b821b571a-image.jpeg" class=" img-fluid img-markdown" /></p>
<p dir="auto"><em>(Nummern nur für den Screenhot abgedeckt)</em><br />
<img src="/assets/uploads/files/1784206955170-931f4219-3df9-4eaf-a2d0-b8fc8b302384-image.jpeg" alt="931f4219-3df9-4eaf-a2d0-b8fc8b302384-image.jpeg" class=" img-fluid img-markdown" /></p>
]]></description><link>https://forum.iobroker.net/post/1348245</link><guid isPermaLink="true">https://forum.iobroker.net/post/1348245</guid><dc:creator><![CDATA[skvarel]]></dc:creator><pubDate>Thu, 16 Jul 2026 13:04:17 GMT</pubDate></item><item><title><![CDATA[Reply to VIS-2 Widget für Anzeige der Anrufliste on Thu, 16 Jul 2026 13:00:40 GMT]]></title><description><![CDATA[<p dir="auto">im obigen template wurde jetzt noch die hell/dunkel light/dark einstellung ergänzt. ausserdem können nun alle farben individuell konfiguriert werden</p>
<pre><code>/* Darstellung auswählen: "dark" oder "light" */
var themeMode = "light";

/*
 * Hier können alle verwendeten Farben angepasst werden.
 * Gültig sind z. B. #ffffff, rgb(...), rgba(...), transparent.
 */
var themes = {
    dark: {
        background: "rgba(27, 31, 39, 0.96)",
        cardBackground: "rgba(255, 255, 255, 0.055)",
        cardHoverBackground: "rgba(255, 255, 255, 0.09)",
        border: "rgba(255, 255, 255, 0.09)",
        hoverBorder: "rgba(255, 255, 255, 0.15)",
        text: "#f4f6f8",
        mutedText: "#9ba6b2",
        incoming: "#43c982",
        outgoing: "#5fa8ff",
        unknown: "#a9b0b8",
        iconText: "#ffffff",
        headerIconBackground: "rgba(95, 168, 255, 0.14)",
        countBackground: "rgba(255, 255, 255, 0.06)",
        avatarBackground: "rgba(255, 255, 255, 0.07)",
        durationBackground: "rgba(255, 255, 255, 0.055)",
        scrollbarThumb: "rgba(255, 255, 255, 0.22)",
        scrollbarTrack: "transparent",
        shadow: "rgba(0, 0, 0, 0.24)"
    },

    light: {
        background: "rgba(248, 250, 252, 0.98)",
        cardBackground: "#ffffff",
        cardHoverBackground: "#f1f5f9",
        border: "rgba(15, 23, 42, 0.12)",
        hoverBorder: "rgba(15, 23, 42, 0.22)",
        text: "#172033",
        mutedText: "#667085",
        incoming: "#168653",
        outgoing: "#2563c9",
        unknown: "#6b7280",
        iconText: "#ffffff",
        headerIconBackground: "rgba(37, 99, 201, 0.12)",
        countBackground: "rgba(15, 23, 42, 0.055)",
        avatarBackground: "rgba(15, 23, 42, 0.055)",
        durationBackground: "rgba(15, 23, 42, 0.055)",
        scrollbarThumb: "rgba(15, 23, 42, 0.25)",
        scrollbarTrack: "transparent",
        shadow: "rgba(15, 23, 42, 0.16)"
    }
};
</code></pre>
]]></description><link>https://forum.iobroker.net/post/1348243</link><guid isPermaLink="true">https://forum.iobroker.net/post/1348243</guid><dc:creator><![CDATA[OliverIO]]></dc:creator><pubDate>Thu, 16 Jul 2026 13:00:40 GMT</pubDate></item><item><title><![CDATA[Reply to VIS-2 Widget für Anzeige der Anrufliste on Thu, 16 Jul 2026 15:14:59 GMT]]></title><description><![CDATA[<blockquote>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/holger-etzel" aria-label="Profile: Holger-Etzel">@<bdi>Holger-Etzel</bdi></a> <a href="/post/1348225">sagte</a>:</p>
</blockquote>
<p dir="auto">fertig.<br />
ich habe mir zunächst die json daten von der ki erweitern lassen, so das mehr datensätze zur verfügung stehen.</p>
<p dir="auto"></p><section class="spoiler-wrapper"><button class="spoiler-control btn btn-default">Spoiler</button><section style="display:none" class="spoiler-content"><p></p>
<pre><code>[
 {
   "id": 5471,
   "type": "1",
   "caller": "Anrufernummer",
   "called": "SIP: Nummer",
   "callednumber": "Nummer",
   "name": "xxx",
   "numbertype": "sip",
   "device": "unser Foni",
   "port": "10",
   "date": "16.07.26 12:30",
   "duration": "0:02",
   "count": "",
   "path": "",
   "sym": "&gt;",
   "external": "Anrufernummer"
 },
 {
   "id": 5472,
   "type": "1",
   "caller": "01711234567",
   "called": "SIP: 1002",
   "callednumber": "1002",
   "name": "Max Mustermann",
   "numbertype": "sip",
   "device": "Telefon Büro",
   "port": "11",
   "date": "16.07.26 12:45",
   "duration": "1:34",
   "count": "",
   "path": "",
   "sym": "&gt;",
   "external": "01711234567"
 },
 {
   "id": 5473,
   "type": "2",
   "caller": "1003",
   "called": "SIP: 1001",
   "callednumber": "1001",
   "name": "Empfang",
   "numbertype": "sip",
   "device": "Telefon Empfang",
   "port": "12",
   "date": "16.07.26 13:02",
   "duration": "0:47",
   "count": "",
   "path": "",
   "sym": "&lt;",
   "external": "1003"
 },
 {
   "id": 5474,
   "type": "1",
   "caller": "015901234567",
   "called": "SIP: 1005",
   "callednumber": "1005",
   "name": "Support",
   "numbertype": "sip",
   "device": "Softphone",
   "port": "13",
   "date": "16.07.26 13:18",
   "duration": "3:12",
   "count": "",
   "path": "",
   "sym": "&gt;",
   "external": "015901234567"
 },
 {
   "id": 5475,
   "type": "2",
   "caller": "1001",
   "called": "SIP: 1004",
   "callednumber": "1004",
   "name": "Vertrieb",
   "numbertype": "sip",
   "device": "IP-Telefon",
   "port": "14",
   "date": "16.07.26 14:05",
   "duration": "5:28",
   "count": "",
   "path": "",
   "sym": "&lt;",
   "external": "1001"
 }
]
</code></pre>
<p dir="auto"></p></section></section><p></p>
<p dir="auto">dann habe ich ein template/vorlage für das widget vis-jsontemplate aus dem adapter erstellen lassen. die grundfunktionalität ist relativ einfach, da ich es schön gestalten wollte ist viel css dazugekommen</p>
<p dir="auto">einrichten<br />
wenn nicht vorhanden den adapter vis-jsontemplate installieren<br />
dann das widget json template in einer view hinzufügen<br />
unter datapoint dann den entsprechenden datenpunkt auswählen<br />
und in das feld template das folgende einfügen<br />
</p><section class="spoiler-wrapper"><button class="spoiler-control btn btn-default">Spoiler</button><section style="display:none" class="spoiler-content"><p></p>
<pre><code>&lt;%
&lt;%
/*
* ioBroker.vis-jsontemplate
* Responsive Anrufliste
*
* ============================================================
* EINFACHE DARSTELLUNGS- UND FARBKONFIGURATION
* ============================================================
*/

/* Darstellung auswählen: "dark" oder "light" */
var themeMode = "light";

/*
* Hier können alle verwendeten Farben angepasst werden.
* Gültig sind z. B. #ffffff, rgb(...), rgba(...), transparent.
*/
var themes = {
   dark: {
       background: "rgba(27, 31, 39, 0.96)",
       cardBackground: "rgba(255, 255, 255, 0.055)",
       cardHoverBackground: "rgba(255, 255, 255, 0.09)",
       border: "rgba(255, 255, 255, 0.09)",
       hoverBorder: "rgba(255, 255, 255, 0.15)",
       text: "#f4f6f8",
       mutedText: "#9ba6b2",
       incoming: "#43c982",
       outgoing: "#5fa8ff",
       unknown: "#a9b0b8",
       iconText: "#ffffff",
       headerIconBackground: "rgba(95, 168, 255, 0.14)",
       countBackground: "rgba(255, 255, 255, 0.06)",
       avatarBackground: "rgba(255, 255, 255, 0.07)",
       durationBackground: "rgba(255, 255, 255, 0.055)",
       scrollbarThumb: "rgba(255, 255, 255, 0.22)",
       scrollbarTrack: "transparent",
       shadow: "rgba(0, 0, 0, 0.24)"
   },

   light: {
       background: "rgba(248, 250, 252, 0.98)",
       cardBackground: "#ffffff",
       cardHoverBackground: "#f1f5f9",
       border: "rgba(15, 23, 42, 0.12)",
       hoverBorder: "rgba(15, 23, 42, 0.22)",
       text: "#172033",
       mutedText: "#667085",
       incoming: "#168653",
       outgoing: "#2563c9",
       unknown: "#6b7280",
       iconText: "#ffffff",
       headerIconBackground: "rgba(37, 99, 201, 0.12)",
       countBackground: "rgba(15, 23, 42, 0.055)",
       avatarBackground: "rgba(15, 23, 42, 0.055)",
       durationBackground: "rgba(15, 23, 42, 0.055)",
       scrollbarThumb: "rgba(15, 23, 42, 0.25)",
       scrollbarTrack: "transparent",
       shadow: "rgba(15, 23, 42, 0.16)"
   }
};

/* Weitere leicht auffindbare Darstellungsoptionen */
var widgetRadius = "16px";
var cardRadius = "13px";
var shadowDefinition = "0 12px 35px";

/* Ab hier sind normalerweise keine Anpassungen erforderlich. */
var theme = themes[themeMode] || themes.dark;

var resolvedWidgetId =
   typeof widgetID !== "undefined"
       ? widgetID
       : (typeof widgetid !== "undefined" ? widgetid : "");

var calls = [];
var errorMessage = "";

try {
   if (typeof data === "string") {
       calls = JSON.parse(data);
   } else {
       calls = data;
   }

   /*
    * Manche Datenpunkte enthalten das Array nochmals
    * in einer Eigenschaft wie "data", "items" oder "result".
    */
   if (!Array.isArray(calls) &amp;&amp; calls) {
       if (Array.isArray(calls.data)) {
           calls = calls.data;
       } else if (Array.isArray(calls.items)) {
           calls = calls.items;
       } else if (Array.isArray(calls.result)) {
           calls = calls.result;
       }
   }

   if (!Array.isArray(calls)) {
       calls = [];
       errorMessage = "Der Datenpunkt enthält kein JSON-Array.";
   }
} catch (error) {
   calls = [];
   errorMessage = "Die JSON-Daten konnten nicht verarbeitet werden.";
}

function safe(value, fallback) {
   if (value === undefined || value === null || value === "") {
       return fallback || "";
   }

   return String(value);
}

function getInitials(name) {
   var cleanName = safe(name, "?").trim();

   if (!cleanName) {
       return "?";
   }

   var parts = cleanName.split(/\s+/);

   if (parts.length === 1) {
       return parts[0].substring(0, 2).toUpperCase();
   }

   return (
       parts[0].substring(0, 1) +
       parts[parts.length - 1].substring(0, 1)
   ).toUpperCase();
}

function getDirection(call) {
   /*
    * Zuordnung anhand des Feldes "sym".
    * Bei abweichender Bedeutung einfach hier tauschen.
    */
   if (call.sym === "&gt;") {
       return {
           css: "outgoing",
           icon: "↗",
           label: "Ausgehend"
       };
   }

   if (call.sym === "&lt;") {
       return {
           css: "incoming",
           icon: "↙",
           label: "Eingehend"
       };
   }

   return {
       css: "unknown",
       icon: "↔",
       label: "Unbekannt"
   };
}

function getDateParts(dateValue) {
   var value = safe(dateValue, "–");
   var parts = value.split(" ");

   return {
       date: parts[0] || "–",
       time: parts.slice(1).join(" ") || ""
   };
}
%&gt;

&lt;style&gt;
   #&lt;%= resolvedWidgetId %&gt; {
       width: 100%;
       height: 100%;
       box-sizing: border-box;
       overflow: hidden;

       --call-bg: &lt;%= theme.background %&gt;;
       --call-card-bg: &lt;%= theme.cardBackground %&gt;;
       --call-card-hover: &lt;%= theme.cardHoverBackground %&gt;;
       --call-border: &lt;%= theme.border %&gt;;
       --call-hover-border: &lt;%= theme.hoverBorder %&gt;;
       --call-text: &lt;%= theme.text %&gt;;
       --call-muted: &lt;%= theme.mutedText %&gt;;
       --call-incoming: &lt;%= theme.incoming %&gt;;
       --call-outgoing: &lt;%= theme.outgoing %&gt;;
       --call-unknown: &lt;%= theme.unknown %&gt;;
       --call-icon-text: &lt;%= theme.iconText %&gt;;
       --call-header-icon-bg: &lt;%= theme.headerIconBackground %&gt;;
       --call-count-bg: &lt;%= theme.countBackground %&gt;;
       --call-avatar-bg: &lt;%= theme.avatarBackground %&gt;;
       --call-duration-bg: &lt;%= theme.durationBackground %&gt;;
       --call-scrollbar-thumb: &lt;%= theme.scrollbarThumb %&gt;;
       --call-scrollbar-track: &lt;%= theme.scrollbarTrack %&gt;;
       --call-shadow: &lt;%= theme.shadow %&gt;;
       --call-radius: &lt;%= widgetRadius %&gt;;
       --call-card-radius: &lt;%= cardRadius %&gt;;

       font-family:
           Inter,
           -apple-system,
           BlinkMacSystemFont,
           "Segoe UI",
           Roboto,
           Arial,
           sans-serif;
       color: var(--call-text);
   }

   #&lt;%= resolvedWidgetId %&gt; * {
       box-sizing: border-box;
   }

   #&lt;%= resolvedWidgetId %&gt; .call-widget {
       width: 100%;
       height: 100%;
       display: flex;
       flex-direction: column;
       overflow: hidden;
       background: var(--call-bg);
       border: 1px solid var(--call-border);
       border-radius: var(--call-radius);
       box-shadow: &lt;%= shadowDefinition %&gt; var(--call-shadow);
   }

   #&lt;%= resolvedWidgetId %&gt; .call-header {
       flex: 0 0 auto;
       display: flex;
       align-items: center;
       justify-content: space-between;
       gap: 16px;
       padding: 18px 20px 14px;
       border-bottom: 1px solid var(--call-border);
   }

   #&lt;%= resolvedWidgetId %&gt; .call-header-title {
       display: flex;
       align-items: center;
       gap: 11px;
       min-width: 0;
   }

   #&lt;%= resolvedWidgetId %&gt; .call-header-icon {
       width: 38px;
       height: 38px;
       flex: 0 0 38px;
       display: grid;
       place-items: center;
       border-radius: 11px;
       background: var(--call-header-icon-bg);
       font-size: 20px;
   }

   #&lt;%= resolvedWidgetId %&gt; .call-title {
       margin: 0;
       font-size: 18px;
       line-height: 1.2;
       font-weight: 700;
       letter-spacing: 0.01em;
   }

   #&lt;%= resolvedWidgetId %&gt; .call-subtitle {
       margin-top: 3px;
       color: var(--call-muted);
       font-size: 12px;
   }

   #&lt;%= resolvedWidgetId %&gt; .call-count {
       flex: 0 0 auto;
       min-width: 34px;
       padding: 6px 10px;
       border: 1px solid var(--call-border);
       border-radius: 999px;
       background: var(--call-count-bg);
       text-align: center;
       font-size: 12px;
       font-weight: 700;
   }

   #&lt;%= resolvedWidgetId %&gt; .call-list {
       flex: 1 1 auto;
       min-height: 0;
       overflow-x: hidden;
       overflow-y: auto;
       padding: 10px;
       scrollbar-width: thin;
       scrollbar-color: var(--call-scrollbar-thumb) var(--call-scrollbar-track);
   }

   #&lt;%= resolvedWidgetId %&gt; .call-list::-webkit-scrollbar {
       width: 7px;
   }

   #&lt;%= resolvedWidgetId %&gt; .call-list::-webkit-scrollbar-track {
       background: var(--call-scrollbar-track);
   }

   #&lt;%= resolvedWidgetId %&gt; .call-list::-webkit-scrollbar-thumb {
       background: var(--call-scrollbar-thumb);
       border-radius: 10px;
   }

   #&lt;%= resolvedWidgetId %&gt; .call-card {
       position: relative;
       display: grid;
       grid-template-columns: 48px minmax(130px, 1.4fr) minmax(125px, 1fr) auto;
       align-items: center;
       gap: 13px;
       margin-bottom: 8px;
       padding: 13px 14px;
       overflow: hidden;
       background: var(--call-card-bg);
       border: 1px solid var(--call-border);
       border-radius: var(--call-card-radius);
       transition:
           background 150ms ease,
           transform 150ms ease,
           border-color 150ms ease;
   }

   #&lt;%= resolvedWidgetId %&gt; .call-card:last-child {
       margin-bottom: 0;
   }

   #&lt;%= resolvedWidgetId %&gt; .call-card:hover {
       background: var(--call-card-hover);
       border-color: var(--call-hover-border);
       transform: translateY(-1px);
   }

   #&lt;%= resolvedWidgetId %&gt; .call-card::before {
       position: absolute;
       top: 9px;
       bottom: 9px;
       left: 0;
       width: 3px;
       border-radius: 0 4px 4px 0;
       background: var(--call-unknown);
       content: "";
   }

   #&lt;%= resolvedWidgetId %&gt; .call-card.incoming::before {
       background: var(--call-incoming);
   }

   #&lt;%= resolvedWidgetId %&gt; .call-card.outgoing::before {
       background: var(--call-outgoing);
   }

   #&lt;%= resolvedWidgetId %&gt; .call-avatar {
       position: relative;
       width: 44px;
       height: 44px;
       display: grid;
       place-items: center;
       border: 1px solid var(--call-border);
       border-radius: 50%;
       background: var(--call-avatar-bg);
       font-size: 13px;
       font-weight: 750;
       letter-spacing: 0.03em;
   }

   #&lt;%= resolvedWidgetId %&gt; .call-direction-icon {
       position: absolute;
       right: -3px;
       bottom: -3px;
       width: 20px;
       height: 20px;
       display: grid;
       place-items: center;
       border: 2px solid var(--call-bg);
       border-radius: 50%;
       background: var(--call-unknown);
       color: var(--call-icon-text);
       font-size: 12px;
       font-weight: 800;
   }

   #&lt;%= resolvedWidgetId %&gt; .incoming .call-direction-icon {
       background: var(--call-incoming);
   }

   #&lt;%= resolvedWidgetId %&gt; .outgoing .call-direction-icon {
       background: var(--call-outgoing);
   }

   #&lt;%= resolvedWidgetId %&gt; .call-person,
   #&lt;%= resolvedWidgetId %&gt; .call-target {
       min-width: 0;
   }

   #&lt;%= resolvedWidgetId %&gt; .call-name {
       overflow: hidden;
       margin-bottom: 4px;
       color: var(--call-text);
       font-size: 14px;
       line-height: 1.25;
       font-weight: 700;
       text-overflow: ellipsis;
       white-space: nowrap;
   }

   #&lt;%= resolvedWidgetId %&gt; .call-number,
   #&lt;%= resolvedWidgetId %&gt; .call-target-value,
   #&lt;%= resolvedWidgetId %&gt; .call-device {
       overflow: hidden;
       color: var(--call-muted);
       font-size: 12px;
       line-height: 1.35;
       text-overflow: ellipsis;
       white-space: nowrap;
   }

   #&lt;%= resolvedWidgetId %&gt; .call-target-label {
       margin-bottom: 3px;
       color: var(--call-muted);
       font-size: 10px;
       font-weight: 700;
       letter-spacing: 0.08em;
       text-transform: uppercase;
   }

   #&lt;%= resolvedWidgetId %&gt; .call-meta {
       min-width: 92px;
       text-align: right;
   }

   #&lt;%= resolvedWidgetId %&gt; .call-time {
       margin-bottom: 4px;
       font-size: 13px;
       font-weight: 700;
   }

   #&lt;%= resolvedWidgetId %&gt; .call-date {
       color: var(--call-muted);
       font-size: 11px;
   }

   #&lt;%= resolvedWidgetId %&gt; .call-duration {
       display: inline-flex;
       align-items: center;
       gap: 5px;
       margin-top: 7px;
       padding: 4px 7px;
       border-radius: 7px;
       background: var(--call-duration-bg);
       color: var(--call-muted);
       font-size: 11px;
   }

   #&lt;%= resolvedWidgetId %&gt; .call-duration::before {
       content: "◷";
       font-size: 12px;
   }

   #&lt;%= resolvedWidgetId %&gt; .call-status {
       display: inline-block;
       margin-top: 6px;
       font-size: 10px;
       font-weight: 700;
   }

   #&lt;%= resolvedWidgetId %&gt; .incoming .call-status {
       color: var(--call-incoming);
   }

   #&lt;%= resolvedWidgetId %&gt; .outgoing .call-status {
       color: var(--call-outgoing);
   }

   #&lt;%= resolvedWidgetId %&gt; .unknown .call-status {
       color: var(--call-unknown);
   }

   #&lt;%= resolvedWidgetId %&gt; .call-empty {
       min-height: 180px;
       height: 100%;
       display: grid;
       place-items: center;
       padding: 30px;
       text-align: center;
   }

   #&lt;%= resolvedWidgetId %&gt; .call-empty-icon {
       margin-bottom: 12px;
       font-size: 36px;
       opacity: 0.7;
   }

   #&lt;%= resolvedWidgetId %&gt; .call-empty-title {
       margin-bottom: 6px;
       font-size: 15px;
       font-weight: 700;
   }

   #&lt;%= resolvedWidgetId %&gt; .call-empty-text {
       max-width: 320px;
       color: var(--call-muted);
       font-size: 12px;
       line-height: 1.5;
   }

   @media (max-width: 650px) {
       #&lt;%= resolvedWidgetId %&gt; .call-header {
           padding: 14px 15px 12px;
       }

       #&lt;%= resolvedWidgetId %&gt; .call-list {
           padding: 8px;
       }

       #&lt;%= resolvedWidgetId %&gt; .call-card {
           grid-template-columns: 45px minmax(0, 1fr) auto;
           gap: 11px;
           padding: 12px;
       }

       #&lt;%= resolvedWidgetId %&gt; .call-target {
           display: none;
       }

       #&lt;%= resolvedWidgetId %&gt; .call-meta {
           min-width: 70px;
       }

       #&lt;%= resolvedWidgetId %&gt; .call-status {
           display: none;
       }
   }

   @media (max-width: 420px) {
       #&lt;%= resolvedWidgetId %&gt; .call-subtitle {
           display: none;
       }

       #&lt;%= resolvedWidgetId %&gt; .call-card {
           grid-template-columns: 42px minmax(0, 1fr);
       }

       #&lt;%= resolvedWidgetId %&gt; .call-meta {
           grid-column: 2;
           display: flex;
           align-items: center;
           gap: 8px;
           margin-top: -2px;
           text-align: left;
       }

       #&lt;%= resolvedWidgetId %&gt; .call-time,
       #&lt;%= resolvedWidgetId %&gt; .call-date,
       #&lt;%= resolvedWidgetId %&gt; .call-duration {
           margin: 0;
       }

       #&lt;%= resolvedWidgetId %&gt; .call-date {
           display: none;
       }
   }
&lt;/style&gt;

&lt;div class="call-widget"&gt;
   &lt;div class="call-header"&gt;
       &lt;div class="call-header-title"&gt;
           &lt;div class="call-header-icon"&gt;☎&lt;/div&gt;

           &lt;div&gt;
               &lt;h2 class="call-title"&gt;Anrufliste&lt;/h2&gt;
               &lt;div class="call-subtitle"&gt;Letzte Verbindungen&lt;/div&gt;
           &lt;/div&gt;
       &lt;/div&gt;

       &lt;div class="call-count"&gt;
           &lt;%= calls.length %&gt;
       &lt;/div&gt;
   &lt;/div&gt;

   &lt;div class="call-list"&gt;
       &lt;% if (calls.length === 0) { %&gt;
           &lt;div class="call-empty"&gt;
               &lt;div&gt;
                   &lt;div class="call-empty-icon"&gt;
                       &lt;%= errorMessage ? "⚠" : "☎" %&gt;
                   &lt;/div&gt;

                   &lt;div class="call-empty-title"&gt;
                       &lt;%= errorMessage ? "Datenfehler" : "Keine Anrufe" %&gt;
                   &lt;/div&gt;

                   &lt;div class="call-empty-text"&gt;
                       &lt;%= errorMessage || "Aktuell sind keine Einträge in der Anrufliste vorhanden." %&gt;
                   &lt;/div&gt;
               &lt;/div&gt;
           &lt;/div&gt;
       &lt;% } else { %&gt;
           &lt;% calls.forEach(function(call) { %&gt;
               &lt;%
                   var direction = getDirection(call);
                   var dateParts = getDateParts(call.date);
                   var displayName = safe(call.name, "Unbekannter Teilnehmer");
                   var displayNumber = safe(
                       call.external || call.caller,
                       "Keine Rufnummer"
                   );
                   var target = safe(
                       call.callednumber || call.called,
                       "–"
                   );
               %&gt;

               &lt;div class="call-card &lt;%= direction.css %&gt;"&gt;
                   &lt;div class="call-avatar"&gt;
                       &lt;span&gt;&lt;%= getInitials(displayName) %&gt;&lt;/span&gt;

                       &lt;span
                           class="call-direction-icon"
                           title="&lt;%= direction.label %&gt;"
                       &gt;
                           &lt;%= direction.icon %&gt;
                       &lt;/span&gt;
                   &lt;/div&gt;

                   &lt;div class="call-person"&gt;
                       &lt;div
                           class="call-name"
                           title="&lt;%= displayName %&gt;"
                       &gt;
                           &lt;%= displayName %&gt;
                       &lt;/div&gt;

                       &lt;div
                           class="call-number"
                           title="&lt;%= displayNumber %&gt;"
                       &gt;
                           &lt;%= displayNumber %&gt;
                       &lt;/div&gt;

                       &lt;% if (call.device) { %&gt;
                           &lt;div
                               class="call-device"
                               title="&lt;%= safe(call.device) %&gt;"
                           &gt;
                               &lt;%= safe(call.device) %&gt;
                               &lt;% if (call.port) { %&gt;
                                   · Port &lt;%= safe(call.port) %&gt;
                               &lt;% } %&gt;
                           &lt;/div&gt;
                       &lt;% } %&gt;
                   &lt;/div&gt;

                   &lt;div class="call-target"&gt;
                       &lt;div class="call-target-label"&gt;Ziel&lt;/div&gt;

                       &lt;div
                           class="call-target-value"
                           title="&lt;%= target %&gt;"
                       &gt;
                           &lt;%= target %&gt;
                       &lt;/div&gt;

                       &lt;div class="call-status"&gt;
                           &lt;%= direction.label %&gt;
                       &lt;/div&gt;
                   &lt;/div&gt;

                   &lt;div class="call-meta"&gt;
                       &lt;div class="call-time"&gt;
                           &lt;%= dateParts.time || "–" %&gt;
                       &lt;/div&gt;

                       &lt;div class="call-date"&gt;
                           &lt;%= dateParts.date %&gt;
                       &lt;/div&gt;

                       &lt;div class="call-duration"&gt;
                           &lt;%= safe(call.duration, "0:00") %&gt;
                       &lt;/div&gt;
                   &lt;/div&gt;
               &lt;/div&gt;
           &lt;% }); %&gt;
       &lt;% } %&gt;
   &lt;/div&gt;
&lt;/div&gt;
</code></pre>
<p dir="auto"></p></section></section><p></p>
<p dir="auto"><img src="/assets/uploads/files/1784204093614-367a9fc0-5c6e-408e-837b-31beda30c36b-image.jpeg" alt="367a9fc0-5c6e-408e-837b-31beda30c36b-image.jpeg" class=" img-fluid img-markdown" /></p>
<p dir="auto">je nach vorlieben und länge des wiedgets noch unter css common bei overflow-y auto einstellen. das sorgt dann dafür, das der inhalt auf die größe des widgets begrenzt wird und scrollbalken an der seite erscheinen, falls der inhalt über die größe hinaus geht</p>
<p dir="auto"><img src="/assets/uploads/files/1784203842110-1b557ce1-0024-408e-980d-8b63dcec2433-image.jpeg" alt="1b557ce1-0024-408e-980d-8b63dcec2433-image.jpeg" class=" img-fluid img-markdown" /></p>
<p dir="auto">so sieht dann das ergebnis aus.<br />
dark/dunkel darstellung<br />
<img src="/assets/uploads/files/1784203883475-b8e68ef9-2c55-4483-8e3f-481bd92a08dc-image.jpeg" alt="b8e68ef9-2c55-4483-8e3f-481bd92a08dc-image.jpeg" class=" img-fluid img-markdown" /></p>
<p dir="auto">light/hell darstellung<br />
<img src="/assets/uploads/files/1784206761753-c0356eca-28b9-4c50-9c9f-bb1c22d8c74a-image.jpeg" alt="c0356eca-28b9-4c50-9c9f-bb1c22d8c74a-image.jpeg" class=" img-fluid img-markdown" /><br />
Habe gerade festgestellt, das es unter vis1 noch ein problem gibt. muss ich noch nachschauen<br />
-&gt; verdammt. eine inkonsistenz zwischen vis1/2 im eigenen adapter. habe das template oben mit einem workaround korrigiert</p>
<p dir="auto">das beispiel wurde als usecase in der adapterdokumentation von vis-jsontemplate hinterlegt<br />
<a href="https://github.com/oweitman/ioBroker.vis-jsontemplate/blob/main/documentation/usecase-fritzbox-call-list.md" rel="nofollow ugc">https://github.com/oweitman/ioBroker.vis-jsontemplate/blob/main/documentation/usecase-fritzbox-call-list.md</a></p>
<p dir="auto">als anmerkung: das template hat mir die ki zu 99% (bis auf den workaround) als oneshot bereitgestellt. werde auch mal schauen ob man das noch auf helle darstellung erweitern kann.</p>
]]></description><link>https://forum.iobroker.net/post/1348234</link><guid isPermaLink="true">https://forum.iobroker.net/post/1348234</guid><dc:creator><![CDATA[OliverIO]]></dc:creator><pubDate>Thu, 16 Jul 2026 15:14:59 GMT</pubDate></item><item><title><![CDATA[Reply to VIS-2 Widget für Anzeige der Anrufliste on Thu, 16 Jul 2026 11:52:44 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/holger-etzel" aria-label="Profile: Holger-Etzel">@<bdi>Holger-Etzel</bdi></a></p>
<p dir="auto">Geht doch wunderbar mit einen Table Widget!</p>
]]></description><link>https://forum.iobroker.net/post/1348228</link><guid isPermaLink="true">https://forum.iobroker.net/post/1348228</guid><dc:creator><![CDATA[sigi234]]></dc:creator><pubDate>Thu, 16 Jul 2026 11:52:44 GMT</pubDate></item><item><title><![CDATA[Reply to VIS-2 Widget für Anzeige der Anrufliste on Thu, 16 Jul 2026 11:51:05 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/holger-etzel" aria-label="Profile: Holger-Etzel">@<bdi>Holger-Etzel</bdi></a></p>
<p dir="auto">Die JSON ist besser und ist eine Liste. Ich schaue nachher.</p>
<p dir="auto">Welche Inhalte sollen alle mit rein. Ich mach mal eine komplettierte. Rausnehmen kann man immer noch.</p>
]]></description><link>https://forum.iobroker.net/post/1348226</link><guid isPermaLink="true">https://forum.iobroker.net/post/1348226</guid><dc:creator><![CDATA[OliverIO]]></dc:creator><pubDate>Thu, 16 Jul 2026 11:51:05 GMT</pubDate></item><item><title><![CDATA[Reply to VIS-2 Widget für Anzeige der Anrufliste on Thu, 16 Jul 2026 11:44:25 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/oliverio" aria-label="Profile: OliverIO">@<bdi>OliverIO</bdi></a></p>
<p dir="auto">es gibt eine html:</p>
<p dir="auto">&lt;div&gt;The last call was from  at  from &lt;/div&gt;&lt;div&gt;inbound: 24&lt;table&gt;&lt;tr&gt;&lt;td&gt;29.04.25 17:24&lt;/td&gt;&lt;td&gt;Name&lt;/td&gt;&lt;td&gt;Nummer&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;29.04.25 17:26&lt;/td&gt;&lt;td&gt;Name&lt;/td&gt;&lt;td&gt;Nummer&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;20.06.25 17:32&lt;/td&gt;&lt;td&gt;Name&lt;/td&gt;&lt;td&gt;Nummer&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;21.06.25 12:06&lt;/td&gt;&lt;td&gt;Name&lt;/td&gt;&lt;td&gt;Nummer&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;25.06.25 17:41&lt;/td&gt;&lt;td&gt;Name&lt;/td&gt;&lt;td&gt;Nummer&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;08.07.25 16:34&lt;/td&gt;&lt;td&gt;Name&lt;/td&gt;&lt;td&gt;Nummer&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;13.08.25 17:40&lt;/td&gt;&lt;td&gt;Name&lt;/td&gt;&lt;td&gt;Nummer&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;21.09.25 16:03&lt;/td&gt;&lt;td&gt;Name&lt;/td&gt;&lt;td&gt;Nummer&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;27.11.25 16:22&lt;/td&gt;&lt;td&gt;Name&lt;/td&gt;&lt;td&gt;Nummer&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;16.07.26 12:30&lt;/td&gt;&lt;td&gt;Name&lt;/td&gt;&lt;td&gt;Nummer&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</p>
<p dir="auto">und eine json:</p>
<p dir="auto">[{"id":5471,"type":"1","caller":"Anrufernummer","called":"SIP: Nummer","callednumber":"Nummer","name":"xxx","numbertype":"sip","device":"unser Foni","port":"10","date":"16.07.26 12:30","duration":"0:02","count":"","path":"","sym":"&gt;","external":"Anrufernummer"},</p>
<p dir="auto">mit mehreren Einträgen</p>
]]></description><link>https://forum.iobroker.net/post/1348225</link><guid isPermaLink="true">https://forum.iobroker.net/post/1348225</guid><dc:creator><![CDATA[Holger Etzel]]></dc:creator><pubDate>Thu, 16 Jul 2026 11:44:25 GMT</pubDate></item><item><title><![CDATA[Reply to VIS-2 Widget für Anzeige der Anrufliste on Thu, 16 Jul 2026 11:24:09 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/claus1993" aria-label="Profile: claus1993">@<bdi>claus1993</bdi></a></p>
<p dir="auto">Das ist jetzt genau ein Datensatz, ist das keine Liste?</p>
]]></description><link>https://forum.iobroker.net/post/1348223</link><guid isPermaLink="true">https://forum.iobroker.net/post/1348223</guid><dc:creator><![CDATA[OliverIO]]></dc:creator><pubDate>Thu, 16 Jul 2026 11:24:09 GMT</pubDate></item><item><title><![CDATA[Reply to VIS-2 Widget für Anzeige der Anrufliste on Thu, 16 Jul 2026 11:10:02 GMT]]></title><description><![CDATA[<p dir="auto">Klingt interessant weswegen ich mich mal mit einklinke.</p>
<p dir="auto">Bei mir wäre es eine Fritzbox die ein json liefert,</p>
<pre><code>{"caller":"xxxxx","callee":"yyyyyy","timestamp":"15.07.26 20:15:03","id":0,"_type":"connect","callerName":"","calleeName":"","extension":20}
</code></pre>
<p dir="auto">Wenn das funktioniert, wäre es ein Grund mal wieder die Kontaktdaten in der Fritzbox aufzuarbeiten :-)</p>
]]></description><link>https://forum.iobroker.net/post/1348218</link><guid isPermaLink="true">https://forum.iobroker.net/post/1348218</guid><dc:creator><![CDATA[claus1993]]></dc:creator><pubDate>Thu, 16 Jul 2026 11:10:02 GMT</pubDate></item><item><title><![CDATA[Reply to VIS-2 Widget für Anzeige der Anrufliste on Thu, 16 Jul 2026 09:48:40 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/holger-etzel" aria-label="Profile: Holger-Etzel">@<bdi>Holger-Etzel</bdi></a></p>
<p dir="auto">Sowas könnte man gut mit vis-jsontemplate machen.<br />
Wie liegen die Daten vor?<br />
Wird da von einem Adapter schon ein datenpunkt bereitgestellt?<br />
Wenn du mir so einen datenpunktinhalt anonymisiert bereitstellst, kann ich mal schauen.</p>
]]></description><link>https://forum.iobroker.net/post/1348209</link><guid isPermaLink="true">https://forum.iobroker.net/post/1348209</guid><dc:creator><![CDATA[OliverIO]]></dc:creator><pubDate>Thu, 16 Jul 2026 09:48:40 GMT</pubDate></item></channel></rss>