Navigation

Start Tipps & Tricks wekomm

Unternavigation

Asterisk als Signal-Empfangsgerät (SEG)

Es waren einmal 19-Zoll Kisten, die in der Vermittlungstelle installiert waren. Darauf befanden sich zwei Drucker, die Statusmeldungen und auch Statistikmeldungen der Münztelefone ausgaben.
Dazu hat sich ein MünzFW21 aus gegebenem Anlass (Geldkassettenwechsel) oder spätestens nach 24 Stunden beim Ortsamt gemeldet (Rufnummer des SEG wurde angewählt) und hat dann mittels DTMF-Tönen seine Informationen abgeliefert. Was damals eine teure Sonderhardware benötigte, kann man heute mit ein paar Zeilen Code in Asterisk und PHP nachbauen.
Damit sich unser Münztelefon doch richtig zuhause fühlt.

Wichtig an dieser Stelle ist, dass das Telefon an einen Adapter angeschlossen ist, der den 16kHz Gebührenimpuls erzeugen kann. Von den Beronet-Aptern weiß ich, dass die es können, welche anderen dazu in der Lage sind, entzieht sich meiner Kenntnis. Jedenfalls der Cisco SPA112 kann es nicht oder ich konnte es ihm noch nicht entlocken ...
Ich habe es mittels Beronet-ISDN Adapter gelöst, der kann nämlich auch Gebühreninformationen erzeugen. Der Münzer hängt dann an einer kleinen Agfeo 141+ Anlage, die ich als besseren ISDN-Terminal Adapter benutze. Klappt hervorragend.

Zunächst müssen wir in Asterisk die Empfangsumgebung des SEG nachbauen. Der Asterisk-Quellcode ist nicht von mir, sondern von Christoph Lauter. Ich habe den Code aber meinen Bedürfnissen angepasst:
exten => 55555555,1,NoOp(Melderufnummer des Münzers) same => n,wait(0.5) same => n,Ringing() same => n,Wait(4) same => n,Progress() same => n,Wait(1) same => n,Set(TIMEOUT(digit)=1) same => n,answer() same => n(Nochmal),Waitexten(60) same => n,Goto(Nochmal) same => n,hangup(${HANGUPCAUSE}) exten => _[*#0123456789abcdABCD].,1,Noop(Habe "${EXTEN}" empfangen) same => n,Gosub(muenztelefon-seg-verarbeiten,s,1(${EXTEN})) same => n,hangup() exten => _[*#0123456789abcdABCD],1,Noop(Habe "${EXTEN}" empfangen) same => n,Gosub(muenztelefon-seg-verarbeiten,s,1(${EXTEN})) same => n,hangup() exten => h,1,Noop(Hangup - cause: ${HANGUPCAUSE}) same => n,Noop(Fertig mit Muenzer SEG!) [muenztelefon-seg-verarbeiten] exten => s,1,Noop(Verarbeite "${ARG1}") same => n,Set(MUENZERSEGMSG=${ARG1}) same => n,Set(MUENZERSEGMSGDONE=no) same => n,playtones(425) same => n,Wait(10) same => n,stopplaytones() same => n,NoOp(SEG-Message: ${MUENZERSEGMSG}) same => n,agi(execseg.php,${MUENZERSEGMSG}) same => n,Set(MUENZERSEGMSGDONE=yes) same => n,Wait(10) same => n,return exten => h,1,Noop(Hangup Muenzer SEG: Message: "${MUENZERSEGMSG}" - Done: ${MUENZERSEGMSGDONE}) same => n,GotoIf($["x${MUENZERSEGMSGDONE}y" = "xyesy"]?Fertig) same => n,NoOp(SEG-Message: ${MUENZERSEGMSG}) same => n,agi(execseg.php,${MUENZERSEGMSG}) same => n,Wait(10) same => n(Fertig),Noop(Fertig mit Muenzer SEG!)
Ganz am Anfang steht die Melderufnummer, bei der sich der Münzer am SEG meldet. Diese Nummer ist frei wählbar, muss aber natürlich auch so in den Münzer programnmiert werden.
Der Code ruft dann ein PHP-Script auf, daß man am besten in das Verzeichnis /var/lib/asterisk/agi-bin legt und mit chmod 775 execseg.php ausführbar macht.
Dieses Script kann man HIER runterladen.

Wenn alles funktioniert, sollte man beim Kassettenwechsel eine Mail mit ähnlichem Inhalt bekommen:
Statistikmeldung 12345678 45 ZI A: 1 ZI: 15 TWPF:- 40 5DM: 2 1DM: 0 10PF: 2 DM: 10.40 IST:- 12 -------- DIFF:- 28.DEZ MO ZEILE | BEDEUTUNG ------ ----------------------------------------- 1 | Standortnummer und Tourennummer 2 | Zählimpulse Ausland 3 | Zählimpulse 4 | Trennwertigkeit in Pfennige 5 | Anzahl der kassierten 5DM Münzen 6 | Anzahl der kassierten 1DM Münzen 7 | Anzahl der kassierten 10PF Münzen 8 | Kassierter Betrag in DM 9 | Betrag laut Zählung Münzkassette 10 | Lfd. Nr. des Statistikausdruckes 11 | Differenzbetrag Soll / ist 12 | Datum
Und mindestens einmal täglich eine Zustandsmeldung:
Zustandsmeldung 12345678 00 28.DEZ 19:37 CODE | BEDEUTUNG ----- ----------------------------------------- F01 | TWB blockiert F02 | Ruhepegel am 16-kHz-Eingang falsch | F04 | Kassette 75% voll F05 | Kassette 100% voll | F07 | Kassette fehlt länger als 1 Minute F08 | Einwurf verstopft F09 | Dauerbelegung F10 | mind. 1 Münzkanal außer Betrieb F11 | alle Münzkanäle außer Betrieb F12 | Wähltonauswertung nicht möglich F15 | Impuls an freiem Eingang 208 F16 | Signal an freiem Eingang 206
Diese Meldungen entsprechen im Wesentlichen den Ausdrucken, die damals das Siemens SEG geliefert hat. Aus Bequemlichkeitsgründen habe ich allerings noch die Erklärungen hinzugefügt. Wer das nicht mag, kann das Scipt dahingehend ändern.