Aller au contenu

Messages recommandés

Posté(e) (modifié)

Visualiser les 10 dernières ouverture de Porte

 

 

 

 

Je remercie @steven car ce VD est une adaptation de son VD Variables Globales

 

 

Ce virtual devices affiche la dernière détection avec le temps écoulé des captures comme on peu le voir dans l'interface 

 

Les informations sont récuperer directement via l'api il peut y avoir quelques soucis si un modules et déclarer comme detecteur de porte alors qu'il ne l'ai pas

 

 

med_gallery_374_240_903.png

 

 

Ouverture_porte_v0.2b.vfib
 

Modifié par mprinfo
  • Upvote 5
Posté(e)

si on veut un tri dans l'autre sens il faut modifié

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

par

table.sort(Ouverture, function(a, return a[3]<b[3] end)
Posté(e)

Salut tout le monde,

@mprinfo,

Tout d'abord merci pour ce VD

Par contre je ne comprends pas son fonctionnement

J'ai plusieurs détecteurs d'ouverture et dans le cas présent, j'ai toutes les 2 à  5 seconds des rafraichissements des heures indiqués.

Je ne vois pas pourquoi car à  cette heure un Dimanche (8h30) tout le monde dors à  la maison sauf moi  :-)

Donc aucune porte ou fenêtre n'est ouverte.

 

D'autre part serait il envisageable dans l'information affiché de faire paraitre la date de dernière ou le nombre de jour depuis la dernière ouverture?

Posté(e)

Oui je suis aperçu de ce bug au delàde 24h la remontée d informations et "erronée" il manque le nombre de jours je vais corriger ce problème et publié le code

Effectivement la mise àjour ce fait toute les 3s c'est la main loop qui s'exécute tout le 3s on peut augmenter ce delai avec un sleep

C'est normal que cela augmente car il calcule l heure de la dernière ouverture avec l heure actuelle

Envoyé de mon SM-G900F en utilisant Tapatalk

Posté(e)

Voici le code qui corrige l'absence du nombre de jours dans le label

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

local Ouverture = {}
local t = json.decode(response)
local j = 0
for i = 1, #t do
  if t[i].visible == true and t[i].type == "com.fibaro.doorSensor" then
     local HeureModif = t[i].properties.lastBreached
     local heure = os.time()
     local TempEcoule = os.difftime(heure, HeureModif)-3600
     table.insert(Ouverture, {t[i].name, t[i].id, TempEcoule})
  --fibaro:debug(t[i].name.." id : "..t[i].id..t[i].properties.lastBreached)
  end
end

table.sort(Ouverture, function(a, return a[3]<b[3] end)

-- Display results
local id = fibaro:getSelfId()

for i = 1, #Ouverture do
  pcall(function() 
     if Ouverture[i][1] == nil then
        fibaro:call(id, "setProperty", "ui.Label"..i..".value", "")
     else
        if Ouverture[i][3] > 3600*24 then
           fibaro:debug(i .. " id=" .. Ouverture[i][1] .. " - Value=" .. os.date("%j jours %X", Ouverture[i][3]) )
  	       fibaro:call(id, "setProperty", "ui.Label"..i..".value", Ouverture[i][1] .. " = " ..  " ".. os.date("%j jours %X", Ouverture[i][3]))
        else
           fibaro:call(id, "setProperty", "ui.Label"..i..".value", Ouverture[i][1] .. " = " ..  " ".. os.date("%X", Ouverture[i][3]))
 
        end
     end
  end)
end
  • Upvote 3
×
×
  • Créer...