Files
Domoticz/lua/script_time_livebox.lua
2025-03-06 11:09:58 +01:00

151 lines
4.7 KiB
Lua
Executable File
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---------------------------------
-- 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