Das Thema wurde geschlossen, da das Modul nicht mehr weiter entwickelt wird und auch der Support eingestellt wurde.
Da ich aus diversen Gründen die FritzBox langsam aber sicher ablösen, aber auf gewisse Dinge in meiner Hausautomation, welche durch Anrufe ausgelöst werden, nicht verzichten möchte, habe ich mich ein wenig mit Asterisk (PBX) beschäftig (wohl gemerkt "ein wenig"). Es gibt viele Wege, Events aus Asterisk an FHEM zu übermitteln. Zunächst bin ich den Weg über einen dummy gegangen, der über entsprechende Skriptaufrufe aus der extensions.conf mit Readings gefüllt wurde. Da ich mich aber ein wenig mit Perl beschäftigen und etwas über die Modulentwicklung in FHEM lernen wollte, habe ich mich irgendwann dazu entschlossen, ein FHEM-Modul zu bauen, das eine Verbindung zum Asterisk Manager Interface aufnimmt und die Call-Events in Readings schreibt, die auch mit der FB_CALLLIST kompatibel sind.
Vorab: Ich werde hier keinerlei Support für Asterisk bieten. Abgesehen davon, dass ich in dem Bereich als absoluter Anfänger zu bezeichnen bin, gibt es viele Anlaufstellen für die Asterisk-Themen im Netz. Das Forum hier ist nicht der richtige Ort dafür.
Auch kann ich nicht dafür garantieren, dass das Modul mit jeder Asterisk Umgebung funktioniert. Bei mir tut es seinen Dienst. Es kann gut sein, dass es bei niemand anderem ohne Änderung funktioniert. Ich werde das Modul aber vermutlich nicht für jeden umbauen.
Es wird die gleiche Rückwärtssuche verwendet, die auch im FB_CALLMONITOR verwendet wird (mit dem Autor abgesprochen). Nur ein Fritzbox Telefonbuch wird natürlich nicht abgefragt. Die API-Keys sind natürlich andere, als in FB_CALLMONITOR. Die Doku wurde in Bezug auf Rückwärtssuche ebenfalls aus FB_CALLMONITOR übernommen. Die Readings und Attribute entsprechen ebenfalls weitesgehend denen im FB_CALLMONITOR. Die FB_CALLLIST funktioniert auch mit AsteriskCM.
Die Dokumentation befindet sich im Modul. Bitte erwartet von mir hier keinen umfassenden Live-Support oder sehr schnelle Fehlerkorrekturen. Meine Zeit ist sehr eng und es kann alles immer etwas länger dauern. Das Modul wird auch aller Voraussicht nach nicht eingecheckt.
Damit das ganze funktioniert muss das Asterisk Manager Interface aktiviert und ein User angelegt werden. Wie das geht, findet man an vielen Stellen im Netz.
Ein AsteriskCM-Device kann folgendermaßen definiert werden:
define <name> AsteriskCM <server> [<user> <port>]
Wird kein User angegeben, wird "admin" verwendet. Wird kein Port angegeben wird der Standardport 5038 verwendet. Server kann auch localhost sein. Das entsprechende Passwort wird über set gesetzt und verschlüsselt abgelegt.
Die Attribute contextIncoming und contextOutgoing sollten gesetzt werden. Die Standardwerte werden wohl bei keiner Installation stimmen.
Falls es bei euch so gut funktioniert, wie bei mir: Viel Spaß damit.
Installation:
update all https://raw.githubusercontent.com/marvin78/FHEM-AsteriskCM/master/controls_AsteriskCM.txt
Download: https://github.com/marvin78/FHEM-AsteriskCM (https://github.com/marvin78/FHEM-AsteriskCM)
Hi,
sieht gut aus ;-)
Ich habe leider keine Asterisk-Anlage und kann es demzufolge schlecht testen. Eine Frage habe ich aber. Wieso verwendest du nicht DevIo.pm (ähnlich wie in FB_CALLMONITOR) um die Verbindung zu Asterisk zu öffnen, Daten zu schreiben und zu lesen? Das ist deutlich einfacher, als das manuelle erstellen des Sockets und der Pflege dessen.
Viele Grüße
Markus
Sehr gute Frage ;) DevIO habe ich erst recht spät entdeckt und leider noch nicht ganz verstanden, weil ich noch keine Zeit hatte, mich damit intensiv auseinander zu setzen. Ich habe mir FB_CALLMONITOR erst angesehen, als ich die Rückwärtsuche realisieren wollte. Die Socket Geschichte war zu dem Zeitpunkt schon eingebaut und lief gut.
Edit: Im ersten Beitrag befindet sich nun eine Version mit Verwendung von DevIo.
Die Funktion DevIo_Open funktioniert folgendermaßen:
DevIo_OpenDev($hash, $reopen, $initfn)
$reopen sollte auf 1 stehen, wenn die Verbindung wieder neu aufgebaut wird (in ReadyFn) ansonsten auf 0 (in DefineFn). Die Variable $initfn enthält einen Funktionsnamen, welcher ausgeführt werden soll, wenn die Verbindung erfolgreich aufgebaut wurde. Damit kann man ein evtl. Login durchführen oder andere Kommandos um die Gegenstelle entsprechend zu initialisieren. Hier könntest du deine Funktion AsteriskCM_Login angeben. Der initFn wird immer nur $hash übergeben.
Damit kannst du dir den eigenen Timer sparen für den Login.
Da ich in FB_CALLMONITOR einen solchen Initialisierungsvorgang nicht benötige, setze ich da undef, da die FritzBox sofort anfängt, alle Events zu melden.
Danke für die Info. Gut zu wissen. Es kann alles so einfach sein, wenn man's richtig macht ;)
Vielen Dank für dieses tolle Modul!
Für meinen Asterisk 14.6 mit PJSIP-channel musste ich ein paar Kleinigkeiten anpassen, damit er die Events richtig erkennt. Ich hänge die Version mal an, falls es jemandem hilft...
Hallo,
ich würde gerne das Modul nutzen, jedoch scheitere ich schon beim eingeben des Passworts...
Wie/Wo muss ich das PW angeben? Im Device kann ich nur ein neues setzen, zumindest gibt es den Eintrag im Pulldown Menü...
Wenn ich es eintrage und SET drücke erhalte ich nur die Meldung: "New password is mandatory"
Wo genau liegt die Doku für das Modul?
PS: Das Passwort sollte passen, denn per Telnet kann ich mich damit anmelden...
Diese Meldung kommt nur dann, wenn du bereits ein Passwort gesetzt hast und ein neues setzen möchtest. In dem Fall werden 2 Passwörter erwartet in der form
<oldPWd> <newPwd>
Falls du das alte Passwort nicht mehr kennst, bearbeite das uniqueID File in <fhemroot>/FHEM/FhemUtils manuell. Dabei ist Vorsicht geboten.
commandref befindet sich im Modul. (help)
Super, Danke das war`s...
Hatte mit tcpdump gesehen das ein falsches gesedet wird ... :o
Jetzt hat er connected :)
Was ist noch sinnvoll an Attribute zu setzen?
Das verstehe ich nicht:
Zitatcommandref befindet sich im Modul. (help)
help AsteriskCM
oder
Device specific help in der Detailansicht.
Das geht hier ja schneller als bei der Feuerwehr!
Peinlich, das kannt ich noch nicht....
Zitathelp AsteriskCM
oder
Device specific help in der Detailansicht.
Vielen Dank
Aus Eigenbedarf habe ich noch eine Funktion ergänzt um globale Dialplan-Variablen zu setzen.
Damit lässt sich der Dialplan dynamisch verändern (z.B. in Ab- oder Anwesenheit eines Presence-device Weiterleitung auf das Handy aus- bzw. einschalten 8) )
Benutzung:
set <devName> variable <varName> <newValue>
Wer es brauchen kann...
Hallo :)
erstmal vielen Dank für deine Arbeit.
Ich hab selber Asterisk installiert und das AMI ist schonmal aktiviert und das Redings state sagt mir auch connected.
Leider passiert weiter nix im Eventmonitor wenn bei Asterisk was passiert. Per Telnet direkt mit der AMI wird mir ja jede Menge ausgespuckt.
Versteh ich abber richtig dass unter Readings dann die AMI`s angezeigt werden sollten?
Zitat von: marvin78 am 30 September 2015, 20:52:54
Die Attribute contextIncoming und contextOutgoing sollten gesetzt werden. Die Standardwerte werden wohl bei keiner Installation stimmen.
Kannst du mir einen Tip geben auf was ich die Werte setzen sollte? Ein einfache .* wird vermutlich nicht richtif sein oder?
Viele Grüße
Pascal
Ich bin leider aus Asterisk seit Jahren raus. Welchen Context verwendest du denn jeweils in der Config?
Zitat von: marvin78 am 08 Dezember 2019, 08:51:05
Welchen Context verwendest du denn jeweils in der Config?
Welchen Context? Welche Config meinßt du? ???
Du wirst ja in deiner Asterisk Config einen Kontext angegeben haben oder vorgegebene bekommen haben (jeweils). Sowas, wie "Incoming"...
Ich biete hier allerdings keinen Asterisk Support. Dafür bin ich da zu schwach. Aktuell sieht es für mich aber so aus, als würde es da fehlen.
Hallo zusammen
Habe das Modul in mein FHEM integriert, user geändert, FHEM neu gestartet, aber bekomme beim Versuch meine Asterisk hizuzufügen nur die Fehlermeldung:
"Cannot load module AsteriskCM"
-rw-r--r-- 1 fhem dialout 474774 Jul 15 12:10 72_AsteriskCM.pm
Was mache ich falsch?
Danke & Gruß
skamm71
Schwer zu sagen, da ich deine Installation nicht kenne. Ggf. fehlen dir Perl Module. MIME::Base64 wird benötigt.
Anmerkung: Ich habe das Modul seit Jahre nicht angefasst. Ich habe keine Ahnung, wie kompatibel es noch ist.
Zitat von: marvin78 am 15 Juli 2020, 14:31:48
Anmerkung: Ich habe das Modul seit Jahre nicht angefasst. Ich habe keine Ahnung, wie kompatibel es noch ist.
Dafür antwortest Du aber schnell ;-)
Kannst Du mir genau sagen, was ich installieren müsste um es noch einmal zu probieren?
Danke & Gruß
skamm71
Du sagst leider nichts über deine Umgebung, auf der FHEM läuft. Sollte es ein Debian sein, kann sowas wie
sudo apt-get install libmime-base64-perl
hilfreich sein.
Ich versuche mit
define AsteriskHome AsteriskCM 192.168.1.89
meine Asterisk hinzuzufügen.
Dann passiert nichts ausser der Fehlermeldung.
Das 72_ASTERISKCM.PM habe ich aktuell (3 Jahre alt) von Github herunter geladen.
LG
skamm71
Das habe ich verstanden. Aber das war nicht das, was ich abgefragt habe.
Sorry..... Ubuntu Server neueste Version.
Läuft auf meinem ESXI als VM.
Aber das war es wohl nicht:
root@fhem-homeautomation:/opt/fhem/FHEM# apt-get install libmime-base64-perl
Reading package lists... Done
Building dependency tree
Reading state information... Done
Note, selecting 'perl' instead of 'libmime-base64-perl'
perl is already the newest version (5.30.0-9build1).
perl set to manually installed.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
root@fhem-homeautomation:/opt/fhem/FHEM#
LG
skamm71
In welches Verzeichnis hast du die Datei gepackt?
Warum nicht per
update all https://raw.githubusercontent.com/marvin78/FHEM-AsteriskCM/master/controls_AsteriskCM.txt
wie im ersten Post vorgeschlagen?
Hatte ich versucht, aber:
root@fhem-homeautomation:/opt/fhem/FHEM# update all https://raw.githubusercontent.com/marvin78/FHEM-AsteriskCM/master/controls_AsteriskCM.txt
Command 'update' not found, did you mean:
command 'pupdate' from deb pbuilder-scripts (22)
command 'uupdate' from deb devscripts (2.20.2ubuntu2)
command 'xupdate' from deb libxml-xupdate-libxml-perl (0.6.0-3)
command 'lupdate' from deb qtchooser (66-2build1)
command 'zupdate' from deb zutils (1.8-5build1)
Try: apt install <deb name>
root@fhem-homeautomation:/opt/fhem/FHEM#
LG
skamm71
Ohje. Bitte die Grundlagen von FHEM lernen.
update ist ein FHEM-Befehl.
Sry, nicht jeder kommt als FHEM Spezi zur Welt ;-)
Habe das nun über FHEM eingegeben. Klappt soweit, aber State bleibt auf disconnected.
Du hattest was geschrieben von wegen kein Asterisk Support, aber muss ich für den Zugriff auf den Port 5038 noch irgend etwas in meiner Asterisk einrichten?
Ist eine "FreePBX"...
Danke & Gruß
skamm71
Naja. Die Grundlagen müssen da sein. Die kann man lernen. Kein angeborenes Talent nötig. Und ja, die setze ich voraus.
Dazu gehört auch, dass man mal ins Log schaut, verbose hoch dreht, wieder ins log schaut... log hier postet, ein list anhängt usw. (siehe angepinnte Beiträge im Anfängerbereich).
Hallo
Also was ich immer wieder im Log finde ist folgender Eintrag:
2020.07.15 12:18:35 1: reload: Error:Modul 72_AsteriskCM deactivated:
Excessively long <> operator at ./FHEM/72_AsteriskCM.pm line 20.
2020.07.15 12:18:35 0: Excessively long <> operator at ./FHEM/72_AsteriskCM.pm line 20.
LG
skamm71
Zeile 20 hat gar keinen Inhalt, sie ist leer:
https://github.com/marvin78/FHEM-AsteriskCM/blob/master/FHEM/72_AsteriskCM.pm
Was ist mit dem list?
Zitat von: marvin78 am 16 Juli 2020, 11:04:36
Zeile 20 hat gar keinen Inhalt, sie ist leer:
noch besser: in Deiner Moduldatei auf github gibt es nirgends ein <> als Operator 8)
:) Ich wüsste auch nicht, wofür der gebraucht werden könnte (in meinem Modul).
Langsam bin ich das raten ins Blaue allerdings auch leid.
Sry nochmal. Bin seit 3 Tagen überhaupt mit FHEM in Kontakt.
Leider hat man da Fragen - der Hinweis zum Lesen ist gut. Aber was genau? Es gibt Millionen Artikel.... :-(
Hier der List der Asterisk:
Internals:
CONNECTIONSTATE disconnected
CONNECTS 0
DEF 192.168.1.89
DeviceName 192.168.1.89:5038
FUUID 5f0f34b4-f33f-9477-23cb-191443d761021e17
LAST_DISCONNECT 2020-07-16 11:40:27
NAME AsteriskHome
NEXT_OPEN 1594900710
NOTIFYDEV global
NR 67
NTFY_ORDER 50-AsteriskHome
PARTIAL
PORT 5038
SERVER 192.168.1.89
STATE disconnected
TYPE AsteriskCM
USER admin
VERSION 0.9.8
READINGS:
2020-07-16 11:57:30 state disconnected
helper:
Attributes:
Wenn der Fehler in Zeile 20 angeprangert wird im Log, bedeutet das unbedingt dass es die Zeile 20 im .PM sein muss? Oder ist es die 20. Zeile mit aktivem Inhalt?
Dann komme ich nämlich an diesen Absatz (ab Zeilennummer 30) der sich optisch zumindest stark von allem oben drüber unterscheidet:
20
21 $hash->{SetFn} = "AsteriskCM_Set";
22 $hash->{GetFn} = "AsteriskCM_Get";
23 $hash->{DefFn} = "AsteriskCM_Define";
24 $hash->{NotifyFn} = "AsteriskCM_Notify";
25 $hash->{UndefFn} = "AsteriskCM_Undefine";
26 $hash->{AttrFn} = "AsteriskCM_Attr";
27 $hash->{ReadFn} = "AsteriskCM_Read";
28 $hash->{ReadyFn} = "AsteriskCM_Ready";
29
30 $hash->{AttrList} = "disable:1,0 ".
31 "do_not_notify:1,0 ".
32 "contextIncoming ".
33 "contextOutgoing ".
34 "local-area-code ".
35 "country-code ".
36 "remove-leading-zero:0,1 ".
37 "reverse-search-cache-file ".
38 "reverse-search:sortable-strict,textfile,klicktel.de,dasoertliche.de,search.ch,dasschnelle.at ".
39 "reverse-search-cache:0,1 ".
40 "reverse-search-text-file ".
41 $readingFnAttributes;
42
43 return undef;
44 }
45
LG
skamm71
Zitat von: skamm71 am 16 Juli 2020, 14:01:45
Sry nochmal. Bin seit 3 Tagen überhaupt mit FHEM in Kontakt.
Leider hat man da Fragen - der Hinweis zum Lesen ist gut. Aber was genau? Es gibt Millionen Artikel.... :-(
Das Anfänger-PDF ist ein guter Startpunkt. Warum man sich zum Einstieg mit einem Modul beschäftigt, dass eigentlich weder aktuell ist (und eigentlich nicht supportet wird), noch einfach und dazu noch mit einem recht komplexen System, wie Asterisk zusammenhängt, ist mir nichtk klar. Grundlagen verstehen ist, sowohl bei Asterisk, als auch bei FHEM extrem wichtig. Und diese erkläre ich hier nicht.
Das list sagt nicht viel. Hast du im Log mal verbose hochgedreht und zu sehen, was vom Modul ggf. noch ausgegeben wird? Wie wir festgestellt haben, ist die Zeile 20 leer und deshalb kann ich damit nichts anfangen.
attr AsteriskHome verbose 5
Ich habe das Asterisk Modul bei mir eben nochmal entstaubt. Es funktioniert einwandfrei.
Dann raten wir nochmal:
Ist die IP 192.168.1.89 in deinem Netzwerk vom FHEM-Server aus erreichbar (ping)?
Ist der Port geöffnet (Firewall, sonstiges!?)?
Zitat von: marvin78 am 16 Juli 2020, 14:09:27
Das Anfänger-PDF ist ein guter Startpunkt.
ist darin auch die Verwendung von code-Tags im Forum beschrieben? 8)
unabhängig von der ominösen Fehlermeldung ist das Modul ja geladen und das device angelegt.
Nächste Fragen:
- Ist denn der Manager auf dem asterisk überhaupt aktiviert?
- ist der Zugriff von außerhalb überhaupt gestattet? Wenn ich mich recht entsinne (asterisk ist bei mir lange her) ist standardmäßig nur der Zugriff von localhost 127.0.0.1 aus erlaubt.
Was passiert, wenn Du auf Betriebssystemebene folgendes probierst:
telnet 192.168.1.89 5038
Zitat von: betateilchen am 16 Juli 2020, 14:21:17
- Ist denn der Manager auf dem asterisk überhaupt aktiviert?
- ist der Zugriff von außerhalb überhaupt gestattet? Wenn ich mich recht entsinne (asterisk ist bei mir lange her) ist standardmäßig nur der Zugriff von localhost 127.0.0.1 aus erlaubt.
Danke, das wars was ich vor ein paar Posts schon gefragt habe, ob ich da auf Asterisk (FreePBX) Seite noch was zu tun habe...
vom FHEM server:
root@fhem-homeautomation:/opt/fhem/FHEM# telnet 192.168.1.89 5038
Trying 192.168.1.89...
telnet: Unable to connect to remote host: Connection refused
root@fhem-homeautomation:/opt/fhem/FHEM#
von Asterisk command line:
[root@VoIPServer ~]# telnet localhost 5038
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Asterisk Call Manager/4.0.3
^CConnection closed by foreign host.
[root@VoIPServer ~]#
Hätte ich auch vorher mal testen können..... :-(
Aber nun weiss ich wo ich zuerst suchen muss.
LG
skamm71
Von FHEM keine Ahnung, von Asterisk keine Ahnung, aber dann das Ansinnen haben, diese beiden komplexen Systeme zu verbinden?
Kann ich bitte auch was von dem Zeug haben, das Du rauchst? Scheint ein guter Stoff zu sein....
Und das mit ein paar Tagen FHEM Erfahrung. Arbeite dich bei beiden Systemen erstmal in die Grundlagen ein und wenn danach noch was nicht klappt, dann komm wieder. Ich habe übrigens direkt im ersten Post geschrieben, dass ich zu Asterisk keinen Support leisten kann und werde. Ich nehme immer an, dass Asterisk läuft....
Für Asterisk gibt es einige prima Anlaufstellen und gute Einführungen für Anfänger. Unter anderem von betateilchen. ;)
Zitat von: marvin78 am 16 Juli 2020, 20:31:25
Für Asterisk gibt es einige prima Anlaufstellen und gute Einführungen für Anfänger. Unter anderem von betateilchen.
Das ist inzwischen verjährt und das Buch nur noch antiquarisch (oder beim Autor) erhältlich.
Ok. Ich bin tatsächlich eine Weile aus dem Thema Asterisk raus. Ggf. sollte ich auch diesen Thread hier raus nehmen oder schließen. Ich habe tatsächlich keine Ahnung, ob das Modul noch (immer) das tut, was es soll.
Zitat von: marvin78 am 17 Juli 2020, 09:55:53
Ggf. sollte ich auch diesen Thread ... schließen.
Das halte ich für einen guten Plan.