IPSymcon goes SecvestIP

Hallo Zusammen,

ich habe mir mal ein kleines Programm zur Fernbedienung einer SecvestIP geschrieben.
Motivation dazu waren mangelhafte Lösungen bzgl. Bedienung und Visualisierung die seitens ABUS zur Verfügung gestellt werden.

Das Programm funktioniert nur, wenn das Webinterface der IPSecvest auf Port 80 liegt
Leider gab es noch einen Fehler bei dem Status Set und Partset. Die neue Version ist bereits hochgeladen.

Anbei das Programm:
ipsecvest.zip (138 KB)

Nach dem entzippen kann man das von einer Kommandozeile starten. Es werden vier Parameter benötigt:
1.) IP-Adresse der SecvestIP
2.) Benutzername
3.) Password
4.) Kommando

Als Kommando werden folgende Schlüsselwörter akzeptiert:
overview, status, intern, extern, off

z.B. ipsecvest.exe 192.168.0.222 Username Password overview

intern schaltet natürlich intern scharf
extern schaltet natürlich extern scharf
off schaltet natürlich aus

overview liefert eine Übersicht:
InputCH1=OFF
InputCH2=OFF
InputCH3=OFF
InputVCH1=OFF
InputVCH2=OFF
InputVCH3=DEACTIVATED
OutputCH1=OFF
OutputCH2=OFF
OutputWired=OFF
AlarmPowerFail=OFF
AlarmLowBattery=OFF
AlarmFault=OFF
AlarmFire=OFF
AlarmTechnical=OFF
AlarmBurglary=OFF
AlarmEntry=OFF
AlarmPanic=OFF

status, intern, extern, off liefert den Zustand der SecvestIP
intern aktiv => Mode=PartSet
extern aktiv => Mode=Set
aus => Mode=UnSet
belegt (wenn man zuschnell den Status wechselt) => Mode=Busy
Lernmodus => Mode=Sleep

Als besondern Gimick, für alle die spielen wollen, kann man auch native strings zur Anlage senden. Dazu muss nur ein native vorangestellet werden.

Möchte man zum Beispiel Datum/Uhrzeit der SecvestIP abfragen (getTimeString.cgi) kann man dies mit:
ipsecvest.exe 192.168.0.222 Username Password nativegetTimeString.cgi

Ich denke das ist eine gute Basis um die Secvest ins IPS einzubinden. Leider tue ich mich damit immer noch schwer, da mir das Konzept con IPS immer noch nicht zugelaufen ist. Hab da wohl einige Bretter vor dem Kopf. Aber vielleicht nutzt das Prog ja anderen, die dann Ihre Lösungen vorstellen :smiley:

Feedback ist natürlich Willkommen
Dietmar

Hi

hat man damit was anfangen können ???

Lösungen ???

:confused:

Hallo,

mich würde auch interessieren ob das getestet wurde und wie Eure Erfahrungen in der Kommunikation zwischen IPS und der Secvest IP sind.

Schöne Grüße
Stephan

Hallo und vielen Dank für die exe!

Auch mir als Laien ist es problemlos möglich die IPSecvest aus IPS heraus scharf und unscharf zu schalten.

Gerne würde ich nun auch noch in regelmäßigen Abständen oder bei Bedarf den Status auslesen, in eine Variable schreiben und weiterverarbeiten. Hierzu reichen meine Kenntnisse allerdings leider nicht aus.

In der DOS-Box (cmd) liefert mir die Anlage den Overview bzw. den Status aber wie kann ich Status / Overview aus IPS heraus abfragen und in Variablen speichern?

Vielen Dank vorab
Stephan

Hallo Stephan,

schön, das doch noch jemand damit etwas anfangen kann. Ich habe das mit einem Script gelöst das zyklisch ausgeführt wird oder über einen „Refresh“ Taster. Die Ergebnisse lasse ich mir dann an HomeMatic Funk-Statusanzeige. WIe das gelöst ist, kannst du im script sehen.

Gruß,
Dietmar


<?
$rueckgabe = IPS_Execute("c:\ip-symcon\scripts\ipsecvest.exe", "WWW.XXX.YYY.ZZZ USER PASSWORD overview", false, true);

if (strpos($rueckgabe,"InputCH2=OFF")>0) {
Setvalue(24170 /*[Alarmanlage\Haustuer]*/ ,True);
}
else  {
Setvalue(24170 /*[Alarmanlage\Haustuer]*/ ,False);
}

if (strpos($rueckgabe,"InputCH3=OFF")>0 OR (strpos($rueckgabe,"InputCH3=DEACTIVATED"))) {
Setvalue(58567 /*[Alarmanlage\1. Stock]*/ ,True);
@HM_WriteValueString(31586 /*[var\Statusanzeige\KEY 04 Fenster 1.OG]*/ , "LED_STATUS", "2");
}
else  {
Setvalue(58567 /*[Alarmanlage\1. Stock]*/ ,False);
@HM_WriteValueString(31586 /*[var\Statusanzeige\KEY 04 Fenster 1.OG]*/ , "LED_STATUS", "1");
}

if (strpos($rueckgabe,"InputVCH1=OFF")>0) {
Setvalue(29512 /*[Alarmanlage\Parterre]*/ ,True);
@HM_WriteValueString(18033 /*[var\Statusanzeige\KEY 05 Fenster EG]*/ , "LED_STATUS", "2");
}
else  {
Setvalue(29512 /*[Alarmanlage\Parterre]*/ ,False);
@HM_WriteValueString(18033 /*[var\Statusanzeige\KEY 05 Fenster EG]*/ , "LED_STATUS", "1");
}

if (strpos($rueckgabe,"InputVCH2=OFF")>0) {
Setvalue(49438 /*[Alarmanlage\Keller]*/ ,True);
@HM_WriteValueString(48581 /*[var\Statusanzeige\KEY 06 Fenster Keller]*/ , "LED_STATUS", "2");
}
else  {
Setvalue(49438 /*[Alarmanlage\Keller]*/ ,False);
@HM_WriteValueString(48581 /*[var\Statusanzeige\KEY 06 Fenster Keller]*/ , "LED_STATUS", "1");
}

$rueckgabe = ".".IPS_Execute("c:\ip-symcon\scripts\ipsecvest.exe", "WWW.XXX.YYY.ZZZ USER PASSWORD", false, true);
//echo $rueckgabe;
if (strpos($rueckgabe,"Mode=Unset")>0) {

Setvalue(10384 /*[Alarmanlage\Aus]*/ ,True);
@HM_WriteValueString(17321 /*[var\Statusanzeige\KEY 01 Aus]*/, "LED_STATUS", "2");
Setvalue(25595 /*[Alarmanlage\Intern Aktiv]*/ ,false);
@HM_WriteValueString(15854 /*[var\Statusanzeige\KEY 02 Extern]*/, "LED_STATUS", "0");
Setvalue(30800 /*[Alarmanlage\Extern Aktiv]*/ ,false);
@HM_WriteValueString(51193 /*[var\Statusanzeige\KEY 03 Intern]*/, "LED_STATUS", "0");

}
if (strpos($rueckgabe,"Mode=PartSet")>0) {

Setvalue(10384 /*[Alarmanlage\Aus]*/ ,false);
@HM_WriteValueString(17321 /*[var\Statusanzeige\KEY 01 Aus]*/, "LED_STATUS", "0");
Setvalue(25595 /*[Alarmanlage\Intern Aktiv]*/ ,true);
@HM_WriteValueString(15854 /*[var\Statusanzeige\KEY 02 Extern]*/, "LED_STATUS", "1");
Setvalue(30800 /*[Alarmanlage\Extern Aktiv]*/ ,false);
@HM_WriteValueString(51193 /*[var\Statusanzeige\KEY 03 Intern]*/, "LED_STATUS", "0");
}
if (strpos($rueckgabe,"Mode=Set")>0) {

Setvalue(10384 /*[Alarmanlage\Aus]*/ ,false);
@HM_WriteValueString(17321 /*[var\Statusanzeige\KEY 01 Aus]*/, "LED_STATUS", "0");
Setvalue(25595 /*[Alarmanlage\Intern Aktiv]*/ ,false);
@HM_WriteValueString(15854 /*[var\Statusanzeige\KEY 02 Extern]*/, "LED_STATUS", "0");
Setvalue(30800 /*[Alarmanlage\Extern Aktiv]*/ ,true);
@HM_WriteValueString(51193 /*[var\Statusanzeige\KEY 03 Intern]*/, "LED_STATUS", "1");
}
?>

Hallo

was muß man alles anlegen ?? welche Variablen :confused:

Da ich nun wiederholt über PN befragt wurde, wie man die IPSecvest einbindet schreibe ich das mal hier hinein.

Diese Variablen sollten als boolean angelegt werden:
InputCH1
InputCH2
InputCH3
InputVCH1
InputVCH2
Aus
Intern Aktiv
Extern Aktiv

Die If Abfrage für die Zone InputCh1 muss dann für jede Zone kopiert werden. Bitte die Reihenfolge wie in den o.a. Variablen benutzen, sonst haut es nicht hin.

ggf, kann die If Abfrage durch
if (strpos($rueckgabe,„InputCH3=OFF“)>0 OR (strpos($rueckgabe,„InputCH3=DEACTIVATED“))) {
erweitert werden, falls eine deaktivierte Zone abgefragt werden soll.

Die //Abfrage Status ermittelt dann den Status der Anlage
Wer mag, kann das ja mal in einer select…case umbauen.

Ich hoffe das hilft für den Einstieg. Wer weiter Fragen hat, sollte das hier im Forum tun, auch andere davon profitieren können.

Gruß,
Dietmar.

Das Script welches für jeden passen sollte, sieht dann so aus:


<?
//Abfrage Zonen
$rueckgabe = IPS_Execute("c:\ip-symcon\scripts\ipsecvest.exe", "192.168.1.201 8901 8901 overview", false, true);

if (strpos($rueckgabe,"InputCH1=OFF")>0) {
Setvalue(XXXXX /*[InputCH1]*/ ,True);
}
else  {
Setvalue(XXXXX /*[InputCH1]*/ ,False);
}

//Abfrage Status
$rueckgabe = ".".IPS_Execute("c:\ip-symcon\scripts\ipsecvest.exe", "192.168.1.201 8901 8901 status", false, true);
if (strpos($rueckgabe,"Mode=Unset")>0) {

Setvalue(XXXXX /*[Aus]*/ ,True);
Setvalue(XXXXX /*[Intern Aktiv]*/ ,false);
Setvalue(XXXXX /*[Extern Aktiv]*/ ,false);

}
if (strpos($rueckgabe,"Mode=PartSet")>0) {

Setvalue(XXXXX /*[Aus]*/ ,false);
Setvalue(XXXXX /*[Intern Aktiv]*/ ,true);
Setvalue(XXXXX /*[Extern Aktiv]*/ ,false);
}
if (strpos($rueckgabe,"Mode=Set")>0) {

Setvalue(XXXXX /*[Aus]*/ ,false);
Setvalue(XXXXX /*[Intern Aktiv]*/ ,false);
Setvalue(XXXXX /*[Extern Aktiv]*/ ,true);
}

?>

Hallo Dietmar,

vielen dank für deine Hilfe. Aber irgendwie klappt das noch nicht so :confused:

Die ipsecvest.exe befindet sich in c:\ip-symcon\scripts\ipsecvest.exe

Ich habe jetzt die Variablen alle angelegt. Welches Profil muß ich denn auswählen?

Anbei das Script was ich auf mein IP Symcon angepasst habe.

Vielen Dank im Voraus

Gruß Mike

  <?
//Abfrage Zonen
$rueckgabe = IPS_Execute("c:\ip-symcon\scripts\ipsecvest.exe", "192.168.178.7 user password overview", false, true);

if (strpos($rueckgabe,"InputCH1=OFF")>0) {
Setvalue(59603 /*[Webfront\Secvest IP\InputCH1]*/ ,True);
}
else  {
Setvalue(59603 /*[Webfront\Secvest IP\InputCH1]*/ ,False);
}


//Abfrage Status
$rueckgabe = ".".IPS_Execute("c:\ip-symcon\scripts\ipsecvest.exe", "192.168.178.7 user password status", false, true);
if (strpos($rueckgabe,"Mode=Unset")>0) {

Setvalue(33021 /*[Webfront\Secvest IP\Aus]*/ ,True);
Setvalue(42854 /*[Webfront\Secvest IP\Intern Aktiv]*/ ,false);
Setvalue(10053 /*[Webfront\Secvest IP\Extern Aktiv]*/ ,false);

}
if (strpos($rueckgabe,"Mode=PartSet")>0) {

Setvalue(33021 /*[Webfront\Secvest IP\Aus]*/ ,false);
Setvalue(42854 /*[Webfront\Secvest IP\Intern Aktiv]*/ ,true);
Setvalue(10053 /*[Webfront\Secvest IP\Extern Aktiv]*/ ,false);
}
if (strpos($rueckgabe,"Mode=Set")>0) {

Setvalue(33021 /*[Webfront\Secvest IP\Aus]*/ ,false);
Setvalue(42854 /*[Webfront\Secvest IP\Intern Aktiv]*/ ,false);
Setvalue(10053 /*[Webfront\Secvest IP\Extern Aktiv]*/ ,true);
}

?>


Hallo Mike,

leider kann ich deinen Anhang nicht öffnen.
Bekommst Du eine Fehlermeldung?
Werden die variablen aktualisiert?

Hallo Dietmar,

jetzt solltest Du den Anhang öffnen können. Also eine Fehlermeldung bekomme ich nicht.

Wenn ich auf dem Webfront auf das IP Secvest Enter Symbol klicke, öffnet sich ein neues schwarzes Fenster.

Mike,

auf dem screenshot sehe ich, das die Variablen für den InputCH1 und InputCH2 gesetzt wurden. Stimmt der Status mit der IPSecvest überein?

Sonst sieht es so aus, als wenn der zweite Teil (Status) nicht ausgeführt wird.
Das sind aber auch ein paar Zeichen drin die da so nicht hingehören. Bei mir sind die zwar auch drin, aber entferne diese mal besser.

$rueckgabe = IPS_Execute(„c:\ip-symcon\scripts\ipsecvest.exe“, „192.168.178.7 admin 0166 status“, false, true);

Lass mich wissen, ob es etwas gebracht hat.

Jetzt hab ich selber einen Fehler im Script.:confused:
Muss jetzt erstmal danach suchen.
Ist vermutlich dann der gleiche wie bei dir.

Hi,

also ich habe die Zeichen geändert. Es kommt weiterhin keine Fehlermeldung, und am Status ändert sich leider auch nichts.

Der Status für die Variablen 1 und 2 ändert sich nicht. Egal ob ein Melder schaltet oder nicht, am Webfront ändert sich auch nichts. Ich hatte den CH1 Script kopiert und da die Variablen von CH2 mal eingegeben deswegen steht auch eine Akutalisierung von CH2 um 21.17

Ich spreche die Secvest IP über den Browser auf folgende IP an: http://192.168.178.7:81/login.cgi

Ich habe auch im Script hinter der 192.168.178.7:81 auch mal den Port mit dabei geschrieben. Leider ebenfals ohne erfolg.

Danke für deine Hilfe

So bei mir läuft es wieder.
Die Zeile muss wohl doch so heißen wir ursprünglich.
Habe aber keine Ahnung mehr warum und was das bewirkt.
Bitte füge hinter diese Zeile noch ein
echo $rueckgabe;

dann solltest du bei der Ausführung des scripts den Status ausgegeben bekommen

Also:

//Abfrage Status
$rueckgabe = „.“.IPS_Execute(„c:\ip-symcon\scripts\ipsecvest.exe“, „192.168.178.7 admin 0166 status“, false, true);
echo $rueckgabe;
if (strpos($rueckgabe,„Mode=Unset“)>0) {

Also bekomme jetzt beim Ausführen des Skriptes folgende Fehlermeldung:

.Error(98): Die Serververbindung konnte nicht hergestellt werden.

Wenn ich den Port mit angebe bekomme ich keine Fehlermeldung also 192.168.178.7:81

Aber ich kann im Webfront keinen Status bzw die Anlage nicht Scharf oder Unscharf schalten.

Es wird nur Port 80 als für das Interface der IPSecvest unterstützt.
Es gab einen Fehler bei der Ausgabe Set und Partset.
Ist korrigiert.

Hallo,

in der Skriptausgabe (über echo) wird der Status korrekt ausgelesen:

InputCH1=OFF
InputCH2=OFF
InputCH3=OFF
InputVCH1=DEACTIVATED
InputVCH2=OFF
InputVCH3=OFF
OutputCH1=OFF
OutputCH2=OFF
OutputWired=OFF
AlarmPowerFail=OFF
AlarmLowBattery=OFF
AlarmFault=OFF
AlarmFire=OFF
AlarmTechnical=OFF
AlarmBurglary=OFF
AlarmEntry=OFF
AlarmPanic=OFF

.Mode=Unset

Allerdings liefert das folgende Skript für InputCH1 immer ein false obwohl er eigentlich true sein sollte.

Ich kann im Skript keinen Fehler entdecken, ihr?

Schöne Grüße
Stephan

<?
//Abfrage Zonen
//$rueckgabe = IPS_Execute("c:\ip-symcon\scripts\ipsecvest.exe", "192.168.1.201 8901 8901 overview", false, true);
$rueckgabe = IPS_Execute("C:\IP-Symcon\ipsecvest.exe", "IP USER PW overview", false, true);

echo $rueckgabe;

if (strpos($rueckgabe,"InputCH1=OFF")>0) {
Setvalue(10127 /*[Alarmanlage\Auswertung\InputCH1]*/ ,True);
}
else  {
Setvalue(10127 /*[Alarmanlage\Auswertung\InputCH1]*/ ,False);
}

if (strpos($rueckgabe,"InputCH2=OFF")>0) {
Setvalue(36332 /*[Alarmanlage\Auswertung\InputCH2]*/ ,True);
}
else  {
Setvalue(36332 /*[Alarmanlage\Auswertung\InputCH2]*/ ,False);
}

if (strpos($rueckgabe,"InputCH3=OFF")>0) {
Setvalue(26337 /*[Alarmanlage\Auswertung\InputCH3]*/ ,True);
}
else  {
Setvalue(26337 /*[Alarmanlage\Auswertung\InputCH3]*/ ,False);
}

if (strpos($rueckgabe,"InputVCH1=OFF")>0) {
Setvalue(47220 /*[Alarmanlage\Auswertung\InputVCH1]*/ ,True);
}
else  {
Setvalue(47220 /*[Alarmanlage\Auswertung\InputVCH1]*/ ,False);
}

if (strpos($rueckgabe,"InputVCH2=OFF")>0) {
Setvalue(55784 /*[Alarmanlage\Auswertung\InputVCH2]*/ ,True);
}
else  {
Setvalue(55784 /*[Alarmanlage\Auswertung\InputVCH2]*/ ,False);
}

if (strpos($rueckgabe,"InputVCH3=OFF")>0) {
Setvalue(19648 /*[Alarmanlage\Auswertung\InputVCH3]*/ ,True);
}
else  {
Setvalue(19648 /*[Alarmanlage\Auswertung\InputVCH3]*/ ,False);
}

if (strpos($rueckgabe,"AlarmBurglary=OFF")>0) {
Setvalue(29704 /*[Alarmanlage\Auswertung\Einbruchsalarm]*/ ,True);
}
else  {
Setvalue(29704 /*[Alarmanlage\Auswertung\Einbruchsalarm]*/ ,False);
}

//Abfrage Status
//$rueckgabe = ".".IPS_Execute("c:\ip-symcon\scripts\ipsecvest.exe", "192.168.1.201 8901 8901 status", false, true);
$rueckgabe = ".".IPS_Execute("C:\IP-Symcon\ipsecvest.exe", "IP USER PW status", false, true);
echo $rueckgabe;

if (strpos($rueckgabe,"Mode=Unset")>0) {
Setvalue(44696 /*[Alarmanlage\Auswertung\Aus]*/ ,true);
Setvalue(34065 /*[Alarmanlage\Auswertung\Intern Aktiv]*/ ,false);
Setvalue(23253 /*[Alarmanlage\Auswertung\Extern Aktiv]*/ ,false);
}

if (strpos($rueckgabe,"Mode=PartSet")>0) {
Setvalue(44696 /*[Alarmanlage\Auswertung\Aus]*/ ,false);
Setvalue(34065 /*[Alarmanlage\Auswertung\Intern Aktiv]*/ ,true);
Setvalue(23253 /*[Alarmanlage\Auswertung\Extern Aktiv]*/ ,false);
}

if (strpos($rueckgabe,"Mode=Set")>0) {
Setvalue(44696 /*[Alarmanlage\Auswertung\Aus]*/ ,false);
Setvalue(34065 /*[Alarmanlage\Auswertung\Intern Aktiv]*/ ,false);
Setvalue(23253 /*[Alarmanlage\Auswertung\Extern Aktiv]*/ ,true);
}


?>

Hallo Stephan

ändere mal die Zonenabfrage von:
$rueckgabe = IPS_Execute(„C:\IP-Symcon\ipsecvest.exe“, „IP USER PW overview“, false, true);
auf
$rueckgabe = „.“.IPS_Execute(„C:\IP-Symcon\ipsecvest.exe“, „IP USER PW overview“, false, true);

Das gleiche Problem gab es auch bei darkmann2000.
Warum das so ist, kann ich dir nicht erklären, vielleicht liest ja ein PHP Kenner mit, der das erklären kann.

Gruß,
Dietmar

Hat funktioniert, vielen Dank!

Hast Du auch eine Erfahrung wie oft die Abfrage getriggert werden kann ohne, dass es zu einer Fehlfunktion der Secvest kommt?
Insbesondere die Scharf- und Unscharf-Schaltungen dürfen natürlich während einer Abfrage nicht beeinträchtigt werden.

Schöne Grüße
Stephan

PS: Kennst Du auch eine Möglichkeit per Skript einen Alarm der Secvest auszulösen?

Ich frage meine IPsecvest alle drei Minuten ab. Das seid nun fast drei Jahren. Bisher gab es nie Probleme mit diesem Zyklus.

Ich denke nicht, das es möglich ist, über das Webinterface einen Alarm auszulösen. Aus der Sicht von ABUS mach das sicher auch keinen Sinn.
Als Workaround könntest du einen Paniktaster benutzen, den du über irgendeinen Ausgang durch IPS schaltest.