Script detection de presence
Publié : 13 janv. 2016, 05:46
bonjour,
je souhaite m'inspirer de ce script LUA, pour vérifier la présence de 2 smartphones chez moi. tout en utilisant la latence de 30mn.
exemple:
phone1: 192.168.1.100
phone2: 192.168.1.101
Avoir 2 switch virtuel
phone1
phone2.
Si le phone1 est est détecté a la maison =>passer sur ON le switch phone1, et pas de changement d'état du switch phone2 =OFF si ce dernier est absent.
Merci encore pour votre aide.
je souhaite m'inspirer de ce script LUA, pour vérifier la présence de 2 smartphones chez moi. tout en utilisant la latence de 30mn.
exemple:
phone1: 192.168.1.100
phone2: 192.168.1.101
Avoir 2 switch virtuel
phone1
phone2.
Si le phone1 est est détecté a la maison =>passer sur ON le switch phone1, et pas de changement d'état du switch phone2 =OFF si ce dernier est absent.
Code : Tout sélectionner
---------------------------------------------------------------------------
-- Script : script_time_PRESENCE_MAISON.lua
--
-- Objectif : Script de détection de la présence des occupants d'un
-- lieu en fonction de la connexion de leurs périphériques
-- réseau au réseau wifi du lieu.
--
-- Auteur : Bastien DUMAS
-- Date : 27/05/2015
-- Version : 2.0
---------------------------------------------------------------------------
---------------------------------------------------------------------------
-- Fonctions
---------------------------------------------------------------------------
local debugging = false
function crache_des_log (s)
if (debugging) then
print (s);
end
end
---------------------------------------------------------------------------
-- Variables
---------------------------------------------------------------------------
----------------------------------------------------------------
-- Tableau des personnes
----------------------------------------------------------------
personne = {};
-- 1ere personne :
-- - nom de la personne // du périphérique
-- - ip du périphérique
personne[1] = {nom="phone1", ip = "192.168.1.100"}
--2eme personne :
-- - nom de la personne // du périphérique
-- - ip du périphérique
personne[2] = {nom="phone2", ip = "192.168.1.101"}
----------------------------------------------------------------
-- Tableau des périphériques à controler
-- ATTENTION seul les périphériques "ON/OFF" sont gérés
----------------------------------------------------------------
devices = {'phone1','phone2'}; ==>>>?!!!
----------------------------------------------------------------
-- Initialisation des variables
---------------------------------------------------------------
local temps_latence = 30 -- Temps de latence admis pour passer la présence à Off
crache_des_log ("temps_latence : " .. temps_latence)
local user_variable_name = "last_ping" -- Nom de la variable utilisateur représentant le temps d'absence
local virtual_device_name= "PRESENCE_MAISON" -- Nom du périphérique virtuel représentant la présence
-- Variables de travail - NE PAS TOUCHER
local ping_success = false
local last_ping = tonumber(uservariables[user_variable_name])
local last_update = otherdevices_lastupdate[virtual_device_name]
local device_presence = otherdevices[virtual_device_name]
crache_des_log ("device_presence : " .. device_presence)
---------------------------------------------------------------------------
-- Script
---------------------------------------------------------------------------
commandArray = {}
print "=========== Script de détection de présence des habitants (v2.0) ==========="
print ("Derniere mise à jour de la presence : "..last_update.."....")
--Pour chaque personne
for i, v in pairs(personne) do
local ping = false;
local string = 'ping -c1 '..v.ip
crache_des_log ("chaine de ping : " .. string)
ping = os.execute(string); -- on ping l'appareil associé
if (ping) then
crache_des_log ("==> "..v.nom.." est là")
else
crache_des_log ("==> "..v.nom.." n'est pas là")
end
ping_success = ping_success or ping
end
--Traitement du résultat
if (ping_success) then
last_ping = 0
crache_des_log ("ping succes ! ==> last_ping = 0")
crache_des_log ("device presence "..device_presence)
if (device_presence=='Off') then
crache_des_log ("device presence "..device_presence.. " otherdevices[virtual_device_name] : "..otherdevices[virtual_device_name])
-- On allume le device
for i, v in pairs(devices) do
commandArray[v]='On'
crache_des_log ("Allumage du device "..v)
end
-- On passe le périphérique virtuel à On
commandArray[virtual_device_name]='On'
crache_des_log ("Présence On")
else
crache_des_log ("déja présent avant ... on ne change rien")
end
else
last_ping = last_ping + 1
if (last_ping >= temps_latence and device_presence=='On') then
-- On Eteind le device
for i, v in pairs(devices) do
commandArray[v]='Off'
crache_des_log ("Extinction du device"..v)
end
-- On passe le périphérique virtuel à Off
commandArray[virtual_device_name]='Off'
crache_des_log ("Présence Off")
end
end
if (last_ping == 0) then
print (" ==> Présent")
else
print (" ==> Absent depuis " .. last_ping .. " minute(s)")
end
commandArray['Variable:last_ping'] = tostring(last_ping)
print "=========== Fin Script de détection de présence ==========="
return commandArray