CASINOS Posté(e) le 27 avril 2015 Signaler Posté(e) le 27 avril 2015 Excuse moi la je suis dépassé , peux tu m’écrire un URL en exemple de ce qu'il faudrait que j'envoie SVP un comme pour le slider http://admin:admin@IPBOX/api/callAction?deviceID=XX&name=setSlider&arg1=3&arg2=newvalue
Steven Posté(e) le 27 avril 2015 Signaler Posté(e) le 27 avril 2015 C'est impossible, en faisant ce genre d'URL, tu passes par la méthode GET alors que tu as besoin de faire du PUT avec en plus de l'authentification Tu a essayé de faire un curl, tu peux essayer cela curl -H 'Content-Type: application/json' -X PUT -d '{"value": "122Km", "isEnum":false}' http://admin:admin@IPXBOX/api/globalVariables/TestJ'ai testé chez moi avec succès.
CASINOS Posté(e) le 27 avril 2015 Signaler Posté(e) le 27 avril 2015 Désolé mais j'ai vraiment décroché ne sacant pas faire un CURL Que faut-il envoyer en HTTP Que faut il mettre dans le Bouton du VD ? Je erais moins bete apres Merci encore de ton aide
Yannick Posté(e) le 28 octobre 2015 Signaler Posté(e) le 28 octobre 2015 salut les gars, j'ai une question con mais c'est une question quand même !! J'ai déclaré une variable globale pour les période de la journée TimeOfDay avec 4 états. J'ai fait une scène qui dit que de telle heure à telle heure cela correspond à 1 période définie. Comment j'écris mon debug pour savoir quelle valeur ma variable a pris ? (pour vérification que ma scène fonctionne ) ??? Merci pour le retour
Berale64 Posté(e) le 28 octobre 2015 Signaler Posté(e) le 28 octobre 2015 Y'a pas de question con. La réponse àta question est ICI : http://www.domotique-fibaro.fr/index.php/topic/4205-virtual-device-variables-globales/
Yannick Posté(e) le 28 octobre 2015 Signaler Posté(e) le 28 octobre 2015 Merci Berale24.. le VD fonctionne nickel Mais juste pour ma culture personnel, comment on fait pour afficher l'état d'une variable dans un debug ?
pepite Posté(e) le 28 octobre 2015 Signaler Posté(e) le 28 octobre 2015 comme ceci, si 'jai bien compris la demande local variable = .... fibaro:debug("la valeur de variable est :" ..variable)
Yannick Posté(e) le 28 octobre 2015 Signaler Posté(e) le 28 octobre 2015 Salut Pepite... Non ça j'ai bien compris mais je cherche à afficher la valeur non numérique d'une variable globale pour illustrer : ma variable globale est TimeOfDay avec 4 états : Night, Morning, Day, Evening Je veux récupérer l'une de ces 4 valeurs en fonction de l'heure de la journée. J'ai bien évidemment fait une semaine qui définit la valeur en fonction de fourchettes d'heures
Berale64 Posté(e) le 28 octobre 2015 Signaler Posté(e) le 28 octobre 2015 Tu veux relire la valeur de ta varable globale ? var = fibaro:getGlobalValue("TimeOfDay") PS: pour le VD c'est surtout à Steven qu'il faut dire merci. 1
Yannick Posté(e) le 28 octobre 2015 Signaler Posté(e) le 28 octobre 2015 c'est vrai j'avoue Merci Steven
Yannick Posté(e) le 28 octobre 2015 Signaler Posté(e) le 28 octobre 2015 eh ben voilà cette fois ci merci Berale24
Yannick Posté(e) le 30 octobre 2015 Signaler Posté(e) le 30 octobre 2015 Les amis, Juste une demande de validation sur ma variable créée hier TImeOfDay Elle comporte 4 états : morning, day, evening, night j'ai fait ça pour la faire changer d'état --[[ %% autostart %% properties os.date("hour") %% globals TimeOfDay --]] local var = fibaro:getGlobalValue("TimeOfDay") local now = os.date("*t") if (now["hour"] >= 16 and now["hour"] <= 23) then fibaro:setGlobal("TimeOfDay", "Evening"); end if (now["hour"] >= 0 and now["hour"] < 7) then fibaro:setGlobal("TimeOfDay", "Night"); end if (now["hour"] >= 7 and now["hour"] < 9) then fibaro:setGlobal("TimeOfDay", "Morning"); end if (now["hour"] >= 9 and now["hour"] < 17) then fibaro:setGlobal("TimeOfDay", "Day"); end a priori ça fonctionne mais je me demande si cette méthode permets de faire varier ces états automatiquement ou pas ? En d'autres termes, et ce que, automatiquement, à 17h par exemple, ma variable va changer d'état ? Merci pour vote aide
pepite Posté(e) le 30 octobre 2015 Signaler Posté(e) le 30 octobre 2015 Salut, Je pense que tu n'as besoin de rien en entete, puisque rien n'est declenche par trigger, ce n'es pas un changement de propriete ou de valeur qui execute ta scene Ta scene va tourner et verifier now et en fonction fera les setGlobal ;-) Enfin, je ne suis aps un expert du LUA mais c'est comme ceci que j'ai traduit. je me trompe peut-etre
Yannick Posté(e) le 30 octobre 2015 Signaler Posté(e) le 30 octobre 2015 Salut pepite, c'est bien ce que je pensais aussi mais ce qui est étrange c'est que le debug n'affiche rien au changement d'heure tu vois. Pour que ma valeur change, il faut que je redémarre ma scène
Steven Posté(e) le 30 octobre 2015 Signaler Posté(e) le 30 octobre 2015 Proposition en 1 minute et j'ai pas la possibilité de tester : --[[ %% autostart --]] while true do local now = os.date("*t") if (now["hour"] >= 16 and now["hour"] <= 23) then fibaro:setGlobal("TimeOfDay", "Evening"); else if (now["hour"] >= 0 and now["hour"] < 7) then fibaro:setGlobal("TimeOfDay", "Night"); else if (now["hour"] >= 7 and now["hour"] < 9) then fibaro:setGlobal("TimeOfDay", "Morning"); else fibaro:setGlobal("TimeOfDay", "Day"); end fibaro:sleep(60000) end
Berale64 Posté(e) le 30 octobre 2015 Signaler Posté(e) le 30 octobre 2015 %% properties os.date("hour") Voilà un truc que je n'ai jamais vu. ça voudrait dire qu'à chaque fois que l'heure change, la scène démarre. Chaud devant .... Je pense que tu dois enlever le os.date de même que le TimeOfDay sous global. Il faut faire un "While true do" qui encadre ta scène, avec un sleep d'une minute --[[ %% autostart %% properties %% globals --]] local var = fibaro:getGlobalValue("TimeOfDay") while true do local now = os.date("*t") local TriggerTime = string.format("%02d",now.hour)..":"..string.format("%02d",now.min); if (TriggerTime = "16:00") then fibaro:setGlobal("TimeOfDay", "Evening"); end if (TriggerTime = "00:00" ) then fibaro:setGlobal("TimeOfDay", "Night"); end if (TriggerTime = "07:00" ) then fibaro:setGlobal("TimeOfDay", "Morning"); end if (TriggerTime = "09:00" ) then fibaro:setGlobal("TimeOfDay", "Day"); end fibaro:sleep(60*1000); end
OJC Posté(e) le 15 novembre 2017 Signaler Posté(e) le 15 novembre 2017 Bonjour, En regardant le code de GEA de @Steven, j'ai constaté que toutes les fonctions sont stockées dans une variable globale de type table, et que la scène contrôle avant de la créer si elle n'existe pas déjà. Si je comprends bien l'intérêt dans le main loop d'un VD, je vois moins l'intérêt dans une scène ? D'après ce que j'ai pu constater, une variable globale se conserve d'un loop sur l'autre dans le VD (comme si le code s'insérait en réalité dans un sleep ou un setTimeout), mais pas d'une instance à l'autre d'une scène.
Lazer Posté(e) le 15 novembre 2017 Signaler Posté(e) le 15 novembre 2017 En fait la Main Loop d'un VD est une boucle while avec un sleep() de 3 secondes. Donc ton code se trouve là dedans, d'où l'astuce de la variable globale. En conséquent, hors plantage ou arrêt volontaire de ton script (fibaro:abort()), le code d'une Main Loop tourne indéfiniment. Cela n'est pas valable pour une scène, dont l'instance meurt dès que ton code LUA est terminé.
OJC Posté(e) le 15 novembre 2017 Signaler Posté(e) le 15 novembre 2017 Donc pourquoi GEA est codé comme ça ? C'était un VD à l'origine ?
Lazer Posté(e) le 15 novembre 2017 Signaler Posté(e) le 15 novembre 2017 Je ne sais pas, je ne me suis jamais plongé dans le code de GEA, je suis persuadé que Steven a mis un gros cheval de Troie dedans et qu'il espionne ma maison à distance, alors je préfère rester dans l'ignorance et vivre comme un bienheureux qui bénéficie du service rendu 1
Steven Posté(e) le 15 novembre 2017 Signaler Posté(e) le 15 novembre 2017 Ben non, c'est juste que tu n'as pas bien du lire le code Il n'y a qu'une seule variable globales GEA_Tasks et elle ne stocke que des R12, S23, ... qui permet de savoir si la tache #12 doit être redémarrée la #23 stoppée ... ce qui permet d'avoir un traitement entre les instances de GEA. En aucun cas les functions sont stockées dans des VG,. @Lazer D'ailleurs, oublie pas de tirer la chasse d'eau un peu plus souvent ton CO2 est en augmentation 3
OJC Posté(e) le 15 novembre 2017 Signaler Posté(e) le 15 novembre 2017 (modifié) Je ne parlais pas d'une variable globale 'Fibaro' mais d'une variable globale 'Lua' : if (not GEA) then GEA = {} [...] GEA.insert = function(entry) table.insert(GEA.todo, entry) --entry[GEA.keys["INDEX"]] = #GEA.todo return entry[GEA.keys["INDEX"]] end [...] end Ce qui signifie bien que les fonctions sont stockées dans la variable globale GEA. Ou alors j'ai vraiment rien compris A quoi sert la condition (not GEA) dans une scène puisque par définition, elle sera toujours à true ? Modifié le 15 novembre 2017 par OJC 1
Steven Posté(e) le 15 novembre 2017 Signaler Posté(e) le 15 novembre 2017 Heuuu ok, tu ne parles pas de VG mais de variable globale au sens programmation. Donc c'est le if (not GEA) then GEA = {} end qui te dérange ? En effet, il ne sert à plus rien ... mais il ne coûte rien non plus.
Messages recommandés