Yannick Posté(e) le 29 juillet 2015 Auteur Signaler Posté(e) le 29 juillet 2015 désolé mais je n'ai jamais utilisé les variables.. je commence àcomprendre les choses maiiiiiiiis... il faut m'expliquer longtemps !
jojo Posté(e) le 29 juillet 2015 Signaler Posté(e) le 29 juillet 2015 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 : le forum "la HC2 pour les nuls" le Wiki de Steven, et plus particulièrement sa partie sur les variables : http://gea.piccand.me/doku.php/vg http://www.domotique-fibaro.fr/index.php/topic/1199-précis-sur-les-variables-localesglobales/?hl=variables#entry68636 bonne lecture, il y a aussi www.google.com
Yannick Posté(e) le 30 juillet 2015 Auteur Signaler Posté(e) le 30 juillet 2015 Salut Jojo Eh oui je comprends bien. Merci je vais essayer de me démerder tout seul. Mais je ne suis aucunement développeur et les mécanismes m'échappent. Merci quand même
jojo Posté(e) le 30 juillet 2015 Signaler Posté(e) le 30 juillet 2015 Je ne suis pas développeur non-plus. J'ai tout appris sur le tas => c'est possible ... Commence tes recherches, et quand tu as un point précis, on reste là pour t'aider à débogguer
Yannick Posté(e) le 4 août 2015 Auteur Signaler Posté(e) le 4 août 2015 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
jojo Posté(e) le 4 août 2015 Signaler Posté(e) le 4 août 2015 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.
Yannick Posté(e) le 4 août 2015 Auteur Signaler Posté(e) le 4 août 2015 Désolé ça y est j'ai trouvé.. j'ai modifé et le code fonctionne Mais j'"ai toujours le même problème. la notif est envoyée à chaque changement de conso
pepite Posté(e) le 4 août 2015 Signaler Posté(e) le 4 août 2015 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
jojo Posté(e) le 4 août 2015 Signaler Posté(e) le 4 août 2015 @yannick, tu nous remet le bon code avec l'icône <> (beaucoup plus lisible)
pepite Posté(e) le 4 août 2015 Signaler Posté(e) le 4 août 2015 @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
jojo Posté(e) le 4 août 2015 Signaler Posté(e) le 4 août 2015 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
Yannick Posté(e) le 4 août 2015 Auteur Signaler Posté(e) le 4 août 2015 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 !!!
Yannick Posté(e) le 4 août 2015 Auteur Signaler Posté(e) le 4 août 2015 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
pepite Posté(e) le 5 août 2015 Signaler Posté(e) le 5 août 2015 Rajoute une variable de conso dans ton debug pour vérifier aussi ;-) Est-ce que cela fonctionne ou tu as de nouveau plusieurs push ?
Yannick Posté(e) le 5 août 2015 Auteur Signaler Posté(e) le 5 août 2015 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
Yannick Posté(e) le 5 août 2015 Auteur Signaler Posté(e) le 5 août 2015 je viens d'avoir une notification qui me confirme qu'un push est envoyé àchaque variation de consommation, ne serait-ce que de 0.1w
Yannick Posté(e) le 5 août 2015 Auteur Signaler Posté(e) le 5 août 2015 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
pepite Posté(e) le 5 août 2015 Signaler Posté(e) le 5 août 2015 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 ;-)
mprinfo Posté(e) le 5 août 2015 Signaler Posté(e) le 5 août 2015 Je suis sur mon tel donc pas facile de lire tout ce code si demain matin j'ai un peu de temp je jetterai un oeil de mon pc Envoyé de mon SM-G900F en utilisant Tapatalk
Yannick Posté(e) le 6 août 2015 Auteur Signaler Posté(e) le 6 août 2015 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 ?
pepite Posté(e) le 6 août 2015 Signaler Posté(e) le 6 août 2015 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.
Yannick Posté(e) le 6 août 2015 Auteur Signaler Posté(e) le 6 août 2015 je l'ai enlevé de Properties. je vais vois. Pour ce qui est de récrire plus propre ma scène, je ne demande pas mieux... mais j'en suis pas là encore !! merci
Yannick Posté(e) le 6 août 2015 Auteur Signaler Posté(e) le 6 août 2015 @Pepite : une question, sais-tu pourquoi je n'arrive pas àrécupérer la localisation de mon Smartphone quand je suis àl'extérieur ?
pepite Posté(e) le 6 août 2015 Signaler Posté(e) le 6 août 2015 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
Messages recommandés