Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Contact ID over IP (CID) / Webserver
28-01-2016, 19:52
Beitrag: #1
Contact ID over IP (CID) / Webserver
Hallo,

kann ich bei der LUPUSEC XT1 unter der Contact ID eine URL in Form http://server.port/script.php statt rptn://ACCT@server:port eingeben?
Und welche Werte würden dem Script (URL) bei einem Alarm automatisch von der LUPUSEC XT1 mit übergeben werden?

Ich möchte mir gerne auf einem Webserver ein kleines PHP Script basteln, welches bei einem Alarm aufgerufen wird. Das Script soll dann die Contact ID Codes wie z.B. 100 bei Alarm, 200 bei Überwachung, usw. auslesen können.

Hat jemand schon Erfahrung in dieser Hinsicht gesammelt?

Gruß
Schmupu
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30-01-2016, 00:52
Beitrag: #2
RE: Contact ID over IP (CID) / Webserver
Zunächst mal würde er so einen vollständigen HTTP Header an das Script übergeben.
Und dann übergibst er auch Nix was über einen GET oder POST String auswertbar wäre.
Das System übergibt Nix in der übliche HTTP Form wie ?id=1234&melder=5&status=Alarm

Ich lasse meinen als bash bzw. Pearl Script auf kommandozeile auswerten.
Da übergibt er dann das reine CID Telegramm wie es in allen möglichen Dokumentationen erklärt wird.

Du musst aber beachten gerade bei dem Webserver Skript, dass du eine Bestätigung beziehungsweise Quittung zurückgibst, sonst wird der Anruf ewig fortgesetzt weil die Anlage denkt es ist nicht angekommen.

Ich habe mein Laptop jetzt leider gerade im Büro liegen lassen sonst hätte ich dir meine Lösung teilweise geben können vielleicht schaffe ich es ja morgen daran zu denken
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30-01-2016, 07:38
Beitrag: #3
RE: Contact ID over IP (CID) / Webserver
(30-01-2016 00:52)icyMEDIA schrieb:  Zunächst mal würde er so einen vollständigen HTTP Header an das Script übergeben.
Und dann übergibst er auch Nix was über einen GET oder POST String auswertbar wäre.
Das System übergibt Nix in der übliche HTTP Form wie ?id=1234&melder=5&status=Alarm

Ich lasse meinen als bash bzw. Pearl Script auf kommandozeile auswerten.
Da übergibt er dann das reine CID Telegramm wie es in allen möglichen Dokumentationen erklärt wird.

Du musst aber beachten gerade bei dem Webserver Skript, dass du eine Bestätigung beziehungsweise Quittung zurückgibst, sonst wird der Anruf ewig fortgesetzt weil die Anlage denkt es ist nicht angekommen.

Ich habe mein Laptop jetzt leider gerade im Büro liegen lassen sonst hätte ich dir meine Lösung teilweise geben können vielleicht schaffe ich es ja morgen daran zu denken

Hallo icyMEDIA,

Das hört sich sehr interessant an! Wenn Du das Rahmenprogramm Deines BASH und/oder Perl Scripts zur Verfügung stellen könntest wäre das super!

Ich gehe davon aus, dass die Scripte local auf der LUPSEC XT1 ausgeführt werden d.h. die LUPUSEC läuft unter einem kleinen Linux und man hat einen shell Zugang?

Woher kommt der Trigger bei einem Alarm? Führst Du das Script in der crontab aus?

Wie kommst Du an die Contact ID Informationen?

Gruß
Schmupu
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08-02-2016, 12:26
Beitrag: #4
RE: Contact ID over IP (CID) / Webserver
Nein, auf der XT1 kannst du die Scripte nicht selber laufen lassen.
Es braucht dazu (genau wie beim echten Wachdienst) einen Empfangsserver.
Dieser kann ein Rechner im eigenen Netzwerk oder in einem Rechenzentrum sein.
Es eignet sich dazu sehr gut auch ein RaspberryPI, wenn du nur lokal arbeiten willst.

AAAAAAALSOOOOOO Es ist nix das man als Volllaie einfach so umsetzen kann.
Netzwerk und vor allem Grundlagen in Unix / PHP sollten vorhanden sein,
da ich hier nicht unbedingt einen fertigen Lösungsweg zum Abschreiben posten werde,
da solch eine Lösung in meinen Augen unnütz ist und man lieber einen seriösen Wachschutz nutzen sollte.


Vorweg: ContactID (CID) ist ein Protokoll, dass die Alarmmeldungen in fest definierte Ziffernfolgen übersetzt.
Stammt noch aus der Zeit eben wo per Telefonleitung übertragen wurde und daher es am Einfachsten war Töne zu senden
die für bestimmte Zahlen wie beim Tastendruck standen.
CID over IP bedeutet nur, dass dieser Zahlenstring dem Wachschutz (oder anderem Ziel) per Internet zugespielt wird.
Bei den Wachschutzunternehmen gibt es natürlich nicht nur 1 Kunden,
daher findest du in der CID over IP Dolkumentation auch immer dinge wie kundennummer@ip:kundenport.

Wenn du einen eigenen Empfänger hast kannst du im Grunde als Ziel
nur einfach die IP eintragen ohne besonderen Port oder Kundennummer.
Allerdings solltest du bedenken, dass auch auf Serverseite die passenden Ports offen sind.

Das verwenden von rptn:// statt http:// bringt nur den Vorteil dass dem
Script (Empfänger) nicht noch alle möglichen "Müllvariablen" übergeben
wie Clientversion etc. Über rptn:// wird nur der reine String übertragen ohne sonstiges.

Also bei meinem Test z.B. bekam ich über rptn://7274@IPADRESSE:7274 das hier zum auswerten:
---------
[7274 1834074010010910]
---------

über http://7274@IPADRESSE:7274 aber zusätzlich solchen "Müll":
---------
GET / HTTP/1.1
Host: IPADRESSE:7274
User-Agent: ENTFERNT
Accept: ENTFERNT
Accept-Language: ENTFERNT
Accept-Encoding: ENTFERNT
Connection: ENTFERNT
---------

Es macht also kaum einen Unterschied, außer das du mehr zu
verarbeiten hast mit deinem Script.

Also Grundsätzlich kann man sagen alles was du machen musst ist
"einfach" alles was über den gewünschten Port reinkommt annehmen,
ihm ein acknowledgment-letter geben als Quittung (Protokollbedingt)
und es dann auswerten.

Beispiel:
---------
while true ; do nc -l 7274 < ack.txt >> contact_id.log ; done
---------
ack.txt = Datei mit dem acknowledgment-letter
contact_id.log = hier schreibt er alle strings die er bekommt herein.

Die Trigger für die Alarme ergeben sich aus den CID Strings die übergeben werden.
Dazu einfach mal ContactID an sich googlen da gibt es Massen an
Dokumentationen was die einzelnen Zahlen bedeuten.

MfG
Tobias
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
09-02-2016, 21:53
Beitrag: #5
RE: Contact ID over IP (CID) / Webserver
Danke für die ausführliche Anleitung. Das hat super weitergeholfen! Als Acknowledment sende ich irgendeinen Buchstaben. Oder muss ich da noch etwas dabei beachten?

Die Contact ID lese ich nun per PHP Skript auf einem Raspberry aus! Abhängig von dem übermittelten Event, wie z.B. Alarm, lasse ich Astrisk (VoIP) mich auf dem Telefon anrufen. Asterisk spielt mir dann eine Sprachnachricht vor.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16-05-2016, 10:44
Beitrag: #6
RE: Contact ID over IP (CID) / Webserver
Hi,

das mit dem acknowledgment-letter würde mich auch interessieren Huh
Wenn der Letter im Beispiel von icyMEDIA als Datei vorliegt, denke ich das er nicht nur einen Buchstaben enthält ?!

Gruß

Michi
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17-05-2016, 11:36
Beitrag: #7
RE: Contact ID over IP (CID) / Webserver
(09-02-2016 21:53)Schmupu schrieb:  Die Contact ID lese ich nun per PHP Skript auf einem Raspberry aus! Abhängig von dem übermittelten Event, wie z.B. Alarm, lasse ich Astrisk (VoIP) mich auf dem Telefon anrufen. Asterisk spielt mir dann eine Sprachnachricht vor.

Würdest du dein PHP Script als Realisierungsbeispiel zur Verfügung stellen?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26-05-2016, 09:29
Beitrag: #8
RE: Contact ID over IP (CID) / Webserver
Ich habe das (mangels PHP-Kentnissen) mit einem relativ simplen bash-Script gelöst. Läuft absolut zuverlässig auf meinem Raspberry.

Voraussetzungen:
- Raspberry Pi mit Asterisk (ich selber verwende IncrediblePBX)
- im Lupus-Panel wird unter "Contact-ID" eingetragen:

rptn://YYYY@IP_des_Raspberry:YYYY
# YYYY = frei wählbarer Port, auf dem der Raspberry lauscht; möglichst oberhalb 1023, da ansonsten root-Rechte nötig sind




auf dem Raspberry:

1. Bash-Script "/root/Alarm.sh"


#!/bin/bash

while true
# Endlosschleife, da diese Bedingung IMMER erfüllt ist

do nc -l -p YYYY < /root/Antwort.txt > /tmp/contact_id.log
# Raspberry lauscht mittels netcat auf dem gewählten Port YYYY und sendet bei eingehenden Nachrichten als Antwort den Inhalt der Datei "/root/Antwort.txt"
# die eingehende Contact-ID-Nachricht wird in der Datei "/tmp/contact_id.log" gespeichert

if cat /tmp/contact_id.log | grep -q "1130"
# diese Log-Datei wird ständig auf das Vorhandensein einer bestimmten Zahlenkombination geprüft
# im Falle einer Meldung wird von XT1 z. B. gesendet: "YYYY 181130000016613" (Syntax der Contact-ID-Meldungen googeln bzw. austesten)

then

datei=$(date +%s%N)
# Sekunden und Nanosekunden seit 1970, um eindeutigen Dateinamen für das Callfile "datei" zu erhalten

echo "Channel: local/<Zielnummer>@from-internal\nMaxRetries: <number>\nRetryTime: <number>\nWaitTime: <number>\ncontext: Alarm\nextension: s\npriority: 1\nSet: MSG=Alarmtext1" > /tmp/$datei.call
# jetzt wird im Verzeichnis "/tmp" ein Asterisk-Callfile angelegt, in dem festgelegt wird, welche Telefonnummer angerufen und welche Sprachnachricht vorgespielt werden soll
# "\n" = Zeilenumbruch
# "context" sowie "extension" je nach eigener Asterisk-Konfiguration evtl. anpassen
# MaxRetries: <number> Die Anzahl der weiteren Wählversuche (falls besetzt oder nicht erreichbar)
# RetryTime: <number> Die Anzahl an Sekunden, die bis zum nächsten Wählversuch gewartet wird (Defaultwert 300 Sekunden)
# WaitTime: <number> Die Anzahl an Sekunden, die das System auf die Annahme des Anrufs warten soll
# "MSG": Name der Audio-Datei mit der gewünschten Sprachnachricht (passend zu Contact-ID "1130") (ohne die Dateiendung!) (Asterisk kann bzgl. Datenrate nur ganz bestimmte Audio-Formate verwenden !)
# diese Audio-Datei (z. B. "Alarmtext1.wav") muß bei meiner Asterisk-Version im Verzeichnis "/var/lib/asterisk/sounds/custom" abgelegt werden; evtl. anpassen!

mv /tmp/$datei.call /var/spool/asterisk/outgoing/
# jetzt wird das fertige call-file verschoben von "/tmp" in "/var/spool/asterisk/outgoing/" und von Asterisk sofort ausgeführt

fi

# je nach Bedarf können jetzt noch zusätzlich bei anderen Contact-ID-Meldungen (statt "1130" z. B. "XXXX") weitere call-files mit den passenden Audio-Dateien "Alarmtext2" usw. erzeugt werden
if cat /tmp/contact_id.log | grep -q "XXXX"
then
datei=$(date +%s%N)
echo "Channel: local/<Zielnummer>@from-internal\nMaxRetries: <number>\nRetryTime: <number>\nWaitTime: <number>\ncontext: Alarm\nextension: s\npriority: 1\nSet: MSG=Alarmtext2" > /tmp/$datei.call
mv /tmp/$datei.call /var/spool/asterisk/outgoing/
fi

done


2. Rechte des Scriptes ändern:

chmod 755 /root/Alarm.sh


3. die als Antwort an die XT1 gesendete Datei "/root/Antwort.txt" erstellen und speichern:

nano /root/Antwort.txt

XX
# Inhalt ist völlig beliebig; ein einzelner Buchstabe / eine Zahl reicht


4. das Script mit jedem Neustart des raspberry durch einen Eintrag in die Datei "/etc/crontab" ausführen:

echo "@reboot root sh /root/Alarm.sh > /dev/null &" >> /etc/crontab


5. Minimalkonfiguration der Extension "Alarm":

[Alarm]
exten => s,1,Answer
exten => s,2,Wait(2)
exten => s,n,Playback(custom/${MSG})
exten => s,n,Hangup

;--== end of [Alarm] ==--;
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26-05-2016, 10:40
Beitrag: #9
RE: Contact ID over IP (CID) / Webserver
Vielen Dank das sieht sehr durchdacht aus und deine Erklärungen helfen bestimmt, um es an die eigenen Bedürfnisse anzupassen.

Dann werde ich mich da mal am Wochenende dran versuchen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
18-08-2016, 12:44
Beitrag: #10
RE: Contact ID over IP (CID) / Webserver
Wie habt ihr eigentlich den Alarm simuliert, um euer Skript zu testen?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
28-08-2016, 08:14
Beitrag: #11
RE: Contact ID over IP (CID) / Webserver
per Browser:

http://IP_des_Raspberry:YYYY/XXXXXXXXXXX

# YYYY = Port, auf dem der Raspberry lauscht
# XXXXXXXXXXX = Contact-ID-Meldung

also z. B. :
http://192.168.88.118:7275/18175000005
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  LUPUSEC XT-1 DynDns Webserver Port Einstellung izapper 10 25.963 13-01-2014 17:24
Letzter Beitrag: Tomsec



Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste