PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Instabus und Voice Over IP - Frage an alle Informatiker



darwinfink
23.01.08, 21:21
Hallo EIB-Freunde,

folgende Frage hat sich mit gestellt: mein Bus verfügt über ein AP 146 Gateway für die Anbindung an mein Ethernet. Sowohl mein PC also auch mein Voice Over IP Telefon hängen im selben Netz. Nun schwebt mir vor - ohne den Einsatz weiterer EIB-Module, die ich erst kaufen müsste - dass ich bei Auslösung meines Bewegungsmelders an der Haustür über VOIP eine SMS-Nachricht o.ä. absenden könnte...

Gateway und Telefon sind bereits in mein Netz eingebunden. Außerdem habe ich mich schon nach Java-Klassen umgesehen, um damit meinen EIB zu steuern. So richtig habe ich aber noch keinen Ansatz, wie ich an eine Eigenentwicklung herangehen sollte.

Bevor ich mich nun - vielleicht sogar umsonst ? - damit beschäftige, wie ich über Java vom EIB aus in mein VOIP-Telefon Daten sende, habe ich die Hoffnung, dass sich bereits jemand (vielleicht wenigstens theoretisch) mit diesem oder einem ähnlichen Thema beschäftigt hat. Vielleicht wäre eine derartige Anwendung auch für andere EIB-User sinnvoll?

Oder versuche ich hier, mit Kanonen auf Spatzen zu schießen? Mich wundert, dass diese oder eine ähnliche Fragestellung bisher noch nicht in der Community aufgetaucht sind.

jonofe
23.01.08, 21:44
Also ich habe das wie folgt realisiert:

Ich habe einen Linuxserver auf dem neben dem eibd auch ein asterisk läuft. Asterisk ist quasi eine SW-Telefonanlage, die u.a. ISDN und VOIP unterstützt. Ich habe darin meinen T-COM Anschluss und einen VOIP Anbieter (sipgate) konfiguriert.
Den eibd, d.h. den KNX Bus, kann man recht einfach über Systemaufrufe an asterisk anbinden. Damit bin ich in der Lage mit beliebigen EIB Telegrammen beliebige Funktionen im asterisk auslösen, also z.B. Umleitung setzen, SMS versenden, Anrufe tätigen, etc. Das Ganze geht auch in die andere Richtung, also über den asterisk können auch EIB Funktionen ausgelöst werden, z.B. indem man anruft und mit bestimmten Codes EIB Telegramme generiert. Wie man SMS über VOIP sendet weiss ich nicht, da ich derzeit SMS über ISDN versende. Das funktioniert problemlos.
Die gesamte EIB Logik und VISU implementiere ich derzeit in php. Hier wäre natürlich auch jede andere Programmiersprache möglich...java, c, perl, etc.

Mit asterisk und eibd und einer beliebigen Programmiersprache wären also deine Vorstellungen umsetzbar.

Grüße

André

darwinfink
23.01.08, 22:15
Hallo André,

das hört sich super an. Und eine PHP-Lösung wäre sogar mein Favorit, da ich dann nicht noch einen Tomcat aufsetzen müsste, um die Java-Lösung webfähig zu machen. :) Derzeit habe ich eine Telefon-Software unter Windows am Start, aber ich werde mich mal um Asterisk unter Ubuntu bemühen.

Ich habe, wie gesagt, schon Demonstrationen für Aufrufe in Java gesehen. Auch in C++. Ohne eine Lösung vorwegzunehmen - denn ein wenig Spaß will ich ja auch noch dran haben :D - würde ich mich darüber freuen, von dir einige Basics deiner PHP-Version zu erhalten. Wär das machbar?

Und du hast ne gesamte Visualisierung über PHP am Start? :eek:

jonofe
24.01.08, 07:16
Hallo André,

Und du hast ne gesamte Visualisierung über PHP am Start? :eek:


Nein, das leider noch nicht. Bin bisher bis zur Logik gekommen. habe mehr Aufwand in die Konsistenz der Datenstrukturen und der allg. Basics gelegt, d.h. Timer, Delays, Logiken, mysql-Anbindung, so dass man jederzeit in php ein konsistentes Prozessbild des Busses hat. Ich werde mal in den nächsten Tagen eine Darstellung machen, die zeigt, wie ich das implementiert habe. Danach kannst Du dir ja mal überlegen, ob das interessant für dich wäre.
Du solltest dir auch mal Misterhouse anschauen. Das setzt auch auf eibd auf und ist ein Sourceforgeprojekt und in perl implementiert. Mir war es zu komplex und da ich nicht fließend perl spreche, habe ich mich entschieden von grund auf selbst zu implementieren, dann weiss ich am besten, was genau passiert.

Grüße

Andre

KaPe147
24.01.08, 08:01
... schau mal hier - möglicherweise hilft's dir weiter http://www.sipgate.de/faq/index.php?do=displayArticle&article=754&id=222. Gennerell brauchst du einen SIP-Provider, der eine Umsetzung der SMS vornimmt - einer will ja was an den SMS verdienen:D

Grüße
Klaus

RaK
24.01.08, 08:23
Kopplung Misterhouse und Asterisk
Nur als Beispiel

system("asterisk -rx 'database put eib anwesend 0'") if (state_now $Anwesend eq OFF);
system("asterisk -rx 'database put eib anwesend 1'") if (state_now $Anwesend eq ON);Mit den beiden Zeilen werden von Misterhouse in einer Datenbank ein Flag gesetzt, ob das Haus im Abwesenheitszustand ist oder nicht.

Kommt ein Anruf rein, dann wird in Asterisk abhängig von diesem Flag der Call auf das Telefon im Haus geleitet, oder eben auf mein Handy.



if (said $v_ast_svm || (state_changed $FK_Haustuere eq OFF && $WechselNachAnwesendWarGerade == 1)) {
$WechselNachAnwesendWarGerade = 0;
system("asterisk -rx 'show voicemail users' > /tmp/ast_voicemail.txt");
my $ast_file = new File_Item("/tmp/ast_voicemail.txt");
my $text;
$text = $ast_file->read_all() if ($ast_file->exist());
my @lines = split("\n",$text);
my $t;
for(my $i=1;$i0 ) {
if ($newmsg eq "1") {
$newmsg = "eine neue Nachricht";
} else {
$newmsg = $newmsg . " neue Nachrichten";
}
speak "Wir haben $newmsg in der Mailbox";
} else {
speak "Willkommen zuhause.";
}
}
}Dieses Sniplet sagt mir per Sprachausgabe an wieviele Nachrichten ich auf dem AB habe. Und zwar in dem Moment wenn ich nach Hause komme und die Tür schliesse.

LG
}

thoern
24.01.08, 20:22
@darwinfink: Rak hat Recht. Mit misterhouse ist so etwas gar kein Problem. Die Arbeit, das in Java zu implementieren, kannst du Dir sparen.

Gruss,

thoern