Aller au contenu

Messages recommandés

Posté(e)

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/Test


J'ai testé chez moi avec succès.

 

Posté(e)

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

  • 6 mois après...
Posté(e)

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 ) :15: ???

 

Merci pour le retour

Posté(e)

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 ?

Posté(e)

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

Posté(e)

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.

  • Upvote 1
Posté(e)

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

Posté(e)

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

Posté(e)

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

Posté(e)

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
Posté(e)

 

  • %% 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 
  • 2 ans après...
Posté(e)

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.

Posté(e)

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é.

Posté(e)

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 :P  et vivre comme un bienheureux qui bénéficie du service rendu :D

 

  • Like 1
Posté(e)

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 :P

  • Like 3
Posté(e) (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é par OJC
  • Upvote 1
Posté(e)

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.

×
×
  • Créer...