Wie angekündigt, hier die erste Version des Moduls 72_FBTAM.pm.
Installation ganz einfach
define <name> FBTAM <Devicename der Fritzbox> <Nummer des Anrufbeantworters 1..4>
Zeigt eine Liste der Anrufe, mit Buttons zum Löschen (funktioniert gut) und zum Download (funktioniert gut, Zielverzeichnis /opt/fhem/www/audio sollte existieren) und zum Versenden (funktioniert noch nicht)
Zur Funktion ist es nötig, mit "set ... username" und "set ... password" einen FritzBox-Account anzugeben.
LG
pah
ToDo-Liste
1. Versand per Mail und per Messenger, mindestens via Telegram, implementieren
2. Buttons konfigurierbar machen (Mail-Adresse bzw. Messenger)
3. Möglichkeit, das Modul unabhängig von einem FritzBox-Device zu machen. In dem Fall ist statt des Device-Namen die IP-Adresse anzugeben, und "set ... on/off"-Befehle die irgendwie remote wirken
4. Zielverzeichnis konfigurierbar machen
Zitat von: Prof. Dr. Peter Henning am 06 August 2025, 18:21:05ToDo-Liste
und "set ... on/off"-Befehle die irgendwie remote wirken
Hallo,
on/off kannst Dir im FB Modul ansehen :
set <name> tam <number> <on|off>
Schaltet den Anrufbeantworter (Nummer 1, 2 ...) an oder aus. Der Anrufbeantworter muss zuvor auf der FRITZ!BOX eingerichtet werden.
Grüße Jörg
PS: Ich schaue morgen mal, wie man auch TAM Remote einrichten kann.
Zitat von: JoWiemann am 06 August 2025, 19:23:21on/off kannst Dir im FB Modul ansehen :
set <name> tam <number> <on|off>
Schaltet den Anrufbeantworter (Nummer 1, 2 ...) an oder aus. Der Anrufbeantworter muss zuvor auf der FRITZ!BOX eingerichtet werden.
Ist doch längst drin. Für mich ist es auch einfach, das an/ausschalten zu organisieren, wenn das FritzBox-Device auf einer anderen FHEM-Installation x.x.x.90 läuft, ich setze einfach
Zitatfhem90Cmd('set ... on/off')}
ab. Es gibt aber soap-calls für das an/ausschalten - die kann man auch ohne Fritzbox-Device absetzen.
LG
pah
Hallo,
am Ende sind das im FB Modul auch alles nur SOAP Calls. War also nur als Umsetzungs-Idee gemeint.
Grüße Jörg
Man könnte FBTAM natürlich auch so aufziehen wie 72_FBCALLMONITOR und 72_FBCALLLIST. Das erschien mir aber zuviel Aufwand, dafür hätte ich gar keine Zeit.
LG
pah
So, hier die nächste Version. Das kommt jetzt mit einer JavaScript-Datei, die in /opt/fhem/www/pgm2 gespeichert werden sollte. Löschen, Versand per Messenger (z.B. Telegram) und Download funktionieren gut, Download jetzt natürlich non-blocking.
Da ich die Fritzbox nicht dazu bewegen konnte, einen CORS-Header zu produzieren, läuft der Download immer auf den FHEM-Server. Von dort aus kann man ihn natürlich holen - so etwa macht das bei mir ein DOIF, da mein Telegram-Bot auf einer anderen Maschine läuft.
Der Versand per Email ist derzeit noch funktionslos, da suche ich noch nach einem guten Trick.
LG
pah
So, wir werden besser. Anbei die neueste Version.
Ich habe festgestellt, dass die gelieferten WAV-Dateien einfahc zu groß sind, um sie per Mail oder Messenger zu versenden.
Das Modul hat jetzt noch ein Attribut Wav2MP3Fun bekommen, mit dem ich nach dem Download eine Umwandlung in MP3 bewerkstelligen kann. Bei mir hat das den Wert
Zitatattr FritzBoxTAM Wav2MP3Fun system('ffmpeg -i INPUT OUTPUT')
Nötig ist natürlich eine abgespeckte Version des ffmpeg-Paketes, das automatisch diese Konversion macht. Dazu gibt es hier eine Anleitung: https://wiki.fhem.de/wiki/Minimales_ffmpeg
Ach ja, die Einbindung als Telegram-Keyboard funktioniert auch prima. So sieht das bei mir aus: Erst eine Übersicht der Nachrichten, wenn ich eine davon anklicke, die Auswahl "Abhören" oder "Löschen" (und natürlich wieder aufwärts im Menü). Und wenn ich "Abhören" anklicke, kommt sie als MP3 geflogen.
Ja, ich muss das alles noch sauber dokumentieren...
LG
pah
Es gibt eine Wiki-Seite zu diesem Modul: https://wiki.fhem.de/wiki/Modul_FBTAM
Das Modul ist in die FHEM-Distribution eingecheckt.
LG
pah
Hallo pah,
ich hatte nicht mehr präsent, dass die FritzBox ja selber die auf dem AB hinterlasse Nachricht per E-Mail versenden kann. Ich hatte das mal ein gestellt aber lange keine AB Nachricht mehr gehabt. Gestern habe ich dann mal wieder eine E-Mail meiner FB mit angehängtem Audiofile bekommen.
Was ist dann Deine Idee hinter dem Versand per E-Mail? Per Messenger ist für mich nachvollziehbar.
Grüße Jörg
Hallo pah,
komme erst jetzt dazu mich mit Deinem Modul zu beschäftigen. Im define können die TAM 1..4 ausgewählt werden. Die FB kennt allerdings die TAM 0..9.
Result of query = 'tam:settings/TAM/list(Name,Display,Active,NumNewMessages,NumOldMessages)'
----------------------------------------------------------------------
$VAR1 = {
'sid' => '9e530fcf43407b17',
'data' => {},
'result' => [
{
'NumNewMessages' => '0',
'NumOldMessages' => '0',
'_node' => 'TAM0',
'Name' => 'AB Wohnbereich',
'Active' => '1',
'Display' => '1'
},
{
'Display' => '1',
'Active' => '1',
'Name' => "AB Unerw\x{c3}\x{bc}nscht",
'_node' => 'TAM1',
'NumNewMessages' => '0',
'NumOldMessages' => '0'
},
{
'NumNewMessages' => '0',
'NumOldMessages' => '0',
'_node' => 'TAM2',
'Active' => '0',
'Name' => '',
'Display' => '0'
},
{
'Display' => '0',
'Active' => '0',
'Name' => '',
'_node' => 'TAM3',
'NumOldMessages' => '0',
'NumNewMessages' => '0'
},
{
'Display' => '0',
'Active' => '0',
'Name' => '',
'_node' => 'TAM4',
'NumOldMessages' => '0',
'NumNewMessages' => '0'
},
{
'Display' => '0',
'Name' => 'AB Wohnbereich',
'Active' => '0',
'_node' => 'TAM5',
'NumOldMessages' => '0',
'NumNewMessages' => '0'
},
{
'NumOldMessages' => '0',
'NumNewMessages' => '0',
'_node' => 'TAM6',
'Name' => "AB Unerw\x{c3}\x{bc}nscht",
'Active' => '0',
'Display' => '0'
},
{
'Name' => '',
'Active' => '0',
'Display' => '0',
'NumNewMessages' => '0',
'NumOldMessages' => '0',
'_node' => 'TAM7'
},
{
'NumOldMessages' => '0',
'NumNewMessages' => '0',
'_node' => 'TAM8',
'Active' => '0',
'Name' => '',
'Display' => '0'
},
{
'Display' => '0',
'Active' => '0',
'Name' => '',
'_node' => 'TAM9',
'NumOldMessages' => '0',
'NumNewMessages' => '0'
}
],
'sidNew' => 0
};
Im Modul 72_FRITZBOX.pm habe ich die Nummerierung von 1..10 auf 0..9 angepasst.
Welcher TAM wird bei einem define .... 1 dann von Dir referenziert?
Grüße Jörg
Ich fang mal hinten an:
- Die Nummerierung der AB in der Oberfläche der FB beginnt bei 1, die Indexzählung bei 0. Die "AB-Nummer" 1 ist also tam_0. Das können wir gerne beliebig anpassen.
- Ich dachte, es seien nur 4 ABs. Kein Problem, das auf 0..9 auszuweiten
- Versand per Mail direkt aus der FB geht immer nur an eine Adresse, und es werden WAV-Dateien versendet. Sind also gigantisch groß. Darum werden die bei mir nach dem Download in ein MP3 umgewandelt und dann versendet.
- Die FB prüft ja nicht, von wem die Nachrichten sind, bevor sie diese versendet. Mit diesem Modul hier kann ich einfach auswählen, welche ich sofort lösche und welche ich mir zusenden lasse. Das war mein Primärziel, weil bei mir auch die Haustür an den AB gekoppelt ist.
LG
pah
Hallo pah,
vielen Dank für die Rückmeldung. Macht Sinn.
Grüße Jörg
Zitat von: Prof. Dr. Peter Henning am 06 August 2025, 18:21:05Wie angekündigt, hier die erste Version des Moduls 72_FBTAM.pm.
Installation ganz einfach
define <name> FBTAM <Devicename der Fritzbox> <Nummer des Anrufbeantworters 1..4>
Zeigt eine Liste der Anrufe, mit Buttons zum Löschen (funktioniert gut) und zum Download (funktioniert gut, Zielverzeichnis /opt/fhem/www/audio sollte existieren) und zum Versenden (funktioniert noch nicht)
Zur Funktion ist es nötig, mit "set ... username" und "set ... password" einen FritzBox-Account anzugeben.
LG
pah
ToDo-Liste
1. Versand per Mail und per Messenger, mindestens via Telegram, implementieren
2. Buttons konfigurierbar machen (Mail-Adresse bzw. Messenger)
3. Möglichkeit, das Modul unabhängig von einem FritzBox-Device zu machen. In dem Fall ist statt des Device-Namen die IP-Adresse anzugeben, und "set ... on/off"-Befehle die irgendwie remote wirken
4. Zielverzeichnis konfigurierbar machen
Zitat von: Prof. Dr. Peter Henning am 10 August 2025, 18:06:19So, hier die nächste Version. Das kommt jetzt mit einer JavaScript-Datei, die in /opt/fhem/www/pgm2 gespeichert werden sollte. Löschen, Versand per Messenger (z.B. Telegram) und Download funktionieren gut, Download jetzt natürlich non-blocking.
Da ich die Fritzbox nicht dazu bewegen konnte, einen CORS-Header zu produzieren, läuft der Download immer auf den FHEM-Server. Von dort aus kann man ihn natürlich holen - so etwa macht das bei mir ein DOIF, da mein Telegram-Bot auf einer anderen Maschine läuft.
Der Versand per Email ist derzeit noch funktionslos, da suche ich noch nach einem guten Trick.
LG
pah
Hallo guten Abend, wo könnte ich mir bitte die Datei fbtam.js herunterladen?
Viele Grüße Hardy
Hallo guten Abend,
bekomme beim Versuch eines Downloads einer AB-Aufzeichnung diese Fehlermeldung:
fhem?room=FritzBox line 291:
Uncaught ReferenceError: callTAMAction is not defined Vermutl. fehlt mir noch die Datei fbtam.js. Wo könnte ich mir diese downloaden?
Viele Grüße Hardy
Zitat von: Hardy62 am 04 Dezember 2025, 22:33:40Vermutl. fehlt mir noch die Datei fbtam.js. Wo könnte ich mir diese downloaden?
Viele Grüße Hardy
Das frage ich mich gerade auch. Sie liegt jedenfalls nicht im Verzeichnis https://svn.fhem.de/fhem/trunk/fhem/www/pgm2/ (https://svn.fhem.de/fhem/trunk/fhem/www/pgm2/).
Weder im Wiki noch in der commandref habe ich einen Hinweis zum Download gefunden.
Viele Grüße Gisbert
Hallo,
im Source wird sie jedenfalls unter: /fhem/pgm2/fbtam.js versucht zu laden.
Da hat pah noch etwas zu tun.
Grüße Jörg
Hmmm, ich dachte eigentlich, sie sei eingecheckt...
Keine Ahnung, warum das nicht passiert ist.
Muss ich im Laufe des Tages nachholen, hier ist sie separat.
LG
pah
Dankeschön! :)
Hallo pah,
mit der Datei fbtam.js funktioniert dein Modul - vielen Dank.
Ich hätte allerdings eine Bitte. Der Platz auf Handys ist zu klein für eine optisch ansprechende Darstellung - es finden Umbrüche innerhalb von Worten statt anstelle einer Darstellung innerhalb der gleichen Zeile, z.B. bei Index oder der geschwärzten Telefonnummer (s. angehängtes Bild). Ich fände es schöner, wenn die Umbrüche nicht stattfinden, dafür aber wie bei ReadingsGroups die Darstellung rechts fortgesetzt wird. Dafür muss man dann freilich den Bildschirm scrollen.
Viele Grüße Gisbert
So, fehlende fbtam.js ist im Repository.
@Gisbert: Einfach die CSS-Datei anpassen, das muss nicht in den Code.
LG
pah
Hilft doch aber nix, wenn der Pfad im Modul weiterhin nicht korrekt angegeben ist...
Ah, ok. Jetzt sehe ich den Fehler. Behebe ich nachher.
LG
pah
Zitat von: Prof. Dr. Peter Henning am 06 Dezember 2025, 12:34:48Ah, ok. Jetzt sehe ich den Fehler. Behebe ich nachher.
Hallo pah,
könntest Du dabei auch den verbose Level für den Log Eintrag ,,leere Nachrichtenliste" von 2 auf 3 anheben. Danke Dir.
Grüße Jörg
Hallo pah,
damit komme ich jetzt schon ein wenig weiter - Vielen Dank !
Im Moment scheitere ich allerdings noch an der "Wav2MP3Fun" ...
Die müsste ich doch bestimmt in meine "99_myUtils.pm" einreihen - oder ?
Wo könnte ich bitte diese hernehmen?
VlG Hardy
Oh sorry für die blöde Frage!
ich hab die Zeile abgeändert aus dem Wiki: (dann funktioniert's)
vorher:
attr FritzBoxTAM Wav2MP3Fun system('ffmpeg -loglevel error -y -i INPUT -metadata title=\"META\" OUTPUT')
nachher:
attr FritzBoxTAM Wav2MP3Fun system ("ffmpeg -loglevel error -y -i INPUT -metadata title=\"META\" OUTPUT")
Fingerzeig: statt einfachem Hochkomma ==> doppeltes Hochkomma !
@Hardy62: Nicht doch. Bei mir hat das Attribut Wav2MP3Fun den Wert
system('ffmpeg -y -i INPUT -metadata title=\"METADATA\" OUTPUT')Funktioniert problemlos, natürlich muss ffmpeg installiert sein.
Zitat von: JoWiemann am 06 Dezember 2025, 12:54:31könntest Du dabei auch den verbose Level für den Log Eintrag ,,leere Nachrichtenliste" von 2 auf 3 anheben. Danke Dir.
Hmm. Im ganzen Modul gibt es kein "Log 2", und in Zeile 571 habe ich
Log 4, "[FBTAM] $name: empty message list";Was genau meinst Du?
LG
pah
Edir: Ich checke das jetzt mit der Fehlerkorrektur für den Pfad ein - das mit dem Log ist noch nicht geklärt
Hallo pah,
bei mir hat nicht funktioniert: system(' .... ')
bei mir war die Lösung: system(" .... ")
ffmpeg ist bei mir installiert und hat auch von der cmd-line funktioniert.
Das neue Modul gefällt mir sehr gut und ich hab' auch ...irgendwie drauf gewartet und heute zum Nikolaus ... ging es in Erfüllung!
Herzlichen Dank dafür!!
VlG Hardy
Hallo pah,
den Log-Eintrag finde ich auch nicht mehr. War wohl in einer der ersten Versionen. Sorry für den Aufwand.
Grüße Jörg
Danke, so ein Modul habe ich schon lange gesucht!
Das Holen der Nachrichten funktioniert auch, allerdings habe ich Schwierigkeiten mit dem Versand über Telegram.
1. benötige ich auch wie Hardy62 doppelte Hochkomma beim ffmpeg Befehl. Dann funktioniert es aber zuverlässig.
2. Das senden über sendMessengerMsg oder per Button an der jeweiligen Nachricht schlägt fehl:
2025.12.26 16:47:46 1: PERL WARNING: Backslash found where operator expected at (eval 60647) line 1, near "sendMedia \"
List:
define FritzBoxAB FBTAM FritzBox 1
attr FritzBoxAB MsgrFun set FHEMBot sendMedia REC FILE
attr FritzBoxAB MsgrRecList \@3553xxx
attr FritzBoxAB MsgrType Telegram
attr FritzBoxAB Wav2MP3Fun system ("ffmpeg -loglevel error -y -i INPUT -metadata title=\"META\" OUTPUT")
attr FritzBoxAB room System
attr FritzBoxAB targetdir /opt/fhem/www/audio
attr FritzBoxAB username fritzxxx
# READINGS:
# 2025-12-26 17:00:30 fritzbox_ip 1xxx
# 2025-12-26 17:00:30 msg Nachrichtenliste erfolgreich geladen
# 2025-12-26 16:47:45 tam_msgmsg Nachricht 22 von xxx am 30.03.25 um 10:42
# 2025-12-26 16:47:48 tam_msgurl /opt/fhem/www/audio/fbtam1_msg22.mp3
# 2025-12-26 17:00:30 tam_name Anrufbeantworter
# 2025-12-26 17:00:30 tam_newMsg 0
# 2025-12-26 17:00:30 tam_oldMsg 24
# 2025-12-26 16:47:45 tam_recipients @3553xxx
# 2025-12-26 17:00:30 tam_state on
EDIT:
Diese Variante funktioniert bei mir (expliziter FHEM Befehl und "@" nicht escapen)
attr FritzBoxAB MsgrFun fhem('set FHEMBot sendMedia REC FILE')
attr FritzBoxAB MsgrRecList @3553xxx
Allerdings bekomme ich die "vorherige" Nachricht gesendet, also das was im Reading tam_msgurl vorher drin stand (bzw. zum Zeitpunkt des Buttonclicks), und nicht die Nachricht die eigentlich angefordert war. Das Senden erfolgt anscheinend vor der MP3 Umwandlung und dem Aktualisieren von tam_msgurl.
Oder ist da ein Nebeneffekt meines Workarounds?
Ich wundere mich etwas, denn weder im Wiki, noch in der CommandRef steht etwas von \" beim Telegram-Befehl.
Aus dem Wiki, wörtlich:
Zitatattr FritzBoxTAM MsgrFun set TelegramBot sendMedia REC FILE
Und ja, der Workaround sorgt für das verfrühte Senden der "alten" Nachricht.
Ich muss mal etwas herumprobieren, wie man das verhindern kann - das wird aber eine Weile dauern. Und zwar deshalb, weil bei mir der TelegramBot in einer anderen FHEM-Instanz läuft. Insofern: funktionierende lokale Anwendungen gerne hier posten.
LG
pah
Hallo pah,
Zitat von: Prof. Dr. Peter Henning am 28 Dezember 2025, 02:40:36Aus dem Wiki, wörtlich:
Zitatattr FritzBoxTAM MsgrFun set TelegramBot sendMedia REC FILE
so hatte ich es auch zuerst (erfolglos) versucht, siehe meine Definition oben (der "\" kommt von MsgrRecList - gemäß Wiki):
attr FritzBoxAB MsgrFun set FHEMBot sendMedia REC FILE
attr FritzBoxAB MsgrRecList \@3553xxxLasse ich den Backslash hier weg, wird die Fehlermeldung zu
1: PERL WARNING: Array found where operator expected at (eval 58220) line 1, near "sendMedia @3553xxx"Anscheinend kommt mein FHEM nicht mit dem direkten
set TelegramBot Befehl bei MsgrFun zurecht, sondern benötigt das
fhem('set TelegramBot ...') Konstrukt...?
Zitat von: Gonzo am 28 Dezember 2025, 17:46:41MsgrRecList
Das ist ja auch nicht der Telegram-Befehl, sondern die Liste der Empfänger. Und natürlich muss da das Sonderzeichen @ escaped werden
ZitatAnscheinend kommt mein FHEM nicht mit dem direkten set TelegramBot Befehl bei MsgrFun zurecht, sondern benötigt das fhem('set TelegramBot ...') Konstrukt...?
Ah, OK, da habe ich einen Fehler in die Dokumentation eingebaut. Sorry, es muss in der Tat Perl-Code sein, nicht FHEM-Code.
Habe ich im Wiki ebenso wie in der CommandRef gefixt und eingecheckt.
LG
pah
Ok passt, dann hat sich das auch aufgeklärt.
Zitat von: Prof. Dr. Peter Henning am 28 Dezember 2025, 02:40:36Ich muss mal etwas herumprobieren, wie man das verhindern kann - das wird aber eine Weile dauern. Und zwar deshalb, weil bei mir der TelegramBot in einer anderen FHEM-Instanz läuft. Insofern: funktionierende lokale Anwendungen gerne hier posten.
Hierzu folgender Vorschlag als Anregung (meine Perl Kenntnisse sind nur sehr rudimentär, deshalb ist das mit Hilfe von ChatGPT entstanden - sollte das nicht erwünscht sein oder "Blödsinn" sein, dann nehme ich es wieder raus):
Zusammenfassung:
1. FBTAM_downloadMsg bekommt optional einen Callback
2. Callback wird am Ende des Nonblocking-Callbacks aufgerufen
3. FBTAM_sendMsgrMsg und FBTAM_sendEmailMsg verschieben das Senden in diesen Callback
Diff:
FBTAM_downloadMsg – Signatur erweitern
-sub FBTAM_downloadMsg {
- my ($hash, $dlIndex) = @_;
+sub FBTAM_downloadMsg {
+ my ($hash, $dlIndex, $onComplete) = @_;Callback am Ende des Nonblocking-Callbacks ausführen
if( $cmd ){
$cmd =~ s/INPUT/$target/;
$cmd =~ s/OUTPUT/$target2/;
$cmd =~ s/META/$msgmsg/;
eval($cmd);
Log 4, "[FBTAM] $name: Message with index $dlIndex converted to $target2";
readingsSingleUpdate($hash, "msg", "Nachricht mit Index $dlIndex konvertiert nach $target2", 1);
readingsSingleUpdate($hash,"tam_msgurl",$target2,1);
}else{
system('rm '.$target2);
}
+
+ # ---- Callback: Download + Verarbeitung vollständig abgeschlossen
+ if (defined $onComplete && ref($onComplete) eq 'CODE') {
+ $onComplete->($hash);
+ }
};FBTAM_sendMsgrMsg Änderung (
FBTAM_sendEmailMsg analog)
- FBTAM_downloadMsg($hash,$dlIndex);
- my $target = ReadingsVal($name,"tam_msgurl","");
- my $meta = ReadingsVal($name,"tam_msgmsg","");
- my $cmd;
- foreach my $rec (@mrl){
- $cmd = $MsgrFun;
- $cmd =~ s/REC/$rec/;
- $cmd =~ s/META/$meta/;
- $cmd =~ s/FILE/$target/;
- eval($cmd);
- }
+ FBTAM_downloadMsg($hash,$dlIndex, sub {
+ my ($hash) = @_;
+ my $target = ReadingsVal($name,"tam_msgurl","");
+ my $meta = ReadingsVal($name,"tam_msgmsg","");
+ my $cmd;
+ foreach my $rec (@mrl){
+ $cmd = $MsgrFun;
+ $cmd =~ s/REC/$rec/;
+ $cmd =~ s/META/$meta/;
+ $cmd =~ s/FILE/$target/;
+ eval($cmd);
+ }
+ });Zumindest bei mir werden mit den Änderungen jetzt die "gewünschten" Nachrichten versendet.
Nein, das werde ich so nicht übernehmen.
LG
pah
Moin,
erst einmal vielen Dank für das Modul. Bei mir funktioniert es leider nicht (mehr).
Ich kann zwar sehen ob neue Nachrichten da sind, aber kann den AB nicht an/aus schalten und der Name vom AB wird auch nicht abgerufen.
Ein "getInfo" bringt folgendes
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<s:Body>
<u:GetInfoResponse xmlns:u="urn:dslforum-org:service:X_AVM-DE_TAM:1">
<NewEnable>1</NewEnable>
<NewName>Anrufbeantworter</NewName>
<NewTAMRunning>1</NewTAMRunning>
<NewStick>2</NewStick>
<NewStatus>32768</NewStatus>
<NewCapacity>0</NewCapacity>
<NewMode>record_message</NewMode>
<NewRingSeconds>30</NewRingSeconds>
<NewPhoneNumbers></NewPhoneNumbers>
</u:GetInfoResponse>
</s:Body>
</s:Envelope>
Anbei ein list
Internals:
DEF FritzBox 1
FBDev FritzBox
FUUID 6894c6e6-f33f-d66d-8327-fcfd2c0bb294f886
FVERSION 72_FBTAM.pm:0.306680/2025-12-28
INTERVAL 60
NAME FB_Anrufbeantworter
NR 1626
SID 51a44351e28cce49
STATE 1
TAM 1
TYPE FBTAM
USERNAME Daniel
eventCount 82
MessageList:
READINGS:
2025-12-29 17:03:57 fritzbox_ip 192.168.1.1
2025-12-29 17:03:57 msg Nachrichtenliste unverändert
2025-12-29 17:03:57 tam_name ?
2025-12-29 17:03:57 tam_newMsg 0
2025-12-29 17:03:57 tam_oldMsg 0
2025-12-29 17:03:57 tam_state 0
Attributes:
group Telefon
icon volume-control-phone
room Server
username Daniel
Mit freundlichen Grüßen
EDIT:
Ich habe den Fehler(oder wie man das auch immer nennen mag) gefunden.
In der Fritz!Box ist nur 1 AB definiert. Dieser wird im Modul 72_FRITZBOX als tam0 angezeigt.
Ändere ich in dem FBTAM Modul in Zeile 85 den Teil in return "[FBTAM] TAM number must be 1-4" unless $tamNr =~ /^[0-4]$/;
dann klappt alles. Name wird angezeigt und ich kann den AB an/aus schalten.
Zitat von: Shadow3561 am 29 Dezember 2025, 17:06:31nicht (mehr).
Erstaunlich, und nicht ganz nachvollziehbar.
Die FritzBox kennt bis zu 4 AB. Diese werden in der FB-Oberfläche als 1-4 bezeichnet (tamNr) , intern aber als tam0 - tam3 (tamIndex). An diese Konvention hält sich auch das Modul, und daran habe ich nichts geändert. Siehe jeweils den Kommentar
#-- careful, tamIndex=tamNr-1Ich muss mir das morgen mal ansehen, vielleicht habe ich beim letzten Update irgendwo einen Fehler eingebaut.
LG
pah
Moin zusammen,
ich habe mir das Modul inzwischen auch konfiguriert.
Internals:
DEF FritzBox 1
FBDev FritzBox
FUUID 693fec8f-f33f-d09e-4adc-7e03dcb4a9e4ba03
INTERVAL 60
NAME FritzBoxTAM
NR 684
SID 40bacfc397c6c89a
STATE Initialized
TAM 1
TYPE FBTAM
USERNAME FHEM
eventCount 418
MessageList:
Message:
HASH(0x5555c0b98f68)
HASH(0x5555c0fb07e0)
READINGS:
2025-12-30 07:00:49 fritzbox_ip 192.168.178.1
2025-12-30 07:00:50 msg Nachrichtenliste erfolgreich geladen
2025-12-29 14:50:48 tam_msgmsg Nachricht 0 von xxxx, xxxx am 07.09.24 um 09:34
2025-12-30 07:00:49 tam_name SPAM
2025-12-30 07:00:49 tam_newMsg 0
2025-12-30 07:00:49 tam_oldMsg 0
2025-12-15 14:04:19 tam_recipients \@xxxxxxxxx
2025-12-30 07:00:49 tam_state on
Attributes:
MsgrFun set TeleBot sendMedia REC FILE
MsgrRecList \@xxxxxxxxx
MsgrType Telegram
Wav2MP3Fun system('ffmpeg -loglevel error -y -i INPUT -metadata title=\"META\" OUTPUT')
alias FritzBox Anrufbeantworter Monitor
room Infrastruktur->Telefonie,Keller->Hausanschlussraum
targetdir /opt/fhem/cache/TAM
username FHEM
verbose 5
Unter 'tam_name' wird bei mir der Name vom 'SPAM' AB angezeigt. Das ist der zweite konfigurierte an der Fritzbox. Die Nachrichten werden korrekt vom ersten AB angezeigt. ... das ist also nur Kosmetik.
Allerdings klappen 'downloadMsg 0' ...
2025.12.30 07:11:11 1: [FBTAM] FritzBoxTAM: Download failed for index 0 - no data received
... und Versenden mit 'sendMessengerMsg 0' nicht.
2025.12.30 07:11:48 1: PERL WARNING: Backslash found where operator expected at (eval 48910) line 1, near "sendMedia \"
2025.12.30 07:11:48 1: PERL WARNING: (Do you need to predeclare sendMedia?)
2025.12.30 07:11:49 1: [FBTAM] FritzBoxTAM: Download failed for index 0 - no data received
'tam_oldMsg' hat mit '0' allerdings auch nicht den korrekten Wert vom ersten AB, sondern den vom SPAM AB - der macht nur eine Ansage und legt auf. Ist das die Ursache vom download Fehler?
Der Aufruf von deleteMsg klappt.
Gruß Peter
So, da hatte sich tatsächlich ein Fehler eingeschlichen - sorry dafür.
Ich habe den Fehler gefixt und das Modul eingecheckt, außerdem das Wiki sauber nachgezogen.
Bei mir funktioniert das alles ganz wunderbar, wer nicht das nächste Update abwarten möchte, kann sich das aus dem Repository holen.
Es gibt jetzt nur noch ein Problem: Das derzeit aktuelle FritzBox-Modul löscht offenbar von Zeit zu Zeit die Readings tam0(...) etc. komplett. In diesem Fall wird derzeit die Kopfzeile der Nachrichtenliste mit dem Namen "?" für den AB, sowie fehlenden Nachrichtenzahlen angezeigt. Offenbar gibt es hier einen Fehler im FRITZBOX-Modul. Wird an anderer Stelle diskutiert.
LG und Guten Rutsch
pah
Zitat von: PSI69 am 30 Dezember 2025, 07:22:542025.12.30 07:11:48 1: PERL WARNING: Backslash found where operator expected at (eval 48910) line 1, near "sendMedia \"
2025.12.30 07:11:48 1: PERL WARNING: (Do you need to predeclare sendMedia?)
2025.12.30 07:11:49 1: [FBTAM] FritzBoxTAM: Download failed for index 0 - no data received
siehe Diskussion weiter oben bzw. im aktualisierten Wikieintrag, MsgrFun erwartet Perl Code:
attr FritzBoxTAM MsgrFun fhem('set TelegramBot sendMedia REC FILE')
Zitat von: Gonzo am 30 Dezember 2025, 13:15:18siehe Diskussion weiter oben bzw. im aktualisierten Wikieintrag, MsgrFun erwartet Perl Code:
Code Auswählen Erweitern
attr FritzBoxTAM MsgrFun fhem('set TelegramBot sendMedia REC FILE')
... überlesen/übersehen - Danke!
Bei mir haben sich noch mehrere Probleme mit dem Modul aufgetan, die ich versucht habe, zu beheben.
Vermisst habe ich Attribute, wie z.B. "event-on-change-reading" usw. Ich habe deshalb die AttrList erweitert um "$readingFnAttributes":
$hash->{AttrList} = "interval targetdir username TTSFun TTSDev MsgrType MsgrFun MsgrRecList MailFun MailRecList Wav2MP3Fun $readingFnAttributes";
Außerdem wird das Attribut "interval" nicht ausgewertet. Ich habe deshalb die Zeile
my $next = gettimeofday() + ($hash->{INTERVAL} || 60);
geändert in:
my $next = gettimeofday() + AttrVal($name, 'interval', 60);
Das Schreiben in den hash kann damit entfallen.
$hash->{INTERVAL} = AttrVal($name, 'interval', 60);
Des weiteren kommt es beim Download von Nachrichten zu Fehlermeldungen im Log wie diese hier:
rm: das Entfernen von '/opt/fhem/www/audio/fbtam1_msg1.mp3' ist nicht möglich: Datei oder Verzeichnis nicht gefunden
Im Quellcode findet sich folgender Kommentar:
#-- change into MP3 if function is defined, otherwise delete existing file
Sollte nicht eher die WAV-Datei gelöscht werden, wenn erfolgreich in MP3 konvertiert wurde?
Ich habe deshalb den folgenden Abschnitt
readingsSingleUpdate($hash,"tam_msgurl",$target2,1);
}else{
system('rm '.$target2);
}
geändert in:
readingsSingleUpdate($hash,"tam_msgurl",$target2,1);
system('rm '.$target);
}
Die HTML-Buttons "Löschen" und "Download" führen zu folgender Fehlermeldung:
2026.01.02 15:08:43 3: FHEMWEB WEB CSRF error: ne csrf_120122450752236 for client WEB_192.168.178.43_37442 / command set FritzBox_7590_TAM downloadMsg 1. For details see the csrfToken FHEMWEB attribute.
Im Javascript fbtam.js wird zwar der csrfToken geholt, aber nicht in der url verarbeitet. Mit folgender Änderung von
let url = "/fhem?XHR=1&cmd=set%20" + device + "%20" + action + "%20" + index;
in
let url = "/fhem?XHR=1&cmd=set%20" + device + "%20" + action + "%20" + index + "&fwcsrf=" + csrfToken;
funktioniert das jetzt.
Danke fürs Testen und die Hinweise.
Werde wahrscheinlich Einiges übernehmen, aber das hier nicht:
ZitatSollte nicht eher die WAV-Datei gelöscht werden, wenn erfolgreich in MP3 konvertiert wurde?
Nein, es kann ja durchaus sein, dass die WAV-Datei weiter verwendet werden soll. Und das Löschen der MP3-Datei sollte verhindern, dass dann eine Karteileiche existiert. Da werde ich noch einmal überlegen.
LG
pah
Zur Konvertierung von WAV in MP3 wäre LAME noch eine Option, das ist schlanker als ffmpeg
sudo apt-get install lame libmp3lame0
Der Aufruf bzw. die Funktion ist dann wie folgt
attr <device> Wav2MP3Fun system ("lame --quiet --tt \"META\" INPUT OUTPUT")