URL via Script aufrufen

Hallo zusammen,

Ich habe eine Mobotix T25 Türanlage. Mittels einer URL wie z.B. sinngemäß http://User:PW@mobotix/control/rcontrol?action=sigout&profile=~Door kann man die Tür öffnen. Kann mir bitte eine erklären, wie ich ein Virtuelles Device erstellt, mit dem ich dann diese URL aufrufen kann?

Vielen Dank im Voraus!

Thorsten

Hi,

das geht folgendermaßen (Muss nur ein wenig angepasst werden):

https://www.siio.de/connected-home/kleine-lua-scripte-teil-7-online-status-abpruefen/

Gruß

Hallo boomx,

vielen Dank für Deine schnelle Antwort.

Ich komme damit ehrlich gesagt nicht richtig zurecht.

local IP = User:PW@mobotix/control/rcontrol?action=sigout&profile=~Door'
local PORT = 80
local versuche = 1

local iconOFFLINE = "181" -- ANPASSEN; Gerät ist offline
local iconONLINE = "180" -- ANPASSEN; Gerät ist online
local iconCHECK = "179" -- ANPASSEN; Gerät wird angepingt

if (result == true) then
    fibaro:debug(IP.. ':' .. PORT .. ' wurde gefunden.')
    fibaro:call(fibaro:getSelfId(), "setProperty", "currentIcon", iconONLINE)
  else
    fibaro:debug(IP.. ':' .. PORT .. ' wurde nicht gefunden.')
    fibaro:call(fibaro:getSelfId(), "setProperty", "currentIcon", iconOFFLINE)
    fibaro:call(2, "sendEmail", IP.. " ist derzeit nicht erreichbar")
end

Icons benötige ich nicht. Daher können ja die iconXXX-Zeilen weg.

Aber wie reduziere ich das Skript, damit nur die Seite aufgerufen wird?

Viele Grüße,

Thorsten

Hi,

das wichtigste hast du aus dem Code entfernt…

local IP = 'www.google.de'
local PORT = 80

local tcpSocket = Net.FTcpSocket(IP, PORT)
tcpSocket:setReadTimeout(250)
fibaro:sleep(250)	
local bytes, errorCode = tcpSocket:write('ping')
fibaro:debug(errorCode)

Gruß

Hallo boomx,

leider funktioniert das Skript nicht. Das mag aber auch evtl. daran liegen, dass es sich bei der “local IP” nicht um eine IP-Adresse oder Hostnamen handelt sondern um eine URL, wie z.B. http://User:PW@mobotix/control/rcontrol?action=sigout&profile=~Door

Binde ich das Skript als Lua Code in einem Virtual Device ein und führe ein Debug aus, bekomme ich als Ausgabe “[DEBUG] 22:52:36: 2”.

Erstelle ich eine LUA Szene, kommt aus Ausgabe im Debug-Fenster “22:59:45: line 4: attempt to index global ‘Net’ (a nil value)”. Zeile 4 ist “local tcpSocket = Net.FTcpSocket(IP, PORT)”.

Was mache ich hier noch falsch?

Viele Grüße,

Thorsten

In einer Szene funktioniert das Skript nicht, die Funktion gibt es nur in einem VD. Grundsätzlich ist es egal, welche Form die URL hat, das oben gepostete ist ja nur ein Beispiel. In dem Fall denke ich aber, dass deine URL für das HC2 nicht auflösbar ist…

Statt des Hostnamen habe ich fest die IP-Adresse eingetragen. Das kann es also nicht sein. Gibt es keinen Befehl ähnlich wie WGET?

Viele Grüße,

Thorsten

Nein, das Net.FTcpSocket ist der Standard dafür. Wenn der ErrorCode 2 ist, dann wird die URL nicht erreicht.

Gruß