ABUS Secvest IP mit Home Center steuern

Hallo !

Ich habe hier ein VBS Script welches die Secvest IP Alarmanlage steuern kann.

Kann man das per LUA und virtual Device für das Home Center 2 umschreiben um die Alarmanlage zu aktivieren/deaktivieren/Status abzufragen ?

'==========================================================================
'
' VBScript Source File -- Created with SAPIEN Technologies PrimalScript 2007
'
' NAME: ipsecvest.vbs
'
' AUTHOR:  Dietmar Klein
' DATE  : 29.12.2011
'
' COMMENT: 
'
'==========================================================================
'On Error Resume Next

If WScript.Arguments.Count <> 4 Then WebError("Wrong number of arguments")
strHost=WScript.Arguments(0)
strUsername=WScript.Arguments(1)
strPassword=WScript.Arguments(2)
strCmd=WScript.Arguments(3)

strOverview="getOverviewStatus.cgi"
strStatus="getMode.cgi?Source=Webpage"
strIntern="setMode.cgi?Mode=PartSet&Source=Webpage"
strExtern="setMode.cgi?Mode=Set&Source=Webpage"
strOff="setMode.cgi?Mode=Unset&Source=Webpage"
strNative=Right(strCmd,Len(strCmd)-6)

set objHttp = WScript.CreateObject("WinHttp.WinHttpRequest.5.1")
If objHttp Is Nothing Then Set objHttp = WScript.CreateObject("WinHttp.WinHttpRequest")
LogonSecvestIP strHost,strUsername,strPassword
	
Select Case lcase(strCmd)
  Case "overview"
    wscript.Echo CmdSecvestIP(strHost,strOverview)

  Case "status"
    If left(CmdSecvestIP(strHost,strStatus),10) = "Mode=Unset" Then WScript.Echo left(CmdSecvestIP(strHost,strStatus),10)
 
  Case "intern"
  	tempStatus=CmdSecvestIP(strHost,strStatus)
  		If left(TempStatus,12)<>"Mode=PartSet"Then
 			If left(TempStatus,10)="Mode=UnSet" Then 
  				CmdSecvestIP strHost,strIntern
  			else	
	  				CmdSecvestIP strHost,strIntern	
				Do While  instr(CmdSecvestIP(strHost,strStatus),"Mode=Busy") > 0
					wscript.sleep 500
				Loop
  				CmdSecvestIP strHost,strIntern	
  		 	End If
  		End If
		Do While  instr(CmdSecvestIP(strHost,strStatus),"Mode=Busy") > 0
			wscript.sleep 500
		Loop
	WScript.Echo CmdSecvestIP(strHost,strStatus)

  Case "extern"
  	tempStatus=CmdSecvestIP(strHost,strStatus)
  		If instr(TempStatus,"Mode=Set")=0 Then
  			If instr(TempStatus,"Mode=UnSet")<0 Then 
  				CmdSecvestIP strHost,strExtern
  			else	
  				CmdSecvestIP strHost,strExtern	
					Do While  instr(CmdSecvestIP(strHost,strStatus),"Mode=Busy") > 0
						wscript.sleep 500
					Loop
  				CmdSecvestIP strHost,strExtern	
  		 	End If
  		End If
		Do While  instr(CmdSecvestIP(strHost,strStatus),"Mode=Busy") > 0
			wscript.sleep 500
		Loop
	WScript.Echo CmdSecvestIP(strHost,strStatus)

  Case "off"
	CmdSecvestIP strHost,strOff
		Do While  instr(CmdSecvestIP(strHost,strStatus),"Mode=Busy") > 0
			wscript.sleep 500
		Loop
	WScript.Echo CmdSecvestIP(strHost,strStatus)

  Case Else
    If Left(strCmd,6)<>"native" Then WebError("Unknown command")
    strCmd=Right(strCmd,Len(strCmd)-6)
    WScript.Echo CmdSecvestIP(strHost,strCmd)	
End Select

	
Function LogonSecvestIP(strHost,strUsername,strPassword)
	objHttp.Open "POST", "http://"&strHost&"/login.cgi"
	objHttp.Send "Language=english&UserName="&strUsername&"&Password="&strPassword
	  strResponse=objHttp.ResponseText
End Function

Function CmdSecvestIP(strHost,strCmd)
	objHttp.Open "GET", "http://"&strHost&"/"&strCmd
	objHttp.Send ""
	If Not (objHttp.statusText = "OK") Then
	  WScript.Echo "Error: " & objHttp.statusText
	  WScript.Quit
	Else	
	  	CmdSecvestIP=objHttp.ResponseText
	End If 
End Function

Function WebError(Errormessages)
	WScript.echo Errormessages
	WScript.Quit
End Function

Hi,

klar, geht. Sind einfache POST und GET-Befehle. :wink:

Gruß

Sorry, scheint niemanden zu Interessieren, ist ja auch ein Nieschenprodukt, kann ich verstehen. Habs immer noch nicht hin bekommen.

Hi,

technisch ist das sicher möglich. Viele werden dieses Produkt aber nicht im Einsatz haben, weshalb hier niemand eine fertige Lösung präsentieren kann.

Was hast du denn bisher?

Gruß

Leider gar nichts, Basics in Lua bekomme ich ja noch hin, aber hier scheitert es ja schon daran die richtigen Befehle zu finden.

Das Problem ist, das man sich ja nicht direkt per http://user:pass@IP… anmelden kann sondern scheinbar ein Cookie oder sowas gesetzt werden muss, erst danach ist eine Steuerung möglich.

Hi,

nein… Es wird kein Cookie gesetzt. Über den Browser kannst du nur ein GET-Befehl durchführen. Hierbei handelt es sich aber unter anderem um einen POST-Befehl, welcher mit dem entsprechenden Skript umgesetzt werden kann.

Du müsstest schon ein wenig selbst mitbringen, damit dir jemand helfen kann. Wenn du nichts selbst einbringen kannst, dann wird es sehr schwer dies zu realisieren.

Gruß

Jedenfalls kann ich es nicht “übersetzen” in Lua, vielleicht findet sich ja jemand der sich gegen eine Aufwandsentschädigung damit beschäftigen möchte.

Ok… Für 1500 € mach ich es :wink:

Sorry…für den Preis kauf ich mir ne von Haus (Fibaro) aus unterstützte Anlage lol oder mach nen Basic-to-LUA Kurs