Gå til innhold
  • Bli medlem
Støtt hjemmeautomasjon.no!

LUA kode for å registrere om mobil/nettbrett er tilkoblet wifi nettet.


Anbefalte innlegg

Ettersom jeg ikke kan LUA programmering, blir enhver liten idé til et helt prosjekt.

Jeg prøver å sette opp HC2 fra bunnen av, med LUA i stedet for blokk scener.

I håp om at andre har en bedre fungerende løsning de kan dele, eller prøver å finne en løsning på samme utfordring, poster jeg min kode.

 

Det jeg ønsker å oppnå:

Når jeg er på jobb, har jeg alltid med nettbrett, ellers ligger nettbrett alltid hjemme.

Vil derfor ha en variabel som anngir om jeg er på jobb eller hjemme.

 

Dersom telefonen min er hjemme, er jeg hjemme, hvis ikke, er jeg borte.

Vil ha en variabel som forteller om jeg er hjemme eller borte.

 

Med disse 2 variablene kan systemet skille mellom om jeg er hjemme, borte eller på jobb.

 

Utfordringer med denne koden:

Dersom telefonen går i standby, forsvinner den fra wifi nettverket.

 

--------------------------------------------------------------------------------------    
-- Create a virtual device, and 2 variables named   							    --
-- Nettbrett_hjemme and Note8_hjemme. 														--
-- Copy this code into main loop of VD											    --
--------------------------------------------------------------------------------------


-------------------------------------------------------------------------------------- 
-- Setup  																			--
-------------------------------------------------------------------------------------- 

local device1 = "00:00:00:00:00:00"; -- mac adress of device 1, Huawei M2-801L
local device2 = "00:00:00:00:00:00"; -- mac adress of device 2, Samsung Galaxy Note 8
local Away = 15; -- Minutes delay before setting a device as away from home, if not found
local ProgramDelay = 5; -- seconds delay between each time the program runs

-------------------------------------------------------------------------------------- 
-- Checking if device is registered in wifi network							    	--
-------------------------------------------------------------------------------------- 

local HC2 = Net.FHttp("127.0.0.1", 11111); -- Do not change IP or port!

for j=1,4 do
  local response, status, errorCode = HC2.POST(HC2, "/api/networkDiscovery/arp", "{}");
  local jsonTable = json.decode(response) 
  
  fibaro:debug ("response "..response);
  
	for i, name in ipairs(jsonTable) do
	    if(name['mac'] == device1) then
	  		fibaro:setGlobal("Nettbrett_hjemme", 1); -- variable name
	    elseif(name['mac'] == device2) then
	    	fibaro:setGlobal("Note8_hjemme", 1); -- variable name
    	end
	end

end

--------------------------------------------------------------------------------------
-- Timer, for setting device status to away											--
--------------------------------------------------------------------------------------


local Device1Time = fibaro:getGlobalModificationTime("Nettbrett_hjemme"); -- variable name
local Device2Time = fibaro:getGlobalModificationTime("Note8_hjemme"); -- variable name
local TimeNow = os.time()
local Device1Away = TimeNow - Device1Time
local Device2Away = TimeNow - Device2Time

if(Device1Away >= (Away * 60)) then
    fibaro:setGlobal("Nettbrett_hjemme", 0); -- variable name
end

if(Device2Away >= (Away * 60)) then
    fibaro:setGlobal("Note8_hjemme", 0); -- variable name
end



fibaro:debug ("Modification time device 1 "..Device1Time);
fibaro:debug (os.date('%A, %B %d %Y at %H:%M UTC', Device1Time));
fibaro:debug ("Modification time device 2 "..Device2Time);
fibaro:debug (os.date('%A, %B %d %Y at %H:%M UTC', Device2Time));
fibaro:debug (os.date('%A, %B %d %Y at %H:%M UTC', TimeNow));
fibaro:debug ("Time since change, device 1 "..Device1Away);
fibaro:debug ("Time since change, device 1 "..Device2Away);

fibaro:sleep(ProgramDelay*1000);

 

Endret av Teza
Lenke til kommentar
Del på andre sider

Bli med i samtalen

Du kan publisere innhold nå og registrere deg senere. Hvis du har en konto, logg inn nå for å poste med kontoen din.

Gjest
Skriv svar til emnet...

×   Du har limt inn tekst med formatering.   Lim inn uten formatering i stedet

  Du kan kun bruke opp til 75 smilefjes.

×   Lenken din har blitt bygget inn på siden automatisk.   Vis som en ordinær lenke i stedet

×   Tidligere tekst har blitt gjenopprettet.   Tøm tekstverktøy

×   Du kan ikke lime inn bilder direkte. Last opp eller legg inn bilder fra URL.

×
×
  • Opprett ny...

Viktig informasjon

Vi har plassert informasjonskapsler/cookies på din enhet for å gjøre denne siden bedre. Du kan justere dine innstillinger for informasjonskapsler, ellers vil vi anta at dette er ok for deg.