NEWS
Datenpunkt "clearen" - Fritzbox - missedTableHTML
-
Hallo,
ich bastele gerade an einem kleinem Script welches mir die Anzahl der "missed calls" und die "history" mit den Rufnummern zurücksetzt.
Folgender Code:
setState("fritzbox.0.calls.missedCount",0); setState("fritzbox.0.history.missedTableHTML",'');
die erste Zeile tut was sie soll, sie setzt den Counter auf 0 und wenn ein neuer Anruf kommt zählt er wieder ab 1 hoch.
Problem: Die 2. Zeile cleart mir zwar die Tabelle mit dem missed calls & Rufnummern –> Sobald aber wieder ein Anruf kommt erscheinen die alten Rufnummern wieder die ich eigentlich weggelöscht habe.
Was mache ich falsch?
Jan
-
Du machst nichts falsch.
Die Anruferlisten werden im Speicher gehalten und mit jedem Ende eines neuen Anrufs neu aufgebaut und dann in die Datenpunkte geschrieben. Damit ist die Liste dann wieder vollständig.
Ohne den Adapter zu ändern könntest Du ein Workaround bauen:
-
Einen neuen Datenpunkt im Skript für die Anruferliste erstellen
-
"fritzbox.0.calls.missedCount" auf Änderung abfragen:
– wenn 0, den neuen Datenpunkt mit "keine verpassten Anrufe" füllen
-- wenn !== 0 den Datenpunkt des Frizboxadapter kopieren
In Vis wird dann statt des Fritzbox-Datenpunkts der Datenpunkt aus dem Javascript verwendet.
Alternativ könntest Du natürlich auch nach jedem Löschen der Zählers für verpasste Anrufe den Fritzbox-Adapter kurz stoppen und wieder starten
-
-
Danke Dir! Das erklärt das Verhalten des Skriptes. Ich werde mir mal überlegen wie ich den workaround umsetze. Adapter restart wäre natürlich schnell umzusetzen, aber kann ich überhaupt per script einen Adapter neu starten? Wie sieht die Syntax dazu aus?
Jan
-
Der zweite Vorschlag war eigentlich ein Spaß. Deswegen auch der
Der erste Vorschlag hat leider ein Denkfehler. Du kannst zwar auf "fritzbox.0.calls.missedCount" reagieren, damit Dein Wunsch funktioniert, müsstest Du dann aber die html-Tabelle, die in den neuen Datenpunkt geschrieben wird per Skript kürzen. Ansonsten hättest Du wieder alle verpassen Anrufe. Ich ha das beim Adapter (Github) unter "Issues" als Wunsch ergänzt.
-
ch werde mir mal überlegen wie ich den workaround umsetze. `
Anbei Dein Skript:
!
idVerpassteAnrufeHTML = "fritzbox.history.missedTableHTML"; ! createState(idVerpassteAnrufeHTML, "init", { name: 'Liste verpasster Anrufe', desc: 'Verpasste Anrufe als html. In der Anzahl der nicht abgefragten Anrufe.', type: 'string', role: 'value', }); ! function missedCallsKuerzen(anzahl) { var listNew = ""; var listGesamt = getState("fritzbox.0.history.missedTableHTML").val; for ( i=0; i<=10; i++ ) { var zeile = listGesamt.match(/.*? /); listGesamt = listGesamt.replace(zeile, ""); listNew = listNew + zeile; if(i>=anzahl) return listNew; } return listNew; } ! on({id: "fritzbox.0.calls.missedCount", change: "ne"} , function(obj) { setState(idVerpassteAnrufeHTML,missedCallsKuerzen(parseInt(obj.newState.val))); }); !
Die verkürzte Liste wird unter
javascript.0.fritzbox.history.missedTableHTML
gespeichert.
[EDIT]
Zu:
Hallo,
ich bastele gerade an einem kleinem Script welches mir die Anzahl der "missed calls" und die "history" mit den Rufnummern zurücksetzt.
setState("fritzbox.0.calls.missedCount",0); ```` `
Der Datenpunkt mir den verpassten Anrufen ist ein String.
Eigentlich müsstest Du bei Dir
setState("fritzbox.0.calls.missedCount","0");
im Skript setzen.
-
Ich werde mir mal überlegen wie ich den workaround umsetze. `
Anbei Dein Skript:
!
idVerpassteAnrufeHTML = "fritzbox.history.missedTableHTML"; ! createState(idVerpassteAnrufeHTML, "init", { name: 'Liste verpasster Anrufe', desc: 'Verpasste Anrufe als html. In der Anzahl der nicht abgefragten Anrufe.', type: 'string', role: 'value', }); ! function missedCallsKuerzen(anzahl) { var listNew = ""; var listGesamt = getState("fritzbox.0.history.missedTableHTML").val; for ( i=0; i<=10; i++ ) { var zeile = listGesamt.match(/.*? /); listGesamt = listGesamt.replace(zeile, ""); listNew = listNew + zeile; if(i>=anzahl) return listNew; } return listNew; } ! on({id: "fritzbox.0.calls.missedCount", change: "ne"} , function(obj) { setState(idVerpassteAnrufeHTML,missedCallsKuerzen(parseInt(obj.newState.val))); }); !
`Konntest Du mit dem Skript was anfangen?
-
Hallo,
danke für das Skript. Kann es erst am Wochenende ausprobieren - werde dann Feedback geben.