Aller au contenu
sebcbien

Detection De Présence

Recommended Posts

Salut Pepite,

celui de sebcbien

 

code bouton:

 

fibaro:call(430, "sendDefinedPushNotification", "99");
fibaro:sleep(6*1000);
fibaro:log("Starting process");
 
local variable_globale_phone = "Phone_Alex";
local thismodule=fibaro:getSelfId()
local _deviceIp = fibaro:get(thismodule, 'IPAddress')
local _devicePort = fibaro:get(thismodule, 'TCPPort')
local _maxRetryProcess = 1;
local time = tonumber(os.time());
--local maxtime = 14;
local maxtime = 7;
-- 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 = "Boucle #".. retry .." depuis "..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("Appareil a été trouvé.");
    fibaro:setGlobal(variable_globale_phone,"Present") 
    -- é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("Appareil non trouvé!");
    fibaro:setGlobal(variable_globale_phone,"Absent") 
  end
else
  fibaro:log("Error: " .. f);
end

puis la boucle principale:

--[[
%%autostart
%%properties
%%globals
]]--

local thismodule = fibaro:getSelfId(); 
local status = fibaro:getGlobal("Phone_Alex")
-- fibaro:debug(thismodule);
if
    status == "Absent"
then 
    fibaro:call(thismodule, "setProperty", "currentIcon", 75)
fibaro:setGlobal("PRESENCE","non")
end
if
    status == "Present"
then 
    fibaro:call(thismodule, "setProperty", "currentIcon", 74)
  fibaro:setGlobal("PRESENCE","oui")
end
fibaro:sleep(1000);

lorsqu'il y a appui sur le BP du VD, je reçois bien la notification sur le phone, pour le réveiller 

puis plus rien,

avant, au réveil du phone, il accrochait le wifi, le vd pingait sur la table arp et c’était bon, 

ça me sert pour l'alarme, c'est gênant

mais c'est curieux, je n'ai vraiment pas une erreur

 

Modifié par flamalex

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour,

 

Je me rends compte que après les changements Fibaro apporté à admin, qui hérité maintenant d'une adresse email, mes URI tasker (trigger) ne fonctionnent plus.

 

J'avais des URL de ce genre : http://192.168.1.80/api/callAction?deviceID=413&name=pressButton&arg1=3

Mais maintenant il faut mettre un truc du style http://mon@email.com:MotDePasse;@192.168.1.80/api/callAction?deviceID=413&name=pressButton&arg1=3

Ca ne fonctionne pas, HC2 me demande un login (quand je test dans un navigateur) et ensuite m'interprete l'URL en question en virant "mon@email.com:MotDePasse;"

 

Grrr je pige plus moi, quelqu'un pourrait m'aider à avoir des URL fonctionnelles sur Trigger ?

 

D'avance merci.

Partager ce message


Lien à poster
Partager sur d’autres sites

je viens de vérifier chez moi, je suis bien en 4.140.

La détection fonctionne bien, j'ai du aller vérifier car pour ma détection je combine la détection Jeedom avec celle de Mon VD.

pour les appels api, j'arrive toujours à commander ma HC2 depuis Jeedom.

Exemples qui fonctionnent:

 http://XXX.XXX.XXX.XXX/api/callAction?deviceID=49&name=turnOn

et

http://XXX.XXX.XXX.XXX/api/callAction?deviceID=1897&name=pressButton&arg1=2

 

authentification gérée par le Call HTTP de Jeedom (login XXXXXX@XXXX.com)

Partager ce message


Lien à poster
Partager sur d’autres sites

euh.... wouah ! Moi en fait si je met http://192.168.1.80/api/callAction?deviceID=413&name=pressButton&arg1=3

Chrome m'ouvre une popin de login pour entrer mes identifiants fibaro. Une fois fait ma variable est OK tout va bien, mais c'est juste pas un comportement normal.

Partager ce message


Lien à poster
Partager sur d’autres sites

En fait je me suis aperçu du probleme car ma variable ne changeait "plus" d'état depuis le nouveau mode d'authent de la fibaro.

Partager ce message


Lien à poster
Partager sur d’autres sites

@sebcbien

curieusement, ca fonctionne toujours avec l’iphone de ma femme (ios 10)

mais pas pour moi en ios 11, alors est ce à cause de l’os

je vais mettre a jour l’os de ma femme :)

 

EDIT : mise à jour effectuée

bon ce n'est pas IOS 11

en revanche, j'ai constaté qqchose 

 

[DEBUG] 12:57:38: 0
[DEBUG] 12:59:22: 192.168.1.21 62078
[DEBUG] 12:59:22: 0
[DEBUG] 13:00:18: 192.168.1.21 62078
[DEBUG] 13:00:18: 0
[DEBUG] 14:42:01: 192.168.1.21 62078
[DEBUG] 14:42:01: 2
[DEBUG] 14:42:04: 192.168.1.21 62078
[DEBUG] 14:42:04: 2
 

si on a 0, alors ca fonctionne

si on a 2, ca ne fonctionne pas

 

maintenant c'est le phone de madame qui n'est plus repéré, par contre mon phone l'est !!!

alors que faire? une idée svp !!!!!

 

je viens de reboot la hc2, et maintenant on n’est plus detecté, le debug indique « 2 », qui corresponderait au superuser apparement 

 

que faire pour rester à « 0 »? :(

svp

merci

 

Modifié par flamalex

Partager ce message


Lien à poster
Partager sur d’autres sites

Je suis assez doué pour remonter des bugs, meme dans ma boite lol.

Ne cherche pas coté iPhone, moi ça se produit sur Android avec l'application Trigger.

Et même sans ça, si je balance l'url dans chrome sur un pc ça merde... :( 

 

EDIT : je me rends compte que vous parlez de deux trucs différents.... 

Modifié par Domodial

Partager ce message


Lien à poster
Partager sur d’autres sites

yes, c'est un autre sujet et j'avance pas, le problème vient du superuser, une histoire de 2 et de 0.

 

pour ton probleme,

idem que seb, avec jeedom requete http, url normal, identifiant et mdp dans jeedom pour acces hc2.

d’une fenetre chrome, il doit y avoir une histoire de %20 si tu introduis ton mdp et identifiant avec l’@ 

mais je ne sais plus

ou alors tu pourrais te créer un user dans hc2, pour arriver à cela et te débarrasser de l’email:

http://admin:mot_de_passe@192.168.1.5/api/callAction?deviceID=4&name=turnOff 
http://admin:mot_de_passe@192.168.1.5/api/callAction?deviceID=7&name=setValue&arg1=39 
Modifié par flamalex

Partager ce message


Lien à poster
Partager sur d’autres sites

 Oui, je pense aussi à un nouvel utilisateur (spécial machine) ou remplacer @ par %20 dans l'url, je ne me souviens plus à quelle version correspond le changement de l'identifiant par une adresse mail mais ça en parle dans le topic de ce firmware.

 

Partager ce message


Lien à poster
Partager sur d’autres sites

lol :) 

j’aimerai pouvoir en dire autant :) pour mon petit probleme

 

Modifié par flamalex

Partager ce message


Lien à poster
Partager sur d’autres sites

je ne pense pas que ce 0 et 2 vienne de mon code, je viens de regarder mon debug, je ne vois rien de tel...

Quel code utilises-tu ?

Je dois avouer que je n'ai vraiment plus le code en tête depuis tout ce temps :-/

Partager ce message


Lien à poster
Partager sur d’autres sites

@flamalex,

 

Je viens de bien relire le code, en fait le 2 que tu vois dans le debug est l"error code" du paquet tcpsocket envoye pour le test du ping.

Donc lorsque tu as 0 dans le debug cela fonctionne et 2 c'est l'erreur donc pas de ping, pas de detection, normal

Le 23/09/2017 à 13:58, flamalex a dit :

si on a 0, alors ca fonctionne

si on a 2, ca ne fonctionne pas

 

Dans le code il est prévu de reessayer sauf que tu as fixé à 1 fois :

Le 22/09/2017 à 18:20, flamalex a dit :

local _maxRetryProcess = 1;

modifie le 1 ;-) mets plus d'essais ;-)

 

Decommente cette ligne pour voir ou tu en es

--fibaro:log("Retry process, please wait...");

 

Rien de modifié sur les tels ? le port est le bon ? toujours ouvert ?

Partager ce message


Lien à poster
Partager sur d’autres sites

@sebcbien

 c'est pas ce debug

Le 22/09/2017 à 18:20, flamalex a dit :

--send packet   local bytes, errorCode = tcpSocket:write("test");   fibaro:debug(errorCode)

 

Partager ce message


Lien à poster
Partager sur d’autres sites

oui effectivement...

  • Upvote 2

Partager ce message


Lien à poster
Partager sur d’autres sites

ok je teste

non je n’ai rien changé

seb, mon code est en haut de page.

la par exemple, je n’ai encore rien touché et il me trouve

 

[DEBUG] 15:47:38: 192.168.1.187 62078
[DEBUG] 15:47:38: 0

 

EDIT:

bon, je ne sais pas quoi dire, depuis 4 jours ça ne fonctionnait plus, 

la je n'ai rien touché et il refonctionne parfaitement comme avant
 

je m'interroge tjrs sur le port, car j'ai tjrs mi celui la 62078 sans savoir si il est vraiment ouvert

 

BON !!! "appareil a ete trouvé" 

mais je ne sais pas pourquoi ça fonctionne

 

je testerai ce soir sur celui de ma femme, on verra

 

pour cette histoire de 0 et 2, ok je comprends mieux Pepite mais alors cela aurait pu venir de mon port? ( tcpsocket )

Modifié par flamalex
  • Upvote 2

Partager ce message


Lien à poster
Partager sur d’autres sites

ca recommence


[DEBUG] 15:51:15: 192.168.1.187 62078
[DEBUG] 15:51:15: 2
[DEBUG] 15:51:19: 192.168.1.187 62078
[DEBUG] 15:51:19: 2
[DEBUG] 15:51:33: 192.168.1.187 62078
[DEBUG] 15:51:33: 0
[DEBUG] 15:54:46: 192.168.1.187 62078
[DEBUG] 15:54:46: 0
[DEBUG] 15:55:42: 192.168.1.187 62078
[DEBUG] 15:55:42: 0
[DEBUG] 16:02:20: 192.168.1.187 62078
[DEBUG] 16:02:20: 2
[DEBUG] 16:02:23: 192.168.1.187 62078
[DEBUG] 16:02:23: 2
[DEBUG] 16:02:27: 192.168.1.187 62078
[DEBUG] 16:02:27: 2

 

IDEM avec 

"local _maxRetryProcess = 3;"

 

ça a fonctionné le tps que vous etiez connectés :D :2:

 

ah ah !! 

ça vient de refonctionner, vous vous etes à nouveau connectés !! 

 


[DEBUG] 16:06:22: 192.168.1.187 62078
[DEBUG] 16:06:22: 2
[DEBUG] 16:06:26: 192.168.1.187 62078
[DEBUG] 16:06:26: 2
[DEBUG] 16:06:58: 192.168.1.187 62078
[DEBUG] 16:06:58: 2
[DEBUG] 16:07:01: 192.168.1.187 62078
[DEBUG] 16:07:01: 2
[DEBUG] 16:07:05: 192.168.1.187 62078
[DEBUG] 16:07:05: 2
[DEBUG] 16:08:59: 192.168.1.187 62078
[DEBUG] 16:08:59: 0

 

EDIT: j'ai passé 

local _maxRetryProcess = 5;
local maxtime = 14;

rien à faire, j'ai 5 fois le 2

quelque soit le port, c'est tjrs pareil

Modifié par flamalex

Partager ce message


Lien à poster
Partager sur d’autres sites

Le port que tu indique (62078) ça ne serait pas une application particulière iOS ou Android ? Pour tester si tu appareil est en vie car il se déconnecte du wifi ? Je n'ai pas non plus ça dans le debug du bouton de présence

Tu as qu'elle version ?

Envoyé de mon Nexus 5X en utilisant Tapatalk


Partager ce message


Lien à poster
Partager sur d’autres sites

Concernant mon histoire d'URL dans Trigger et du systeme d'authen de Fibaro, le plus simple était de faire un utilisateur et n'utiliser l'admin (email) que pour l'admin.

Comme ça maintenant les choses sont moins tordues :D

 

Merci à tous, mes variables changent bien avec trigger (Tasker).

Partager ce message


Lien à poster
Partager sur d’autres sites

ca doit etre la derniere, j’ai inseré le code plus haut.

pour le port, je ne sais plus 

mais j’en ai essayé bcp d’autres

 

sur iphone en ios11, vous etes sur quel port?

Partager ce message


Lien à poster
Partager sur d’autres sites

bonjour à tous,

J'ai un soucis, au debug, j'ai : 638

Quelqu'un peut être à eu le même soucis, d'avance merci pour votre aide

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut Seb, j'utilise depuis pas mal de temps ce VD, j'était encore en version ping et je viens de mettre à jour en 2.3. Pas de soucis sauf que je souhaite lancé la recherche  uniquement sur ouverture d'un de mes ouvrants.

En gros mon GEA detecte ouverture et lancement des recherches. As tu une idée car si je supprime la boucle principal et que je lance l'appui du bouton VD sur détection rien ne fonctionne.

 

Merci encore

Partager ce message


Lien à poster
Partager sur d’autres sites

×