151 lines
4.7 KiB
Lua
Executable File
151 lines
4.7 KiB
Lua
Executable File
---------------------------------
|
||
-- Script de détection de présence via livebox
|
||
-- Auteur : Sopalin
|
||
-- Date : 22 Juillet 2016
|
||
-- Nécessite un switch classique
|
||
-- source :
|
||
|
||
---------------------------------
|
||
require "scripts/lua/functions"
|
||
|
||
--recupere les minutes
|
||
time=os.time()
|
||
seconds=tonumber(os.date('%S',time))
|
||
minutes=tonumber(os.date('%M',time))
|
||
heures=tonumber(os.date('%H',time))
|
||
|
||
|
||
commandArray={}
|
||
|
||
function testActive(name, active)
|
||
if active then
|
||
--commandArray[name]='On'
|
||
switchIfNeeded(name, 'On')
|
||
else
|
||
switchIfNeeded(name, 'Off')
|
||
--commandArray[name]='Off'
|
||
end
|
||
debug("### Test active Name : "..name.." active "..tostring(active))
|
||
end
|
||
|
||
if heures == 8 then
|
||
commandArray['Variable:Detection_Manon_20H'] = "0"
|
||
commandArray['Variable:Detection_Theo_20H'] = "0"
|
||
--uservariables['Detection_Manon_20H'] = 0
|
||
--uservariables['Detection_Theo_20H'] = 0
|
||
--print('Detection_Theo_20H='..string(uservariables['Detection_Theo_20H']))
|
||
end
|
||
|
||
--time = os.date("*t")
|
||
if (minutes % 5 == 4) then
|
||
--if (true) then
|
||
|
||
--import des fontions pour lire le JSON
|
||
json = (loadfile "/opt/domoticz/scripts/lua/JSON.lua")()
|
||
|
||
--Récupération des informations sur la livebox
|
||
--Utilisation d'un script VBS sous windows
|
||
--Utilisation d'un script bash pour extraire les données
|
||
----------------------------------------------------------------
|
||
--Lecture des données
|
||
|
||
local f = assert(io.open("/tmp/Devices.txt","r"))
|
||
local livebox = f:read('*all')
|
||
f:close()
|
||
--Décodage ud fichier
|
||
local jsonLivebox = json:decode(livebox)
|
||
if jsonLivebox == nil then
|
||
return commandArray
|
||
end
|
||
|
||
--debug("DEBUG")
|
||
--debug(timedifference(otherdevices_lastupdate['Presence Thomas']))
|
||
|
||
commandArray['Domi']='Off'
|
||
commandArray['Domi_Work']='Off'
|
||
commandArray['Theo']='Off'
|
||
commandArray['Moi']='Off'
|
||
commandArray['Manon']='Off'
|
||
commandArray['orangepizero']='Off'
|
||
commandArray['jerome']='Off'
|
||
commandArray['R53PP2003X0247']='Off'
|
||
commandArray['R53PP2003X0247-1']='Off'
|
||
|
||
devices = jsonLivebox['status']
|
||
--Parcours du fichier pour vérifier la présence d'un téléphone
|
||
for result,status in pairs(devices) do
|
||
local name = status['Name']
|
||
debug("Name : "..name.." Mac : "..status['Key'].." "..tostring(status['Active']))
|
||
|
||
if (name == "Akhesa" or name == "Playstation3" or name == "DESKTOP-MUI1HPH" or name == "Theo") then
|
||
-- testActive('Theo', status['Active'])
|
||
if status['Active'] then
|
||
commandArray['Theo']='On'
|
||
if heures >= 19 then
|
||
commandArray['Variable:Detection_Theo_20H'] = "1"
|
||
end
|
||
end
|
||
end
|
||
if (--name == "Nefertiti" or
|
||
string.find(name,"Jerome") or name == "Achille" or string.find(name, "Moi")
|
||
or name == "iPhonedeJerome" or name == "iPhonedeJerome-1" or name == "jerome"
|
||
or name == "Iphone-jerome"
|
||
) then
|
||
if status['Active'] then
|
||
commandArray['Moi']='On'
|
||
end
|
||
end
|
||
if (name == "DomiPro" or name == "Domi") then
|
||
-- testActive('Domi', status['Active'])
|
||
if status['Active'] then
|
||
commandArray['Domi']='On'
|
||
end
|
||
end
|
||
if (name == "R53PP2003X0247-1" or name == "R53PP2003X0247") then
|
||
if status['Active'] then
|
||
commandArray['Domi_Work']='On'
|
||
end
|
||
end
|
||
if (name == "Akhenaton-3" or name == "Akhenaton") then
|
||
testActive("Akhenaton", status['Active'])
|
||
end
|
||
if (name == "Manon" or name == "AcerManon"
|
||
or name == "DESKTOP-KH8V15B" or name == "iPhone-de-Manon" or name == "IPhonedeManon")
|
||
then
|
||
-- testActive("Manon", status['Active'])
|
||
if status['Active'] then
|
||
commandArray['Manon']='On'
|
||
if heures >= 20 then
|
||
commandArray['Variable:Detection_Manon_20H'] = "1"
|
||
end
|
||
end
|
||
end
|
||
|
||
if (name == "TeleChambre" or name == "AcerManon" or name == "Akhesa" or name == "AkhesaNew"
|
||
or name == "Akhenaton" or name == "SoutiHP" or name == "Hackintosh"
|
||
or name == "Octoprint" or name == "jerome"
|
||
or name == "Volumio" or name == "LibreELEC"
|
||
or name == "Recovery") then
|
||
testActive(name, status['Active'])
|
||
end
|
||
|
||
if (--name == "orangepizero" or name == "orangepizero-1" or
|
||
name == "orangepizero-2") then
|
||
if status['Active'] then
|
||
commandArray['orangepizero']='On'
|
||
end
|
||
end
|
||
|
||
if (name == "RadiateurManon" or name == "RadiateurTheo" or name == "RadiateurBureau"
|
||
or name == "RadiateurChambre") then
|
||
if status['Active'] then
|
||
-- nothing
|
||
else
|
||
-- commandArray['SendNotification']='Alerte radiateur '..name..'#Alerte radiateur ne repond pas au ping '..name
|
||
end
|
||
end
|
||
end
|
||
end
|
||
|
||
return commandArray
|