Forum użytkowników automatyki budynkowej
Z-wave => Fibaro - skrypty itp => Wątek zaczęty przez: marecki_0luk1 w Marzec 25, 2015, 10:40:12 pm
-
Urządzenie wirtualne pokazujące mój komputerek z mozliwościa PING
--[[
%% properties
%% globals
--]]
local virtualId = fibaro:getSelfId();
local iconIdON = 1016;
local iconIdOFF = 1015;
local _deviceIp = fibaro:getValue(virtualId, 'IPAddress');
local _devicePort = fibaro:getValue(virtualId, 'TCPPort')
local _maxRetryProcess = 5;
local currentICON;
if tostring(fibaro:getGlobalValue('glComputerState')) == "1" then
fibaro:call(virtualId, "setProperty", "currentIcon", iconIdON);
elseif tostring(fibaro:getGlobalValue('glComputerState')) == "0" then
fibaro:call(virtualId, "setProperty", "currentIcon", iconIdOFF);
end;
fibaro:log("Start process");
local function _ping(retry)
retry = retry or 0;
local tcpSocket = Net.FTcpSocket(_deviceIp, _devicePort);
tcpSocket:setReadTimeout(250);
fibaro:log("Search on the local network, try #" .. retry .. " please wait...");
fibaro:sleep(250);
--send packet
local bytes, errorCode = tcpSocket:write("ping");
--check for error
if errorCode == 0 then
return true;
else
if retry < _maxRetryProcess then
fibaro:call(virtualId, "setProperty", "currentIcon", iconIdOFF);
fibaro:log("Retry process, please wait...");
fibaro:sleep(1000);
return _ping(retry + 1);
end
return false;
end
end
local f, result = pcall(_ping);
if (f) then
if (result == true) then
fibaro:log("Server has been found, is awake and listening.");
fibaro:call(virtualId, "setProperty", "currentIcon", iconIdON);
fibaro:setGlobal('glComputerState', "1")
else
fibaro:log("Server was not found!");
fibaro:call(virtualId, "setProperty", "currentIcon", iconIdOFF);
fibaro:setGlobal('glComputerState', "0")
end
else
fibaro:log("Error: " .. f);
fibaro:call(virtualId, "setProperty", "currentIcon", iconIdOFF);
end
-
Czy pomógł by mi ktoś przerobić ten skrypt ?
Chciałbym aby skrypt przeszukał siec od 192.168.1.1 do 192.168.1.255
Jesli znajdzie ip zdefiniowane w skrypcie (a bedzie ich 10) to napisze ze to telefon ani, następny że to telefon kamila itd..
a jesłi znajdzie ip ktore nie jest zdefiniowane to napisze ze mamy w sieci goscia
-
local lvn_DeviceID = fibaro:getSelfId();
local lvs_SearchDeviceIP = '192.168.1.';
local lvn_SearchDeviceIP ;
local lvn_SearchDevicePort = 80;
local lvn_RetryNum = 1;
fibaro:log("Scan network");
local function fb_ping(ip_retry, ip_SearchDeviceIP, ip_SearchDevicePort)
ip_retry = ip_retry or 0;
local tcpSocket = Net.FTcpSocket(lvn_SearchDeviceIP, lvn_SearchDevicePort);
tcpSocket:setReadTimeout(250);
fibaro:log("Search on the local network, try #" .. ip_retry .. " please wait...");
fibaro:sleep(250);
--send packet
local bytes, errorCode = tcpSocket:write("ping");
--check for error
if errorCode == 0 then
return true;
else
if ip_retry < lvn_RetryNum then
fibaro:call(lvn_DeviceID, "setProperty", "currentIcon", iconIdOFF);
fibaro:log("Retry process, please wait...");
fibaro:sleep(1000);
return fb_ping(ip_retry + 1);
end
return false;
end
end
for i=1, 254, 1 do
lvn_SearchDeviceIP = lvs_SearchDeviceIP .. i;
--fibaro:debug('Searching for IP: ' .. lvn_SearchDeviceIP);
lvb_result = fb_ping(lvn_RetryNum, lvn_SearchDeviceIP, lvn_SearchDevicePort);
if lvb_result then
fibaro:debug('IP: ' .. lvn_SearchDeviceIP .. ' found');
end;
end;
-
male pytanko gdzie znajde id ikon??
-
LUA nie znam :(
czy ktoś z Koleżanek/Kolegów może zmodyfikować tak, aby po wykryciu w sieci konkretnego IP zmieniało wartość zmiennej?
-
male pytanko gdzie znajde id ikon??
http://IP_CENTRALI/api/icons
-
LUA nie znam :(
czy ktoś z Koleżanek/Kolegów może zmodyfikować tak, aby po wykryciu w sieci konkretnego IP zmieniało wartość zmiennej?
ale to właśnie tak działa..... pierwszy post.
-
Czyli wydało się, że się nie znam ...
Możesz mi przygotować ten skrypt z moimi danymi dla jednego urządzenia? Myślę, że mając gotowca z resztą urządzeń sobie poradzę.