[Résolu] Salutations quand telephone detecté
[Résolu] Salutations quand telephone detecté
Bonjour à toutes et tous.
J'utilise ce script lua trouvé sur le forum qui détecte lorsque mon portable rejoint mon réseau local :
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.1.121')
if ping_success_tel1 then
commandArray['Presence']='On'
commandArray['OpenURL']='192.168.1.120/speakv.php?text=Bienvenu'
detecte='oui'
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
Sauf qu'il me dit bienvenu toutes les dix minutes.
Comment faire pour qu'il ne le dise la première fois que mon téléphone se connecte et que tant qu'il ne s'est pas déconnecté ou reconnecté il ne me dise rien?
J'utilise ce script lua trouvé sur le forum qui détecte lorsque mon portable rejoint mon réseau local :
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.1.121')
if ping_success_tel1 then
commandArray['Presence']='On'
commandArray['OpenURL']='192.168.1.120/speakv.php?text=Bienvenu'
detecte='oui'
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
Sauf qu'il me dit bienvenu toutes les dix minutes.
Comment faire pour qu'il ne le dise la première fois que mon téléphone se connecte et que tant qu'il ne s'est pas déconnecté ou reconnecté il ne me dise rien?
Dernière modification par ziaziung le 11 déc. 2016, 10:24, modifié 1 fois.
Raspi B+ et 2. RfxcomE. Volets Somfy. Sondes de température "AliExpress". Domoticz version 4.10761
Re: Salutations quand telephone detecté
En fait pour économiser la batterie les smartphones mettent en veille le wifi et le "réveillent" à interval réguliers. Chez toi je suppose qu'il doit se réveiller toutes les 10 minutes. Tu doit avoir une appli qui est paramétrée pour faire de la consulte toutes les 10 minutes (regarde la config de ton client mail c'est souvent ça) ou dans les paramètre du téléphone. Et si l'envie te prends de vouloir laisser le wifi actif en permanance je ne peux que te le déconseiller.
Avis perso mais ce genre de méthode n'est pas du tout viable. Il vaux mieux se faire un shortcut sur le quel tu clique pour déclarer ta présence.
Avis perso mais ce genre de méthode n'est pas du tout viable. Il vaux mieux se faire un shortcut sur le quel tu clique pour déclarer ta présence.
Re: Salutations quand telephone detecté
tu remplaces
par
Code : Tout sélectionner
if ping_success_tel1 then
commandArray['Presence']='On'
commandArray['OpenURL']='192.168.1.120/speakv.php?text=Bienvenu'
detecte='oui'Code : Tout sélectionner
if ping_success_tel1 then
if (otherdevices['Presence']=='Off') then
commandArray['OpenURL']='192.168.1.120/speakv.php?text=Bienvenu'
commandArray['Presence']='On'
detecte='oui'
else
commandArray['Presence']='On'
detecte='oui'
endPI3+, Buster, Domoticz V2020.2, rflink, zwave, chauffage piloté par qubino, sondes oregon et Vil1d, boite aux lettres détection passage facteur, volets roulants qubino fibaro.
Re: Salutations quand telephone detecté
Merci de vos reponses.
Voici le script modifié, mais cela ne change rien (bienvenu toutes les 10 minutes) :
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.1.121')
if ping_success_tel1 then
if (otherdevices['Presence']=='Off') then
commandArray['OpenURL']='192.168.1.120/speakv.php?text=Bienvenu%20maitre'
commandArray['Presence']='On'
detecte='oui'
else
commandArray['Presence']='On'
detecte='oui'
end
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
Voici le script modifié, mais cela ne change rien (bienvenu toutes les 10 minutes) :
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.1.121')
if ping_success_tel1 then
if (otherdevices['Presence']=='Off') then
commandArray['OpenURL']='192.168.1.120/speakv.php?text=Bienvenu%20maitre'
commandArray['Presence']='On'
detecte='oui'
else
commandArray['Presence']='On'
detecte='oui'
end
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
Raspi B+ et 2. RfxcomE. Volets Somfy. Sondes de température "AliExpress". Domoticz version 4.10761
-
cedric2975
- Messages : 15
- Inscription : 16 nov. 2016, 17:31
Re: Salutations quand telephone detecté
Salut,
moi j'ai creer une tempo de 15 minutes avant de valider mon absence.
Si tel non détecté pendant 15 minutes, alors départ du roomba, sinon reset compteur.
Tu peux mettre 20-30-1heure ou plus
Le script_time du ping, classique :
Le script_device , il faut creer un variable nopingcounter:
moi j'ai creer une tempo de 15 minutes avant de valider mon absence.
Si tel non détecté pendant 15 minutes, alors départ du roomba, sinon reset compteur.
Tu peux mettre 20-30-1heure ou plus
Le script_time du ping, classique :
Code : Tout sélectionner
commandArray = {}
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
time = os.date("*t")
if (otherdevices['Presence']=='Off' or otherdevices['Presence']=='On') and timedifference(otherdevices_lastupdate['Presence']) > 60
then
ping_success_tel1=os.execute('ping -c1 192.168.1.xx') -- IP Cédric
ping_success_tel2=os.execute('ping -c1 192.168.1.yy') -- IP Cat
----- Cédric -------
if ping_success_tel1 and otherdevices['Cédric']=='Off' -- pas cédric et ping ok --> cédric est rentrée
then
commandArray['Cédric']='On'
print ('Arrivée de Cédric')
else
if ping_success_tel1 and otherdevices['Cédric']=='On' --ping ok et cédric deja la -->rien
then
else
if otherdevices['Cédric']=='Off' then -- echec du ping mais déja absent
commandArray['Cédric'] ='Off'
else
if otherdevices['Cédric']=='On' then -- échec du ping donc changement d'etat --->>départ
commandArray['Cédric'] ='Off'
print ('Départ de Cédric ')
end
end
end
end
----- CAT ------
if ping_success_tel2 and otherdevices['Cat']=='Off' -- pas Cat et ping ok --> Cat est rentrée
then
commandArray['Cat']='On'
print ('Arrivée de Cat')
else
if ping_success_tel2 and otherdevices['Cat']=='On' --ping ok et Cat deja la -->rien
then
commandArray['Cat'] ='Off'
else
if otherdevices['Cat']=='Off' then -- echec du ping mais déja absent
else
if otherdevices['Cat']=='On' then -- échec du ping donc changement d'etat --->>départ
commandArray['Cat'] ='Off'
print ('Départ de Cat ')
end
end
end
end
end
return commandArray
Code : Tout sélectionner
t=tonumber(otherdevices_svalues['ConsigneT'])
compteur_ping_fail=tonumber(uservariables['nopingcounter'])
time = os.date("*t")
commandArray = {}
if devicechanged['Presence'] == 'Off' then
t = 20
commandArray['ConsigneT']='Set Level '..t
commandArray['Variable:consigne']=otherdevices_svalues['ConsigneT']
if (time.hour>8 and time.hour<18) then
commandArray['RoombaClean']='On'
commandArray['OpenURL'] = 'https://smsapi.free-mobile.fr/sendmsg?user=xxxxxxx&pass=zzzzzzzz&msg=RoombaClean !!'
print('Départ du Roomba.')
end
end
-- quelqu'un arrive
if (devicechanged['Cat'] =='On' or devicechanged['Cédric']=='On' ) and otherdevices['Presence']=='Off' -- Si quelqu'un arrive et qu'il n'y avait personne, retour roomba à la base et augmentation de la temprérature de 3 °c
then
commandArray['Presence']='On'
commandArray['RoombaDock']='On'
t = t + 30
commandArray['ConsigneT']='Set Level '..t
commandArray['Variable:consigne']=otherdevices_svalues['ConsigneT'] --synchro
end
-- tout le monde est parti
if ((devicechanged['Cat'] =='Off' and otherdevices['Cédric']=='Off' ) and otherdevices['Presence']=='On') or ((devicechanged['Cédric'] =='Off' and otherdevices['Cat']=='Off' ) and otherdevices['Presence']=='On') or
((devicechanged['Cat'] =='Off'and devicechanged['Cédric']=='Off' ) and otherdevices['Presence']=='On') --
then
end
if (otherdevices['Cat'] =='Off' and otherdevices['Cédric']=='Off' ) and otherdevices['Presence']=='On'
then
compteur_ping_fail = compteur_ping_fail +1
commandArray['Variable:nopingcounter']=tostring(compteur_ping_fail)
print('Plus personne depuis ' .. compteur_ping_fail .. ' minutes')
end
if compteur_ping_fail >=15 then -- ici le temps de non détection avant de valider l'absence
commandArray['Presence']='Off'
compteur_ping_fail = 0
commandArray['Variable:nopingcounter']=tostring(compteur_ping_fail)
print ('Plus personne depuis' .. compteur_ping_fail ..' minutes, passage en mode - Maison vide -')
end
if (devicechanged['Cat'] =='On' or devicechanged['Cédric']=='On' ) then
compteur_ping_fail = 0
commandArray['Variable:nopingcounter']=tostring(compteur_ping_fail)
end
-- personne n'arrive,ni ne part...
if (devicechanged['Cat'] =='Off' and devicechanged['Cédric']=='Off' ) and otherdevices['Presence']=='Off'
then
print('Aucun changement')
end
return commandArray
Re: Salutations quand telephone detecté
Comme ça sa devrait fonctionner.
Quand tu es perdu dans un script, met des print qui t'indiqueront par ou tu passe dans ton script.
Le problème de ton script est peut être ici else if otherdevices['Presence']=='On' then commandArray['Presence']='Off' ce qui remet à chaque fin de script presence à zéro. Donc dans 10 minutes tu repasses par la branche avec l'alerte vocale. Un print après la ligne if otherdevices['Presence']=='On' aurais pu te mettre sur la voie (ou pas...).
Après, pour le confort de lecture quand tu mets un script, utilise la balise Code.
Code : Tout sélectionner
if (otherdevices['Presence']=='Off' or (otherdevices['Presence']=='On' and timedifference(otherdevices_lastupdate['Presence']) > 600)) then
ping_success_tel1=os.execute('ping -c1 192.168.1.121')
if ping_success_tel1 then
if (otherdevices['Presence']=='Off') then
commandArray['OpenURL']='192.168.1.120/speakv.php?text=Bienvenu%20maitre'
commandArray['Presence']='On'
detecte='oui'
elseif (otherdevices['Presence']=='On') then
commandArray['Presence']='On'
detecte='oui'
end
else --On passe l'interrupteur virtuel à Off car le ping est HS
commandArray['Presence']='Off'
end
end
Le problème de ton script est peut être ici else if otherdevices['Presence']=='On' then commandArray['Presence']='Off' ce qui remet à chaque fin de script presence à zéro. Donc dans 10 minutes tu repasses par la branche avec l'alerte vocale. Un print après la ligne if otherdevices['Presence']=='On' aurais pu te mettre sur la voie (ou pas...).
Après, pour le confort de lecture quand tu mets un script, utilise la balise Code.
PI3+, Buster, Domoticz V2020.2, rflink, zwave, chauffage piloté par qubino, sondes oregon et Vil1d, boite aux lettres détection passage facteur, volets roulants qubino fibaro.
Re: Salutations quand telephone detecté
Bonsoir. Merci pour votre aide.
J'ai essayé le code ci-dessous mais ca fait toujours la meme chose : 'Bienvenu' toutes les 10 minutes.
Ce que je voudrai :
Tous les jours a minuit l'interrupteur Presence est passé à Off (ca, c'est fait automatiquement directement dans domoticz).
Ensuite, tant que mon telephone n'est pas connecté a mon reseau, rien.
Dès qu'il se connecte, 'Bienvenu', puis plus rien tant ce qu'il ne se deconnecte puis se reconnecte pas, si c'est le cas : 'bienvenu'. ....
J'ai essayé le code ci-dessous mais ca fait toujours la meme chose : 'Bienvenu' toutes les 10 minutes.
Ce que je voudrai :
Tous les jours a minuit l'interrupteur Presence est passé à Off (ca, c'est fait automatiquement directement dans domoticz).
Ensuite, tant que mon telephone n'est pas connecté a mon reseau, rien.
Dès qu'il se connecte, 'Bienvenu', puis plus rien tant ce qu'il ne se deconnecte puis se reconnecte pas, si c'est le cas : 'bienvenu'. ....
Code : Tout sélectionner
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
print('B1')
if (otherdevices['Presence']=='Off') then
print(' presennce = off')
ping_success_tel1=os.execute('ping -c1 192.168.1.121')
if ping_success_tel1 then
commandArray['OpenURL']='192.168.1.120/speakv.php?text=Bienvenu'
commandArray['Presence']='On'
print('presence passé a on')
end
elseif timedifference(otherdevices_lastupdate['Presence']) > 600 then
print('presence = on et temps > 10 minutes')
ping_success_tel1=os.execute('ping -c1 192.168.1.121')
if ping_success_tel1 then commandArray['Presence']='On' else commandArray['Presence']='Off' end
end
return commandArray
Raspi B+ et 2. RfxcomE. Volets Somfy. Sondes de température "AliExpress". Domoticz version 4.10761
-
bruno_ghost17
- Messages : 97
- Inscription : 01 févr. 2016, 18:56
- Localisation : Rochefort(17)
Re: Salutations quand telephone detecté
salut
tu pourrais utiliser un flag qui se mets a 1 une fois le "salut" fait , dans les conditions du salut tu ajoutes la condition que ton flag soit a 0
tu remets ton flag a 0 si le telephone n'est plus sur le wifi .
pour le flag tu pourrais utiliser les Variables utilisateur.
enfin c'est une idée ...
Bruno.
tu pourrais utiliser un flag qui se mets a 1 une fois le "salut" fait , dans les conditions du salut tu ajoutes la condition que ton flag soit a 0
tu remets ton flag a 0 si le telephone n'est plus sur le wifi .
pour le flag tu pourrais utiliser les Variables utilisateur.
enfin c'est une idée ...
Bruno.
Raspi 2 - RFxCom - sondes Oregon
Re: Salutations quand telephone detecté
Les print que tu as mis ne te mette pas sur la voie?
Après je pense qu'il faudrait remplacer timedifference(otherdevices_lastupdate['Presence']) > 600 par otherdevices_lastupdate(Presence] > 600.
Si tu as l'alerte vocal c'est que tu passes par if (otherdevices['Presence']=='Off') then toutes les 10 mn.
puisque c'est ici que tu remets presence a off
ajoute un print et regarde les logs
Après je pense qu'il faudrait remplacer timedifference(otherdevices_lastupdate['Presence']) > 600 par otherdevices_lastupdate(Presence] > 600.
Si tu as l'alerte vocal c'est que tu passes par if (otherdevices['Presence']=='Off') then toutes les 10 mn.
puisque c'est ici que tu remets presence a off
Code : Tout sélectionner
if ping_success_tel1 then
commandArray['Presence']='On'
else commandArray['Presence']='Off'
endCode : Tout sélectionner
if ping_success_tel1 then
commandArray['Presence']='On'
else commandArray['Presence']='Off'
print('presence mis à Off')
endPI3+, Buster, Domoticz V2020.2, rflink, zwave, chauffage piloté par qubino, sondes oregon et Vil1d, boite aux lettres détection passage facteur, volets roulants qubino fibaro.
Re: Salutations quand telephone detecté
Bonjour à toutes et tous. Merci encore pour votre aide.
Le script que j'ai proposé dans mon dernier post fonctionne parfaitement, c'est juste qu'il entrait en conflit avec un autre (en fait, je tente de detecter un deuxième telephone).
Le script que j'ai proposé dans mon dernier post fonctionne parfaitement, c'est juste qu'il entrait en conflit avec un autre (en fait, je tente de detecter un deuxième telephone).
Raspi B+ et 2. RfxcomE. Volets Somfy. Sondes de température "AliExpress". Domoticz version 4.10761