NEWS
IoBroker und VOIP / SIP Calls mit Asterisk + Fritzbox
-
Hallo,
vielleicht hat jemand daran Interesse. Bei bestimmten Events z.b. wenn die Alarmanlage ausgelöst wurde, soll mich ioBroker auf dem Handy anrufen und eine Sprachnachricht vorspielen.
Was wird dafür benötigt. Eine Fritzbox oder irgendeinen VoIP Anbieter und Asterisk (https://www.asterisk.org). Asterisk gibt es für Linux und ich glaube aber auch für Windows.
Falls Asterisk auf der Synology läuft, müssen ie UDP Ports 5038,5060 und die UDP Ports 7078 bis 7079 exposed im Container werden. Das ist etwas aufwändigerNun auf der Fritzbox anmelden und unter Telefon -> Telefoniegeräte ein neues LAN/WLAN Telefon konfigurieren. In meinem Beispiel habe ich ein Telefon angelegt mit dem Namen ioBroker. Der Username lautet 12345689 und das Password mypassword. Die Fritzbox ist unter der IP Adresse 192.168.1.1 erreichbar. Weiterhin sollen Anrufe über die Rufnummer 03047114711 entgegengenommen werden (optional) und getätigt werden.
Zusammenfassung:
Beschreibung Wert IP Adresse ioBroker und Asterisk Server 192.168.1.2 Asterisk Port (manager.conf) 5038 IP Adresse FritzBox (SIP Server) 192.168.1.1 Eigene Rufnummer 03047114711 Username Manager manager Passwort Manager password1 FritzBox Benutzername (Telefoniegeräte -> Anmeldedaten) 123456789 FritzBox Kennwort (Telefoniegeräte -> Anmeldedaten) mypassword Konfiguration Fritzbox:
Nun folgende Pakte auf dem ioBroker/Asterisk Server installieren:
sudo apt-get install lame sudo apt-get install sox sudo apt-get install libsox-fmt-mp3 sudo apt-get install ffmpeg sudo apt-get install asterisk
Asterisk Adapter in ioBroker installieren und folgende Einstellungen vornehmen und umbedingt die Checkbox "Create Asterisk config files (once)" anklicken.
Die Einstellungen auf dem Asterisk Settings Tab sind für die Verbindung vom ioBroker zum Asterisk Server notwendig. Die haben noch nichts mit der Verbindung zur Fritzbox zu tun!Jetzt auf den Tab SIP Settings wechseln. Hier werden nun die Einstellungen vorgenommen, dass Asterisk (bzw. ioBroker über Asterisk) mit der Fritzbox kommunizieren kann.
Auf dem SSH Tab ist nichts auszufüllen. Dieses ist nur notwendig wenn ioBroker und Asterisk auf unterschiedlichen Servern läuft. Das sollte man aber nur tun, wenn man gute Linux Kenntnisse hat da die Konfiguration komplizierter ist.
Nicht vergessen auf dem "Asterisk Settings" Tab "Create Asterisk config files (once)" anzuklicken. Nun Konfiguration speichern und den Adapter starten. Es werden jetzt mehrere Konfigurationsfiles im den Verzeichnis /tmp/ erstellt. Diese umbennen, in das Verzeichnis /etc/asterisk verschieben.
Unter Umständen sind noch die Dateiberechtigungen der kopierten Dateien anzupassen.sudo mv /tmp/extensions.ael /etc/asterisk/extensions.ael sudo mv /tmp/manager.conf /etc/asterisk/manager.conf sudo mv /tmp/pjsip_fritzbox.conf /etc/asterisk/pjsip.conf sudo mv /tmp/rtp.conf /etc/asterisk/rtp.conf sudo rm /tmp/pjsip*.conf # Example if userrights of files have owner asterisk and group asterisk sudo chown asterisk:asterisk /etc/asterisk/extensions.ael sudo chown asterisk:asterisk /etc/asterisk/manager.conf sudo chown asterisk:asterisk /etc/asterisk/pjsip.conf sudo chown asterisk:asterisk /etc/asterisk/rtp.conf
So jetzt Asterisk neu starten. Dieses geschieht z.b. über /etc/init.d/asterisk restart
Wenn alles geklappt hat, kann man jetzt Anrufe über ioBroker tätigen.
Das geht z.B. wie folgt (Anruf der Nummer 04047114711 und es wird "Huhu ein Test" angesagt)Alternativ kann man auch über Javascript Anrufe durchführen:
var number = "040 666-7766"; var callerid = '040 123 999'; // optional, if not set anonymous call var msg = "Hello, this textmessage will be converted to audio"; // call telephone nummber 040 666-7766 and play text message as audio sendTo('asterisk.0', "dial", { telnr: number, callerid: callerid, text: msg}, (res) => { console.log('Result: ' + JSON.stringify(res)); });
Mehr Infos über den Adapter und Installation findet ihr hier: https://github.com/schmupu/ioBroker.asterisk. Auch wie ihr die Konfigurationsdateien manuell erstellt.
-
Mega nice! Würde mich über einen Adapter freuen!
-
Mega nice! Würde mich über einen Adapter freuen! `
Die erste Beta Version ist fertig und kann gerne getestet werden. Muss über die GitHub Katze unter Adapter installiert werden. Dafür folgenden Link eintragen https://github.com/schmupu/ioBroker.asterisk.
Textnachricht kann man wie folgt als Audio per VoIP an irgendeine Telefonnummer verschicken:
var number = "040 666-7766"; var msg = "Hello, this textmessage will be converted to audio"; sendTo('asterisk.0', "dial", { telnr: number, text: msg}, (res) => { console.log('Sent to ' + res + ' users'); });
-
HAllo,
das klingt ja phantastisch! Genau damit wollte ich mich schon lange mal beschäftigen. Jetzt muss ich nur noch etwas Zeit finden um das Ganze zu installieren.
Ich sag schon mal Danke
-
Das heißt ich muss nur den Adapter installieren, alles andere passiert von allein? Ich meine die anderen Verknüpfungen etc.
Gesendet von iPhone mit Tapatalk
-
Das heißt ich muss nur den Adapter installieren, alles andere passiert von allein? Ich meine die anderen Verknüpfungen etc.
Gesendet von iPhone mit Tapatalk `
Leider nein. Du musst einmal Asterisk und ffmpeg mit apt-get install asterisk ffmpeg installieren und anschließend 3 Konfigurationsdateien kopieren und 2 davon anpassen. Sollte aber hoffentlich nicht so schwer sein. Wenn du das geschafft hast, dann kannst Du mit dem Adapter ganz einfach Texte als Sprachnachrichten verschicken.
Eine genaue Anleitung findest Du hier: https://github.com/schmupu/ioBroker.asterisk
var number = "040 666-7766"; var msg = "Hello, this text message will be converted to audio"; // call telephone number 040 666-7766 and play text message as audio sendTo('asterisk.0', "dial", { telnr: number, text: msg}, (res) => { console.log('Result: ' + JSON.stringify(res)); });
-
Wow, mega!
So etwas wollte ich auch schon länger mal versuchen. Danke fürs zeigen!
Jetzt bin ich etwas "traurig", dass ich aktuell Job-mässig viel zu viel um die Ohren habe, um mit ioBroker und Asterisk spielen zu können …
-
Wow, mega!
So etwas wollte ich auch schon länger mal versuchen. Danke fürs zeigen!
Jetzt bin ich etwas "traurig", dass ich aktuell Job-mässig viel zu viel um die Ohren habe, um mit ioBroker und Asterisk spielen zu können … `
Danke!!! läuft ja nicht weg
-
Hallo,
das ist genau die Funktion, die ich suche, hauptsächlich als Alarmanlage. Kurze SMS oder Push Nachrichten überliest man ja dann doch mal, so dass ein Anruf schon besser wäre.
Da ich aber noch absoluter Newbie bin, habe ich an einer Stelle dazu mal eine Frage.
Und zwar der Schritt :
"Now you have to edit the follwoing asterisk configuration files. Delete the old staff in this 3 files! Do not change the user authority of the files.
/etc/asterisk/manager.conf"….
Wie genau macht man das ?
Ich habe Iobroker auf dem Raspberry und die Befehle ( sudo apt-get install ffmpeg
sudo apt-get install asterisk ) auch schon ausgeführt, aber wo / wie editiere und kopiere ich diese Datein ?
-
Hallo,
das ist genau die Funktion, die ich suche, hauptsächlich als Alarmanlage. Kurze SMS oder Push Nachrichten überliest man ja dann doch mal, so dass ein Anruf schon besser wäre.
Da ich aber noch absoluter Newbie bin, habe ich an einer Stelle dazu mal eine Frage.
Und zwar der Schritt :
"Now you have to edit the follwoing asterisk configuration files. Delete the old staff in this 3 files! Do not change the user authority of the files.
/etc/asterisk/manager.conf"….
Wie genau macht man das ?
Ich habe Iobroker auf dem Raspberry und die Befehle ( sudo apt-get install ffmpeg
sudo apt-get install asterisk ) auch schon ausgeführt, aber wo / wie editiere und kopiere ich diese Datein ? `
okay, wenn Du Dich mit Linux auskennst, kannst Du z.B. den Editor vi (apt-get install vim) installieren und dann man mit vi /etc/asterisk/manager.conf editieren. Dann kopierst Du dort den Inhalt der Konfiguration aus der README dort rein.
Ich werde aber gleich noch einmal die Configfiles hier mit anhängen. Dann musst Du diese nur anpassen und in das Verzeichnis /etc/asterisk ohne Endung .txt kopieren.
-
wow, das ging schnell… Das ich mich in Linux auskenne ist etwas .... zu viel gesagt...
Aber ich werde es mal testen...
den Editor installiere ich direkt beim Raspberry und nicht in der Iobroker Oberfläche, oder ? ( ich weiß, peinliche Frage)....
-
wow, das ging schnell… Das ich mich in Linux auskenne ist etwas .... zu viel gesagt...
Aber ich werde es mal testen...
den Editor installiere ich direkt beim Raspberry und nicht in der Iobroker Oberfläche, oder ? ( ich weiß, peinliche Frage).... `
es gibt keine peinlichen Fragen. Den vi musst Du über Linux installieren. Mein Kollege sagt gerade, installiere den Editor nano (apt-get instlall nano) unter Linux. Der ist viel einfacher zu bedienen.
https://jankarres.de/2015/03/debian-editor-nano-kompakt-erklaert/
-
So, das werde ich mal testen, allerdings dauert es etwas, der kleine pi hat sich gerade komplett verabschiedet. Den muss ich erst mal neu aufsetzen…
-
hm, dachte, das nano einfacher wäre ( oder ich das zumindest verstehen würde… ) Leider wohl nicht.
Habe als root den Befehl nano / /etc/asterisk/manager.conf
eingegeben.. Da kam das :
; Asterisk Call Management support
;
; By default asterisk will listen on localhost only.
[general]
enabled = yes
port = 5038
bindaddr = 127.0.0.1
; No access is allowed by default.
; To set a password, create a file in /etc/asterisk/manager.d
; use creative permission games to allow other serivces to create their own
; files
#include "manager.d/*.conf"
nano /etc/
hier weiß ich nun nicht weiter…
-
Das ist die Standard Konfiguration die bei der Installation angelegt wird. Den Inhalt der Datei durch den Inhalt der jeweiligen Konfiguration in der README ersetzen.
Hilft das weiter?
Gesendet von iPhone mit Tapatalk
-
Sorry, nicht wirklich… Ich stehe da echt auf dem Schlauch...
-
okay, wenn Du asterisk über apt-get install asterisk installierst, werden im Verzeichnis /etc/asterisk/ Konfigurationsdateien angelegt. Darunter sind auch sip.conf, manager.conf und extensions.ael (die kann vielleicht fehlen). Nun musst die "Standardkonfiguration" aus den 3 Dateien mit dem Inhalt aus der https://github.com/schmupu/ioBroker.asterisk/blob/master/README.md ersetzen.
Ein Beispiel, in der /etc/asterisk/manager.conf löscht Du den kompletten Inhalt so dass diese leer ist und trägst dann folgendes ein:
[general] ; Do not change enabled = yes ; Do not change port = 5038 ; Do not change bindaddr = 0.0.0.0 ; Do not change [manager] ; Do not change secret = managerpassword ; Change Manager password for ioBroker asterisk adapter permit = 192.168.1.0/255.255.255.0 ; Change to your subnet and netmask read = all ; Do not change write = all ; Do not change
Alternativ kannst Du auch die /etc/asterisk/manager.conf löschen und mit dem Inhalt von oben neu anlegen. Da musst Du aber aufpassen, dass die Berechtigungen und der/die Benutzer/Gruppe der Datei gleich bleiben. Wenn Du den Inhalt von oben in die manager.conf eingetragen hast, musst Du noch die individuellen Anpassungen vornehmen, d.h. bei secret = und permit =
Das machst Du dann für die sip.conf und extensions.ael genauso. Anschließens startest Du Asterisk nochmals z.B. /etc/init.de/asterisk restart
Jetzt klarer?
VG
-
Ich habe den Nano aufgerufen im entsprechenden Verzeichnis,
habe dann einfach das "leere" Blatt entsprechend gefüllt, mit X beendet, dann kommt die Frage, ob ich speichern will und unter welchen Datei Namen. da habe ich dann einfach z.b: manager.conf angegeben, da kam der Hinweis : gibt es schon und ich konnte es überschreiben. Soweit glaube ich ist alles drin.
Asterisk musste ich in iObroker noch mal installieren, dann habe ich meine Werte eingetragen, Asterisk ist grün, aber :
Im Log steht : cannot connect to asterisk…
?
-
Wenn musst Du mir die ganze Fehlermeldung schicken, sonnst kann ich Dir nicht sagen wo der Fehler ist.
Hast Du die 3 Dateien /etc/asterisk/manager.conf, /etc/asterisk/sip.conf und /etc/asterisk/extensions.ael angepaßt, d.h alles gelöscht mit dem Teil aus der README ersetzt? Hast Du auch die Stellen in der Konfiguration angepaßt, die ich im Kommentar gekennzeichnet habe? Die müssen mit Deiner Friztbox Konfiguration übereinstimmen. Und zu aller Letzt musst Du in der Asterisk Instanz Administration auch noch die passenden Werte hinterlegen.
Asterisk muss Du nach der Konfiguration neu starten /etc/init.d/astersik restart oder asterisk -vvvv aufrufen und reload eingeben.
führe mal folgende nacheinander Befehle aus
cat /etc/asterisk/manager.conf
cat /etc/asterisk/sip.conf
cat /etc/asterisk/extensions.ael
Und schicke mir den jeweiligen Output! (Passwort entfernen!!!!) und ein Screenshot von der Asterisk Instanz Administration.
VG
-
manager.conf :
[general] ; Do not change
enabled = yes ; Do not change
port = 5038 ; Do not change
bindaddr = 0.0.0.0 ; Do not change
[manager] ; Do not change
secret = XXXXXX ; Change Manager password for ioBroker asterisk adapter
permit = 192.168.0.1/255.255.255.0 255 ; Change to your subnet and netmask
read = all ; Do not change
write = all ; Do not change
–-----------
hier sehe ich schon ein Fehler bei permit ( 192.168.0.1/255.255.255.0 255
sip.conf :
[general] ; Do not change
port = 5060 ; Do not change
bindaddr = 0.0.0.0 ; Do not change
context = default ; Do not change
subscribecontext = default ; Do not change
register => XXXXXXX:XXXXXXX@192.168.0.1/1000 ; Username, Password and IP address of Fritzbox WLAN/LAN telephone
[XXXXXXXXXX] ; Change to username of Fritzbox WLAN/LAN telephone
type = friend ; Do not change
username = XXXXXXX ; Change to username of Fritzbox WLAN/LAN telephone
host = 192.168.ß.1 ; Change hostname / IP address of Fritzbox
secret = XXXXXXXX ; Change password of Fritzbox WLAN/LAN telephone
fromdomain = 192.168.0.1 ; Change hostname / IP address of Fritzbox
fromuser =XXXXXXX ; Change username of Fritzbox WLAN/LAN telephone
–--------
oh man, das ß ist der zweiter Fehler....
extensions.ael :
context default {
1000 => {
Goto(ael-antwort,10,1);
}
}
context ael-ansage {
10 => {
Answer();
Wait(1);
Read(dtmf,${file}&beep,0,s,${repeat},1);
if ("${dtmf}" != "") {
SayDigits(${dtmf});
}
Hangup();
}
}
context ael-antwort {
10 => {
Answer();
Wait(1);
Set(repeat=5);
Read(dtmf,/tmp/asterisk_dtmf&beep,0,s,${repeat},1);
if ("${dtmf}" != "") {
SayDigits(${dtmf});
}
Hangup();
}
}
–---
und hier der Screenshot
So, habe doch schon alles geändert, brachte aber nichts, im Log steht trotzdem cannot start asterisk….