Forum użytkowników automatyki budynkowej
Z-wave => Fibaro - skrypty itp => Wątek zaczęty przez: marcinwojciesz w Marzec 25, 2015, 09:50:50 pm
-
Robimy nowe urządzenie wirtualne z portem 80
klejamy
--[[
%% properties
%% globals
--]]
-- convert MAC adress, every 2 Chars (7-bit ASCII), to one Byte Char (8-bits)
function convertMacAddress(address)
local s = string.gsub(address, ":", "");
local x = ""; -- will contain converted MAC
for i=1, 12, 2 do
x = x .. string.char(tonumber(string.sub(s, i, i+1), 16));
end
return x;
end
fibaro:log("Start process");
-- MAC adress
local _macAddress = convertMacAddress("BB:AA:CC:77:88:00");
-- Create Magic Packet 6 x FF
local _magicPacket = string.char(0xff, 0xff, 0xff, 0xff, 0xff, 0xff);
-- Broadcast Address
local _broadcastAddress = "255.255.255.255";
-- Default port used
local _wakeOnLanPort = 9;
fibaro:sleep(750);
for i = 1, 16 do
_magicPacket = _magicPacket .. _macAddress;
end
fibaro:log("Magic packet successfully created");
fibaro:sleep(1000);
socket = Net.FUdpSocket();
socket:setBroadcast(true);
local bytes, errorCode = socket:write(_magicPacket, _broadcastAddress, _wakeOnLanPort);
--check for error
if errorCode == 0 then
fibaro:log("Successfully sent");
else
fibaro:log("Transfer failed");
end
-- clean up memory
socket = nil;
fibaro:sleep(1000);
fibaro:log("Please wait for the server startup.");
MAC ADRES podmieniamy na własny :)
i smiga
Niestety nie wiem czyj to był projekt :( ale działą i to się liczy.
-
wszystko śmiga, ale jak sprawdzić czy pakiet dotarł do komputera ?
Wyjaśniam o co mi chodzi:
Jesli komputer odebral pakiet (kabel lan podłączony) to powiedz że komp został włączony
Jeśli komputer nie odebrał pakietu to to powiedz że nie ma komunikacji
Coś na zasadzie pingu z urządzeniem.
-
A moze zrob ping po 15 sekundach?
-
no to by było najprostsze rozwiązanie, ale komunikat głosowy dostał bym dopiero po 15 sekundach.
Ciekaw jestem czy jest szansa na sprawdzenie czy dany mac adres jest podpiety do rutera, ale wydaje mi się że chyba pakiet w tym skrypcie jest wysyłany na ślepo na wcześniej zdefiniowany mac adres.
-
Mozesz sprawdzax w tabeli klientow w routerze
-
U mnie nie chce to dzialac, ponizej kod jaki mam w wirtualce, na aplikacji mWOL dziala a z Fibaro nie. Mam Wersję 3.6 czy to jest powod?
--[[
%% properties
%% globals
--]]
-- convert MAC adress, every 2 Chars (7-bit ASCII), to one Byte Char (8-bits)
function convertMacAddress(address)
local s = string.gsub(address, ":", "");
local x = ""; -- will contain converted MAC
for i=1, 12, 2 do
x = x .. string.char(tonumber(string.sub(s, i, i+1), 16));
end
return x;
end
fibaro:log("Start process");
-- MAC adress
local _macAddress = convertMacAddress("40:61:86:8B:3C:4C");
-- Create Magic Packet 6 x FF
local _magicPacket = string.char(0xff, 0xff, 0xff, 0xff, 0xff, 0xff);
-- Broadcast Address
local _broadcastAddress = "255.255.255.0";
-- Default port used
local _wakeOnLanPort = 9;
fibaro:sleep(750);
for i = 1, 16 do
_magicPacket = _magicPacket .. _macAddress;
end
fibaro:log("Magic packet successfully created");
fibaro:sleep(1000);
socket = Net.FUdpSocket();
socket:setBroadcast(true);
local bytes, errorCode = socket:write(_magicPacket, _broadcastAddress, _wakeOnLanPort);
--check for error
if errorCode == 0 then
fibaro:log("Successfully sent");
else
fibaro:log("Transfer failed");
end
-- clean up memory
socket = nil;
fibaro:sleep(1000);
fibaro:log("Please wait for the server startup.");
-
Już działa, tu był problem 255.255.255.0 :)