Da hat AVM wohl beim Update einen BUG mit eingebaut. Ist ja leider nicht das erste Mal.
Na ja, das kann man aber auch anders sehen.
Ja, JFritz ist ein tolles und umfangreiches Programm ... aber es greift eben auch auf Wegen auf die Box zu, die so von AVM nicht vorgesehen sind und daher sogar ausdrücklich als "nicht stabil" anzusehen sind. Daß sich AVM bei Änderungen an dokumentierten Funktionen mittlerweile zusammen- und fast ein Bein ausreißt und die entsprechenden Infos an die Entwickler herausgibt (auch rechtzeitig), kann man hier nachlesen (zum ersten Mal für mich "vorbildlich", weil es eben nicht erst von anderen Entwicklern durch Analyse ermittelt werden mußte):
Schnittstellendokumentation für Entwicklungen im FRITZ!Box-Umfeld
avm.de
Ich stecke jetzt nicht allzu tief in der Materie der JFritz-Quellen - aber die Ursache des Problems dürfte dort zu suchen sein und zwar vermutlich in dieser Zeile:
Java program to manage calls and other stuff from your FRITZ!Box on a PC or MAC. It supports Windows, OS X and Linux systems. - jfritz-org/jfritz
github.com
Denn bisher wertete AVM lediglich die Existenz eines Input-Controls (bzw. eines Name/Value-Paars) mit dem Namen "usejournal" aus, um dann die Verwendung der Anrufliste zu aktvieren:
Code:
317 if box.post.apply then
318 if box.post.usejournal then
319 foncalls.SetActive(1)
320 else
321 foncalls.ClearList()
322 foncalls.SetActive(0)
323 end
324 elseif box.post.clear then
325 foncalls.ClearList()
326 end
- mit der letzten Version hat sich das aber geändert:
Code:
349 if box.post.usejournal then
350 if box.post.usejournal == "1" then
351 foncalls.SetActive(1)
352 else
353 foncalls.ClearList()
354 foncalls.SetActive(0)
355 end
356 elseif box.post.clear then
357 foncalls.ClearList()
358 end
Das heißt dann aber, daß nunmehr für "usejournal" der Wert "1" (und nicht "on", wie in JFritz) übergeben werden muß, damit das Journal nicht gelöscht und ausgeschaltet wird (Zeile 353 im letzten Code-Kasten).
Das würde ich jetzt nicht wirklich als Bug von AVM werten - in deren Code wird nämlich dieser Wert durchaus richtig gesetzt im Request an die Box.
Der Workaround funktioniert eben deshalb, weil ohne den Löschwunsch für die alten Einträge die Funktion " clearCallerList()" gar nicht erst aufgerufen wird. Allerdings wäre das auch in JFritz schnell und leicht zu korrigieren ... dem alten Code ist es Wumpe, ob da ein "on" oder eine "1" übergeben wird - damit muß man da nicht mal differenzieren, um welche Version es sich bei der Firmware handelt. Allerdings braucht man zum Erzeugen der neuen Pakete für die Installation auch die passende (und lauffähige) Umgebung - die haben sicherlich die wenigsten bei sich installiert. Vielleicht bringt es ja etwas, in der bereits existierenden Issue im GitHub-Repo von JFritz noch einen Link auf diesen Thread zu hinterlegen ... ich weiß allerdings nicht, wie weit der Autor bei sich die notwendige Umgebung auch ständig einsatzbereit hält. Aber ich werde mal einen entsprechenden Kommentar in
https://github.com/jfritz-org/jfritz/issues/28 hinterlassen, wie man das schnell und unbürokratisch lösen können sollte - dazu muß dieser Beitrag hier aber erst mal gespeichert sein, damit ich ihn verlinken kann.
Das ist aber nun mal generell das Risiko, wenn man nicht über entsprechende Schnittstellen zugreift (allerdings bietet AVM in "X_AVM-DE_TAM1" auch keine Funktion an, mit der man die gesamte Liste auf einen Schlag löschen könnte und man müßte das über TR-064 tatsächlich für jede Message einzeln mit "DeleteMessage()" machen) ... dann muß man auch damit rechnen (und damit leben), wenn sich mal etwas so ändert, daß bestehende Software (gerade dann, wenn sie mit "scraping" arbeitet oder auch nur mit direkten HTTP-Requests für das GUI) danach geändert werden muß. Ich glaube auch nicht wirklich, daß @robotniko (bzw.
@robot_rap) selbst hier AVM "die Schuld" geben würde - dann sollten das die Nutzer des Programms auch nicht tun.
EDIT: Da habe ich jetzt selbst einen der Fehler gemacht, die mich bei anderen immer stören ... ich hätte vielleicht besser noch eine Nacht darüber schlafen sollen, bevor ich das speichere. Denn die Änderung von "on" auf "1" führt ja nur dazu, daß die Liste nicht mehr deaktiviert wird - damit wird die Liste aber auch nicht (mehr) gelöscht. Insofern muß man doch unterscheiden zwischen den Versionen - bei der neuen Version muß das "usejournal" komplett weggelassen werden ... nur dann würde das "clear" im "elseif"-Zweig geprüft. Da dürfte es dann wieder fast einfacher sein, wenn man (ohne zwischen den Versionen zu unterscheiden) nach dem Löschen mit "Deaktivieren" noch einmal dieselbe Seite (foncalls_list.lua) aufruft und dabei dann die jetzt notwendige "1" für "usejournal" setzt (im ersten Aufruf dann mit irgendetwas anderem als "1", was wäre egal).