Aller au contenu

Notifications Push Hc2


Yannick

Messages recommandés

Yannick,

Il est difficile de faire un cours LUA ici. De plus je suis un fervent adepte de l'autodidacte, c'est comme ça qu'on apprend et retient le mieux.

 

Je te conseille néanmoins les lectures suivantes :

bonne lecture, il y a aussi www.google.com  :15:

Lien vers le commentaire
Partager sur d’autres sites

Salut Jojo, alors voilà  j'ai fait mon bout de code comme tu me l'avais demandé en me démerdant mais j'ai un souci de syntaxe de mon script et je n'arrive pas à  comprendre où ça coince.

Voici le code

--[[
%% properties
49 valueSensor
%% globals
TV
--]]
 
local startSource = fibaro:getSourceTrigger();
if (
 ( fibaro:getGlobalValue("TV") == "Off" )
and
 ( tonumber(fibaro:getValue(49, "valueSensor")) >= 100 )
)
then
fibaro:setGlobal("TV", "On");
fibaro:call(91, "sendPush", "Allumage Télé");
  fibaro:debug("TV")
end
If ( 
    ( tonumber(fibaro:getValue(49, "valueSensor")) < 100 ))
then
  fibaro:setGlobal("TV","Off" )
end
 
Mais j'ai une erreur qui me remonte qui me dit : 
 
[ERROR] 10:05:15: line 21: unexpected symbol near 'then'
 
 
tu peux me dire où je merdouille ? 
 
Merci
 
PS : comment vous faite pour copier l'encart de rédaction de code dans vos messages ? c'est quoi l'outil ? 
Merci
Lien vers le commentaire
Partager sur d’autres sites

Je ne vois pas d'erreur dans ton code à  première vue.

la ligne 21 correspond au 2° then. N'y aurait-il pas un caractère caché bizarre ?

 

Pour mettre du code dans les message, tu cliques sur l'icône <> qui est juste en dessous de l'icones des smily.

Lien vers le commentaire
Partager sur d’autres sites

Salut Yannick,

 

J'aurais tout mis dans la meme boucle moi, a tester. Si tu recois le push a chaque variation, verifie que ta variable glbaole TV passe à  ON. Si tu recois c'est qu'elle reste à  OFF

 

If....AND ...then

else...then...

end

Lien vers le commentaire
Partager sur d’autres sites

@Yannick : essaie ca peut-etre :

--[[
%% properties
49 valueSensor
%% globals
TV
--]]
 
local startSource = fibaro:getSourceTrigger();
if (
 ( fibaro:getGlobalValue("TV") == "Off" )
and
 ( tonumber(fibaro:getValue(49, "valueSensor")) >= 100 )
)
then
fibaro:setGlobal("TV", "On");
fibaro:call(91, "sendPush", "Allumage Télé");
  fibaro:debug("TV")
else
   fibaro:setGlobal("TV","Off" )
end
Lien vers le commentaire
Partager sur d’autres sites

je supprimerait dans %% globals TV, car le vrai trigger est la conso électrique

je supprimerais la ligne 9 car on ne l'utilise pas ainsi que les () non indispensables

ce qui donnerait

--[[
%% properties
49 valueSensor
%% globals
--]]
 
if (fibaro:getGlobalValue("TV") == "Off"
   and tonumber(fibaro:getValue(49, "valueSensor")) >= 100 )
   then
     fibaro:setGlobal("TV", "On");
     fibaro:call(91, "sendPush", "Allumage Télé");
     fibaro:debug("TV")
   else
     fibaro:setGlobal("TV","Off" )
end

Lien vers le commentaire
Partager sur d’autres sites

Bon après plusieurs modifs et quelques tests voici le bon code final :

--[[
%% properties
49 valueSensor
%% globals
--]]
local Etat_Tele = fibaro:getGlobalValue("TV")
if (
 ( Etat_Tele == "Off" )
and
 ( tonumber(fibaro:getValue(49, "valueSensor")) >= 100 )
)
then
	fibaro:setGlobal("TV", "On");
	fibaro:call(91, "sendPush", "Allumage Télé");
else
  	fibaro:setGlobal("TV","Off" )

end
fibaro:debug("La télé est : "..Etat_Tele)

et a priori je n'ai plus de push toutes les secondes comme avant. Effectivement, le fait de déclarer la Valeur Globale TV dans l'entête faisait passé cette variable de "On" à  "Off" 2 fois par seconde ce qui engendrait l'envoi du Push à  chaque fois.

 

Merci les gars !!!

Lien vers le commentaire
Partager sur d’autres sites

ah !! par contre quand je clique plusieurs fois sur démarrer la scène pour débugger, alors que la conso reste supérieure à  100, la varaible Etat_Tele me renvoie alternativement "On" et "Off" à  chaque fois.

 

Un vrai casse tête quand même !!!

[DEBUG] 17:25:54: La télé est : Off
[DEBUG] 17:26:54: La télé est : On
[DEBUG] 17:26:57: La télé est : Off
[DEBUG] 17:26:58: La télé est : On
[DEBUG] 17:27:03: La télé est : Off
[DEBUG] 17:27:07: La télé est : On
[DEBUG] 17:27:08: La télé est : Off
[DEBUG] 17:27:09: La télé est : On
[DEBUG] 17:27:09: La télé est : Off
[DEBUG] 17:27:10: La télé est : On
[DEBUG] 17:27:10: La télé est : Off
[DEBUG] 17:27:11: La télé est : On
[DEBUG] 17:27:11: La télé est : Off
[DEBUG] 17:27:11: La télé est : On
Lien vers le commentaire
Partager sur d’autres sites

Salut pépite, j'ai rajouté ma variable de conso dans mon debug, je vais voir ce que ça donne. 

 

Je peux te poser une question : j'ai fait un code et j'ai erreur quand je lance mon debug mais je ne sais pas où. tu peux m'aider ?

--[[
%% properties
76 value
31 value
79 value
41 value
%% globals
--]]

local Id_Smartphone = 91
local a = fibaro:getValue(76, 'value')
local b = fibaro:getValue(29, 'value')
local c = fibaro:getValue(31, 'value')
local d = fibaro:getValue(79, 'value')
local e = fibaro:getValue(41, 'value')
--fibaro:debug("porte : "..a)
--fibaro:debug("lampe couloir : "..
--fibaro:debug("Mouvement couloir : "..c)
--fibaro:debug("Mouvement Salon : "..d)
--fibaro:debug("porte chambre : "..e)

If (tonumber(a) == 1);
or (tonumber(c) == 1); 
then
fibaro:call(tonumber(Id_Smartphone), 'sendPush', "Mouvement Couloir")))
fibaro:sleep(5000);
fibaro:call(88, "sendPhotoToUser", "2");
end
if (tonumber(d) == 1)
    then fibaro:call(tonumber(Id_Smartphone), 'sendPush', "Mouvement Salon-Séjour")
end

l'erreur qui m'est renvoyé c'est celle-ci :

[ERROR] 16:50:14: line 23: unexpected symbol near 'or'

je n'arrive pas à  trouver pourquoi il me dit que j'ai un symbol inattendu alors qu'il n'y a rien. 

 

Merci pour votre aide les gars

Lien vers le commentaire
Partager sur d’autres sites

Je viens de modifier mon code en faisant ça 

--[[
%% properties
49 valueSensor
%% globals

--]]
local Etat_Tele = fibaro:getGlobalValue("TV")
local Power = fibaro:getValue(49, "valueSensor")
if (tonumber(Power) >= 100 )
then
	fibaro:setGlobal("TV", "On");
else
  	fibaro:setGlobal("TV","Off" )
end
if (Etat_Tele == "On")
then  
fibaro:call(91, "sendPush", "Allumage Télé");
  	
  else fibaro:call(91, "sendPush", "Télé éteinte");
end
fibaro:debug("La télé est : "..Etat_Tele)
fibaro:debug("Consommation : "..Power.." W")

ça a l'air d'être mieux on va voir

Lien vers le commentaire
Partager sur d’autres sites

Salut Yannick,

 

Sans trop réfléchir, je l'aurais d'abord ecrit comme cela, mais suis pas un expert ;-)


local Id_Smartphone = 91
local a = fibaro:getValue(76, 'value')
local b = fibaro:getValue(29, 'value')
local c = fibaro:getValue(31, 'value')
local d = fibaro:getValue(79, 'value')
local e = fibaro:getValue(41, 'value')
--fibaro:debug("porte : "..a)
--fibaro:debug("lampe couloir : "..
--fibaro:debug("Mouvement couloir : "..c)
--fibaro:debug("Mouvement Salon : "..d)
--fibaro:debug("porte chambre : "..e)
 
if (tonumber(a) == 1) or (tonumber(c) == 1)
then
  fibaro:call(Id_Smartphone, 'sendPush', "Mouvement Couloir")
  fibaro:sleep(5000)
  fibaro:call(88, "sendPhotoToUser", "2")
end
if (tonumber(d) == 1)
  then
   fibaro:call(Id_Smartphone, 'sendPush', "Mouvement Salon-Séjour")
end

Oui pas bete pour la TV comme ca ;-)

Lien vers le commentaire
Partager sur d’autres sites

Salut Pepite, 

merci pour l'interpretation. 

Pour ce qui est de la télé, cela ne change rien ! à  chaque variation de consommation, je reçois un push. Je viens d'en recevoir 2 à  l'instant parce que la conso est passé de 49.1 w à  49.5 w... 
Si je supprime la déclaration de mon module dans propriété ça va changer quoi ? 

Lien vers le commentaire
Partager sur d’autres sites

Salut Yannick,

 

Ah ben oui, ce qu'il y a dans properties correspond au trigger, c'est à  dire le declencheur de la scene. Donc en le mettant, ta scene surveille la variation de consomation, et des qu'il ya une variation, ca enclenche ta scene..

Si tu l'enleves, ca devrait etre bon, j'avais pas remarque..dans ce cas, tu peux pe ecrire en plus propre la scene.

 

Teste et tiens nous au jus.

Lien vers le commentaire
Partager sur d’autres sites

Essaie ca :

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

local Etat_Tele = fibaro:getGlobalValue("TV")
local Power = fibaro:getValue(49, "valueSensor")

if (tonumber(Power) >= 100 ) and (Etat_Tele == "Off")
then
    fibaro:setGlobal("TV", "On");
    fibaro:call(91, "sendPush", "Allumage Télé");
else
    fibaro:setGlobal("TV","Off" )
    fibaro:call(91, "sendPush", "Télé éteinte");
end

fibaro:debug("La télé est : "..Etat_Tele)
fibaro:debug("Consommation : "..Power.." W")

les experts feraient pe autrement lol

 

Tu as eu les notifs pour la tele ?

 

 

Pour la localisation GPS c'est pas tres fiable, ca ne fonctionne pas terrible..mais il existe plein de tutos sur le forum concernant la localisation par téléphone sas utiliser la HC2

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...