mikael2235 Posté(e) le 27 février 2015 Signaler Partager Posté(e) le 27 février 2015 Bonjour, J'aurai besoin d'aide en LUA pour le code suivant : --[[ %% autostart %% properties 26 value 27 value 93 value 94 value %% globals --]] local startSource = fibaro:getSourceTrigger(); local timestamp = os.date("%Y%m%d%H%M%S") local detecteur_id local detecteur_location if ( tonumber(fibaro:getValue(26, "value")) > 0 ) then detecteur_id = '26' detecteur_location = "Mouvement_RDC" elseif ( tonumber(fibaro:getValue(27, "value")) > 0 ) then detecteur_id = '27' detecteur_location = "Mouvement_Etage" elseif ( tonumber(fibaro:getValue(93, "value")) > 0 ) then detecteur_id = '93' detecteur_location = "Ouverture_RDC" elseif ( tonumber(fibaro:getValue(94, "value")) > 0 ) then detecteur_id = '94' detecteur_location = "Ouverture_Etage" end fibaro:debug("Le detecteur" ..detecteur_location.. " (" ..detecteur_id.. ") a déclenché") if ( ( tonumber(fibaro:getValue(26, "value")) > 0 or tonumber(fibaro:getValue(27, "value")) > 0 or tonumber(fibaro:getValue(93, "value")) > 0 or tonumber(fibaro:getValue(94, "value")) > 0 ) ) then fibaro:debug(timestamp) fibaro:debug(detecteur_id) fibaro:debug(detecteur_location) HC2=Net.FHttp("192.168.0.200") HC2:GET("/domotique/mapage.php?timestamp="..timestamp.."&detecteur_id="..detecteur_id.."&detecteur_location="..detecteur_location.."") end Je pense qu'il y a des erreurs de syntaxe ds le code ? Peut- on utiliser les deux dernières lignes directement ds une scène (Net.FHttp & HC2:GET) ? Est-ce que les codes peuvent etre utilisés aussi bien ds un module virtuel que dans une scène ? Merci. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Steven Posté(e) le 27 février 2015 Signaler Partager Posté(e) le 27 février 2015 Sous la v4 c'est possible mais j'ai pas encore essayé Krikroff ... si tu es là ... on a besoin de toi Pour ton code, je te propose de l'optimiser ainsi en attendant que Kriki arrive --[[ %% properties 26 value 27 value 93 value 94 value %% globals --]] local startSource = fibaro:getSourceTrigger(); local timestamp = os.date("%Y%m%d%H%M%S") local detecteur_id = tonumber(startSource["deviceID"]) --- recupère l'id du déclencheur de la scène local locations = {[26]="Mouvement_RDC", [27]="Mouvement_Etage", [93]="Ouverture_RDC", [94]="Ouverture_Etage"} if (tonumber(fibaro:getValue(detecteur_id, "value")) > 0) then fibaro:debug(detecteur_id) fibaro:debug(locations[detecteur_id]) fibaro:debug(timestamp) -- http requete end Lien vers le commentaire Partager sur d’autres sites More sharing options...
Lazer Posté(e) le 27 février 2015 Signaler Partager Posté(e) le 27 février 2015 En v4 dans une scène, je crois qu'il faut utiliser net.HTTPClient() àla place de Net.FHttp() Lien vers le commentaire Partager sur d’autres sites More sharing options...
mikael2235 Posté(e) le 28 février 2015 Auteur Signaler Partager Posté(e) le 28 février 2015 Salut, Merci pour vos réponses. je teste ce week end et vous tiens au courant ... Lien vers le commentaire Partager sur d’autres sites More sharing options...
mikael2235 Posté(e) le 6 mars 2015 Auteur Signaler Partager Posté(e) le 6 mars 2015 Alors j'ai testé... (d'ailleurs je croyais avoir répondu mais je m'aperçois que non) Voici l'erreur qu'il me renvoie avec net.HTTPClient() [DEBUG] 08:40:08: 26[DEBUG] 08:40:08: Mouvement_RDC[DEBUG] 08:40:08: 20150306084008[ERROR] 08:40:08: Runtime error: No matching overload found, candidates:[ERROR] 08:40:08: void __init(luabind::argument const&,lua_State*,custom [lua::net::HTTPOptionsGroup])[ERROR] 08:40:08: void __init(luabind::argument const&,lua_State*) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Steven Posté(e) le 6 mars 2015 Signaler Partager Posté(e) le 6 mars 2015 Tu as bien mis ce genre de code : local http = net.HTTPClient() http:request('http://www.perdu.com', { options = { method = 'GET' }, success = function(response) fibaro:debug("OK") end, error = function(err) fibaro:debug("Error: " ..err) end }) Lien vers le commentaire Partager sur d’autres sites More sharing options...
mikael2235 Posté(e) le 6 mars 2015 Auteur Signaler Partager Posté(e) le 6 mars 2015 ah non pas du tout, vs m'avez juste dit de remplacer, alors j'ai remplacé HC2=Net.FHttp("192.168.0.200") HC2:GET("/domotique/mapage.php?timestamp="..timestamp.."&detecteur_id="..detecteur_id.."&detecteur_location="..detecteur_location.."") par HC2=Net.HTTPClient("192.168.0.200") HC2:GET("/domotique/mapage.php?timestamp="..timestamp.."&detecteur_id="..detecteur_id.."&detecteur_location="..detecteur_location.."") Lien vers le commentaire Partager sur d’autres sites More sharing options...
Lazer Posté(e) le 6 mars 2015 Signaler Partager Posté(e) le 6 mars 2015 En matière de LUA, mieux vaut faire confiance àSteven Lien vers le commentaire Partager sur d’autres sites More sharing options...
Steven Posté(e) le 6 mars 2015 Signaler Partager Posté(e) le 6 mars 2015 Mon code est tiré de celui de Krikroff .. mais chuttttttt Lien vers le commentaire Partager sur d’autres sites More sharing options...
mikael2235 Posté(e) le 6 mars 2015 Auteur Signaler Partager Posté(e) le 6 mars 2015 j'ai modifié mais je suis pas chez moi, alors j'atends pour tester... en tout cas merci pour votre aide. je vous tiens au courant Lien vers le commentaire Partager sur d’autres sites More sharing options...
i-magin Posté(e) le 6 mars 2015 Signaler Partager Posté(e) le 6 mars 2015 Déjà avant la V4, le FHttp ne pouvait pas être utilisé dans les scènes mais dans les modules virtuels Pour les scènes, c'est bien Net.HTTPClient qui doit être utilisé et depuis la V4 on peut faire du HTTPS J'ai tout récemment essayé (en utilisant le même type de code que celui donné par @Steven... on pirate la même personne ) et çà marche... enfin avec une difficulté sur laquelle je reviendrai plus tard Lien vers le commentaire Partager sur d’autres sites More sharing options...
mikael2235 Posté(e) le 9 mars 2015 Auteur Signaler Partager Posté(e) le 9 mars 2015 Voilà désormais mon code : --[[ %% properties 26 value 27 value 93 value 94 value %% globals --]] local startSource = fibaro:getSourceTrigger(); local timestamp = os.date("%Y%m%d%H%M%S") local detecteur_id = tonumber(startSource["deviceID"]) --- recupère l'id du déclencheur de la scène local locations = {[26]="Mouvement_RDC", [27]="Mouvement_Etage", [93]="Ouverture_RDC", [94]="Ouverture_Etage"} if (tonumber(fibaro:getValue(detecteur_id, "value")) > 0) then fibaro:debug(detecteur_id) fibaro:debug(locations[detecteur_id]) fibaro:debug(timestamp) -- http requete local http = net.HTTPClient() http:request('http://192.168.0.2/domotique/mapage.php?timestamp='..timestamp..'&detecteur_id='..detecteur_id..'&detecteur_location='..locations..'', { options = { method = 'GET' }, success = function(response) fibaro:debug("OK") end, error = function(err) fibaro:debug("Error: " ..err) end }) end Par contre j'ai cette erreur : [DEBUG] 12:22:40: 26[DEBUG] 12:22:40: Mouvement_RDC[DEBUG] 12:22:40: 20150309122240[ERROR] 12:22:40: line 26: attempt to concatenate local 'locations' (a table value) Pouvez vous m'aider ? Merci ;-) Lien vers le commentaire Partager sur d’autres sites More sharing options...
mikael2235 Posté(e) le 9 mars 2015 Auteur Signaler Partager Posté(e) le 9 mars 2015 En postant, je crois que j'ai trouvé... Oubli de ...[detecteur_id] Lien vers le commentaire Partager sur d’autres sites More sharing options...
mikael2235 Posté(e) le 9 mars 2015 Auteur Signaler Partager Posté(e) le 9 mars 2015 Yes ça fonctionne !!! Merci Lazer, Steven, i-magin pour votre aide. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Steven Posté(e) le 9 mars 2015 Signaler Partager Posté(e) le 9 mars 2015 Et Krikroff puisque moi j'ai pompé sur lui Au plaisir 1 Lien vers le commentaire Partager sur d’autres sites More sharing options...
mikael2235 Posté(e) le 9 mars 2015 Auteur Signaler Partager Posté(e) le 9 mars 2015 ok ;-). Merci aux "indirects" alors !!! 2 Lien vers le commentaire Partager sur d’autres sites More sharing options...
mikael2235 Posté(e) le 12 mars 2015 Auteur Signaler Partager Posté(e) le 12 mars 2015 Me revoilà encore... Donc cela fonctionnait bien, jusqu'a ce que j'essaie d'ajouter des choses dans mon scripts. Voilà l'erreur que j'ai : [ERROR] 15:41:20: line 44: table index is nil Et le code qui pose problème : 44 local locations = {[PresenceCourrier]="BAL_Ext"} Est-il possible de faire un tableau avec un index non numérique ? Pouvez vous m'aider ? Merci Lien vers le commentaire Partager sur d’autres sites More sharing options...
Steven Posté(e) le 12 mars 2015 Signaler Partager Posté(e) le 12 mars 2015 Absolument, en fait, les [] permettait de préciser du numérique, donc si tu les enlèves cela te donne ce que tu recherches : local locations = {PresenceCourrier="BAL_Ext"} fibaro:debug(locations["PresenceCourrier"]) Lien vers le commentaire Partager sur d’autres sites More sharing options...
mikael2235 Posté(e) le 12 mars 2015 Auteur Signaler Partager Posté(e) le 12 mars 2015 ok donc ça c'est ok, mais encore une erreur .... [ERROR] 16:49:43: line 45: attempt to concatenate field 'varName' (a nil value) elseif (trigger['type'] == 'global') then fibaro:debug("---------- TYPE GLOBAL ----------") local varName = startSource['varName'] local locations = {PresenceCourrier="BAL_Ext"} >>>> fibaro:debug('Variable globale = ' .. trigger['varName']); if ((tonumber(fibaro:getValue(varName, "value")) == 0) or (tonumber(fibaro:getValue(varName, "value")) ==1 )) then fibaro:debug(timestamp) fibaro:debug(locations[varName]) fibaro:debug('new value = ' .. status); -- http requete end En fait je me suis aidé de ceci : http://domotique-home.fr/fonction-fibarogetsourcetrigger/ Mais j'ai l'impression que le problème vient du fibaro:getSourceTrigger(); car qd je fais un fibaro:debug(trigger['varName']), j'ai toujours NIL Lien vers le commentaire Partager sur d’autres sites More sharing options...
mikael2235 Posté(e) le 13 mars 2015 Auteur Signaler Partager Posté(e) le 13 mars 2015 (modifié) je ne comprends pas pourquoi ça ne fonctionne pas... Si je prends le debut de ma scene : --[[ %% properties 26 value 27 value 93 value 94 value 111 value %% globals PresenceCourrier --]] local trigger = fibaro:getSourceTrigger(); fibaro:debug("----------------- START RULE -----------------") fibaro:debug(trigger['type']) fibaro:debug(trigger['varName']) J'obtiens ceci en debug au changement d'etat de ma variable PresenceCourrier : [DEBUG] 17:19:43: ----------------- START RULE -----------------[DEBUG] 17:19:43: global[DEBUG] 17:19:43: nil[DEBUG] 17:19:43: ---------- TYPE GLOBAL ----------[ERROR] 17:19:43: line 44: attempt to concatenate field 'varName' (a nil value) Il me reconnait bien le type de trigger en global au declenchement, mais pas le varName qui est à nil. Est-ce que cette fonction marche toujours ?? [EDIT] Quand j'essaye avec le code LUA trouvé ici, cela ne fonctionne pas non plus. Même erreur qu'au dessus... if OrigineDeclenchement['type'] == 'property' then -- si l'origine du déclenchement de la scène est la modification d'une propriété d'un module surveillée dans l'entête alors fibaro:debug('L origine est la modification dune propriété du module '..OrigineDeclenchement['deviceID']) elseif OrigineDeclenchement['type'] == 'global' then -- sinon si l'origine du déclenchement de la scène est la modification d'une variable globale surveillée dans l'entête alors fibaro:debug('L origine est la modification de la variable globale '..OrigineDeclenchement['varName']) elseif OrigineDeclenchement['type'] == 'other' then -- sinon si l'origine du déclenchement de la scène est autre alors fibaro:debug('La scène a été lancée manuellement') end Modifié le 13 mars 2015 par mikael2235 Lien vers le commentaire Partager sur d’autres sites More sharing options...
mikael2235 Posté(e) le 13 mars 2015 Auteur Signaler Partager Posté(e) le 13 mars 2015 IT WORKS.... Solution trouvée ici : http://www.domotique-fibaro.fr/index.php/topic/2216-pb-lors-de-lutilisation-de-la-fonction-fibarogetsourcetrigger/ il faut utiliser trigger['name'] au lieu de trigger['varName'] Lien vers le commentaire Partager sur d’autres sites More sharing options...
Steven Posté(e) le 13 mars 2015 Signaler Partager Posté(e) le 13 mars 2015 varName me semble faux ... essaye avec name Lien vers le commentaire Partager sur d’autres sites More sharing options...
Steven Posté(e) le 13 mars 2015 Signaler Partager Posté(e) le 13 mars 2015 Réponse inutile de ma part ... désolé. La prochaine fois, je vais au bout des pages avant de répondre Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés