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.