Aller au contenu

Messages recommandés

Posté(e)

Variables Globales - VD

Module virtuel pour afficher les variables globales

 

 

 



 
mini_536005VDVG.png
Lorsque l'on fait des tests, il est parfois pratique d'avoir la liste des Variables Globales existantes sur votre HC2. Ce module virtuel va vous permettre de les afficher sur votre smartphone. Afin de ne pas afficher toutes les variables, ce modules va afficher les 10 dernières variables à  avoir été modifiées et ce, trié par date de modification.
 
Si vous voulez voir plus de variables, il vous faudra rajouter vous-même des labels en faisant juste attention que leur ID suivent la numérotation Label11, Label12, Label13, ... et modifier la position du bouton rafraîchir dans le Main Loop.
 

 

 
Ce dernier affiche donc :

  • Le nom de la variable globale
  • Sa valeur
  • L'heure de la dernière mise à  jour

Ce module se rafraîchi automatiquement toutes les 3 secondes
.
.
.

Installation
Il vous suffit juste d'importer le module virtuel ci-joint
 
Cordialement

Variables_Globales.vfib

  • Like 1
  • Upvote 8
Posté(e) (modifié)

Excellentissime encore 1 fois, merci @steven, super  pratique

et fait en quelques minutes ;-)

 

ca marche, viens de tester seulement maintenant ;-)

Modifié par pepite
Posté(e)

Vu que j'ai pas de v.360, je pouvais pas tester donc pas être sûr ... je modifie donc la description. Merci àtoi.

Posté(e)

Merci Steven,

Vu le commentaire de Berale24, je me suis empressé de tester également en v3.600 => ça fonctionne parfaitement !  :60:  => post initial à  adater

Et comme les triggers ne fonctionnent pas sur une variable qui est modifiée directement depuis le panneau des variables, j'ai testé cela également, et c'est rapporté  :74:  :74:  :74:

Merci encore

  • Upvote 1
Posté(e)

Steven, 

Puis-je me permettre une suggestion ?

J'abuse de l'utilisation de ton module, et il m'est bien utile, car j'ai une variable qui change de statut "toute seule", et je n'arrive pas à  comprendre pourquoi.

Alors mon idée serait la suivante : ne serait-il pas possible que le VD ajoute automatiquement une ligne à  une sheet google, afin d'avoir un log des changements de la variable ?

Mais en écrivant ces lignes, je pense à  une solution : à  chaque changement de la première entrée de la table (mais pour ça il faudra faire qqch), le système génère un mail dans un certain format, qui serait capturé par IFTTT, qui lui-même se charge de rajouter une ligne dans une sheet. (J'utilise déjà  IFTTT pour me rajouter automatiquement une ligne à  chaque SMS envoyé ou reçu.

Serait-ce une grosse modif du code pour détecter une modification de la première ligne de la table ? (et générer un mail -> facile) 

Posté(e)

 car j'ai une variable qui change de statut "toute seule",

 

Tu es sur que c'est pas ta femme qui en a raz le bol de ta domotique qui un coup chauffe, un coup chauffe pas !!! :98:

Posté(e)

Super steven  :60:  merci encore un écran de plus a surveiller, moi qui utilise déjà  le push pour débuger, je me demande si c'est encore un téléphone que j'ai :D

Posté(e)

Salut,

 

Je voulais savoir si cela marchait sur une HCL, car j'ai une question qui est sans réponses sur le forum et personnes n'y réponds car je pense que ma question doit vraiment être très co..e :)

 

 

++

Posté(e)

ça ne fonctionnera pas sur HCL, car c'est en LUA  :huh:

tu nous remets le lien de ta question, qu'on y regarde ?

Posté(e)

Steven,

Je n'ai pas pu m'empêcher de regarder àla demande que je t'avais adressée : envoyer un mail en cas de modif d'une variable.

ok pour que je mette la petite modification du code dans le fil ? => de toute façon, tu le corrigeras pour l'optimiser ...

Posté(e)

grace à  ce module  je vois que mon VD Day_Phase (http://www.domotique-fibaro.fr/index.php/topic/3198-module-virtuel-phase-de-la-journée/?hl=aurore)

 

et toujours actif, (car dans le main loop) je suppose, donc la variable est forcé tout le temps

 

pas moyen d'optimiser à  votre avis ?

 

EDIT: et ce n'est pas classer dans le bon order chez moi ? bizarre non ?

 

 

19780543VD.png

Posté(e)

Je me raprocherais volontiers du développeur de ce module demain pour voir si il y a quelques choses àfaire.

Posté(e)

Oui merci quand même pour le VD. Moi je sens que je vais être obligé de migrer vers une HC2. Je me sens frustré!!!!! ! :(

@Jojo, le lien de ma question qui se porte sur : "Update des labels dans les VD's par l'API HTTP" vu que j'avais bien compris que j'avais pas de LUA et que c'est un peu cette partie qui débloque les fonctions quand tu es en galère :D

Posté(e)

Go jojo go

 

Voici un petit ajout au code, qui permet de générer un mail lors de la modification d'une variable.

Avec IFTTT, j'intercepte le mail et il alimente une sheet Google Drive.

On peut ainsi avoir un log des changements des variables.

Contrainte : il faut créer une Variable Globale "LastVarChanged", qui ne sera pas considérée par le script comme une variable à  surveiller.

HC2 = Net.FHttp("127.0.0.1",11111) 
response = HC2:GET("/api/globalVariables")

-- read LastVarChanged
-- create a GlobalVariable named LastVarChanged
local LastVarChanged = fibaro:getGlobal('LastVarChanged')
fibaro:debug('LastVarChanged')

local push_dev = 2 -- id of the device to send push message to (2 to send e-mails)
local variables = {}
local t = json.decode(response)
local j = 0
for i = 1, #t do
-- do not report changes to LastVarChanged
  if t[i].name ~= "LastVarChanged" then 
    j = j + 1
    variables[j] = {t[i].name, t[i].value, fibaro:getGlobalModificationTime(t[i].name)}
  end
end
j = 0

table.sort(variables, function(a, return a[3]>b[3] end)

-- test if variable changed
LastVarValue = variables[1][1] .. ' = ' .. variables[1][2] .. ' [' .. os.date("%d/%m/%Y %H:%M:%S", variables[1][3]).. ']'
if LastVarValue ~= LastVarChanged then
  fibaro:setGlobal('LastVarChanged', LastVarValue)
  fibaro:debug('Changed variable : ' ..LastVarValue)
  -- send e-mail
  fibaro:call(push_dev, "sendEmail", "Changed variable", LastVarValue) 

end

-- Display results
local id = fibaro:getSelfId()
for i = 1, #variables do
  pcall(function() 
  	fibaro:debug(i .. " id=" .. variables[i][1] .. " - Value=" .. variables[i][2] )
  	fibaro:call(id, "setProperty", "ui.Label"..i..".value", variables[i][1] .. " = " .. variables[i][2] .. " [".. os.date("%X", variables[i][3]).."]")
  end)
end
  • Upvote 2
Posté(e)

Je viens de modifier le module Day_Phase

je le laisse en test jusque demain puis publierais la nouvelle version

 

le module updatera les variables globales uniquement si elles ont évoluées (contrairement à  la version actuellement publier qui fait un setglobal à  chaque cycle systématiquement

  • Upvote 2
  • 2 semaines après...
  • 3 semaines après...
Posté(e)

Steven,

J'ai (encore) modifié quelque peu ton code afin de pouvoir mettre une liste de variables globales dont on ne veut pas voir le changement (car peu relevant).

ok pour toi pour que je le partage ?

×
×
  • Créer...