Aller au contenu
sebcbien

Detection De Présence

Recommended Posts

Bon, je dois dire que je ne comprends pas grand chose, comment ça peut fonctionner chez moi et pas chez d'autres qui ont aussi une réponse au telnet...

 

sinon, je suis en 3.591 "beta" .. je ne pense pas que ça puisse changer grand chose

Partager ce message


Lien à poster
Partager sur d’autres sites

Bon, j'ai trouvé, c'est le lock away....comme je disais dans le premier post.

Ceux qui ne l'utilisent pas doivent enlever la condition.

 

voici la V1.3

 

IP Smartphone Presence Check V1.3.vfib

 

Et le code du bouton: ligne 89 commentée et ligne 90 ajoutée

 

Le lock_away permet à  mon alarme de ne pas s'armer automatiquement sous certaines conditions quand je suis là ...

 

-- IP Smartphone Presence Check V1.2
-- Copyright © 2014 Sébastien Jauquet.
-- http://www.domotique-fibaro.fr/index.php/topic/2613-detection-de-pr%C3%A9sence/
--Using code from:
-- Ping v 1.0.1 [05-2013]
-- Copyright © 2013 Jean-christophe Vermandé
-- http://www.domotique-fibaro.fr/index.php/topic/109-ping-dun-%C3%A9quipement-r%C3%A9seau/page-2


fibaro:log("Starting process");


local variable_globale_phone = "Phone_GG_Present";
local thismodule=fibaro:getSelfId()
local _deviceIp = fibaro:get(thismodule, 'IPAddress')
local _devicePort = fibaro:get(thismodule, 'TCPPort')
local _maxRetryProcess = 20;
local time = tonumber(os.time());
local maxtime = 56;


-- local _deviceIp = "192.168.10.112";
-- local _devicePort = 3500;
-- fibaro:debug(_deviceIp .. " " .. _devicePort)
-- fibaro:setGlobal("Lock_Away","Unlocked") 


function SecondsToClock(sSeconds)
  local nSeconds = tonumber(sSeconds)
  if nSeconds == 0 then
    return "00:00:00";
  else
    nHours = string.format("%02.f", math.floor(nSeconds/3600));
    nMins = string.format("%02.f", math.floor(nSeconds/60 - (nHours*60)));
    nSecs = string.format("%02.f", math.floor(nSeconds - nHours*3600 - nMins *60));
    return nHours..":"..nMins..":"..nSecs
  end
end


-- recursive function to ping device
local function _ping(retry)
  retry = retry or 0;


-- notify state
local elapsed = os.difftime(os.time(), tonumber(time));
local msg = "Loop #".. retry .." since "..SecondsToClock(elapsed);    
fibaro:log(msg);  


-- check for no more than 30 seconds
  if elapsed > maxtime then 
  return false; 
  end


  --open the socket
  local tcpSocket = Net.FTcpSocket(_deviceIp, _devicePort);
    fibaro:debug(_deviceIp .. " " .. _devicePort)
  --set the read timeout
  tcpSocket:setReadTimeout(250);
  --send packet
  local bytes, errorCode = tcpSocket:write("test");
  fibaro:debug(errorCode)


  --check for error   
  if errorCode == 0 then
    return true;
  else
    if retry < _maxRetryProcess then
      --fibaro:log("Retry process, please wait...");
      fibaro:sleep(1*750);
      return _ping(retry + 1);
    end
    return false;
  end
end


--ping device, secure with pcall to catch errors.
local f, result = pcall(_ping);
local Lock_Away = fibaro:getGlobal("Lock_Away")


if (f) then
--  if (result == true) and (Lock_Away == "Unlocked") then
  if result == true then
    fibaro:log("Device has been found.");
    fibaro:setGlobal(variable_globale_phone,"1") 
-- évolution future possible: stocker la date et l'heure de la dernière présence détectée
    -- fibaro:setGlobal("Present_Phones",os.time()) 
  else
    fibaro:log("Device was not found!");
    fibaro:setGlobal(variable_globale_phone,"0") 
  end
else
  fibaro:log("Error: " .. f);
end

Code du main loop:

 

local thismodule = fibaro:getSelfId(); 
local status = fibaro:getGlobal("Phone_GG_Present")
-- fibaro:debug(thismodule);
if
status == "0"
then 
fibaro:call(thismodule, "setProperty", "currentIcon", 1037)
end


if
status == "1"
then 
fibaro:call(thismodule, "setProperty", "currentIcon", 1036)
end


fibaro:sleep(1000);

Partager ce message


Lien à poster
Partager sur d’autres sites

affirmatif mon capitaine, résultat immédiat!! 

Merci infiniment pour ton soutient!!

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Dernier petit retour pour ce soir, malgré un VD de vraiment super qualité, sur Iphone  dès lors que le tel passe en veille, le VD ne peux plus le voir, et donc ne détecte plus de présence.

Ce soir j'ai juste envie de scotcher mon téléphone au plafond :( Si quelqu'un trouve une astuce qu'il le crie haut et fort, car je reste à  l'écoute ...

A plouche

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut Tony

 

J'aimerais savoir comment tu as créer ta variable stp si éventuellement tu avais une copie d’écran cela serais pas mal pour moi car je galère grave  :angry:

Partager ce message


Lien à poster
Partager sur d’autres sites

Dernier petit retour pour ce soir, malgré un VD de vraiment super qualité, sur Iphone  dès lors que le tel passe en veille, le VD ne peux plus le voir, et donc ne détecte plus de présence.

Ce soir j'ai juste envie de scotcher mon téléphone au plafond :( Si quelqu'un trouve une astuce qu'il le crie haut et fort, car je reste à  l'écoute ...

A plouche

sur android dans les options wifi, advanced, on peut sélectionner "keep wifi on during sleep", il y a peut être une option similaire sur iPhone

Partager ce message


Lien à poster
Partager sur d’autres sites

Et voilà , une jolie photo....

Mais aussi une grosse rectification, mon téléphone est en veille depuis 10 mn et maintenant il est vu!!!!!!

Je viens d'économiser un Iphone et la peinture de mon plafond ou de mon mur au choix :)

post-213-0-26761000-1415915251_thumb.png

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Très bien merci j'avance doucement mais dans la valeur 2 tu met quoi ?

Partager ce message


Lien à poster
Partager sur d’autres sites

@SebCbien, il n'y a pas une telle fonctionnalité sur iphone à  ma connaissance, mais je délivre en temps réel le résultat de mes tests se qui n'est pas génial de ma part.

Pour l'instant ça remarche top de chez top, si cela vient à  déconner je ferai un retour avec explication si je les trouve :)

Ce que j'ai constaté c'est que fing de temps en temps ne voit plus le port ouvert par l'app sonos, mais pour l'instant tout est ok. Je reprécise que je n'ai pas de sonos à   la maison, je verrai donc si le port ne se referme pas au bout d'un certain temps...

Grazie mille

Partager ce message


Lien à poster
Partager sur d’autres sites

@ Diuck 

Je n'ai mis aucune valeur Diuck. Tiens moi au jus...

Partager ce message


Lien à poster
Partager sur d’autres sites

Question con peut être !!  tu n'a pas de scène qui commande ta variable tu as juste ton IP avec le nom de la variable ?

Partager ce message


Lien à poster
Partager sur d’autres sites

 au cas ou cela puisse t'aider...

Je n'ai rien modifier d'autre.

tu as bien installé sonos et identifié le port ouvert sur ton tel?

post-213-0-98627300-1415916248_thumb.png

Partager ce message


Lien à poster
Partager sur d’autres sites

je n’arrive pas àle configurer depuis mon iphone !!

Partager ce message


Lien à poster
Partager sur d’autres sites

je n'ai pas encore installé de scène pour simuler l'appui sur le bouton,  je fais pour l'instant les tests à  la mano...

Partager ce message


Lien à poster
Partager sur d’autres sites

oui il est installé mais pas configuré sur mon tel

Partager ce message


Lien à poster
Partager sur d’autres sites

il n'y a rien à  configurer sur l'app sonos juste à  l’exécuter. 

As tu installé fing?

Partager ce message


Lien à poster
Partager sur d’autres sites

sur l'appstore, il te permettra de trouver le port ouvert par sonos, mais il fort à  parier que ce soit le même que moi soit le 3401. c'est bien celui que tu as configuré?

si oui, peux tu charger fing,puis sélectionner ton phone, et appuyer sur scan services... 

Partager ce message


Lien à poster
Partager sur d’autres sites

tu dois voir une liste de tous tes appareils reseau apparaitre appuis sur ton Iphone (à  droitre ton device porte le nom apple, sinon identifie le par son ip) et appuyer sur scan services ...

Partager ce message


Lien à poster
Partager sur d’autres sites

×