[LUA] Allumage on/off via script presence

Vous avez créé un script LUA dont vous êtes fier, un .sh génial, un programme Python hors du commun, un Tuto, c'est ici que vous pouvez les partager.
netstf
Messages : 33
Inscription : 17 janv. 2016, 18:38

[LUA] Allumage on/off via script presence

Message par netstf »

Bonjour , débutant sur domoticz je commence les scripts .

J'ai réussi a faire ce que je veux via les blocky sur domoticz mais j'aimerai l intégrer directement sur le script , je veux éteindre une prise on/off chacon quand la presence passe ON et l allumé quand la presence OFF ( camera relié sur une prise)



Scripts de présence simple mais qui fonctionne parfaitement :

Code : Tout sélectionner

-- Alexandre DUBOIS - 2014
-- Ce script vérifie la présence de 2 téléphones sur le réseau pour savoir si quelqu'un est là.
-- La vérification est effectuée une fois par minute tant qu'aucun téléphone n'est à portée,
-- puis une fois toute les 10 minutes quand au moins un téléphone est connecté pour ne pas trop stresser sa batterie.
 
commandArray = {}
 
--Cette fonction calcule la différence de temps (en secondes) entre maintenant
--et la date passée en paramètre.
function timedifference (s)
  year = string.sub(s, 1, 4)
  month = string.sub(s, 6, 7)
  day = string.sub(s, 9, 10)
  hour = string.sub(s, 12, 13)
  minutes = string.sub(s, 15, 16)
  seconds = string.sub(s, 18, 19)
  t1 = os.time()
  t2 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
  difference = os.difftime (t1, t2)
  return difference
end
 
--Si le téléphone n'est pas détecté ou qu'il est présent depuis plus de 10 minutes (600 secondes),
--alors on vérifie à nouveau sa présence
if (otherdevices['Presence']=='Off' or (otherdevices['Presence']=='On' and timedifference(otherdevices_lastupdate['Presence']) > 600)) then
	ping_success_tel1=os.execute('ping -c1 192.168.0.27')
	ping_success_tel2=os.execute('ping -c1 192.168.0.29')
	
	if ping_success_tel1 or ping_success_tel2 then
	  commandArray['Presence']='On'
	else
	if ping_success_tel1 or ping_success_tel2 then
	  commandArray['Camera']='Off'
	else
	  if otherdevices['Presence']=='On' then --On ne passe l'interrupteur virtuel à Off que s'il est sur On.
             commandArray['Presence']='Off'
          end
	end
end
 
return commandArray



Ou modifier le scripts pour éteindre l interrupteur virtuel "Camera" quand la "Presence" passe ON
Ou modifier le scripts pour allumer l interrupteur virtuel "Camera" quand la ""Presence" passe OFF

Merci
gawel3164
Messages : 325
Inscription : 07 janv. 2016, 19:51

Re: Allumage on/off via script presence

Message par gawel3164 »

Salut,
J'ai utilisé le même script de présence. Pour ma part, j'ai ajouté deux scripts qui agissent sur l'interrupteur virtuel: un pour l'allumage des caméras et un pour l'extinction (on peut sans doute faire mieux et mixer les deux, ou les trois, mais tant que ça marche!! :D )

Pour l'allumage:
commandArray = {}
if (devicechanged['Presence'] == 'Off') then
commandArray['Camera Chambre']='On'
print('Camera Chambre allumee')

commandArray['Camera Salon']='On'
print('Camera Salon allumee')
end

return commandArray

Pour l'extinction:
commandArray = {}

if (devicechanged['Presence'] == 'On') then
commandArray['Camera Chambre']='Off'
print('Camera Chambre eteinte')
commandArray['Camera Salon']='Off'
print('Camera Salon eteinte')
end
return commandArray
Domoticz 2022.1/RFlink V1.1_R48/ prises: DIO, SCS/caméras IP/station météo Auriol/sondes Oregon/PIR/ZK1PA/Relevé compteur Gaz/téléinfo EDF/Mysensors:RGB-3D,Temp.,IR/Arrosage autonome/Google home/ ESP: IR,Temp.,relai,distance,OLED/Withings Ws30
fratton
Messages : 150
Inscription : 19 août 2015, 16:38

Re: Allumage on/off via script presence

Message par fratton »

Un conseil, ajouter -W1 à la commande ping :

Code : Tout sélectionner

'ping -c1 192.168.0.27 -W1'
C'est le timeout, en secondes, cela évite d'avoir des erreurs dans les log pour des scripts qui dur plus de 10 secondes.
Raspberry Pi B+ / RF-Link 433MHz / divers device maison 433MHz et Wifi
Répondre